Search
Write a publication
Pull to refresh
47
0

Пользователь

Send message

SwiftUI: Разбираемся с identity на примере переходов

Reading time6 min
Views2.1K

Концепция идентификации (identity) в SwiftUI не так проста, как могло бы показаться на первый взгляд. Один из лучших способов разобраться в ней — понять роль идентичности в переходах (transitions).

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

Читать далее

Сообщаются ли ваши тесты?

Reading time9 min
Views1.9K

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

С тех пор как мы это поняли, автоматические тесты стали просто необходимы. Это привело к массовому внедрению шаблонов для старта работы. Однако просто начать работу недостаточно.

Читать далее

Что нового в Apache Spark 3.4.0 — Spark Connect — Доработки для Shuffle

Reading time8 min
Views2.9K

Spark Connect — это, пожалуй, самая ожидаемая фича Apache Spark 3.4.0. Она была анонсирована на конференции Data+AI Summit 2022 и сейчас широко освещается в социальных сетях. Вот и я решил приобщиться и внести свой небольшой вклад в это дело, продемонстрировав вам несколько интересных деталей реализации.

Читать далее

Паттерн Одиночка

Level of difficultyEasy
Reading time8 min
Views26K

Паттерн "Одиночка" (Singleton) является одним из паттернов проектирования, который используется для создания класса, имеющего только один экземпляр в системе, и предоставляющего глобальную точку доступа к этому экземпляру. Это означает, что в рамках приложения может существовать только один объект данного класса, и любой запрос на создание нового экземпляра будет возвращать ссылку на существующий.

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

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

Читать далее

Веб- и мобильная автоматизация в CI-среде

Reading time13 min
Views1.2K

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

Эта статья является продолжением первой, в которой я рассказывал об основах Cucumber BDD с Selenium и Java. 

Без лишних слов, let’s CI, что я подготовил сегодня.

Читать далее

Observability. Часть 1, про логи

Level of difficultyEasy
Reading time15 min
Views8.8K

"Пираты журнального моря"

Автор — Игорь Овсянников, декабрь 2023 г. DevOps инженер в GFN.AM, преподаватель курса DevOps в OTUS.

Каждый раз, решая инцидент или аварию в инфраструктуре, я задумывался: а можно ли было это предусмотреть? Можно ли было быстрее узнать о проблеме, самостоятельно, а не от недовольных клиентов? Сейчас я считаю, что можно, с хорошо настроенным мониторингом и observability pipelines.

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

Читать далее

Внедрение зависимостей с использованием монады Cats-effect Resource

Reading time7 min
Views1.5K

Монада Cats-effect Resource предоставляет отличную монадическую абстракцию над паттерном try-with-resource. Например, она позволяет управлять жизненным циклом зависимостей, включая закрытие/финализацию ресурса, когда он больше не нужен (закрытие соединения с базой данных, освобождение кэша при завершении работы). В сочетании с компонуемостью монад это стало очень популярным подходом для управления зависимостями — до такой степени, что такие библиотеки Scala, как http4s, предоставляют свои зависимости обернутыми в монаду Resource.

Читать далее

Как выбрать тимлида в команду

Level of difficultyEasy
Reading time7 min
Views13K

Кого обычно ставят тимлидом? По каким правилам и критериям происходит выбор? Как стать именно таким кандидатом, которого назначат на эту позицию?

Это и многое другое в статье. Прошу под кат.

Читать далее

Алгоритмы быстрого возведения в степень

Reading time8 min
Views39K

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

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

Читать далее

Отладка дедлока FUSE в ядре Linux

Reading time10 min
Views2.6K

Наша команда вычислительных ресурсов Netflix (Compute team) отвечает за администрирование AWS, в том числе за автомасштабирование и развертывание контейнеризованных приложений, включая решение возникающих проблем. В мои обязанности входит разбор разного рода странных ошибок, о которых сообщают пользователи.

Проблема, описываемая далее, была связана с ndrive — внутренней файловой системой, реализованной с помощью FUSE. Я расскажу, как я копался в /proc в поисках причины, и узнал, как на самом деле работает wait в ядре.

Читать далее

Переменные окружения в Node.js: полное руководство

Reading time10 min
Views20K

В этой статье мы рассмотрим переменные окружения (environment variables) в NodeJs с примерами. По сути, это пары ключ-значение набора данных, которые хранятся на уровне операционной системы. Они важны, поскольку отвечают за: разделение проблем, безопасность, переносимость, масштабируемость, совместимость, интероперабельность.

Читать далее

LIME и SHAP

Level of difficultyEasy
Reading time13 min
Views11K

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

Методы к LIME (Local Interpretable Model-agnostic Explanations) и SHAP (SHapley Additive exPlanations), позволяют получить понимание решений, принятых сложными моделями.

Читать далее

Программно-определяемые сети SD-WAN

Reading time6 min
Views4.3K

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

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

Читать далее

Как создать приложение для чата в реальном времени с помощью React, Node, Socket.io и HarperDB

Reading time27 min
Views8.2K

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

Читать далее

Паттерн Circuit Breaker

Level of difficultyEasy
Reading time12 min
Views46K

Привет, Хабр!

Каждая секунда простоя может стоить компании целое состояние, важно иметь надежные механизмы защиты от сбоев. Здесь и приходит на помощь паттерн Circuit Breaker.

Представьте себе обычный автоматический выключатель в вашем доме. Когда происходит перегрузка, он "выбивается", предотвращая возможные повреждения. Точно так же работает и Circuit Breaker в микросервисах. Он мониторит вызовы к внешнему сервису и при обнаружении слишком большого количества неудачных попыток временно "отключает" вызов, предотвращая тем самым падение всей системы.

Этот паттерн основывается на трех основных состояниях: закрытое, открытое и полуоткрытое.

Читать далее

CatBoost

Level of difficultyEasy
Reading time11 min
Views34K

Добрый день, уважаемые читатели Хабра!

CatBoost – алгоритм, разработанный специалистами из Yandex, представляет собой нечто большее, чем просто ещё один инструмент в арсенале данных науки. CatBoost – это гармоничное сочетание инноваций и эффективности, особенно когда дело доходит до работы с категориальными данными.

Первые шаги CatBoost были сделаны в 2017 году, когда мир уже знал о таких гигантах, как XGBoost и LightGBM. В чем же заключается уникальность CatBoost? Его разработка была направлена на решение специфических проблем, связанных с категориальными данными – той самой головной боли многих специалистов в области машинного обучения. С тех пор CatBoost прошёл долгий путь развития и совершенствования, став не просто эффективным инструментом, но и частью больших исследовательских проектов в различных сферах от финансов до биоинформатики.

CatBoost выделяется на фоне других алгоритмов градиентного бустинга благодаря ряду ключевых особенностей:

Читать далее

Кто такой IT-Recruiter?

Level of difficultyEasy
Reading time6 min
Views3.5K

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

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

Специализация IT-рекрутер является одной из специализаций профессии рекрутера. Его специфика заключается в том, что он работает в сегменте IT и проводит найм кандидатов по следующим профессиями:

Читать далее

Концепция RAII (Resource Acquisition Is Initialization)

Level of difficultyEasy
Reading time9 min
Views17K

Здравствуй, Хабр!

RAII (Resource Acquisition Is Initialization) - это важная концепция в C++. Она представляет собой парадигму управления ресурсами, которая способствует безопасности и эффективности кода. В основе RAII лежит идея связывания жизненного цикла ресурса (например, памяти, файлового дескриптора или других ресурсов) с жизненным циклом объекта в C++. Это означает, что ресурсы выделяются и освобождаются автоматически при создании и уничтожении объектов.

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

Читать далее

Как преодолеть спад после запуска на примере Merge Garden

Reading time10 min
Views1.8K

Случай с Merge Garden очень интересен. Эта игра, сочетающая match-3 основу с мержем, изначально была запущена на мировой рынок во второй половине 2020 года. Как раз тогда, когда рынок был перегрет из-за продолжительного карантина, а механика мержа стала новым трендом среди игроков.

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

— Что из себя представляет игра Merge Gardens?
— И какой она была до 2023 года?

Читать далее

Разбор crackme от timotei_ (assembler)

Level of difficultyEasy
Reading time5 min
Views4.6K


Предупреждение


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


Введение


Исследуемая crackme является оконным приложением, и написана на assembler. Наша задача состоит в том, чтобы понять алгоритм генерации ключа, найти валидный серийный номер (или номера), и написать кейген.

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

Information

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