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

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

Send message

Префиксные суммы. Решение задачи из тренировок Яндекса по алгоритмам

Level of difficultyEasy
Reading time5 min
Views4.7K

Расскажу о том, как решал одну из наиболее интересных задач в разминке Яндекс Алгоритмы 2023 г. Интересной я называю ее потому, что: 1) решал я кратно дольше, чем предыдущие 6 задач из разминки вместе взятые; 2) именно в этой задаче я проникся мощью префиксных сумм, и применением их для двумерных массивов.

И так задача:

Кролики очень любопытны. Они любят изучать геометрию, бегая по грядкам. Наш кролик как раз такой. Сегодня он решил изучить новую фигуру — квадрат.

Кролик бегает по грядке — клеточному полю N × M клеток. В некоторых из них посеяны морковки, в некоторых нет.

Помогите кролику найти сторону квадрата наибольшей площади, заполненного морковками полностью.

Формат ввода

В первой строке даны два натуральных числа N и M ( 1 N, M 1000). Далее в N строках расположено по M чисел, разделенных пробелами (число равно 0, если в клетке нет морковки или 1, если есть).

Формат вывода

Выведите одно число — сторону наибольшего квадрата, заполненного морковками.

Читать далее

Покоряем сетевой стек Linux: декапсулируем пакеты с помощью eBPF на скорости 6Mpps+

Reading time15 min
Views14K

Когда переход на VXLAN в облачных сетях грозил нарушить работу системы анализа трафика, нам нужно было найти решение, позволяющее сохранить точный сбор статистики при экстремальных нагрузках и измененной структуре заголовков пакетов. Я — Александр Шишебаров, старший разработчик в команде сетевых функций облака Selectel. Разрабатываю все, что связано с сетью: балансировщики, виртуальные роутеры, сети, глобальный роутер и так далее.

В этой статье рассказываю о том, как мы использовали eBPF для перехвата и декапсуляции VXLAN-пакетов прямо в ядре, обеспечив корректный сбор статистики без значительных изменений в архитектуре системы. Разберем, какие требования привели нас к этому решению, как его внедряли и каких результатов удалось достичь. Также расскажу, что такое eBPF, как работает технология, как начать с ней работать и на каких этапах сетевого стека Linux можно перехватывать пакеты с ее помощью. Подробности под катом!
Читать дальше →

Руководство Google по промпт-инжинирингу. Часть 1: основы и базовые техники

Level of difficultyEasy
Reading time18 min
Views45K

Представляю вашему вниманию перевод статьи "Prompt Engineering" (Промпт-инжиниринг) авторства Lee Boonstra - Software Engineer Tech Lead, Office of the CTO в Google.

Это первая часть из цикла трех статей, где мы разберем основы промпт-инжиниринга и базовые техники взаимодействия с большими языковыми моделями. Вы узнаете, как настраивать параметры моделей, использовать различные типы промптов и получать предсказуемые, релевантные результаты. Несмотря на фокус оригинала на Gemini/Vertex AI, описанные принципы применимы ко всем современным моделям ИИ.

Читать далее

Музыка за пару минут: топ-10 бесплатных нейросетей для генерации песен

Level of difficultyEasy
Reading time17 min
Views32K

Музыка за пару минут: топ-10 бесплатных нейросетей для генерации песен

Музыка всегда была отражением времени — от величественных симфоний прошлого до качёвых битов современности. Сегодня нейросети всё активнее проникают во все сферы жизни, и музыка, конечно, не стала исключением. Когда‑то создание качественной музыки требовало несколько лет обучения, часов практики и безграничной фантазии композиторов. Но что, если вам скажут, что теперь её могут создавать машины? Эти алгоритмы способны сочинять музыку разных жанров — от эпических симфоний до тяжёлого рока — и всё это с минимальным вмешательством человека. Как бы удивился Бах, узнав, что сейчас «Токкату и фугу» можно создать парой кликов с помощью нейросети.

Но так ли хороши эти генераторы, как о них говорят? Чтобы выяснить это, мы решили провести небольшой эксперимент. Пристегнитесь — мы въезжаем в мир генерации музыки, это обещает быть интересным!

Приятного Вам прочтения!

Читать далее

Теория категорий и красота математики

Reading time11 min
Views9.6K

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

Читать далее

Как поддержать работоспособность при дефиците сна

Level of difficultyEasy
Reading time3 min
Views4.7K

Современный ритм жизни часто заставляет жертвовать сном. Однако хронический недосып — это не просто временная усталость, а полноценная угроза для когнитивных функций и долгосрочного здоровья. По данным исследований, 40% взрослых мужчин спят менее 7 часов в сутки, что увеличивает риск сердечно-сосудистых заболеваний на 48% и вдвое повышает вероятность ошибок в профессиональной деятельности. Как выживать в таких условиях разбираем в статье. 

Читать далее

Теорема CAP: почему нельзя иметь все сразу и как аналитик выбирает чем пожертвовать

Reading time5 min
Views4.6K

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

Теорема CAP (дословно: Consistency (согласованность), Availability (доступность), Partition Tolerance (устойчивость к разделению)), предложенная Эриком Брюером в 2000 году, объясняет, почему невозможно одновременно обеспечить все три этих свойства.

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

Да, многие могут сказать, что это больше стезя архитектора. Но грань между аналитиком и архитектором в текущих реалиях очень смазана. Хороший системный аналитик фактически является lite версией архитектора. Поэтому щас выскажусь!)))

Читать далее

Как вычислить того, кто взломал Bybit? Или что такое Crypto Forensics

Reading time9 min
Views2.6K

21 февраля 2025 года произошла самая громкая хакерская атака в криптоиндустрии, и целью стала довольно популярная централизованная биржа Bybit. Хакеры получили доступ к одному из холодных кошельков платформы, с которого вывели Ethereum на сумму ~$1,4 млрд. 

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

В этой статье я расскажу, что из себя представляет криптофорензика, каковы её методы и инструменты. А также разберу и покажу на практике реальный кейс с вычислением группировки Lazarus на примере их атаки на Harmony Bridge в 2022 году.

Читать далее

DNS: поддельные записи, перехват трафика и другие ужасы

Reading time14 min
Views21K

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

Но паниковать не стоит. Такие атаки работают только там, где DNS оставлен без присмотра. В этой статье разберем, как злоумышленники подделывают DNS-записи, как меняется характер DDoS-атак и какие технологии помогут вам остаться невредимыми. Подробности под катом.
Читать дальше →

Исследуем игру «5 букв» от Т-Банка и разные алгоритмы решения

Level of difficultyEasy
Reading time24 min
Views19K

Многие знакомы с играми "Wordle" или с российским аналогом "5 букв" от Т-Банка, суть которых в том, чтобы отгадывать пятибуквенные слова. Словарного запаса среднестатистического человека вполне хватает для успешного прохождения этих игр, но иногда человеку тяжело подобрать загаданное слово, хотя он точно его знает.

Кажется, что компьютер справлялся бы с этой игрой очень хорошо, но насколько именно хорошо?

В рамках этой статьи мы подробно исследуем российскую версию игры "5 букв":
• Придумаем различные алгоритмы прохождения игры
• Посмотрим, как различные алгоритмы проходят игру на разных словарях
• Сравним результаты и сделаем выводы

В статье будут рассмотрены как теоретические расчеты, так и вполне применимые для человека на практике советы и подходы.

Читать далее

GRASP: почему настоящая архитектура начинается не с SOLID

Level of difficultyMedium
Reading time12 min
Views50K

Хочу начать с личной предыстории. Давным‑давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие.

Также не обошли меня и классические принципы проектирования — SOLID, KISS, DRY — и, думаю, каждый читатель добавит сюда свои.

Безусловно, это всё важные и фундаментальные вещи.

Но однажды на горизонте появилось DDD — предметно‑ориентированное проектирование в изложении Эрика Эванса. Именно его «синяя книга» стала культовой и задала язык для архитектурного мышления.

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

Читая Эванса, рассматривая его диаграммы классов и примеры кода, я всё думал: как он это делает?

Самым большим открытием для меня стало то, что книга DDD хоть и показывает стратегические и тактические приёмы — агрегаты, объекты‑значения, спецификации, фабрики и т. д. — но не учит проектировать саму предметную область.

Складывалось ощущение, что мы это уже откуда‑то должны были знать. А откуда — остаётся загадкой.

Читать далее

Мобильная разработка за неделю #583 (7 — 13 апреля)

Level of difficultyEasy
Reading time4 min
Views4K
В новом дайджесте рассказываем как банки живут в заблокированном App Store, как создать UI-конструктор с помощью Compose Multiplatform, исследуем новый фреймворк внедрения зависимостей для Android и портируем кроссплатформенную С++ игру на iOS, изучаем Google Firebase Studio и многое другое. Заходите!

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

Google инструкция по промпт инжинирингу или как правильно писать запросы (краткий перевод)

Level of difficultyEasy
Reading time8 min
Views34K

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

Дальше будет небольшая выжимка и перевод с помощью ChatGPT.

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

Что такое Промпт-инжиниринг?

Большая Языковая Модель(БЯМ) работает, предсказывая наиболее вероятную последовательность слов (или «токенов»), следующую за вашим вводом. Когда вы пишете запрос, вы, по сути, задаете начальную точку и направление для этого процесса предсказания. Промпт-инжиниринг включает в себя:

Читать далее

Восстанавливаем повреждённый Linux через chroot

Reading time4 min
Views9.6K

Доводилось ли вам раскупоривать системник с Linux, который не грузится ни в какую – даже  после того, как вы убедились в корректности настроек BIOS и в том, что никаких серьёзных аппаратных ошибок в машине нет?

Если да – то вам просто необходимо изучить chroot. Он станет для вас настоящей палочкой-выручалочкой.

Например, мне пару недель назад удалось таким методом восстановить устройство Nanopore GridION, после того, как мне совершенно не помог официальный метод переустановки через  .iso-файл образа. Поэтому я решил задокументировать проделанные шаги.

Этот метод я нащупал только после того, как Linux более десяти лет был моей рабочей лошадкой (спасибо, Мэтт !). Поэтому у меня есть основания полагать, что этот метод очень полезен и заслуживает вашего внимания. Надеюсь, этим постом мне удастся помочь тем, кому не доставало такого рассказа.

Читать далее

Как коммитить так, чтобы ваш код принимали мейнтейнеры: путь одного героя

Level of difficultyEasy
Reading time11 min
Views12K

Всем привет, меня зовут Юрий Пузыня, я занимаюсь развитием платформы документации Diplodoc в Yandex Infrastructure, которую мы пару лет назад выложили в опенсорс. И сегодня я расскажу лёгкую историю невероятного везения в опенсорсе.

Мой первый коммит как контрибьютора в опенсорс‑проект был смёржен спустя два с половиной года мной же в качестве мейнтейнера этого проекта. И в чём тут история успеха — спросите вы. Но давайте я расскажу всё по порядку.

Читать далее

Многопоточность в мобильных приложениях: руководство для QA-инженеров

Level of difficultyEasy
Reading time7 min
Views4.7K

Всем привет! Меня зовут Ира, я руковожу отделом тестирования мобильной платформы в Ozon Tech. Наш отдел занимается разработкой инструментов для автоматизации тестирования мобильных приложений Ozon и тестированием внутренних библиотек.

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

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

Читать далее

Как работает ptrace в Linux и зачем он тебе

Level of difficultyEasy
Reading time5 min
Views8.4K

Привет, Хабр! Сегодня у нас на столе инструмент, о котором многие слышали, но мало кто использовал по-настоящему — ptrace.

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

Читать далее

Как мы создаем параметризованные автотесты с JUnit 5

Level of difficultyEasy
Reading time6 min
Views760

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

Подробности

Выгорание — норма, если ты без доспехов. Разбираемся, как выжить в «пламени дракона»

Reading time8 min
Views3.4K

Привет, Хабр! Меня зовут Асия, и начать хочу сразу со своей истории. С первой работы я практически сбежала через восемь месяцев. Начинала бодро и с большими надеждами, но выгорела еще на первых неделях. Сейчас понимаю, что причиной было тотальное расхождение реальности с моими карьерными ценностями. Из всей этой истории я вынесла урок: сначала пойми, какие задачи тебе нравятся, а какие забирают энергию, где вообще твой лимит прочности. И уже потом выстраивай отношения с работой.

С тех пор дела у меня пошли лучше. Пять лет назад я пришла в МТС. Руковожу направлением по обучению и адаптации персонала, провожу карьерные консультации по ротации и стараюсь сделать так, чтобы сотрудники ходили на работу с радостью. Сегодня хочу поделиться своим опытом: перечислю пять причин, которые, по моим наблюдениям, чаще всего ведут к выгоранию. И расскажу, как мы в МТС стараемся не повторять эти сценарии. Надеюсь, будет полезно!

Читать далее

Это путь воина: как я выучил Python и Go с помощью Цеттелькастена и кому точно не рекомендую метод

Level of difficultyEasy
Reading time9 min
Views51K

Привет, Хабр! Меня зовут Дмитрий, я работаю в YADRO. Я прошел большой путь в самостоятельном изучении языков программирования: от SQL до Go. Сначала я вообще не документировал процесс обучения, затем стал вести заметки по «академическому» принципу — писал конспекты, как в университете. Пока не открыл древовидную систему хранения данных, которая лежит в основе метода Цеттелькастен. 

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

Читать далее

Information

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