Pull to refresh
-5
0

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

Send message

Изоляция с помощью глобальных акторов в Swift Concurrency: варианты на примере @MainActor

Reading time7 min
Views828

Привет, Хабр! Меня зовут Алексей Григорьев, я техлид iOS-разработки продукта Membrana в МТС. Это тариф с приложением для управления приватностью в сети и окружением.

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

Один из самых распространенных и полезных глобальных акторов — это @MainActor, который гарантирует выполнение операций в главном потоке приложения. В этом посте я на его примере покажу все варианты, как можно реализовать изоляцию и что в итоге выведет код: на каком потоке будут выполнены update, internal update и set в property.

Читать далее

Вышла операционная система «Альт Рабочая станция К» 11.0: Wayland по умолчанию и мегавыпуск KDE Plasma 6

Level of difficultyMedium
Reading time4 min
Views1.5K

«Базальт СПО» выпустила операционную систему «Альт Рабочая станция К» 11.0. Среди ключевых изменений — графическая среда KDE Plasma 6 с расширенными настройками интерфейса и поддержкой Wayland, технология шифрования дисков LUKS2.

Кастомизация интерфейса

В ОС «Альт Рабочая станция К» 11.0 графическая платформа KDE Plasma обновлена до версии 6.

KDE Plasma обеспечивает большой набор настроек интерфейса. Пользователь может:
    • изменять внешний вид, расположение, конфигурацию панели управления, и даже размещать на рабочем столе несколько панелей;
    • добавлять и удалять виджеты;
    • изменять цветовые темы;
    • задавать комбинации клавиш для различных действий.

Разобраться с настройками рабочей среды поможет приложение-«экскурсовод» «Помощник первого запуска». Его назначение — познакомить пользователя с интерфейсом и особенностями рабочего окружения.

Инструменты администратора

Добавлен модуль Fortinet SSLVPN, защищающий чувствительную информацию от несанкционированного доступа даже в общественных сетях Wi-Fi. Модуль использует протокол SSL/TLS (Transport Layer Security) для шифрования всех передаваемых данных.

Модуль kio-admin позволяет редактировать системные файлы и файлы конфигурации в графическом интерфейсе через файловый менеджер Dolphin с правами суперпользователя.

Обновилась поддержка Secure Boot, позволяющего установить на один компьютер ОС «Альт Рабочая станция К» и Windows, что может быть удобно в период постепенной замены импортной ОС на российскую.

Добавлено приложение для изготовления копий операционных систем «Копидел». Образ в формате ISO создается в несколько кликов, и далее его можно тиражировать через физические носители и/или через сеть.

Читать далее

Продаём iOS-подписки по науке: нобелевский лауреат Канеман и поведенческая экономика

Level of difficultyMedium
Reading time64 min
Views2K

Монетизация мобильных приложений через подписки — одна из самых непростых задач в современной iOS-разработке. Даже качественное приложение с полезным функционалом и сильным UX может столкнуться с тем, что конверсия в платную подписку остаётся на уровне 1–2%. Почему? Потому что пользователи принимают решения не только рационально. Их поведение практически ВСЕГДА определяется когнитивными искажениями, о которых большинство создателей приложений даже не догадывается.

Считаете, что это не влияет на вас? Уверены? Значит, вы уже под воздействием иллюзии. Даже если вам действительно удаётся распознать некоторые когнитивные ловушки — не забывайте: вы не репрезентативны. Ваш опыт — исключение, а не правило. Большинство пользователей реагирует именно так, как описано ниже.

Эта статья поможет вам взглянуть на процесс покупки подписки через призму поведенческой экономики и психологии принятия решений. Мы не будем гадать, «что сработает». Вместо этого разберём проверенные научные эффекты и эвристики (28 шт), описанные в работах Даниэля Канемана — психолога, лауреата Нобелевской премии по экономике — и покажем, как они могут увеличить ваши продажи именно в iOS-приложениях с подписочной моделью.

Хочу узнать все об увеличении подписок

Разбираем архитектуру. Часть 1. Чистая архитектура и её корни: история и взаимосвязи

Level of difficultyEasy
Reading time24 min
Views14K

Предисловие

Цель этой статьи - объединить и кратко изложить все базовые архитектурные подходы: их терминологию, концепции и отличительные черты. Собрать всё воедино, чтобы можно было относительно быстро вникнуть в основы.

Я решил написать серию статей, посвящённых различным аспектам проектирования программных систем, но первоначальной идеей было показать архитектурное решение моего pet-проекта на FastAPI — пример реализации «чистой архитектуры» с использованием современного стека: Python3.13, FastAPI, Uvicorn, Nginx, PostgreSQL, Alembic, Celery, Redis, Pytest, Filebeat, Logstash, Elasticsearch, Kibana, Prometheus, Grafana, Docker и Docker Compose.

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

Читать далее

Jetpack Compose для Android TV: как происходит перемещение фокуса

Reading time10 min
Views1.5K

Привет, Хабр! Меня зовут Сергей Захаров, я разработчик в онлайн-кинотеатре KION. Jetpack Compose постепенно становится стандартом разработки UI для Android, и Android TV не остался в стороне. Вместо устаревшего и громоздкого Leanback теперь есть гибкий и мощный фреймворк, который обещает упростить разработку.

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

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

Читать далее

Параметры конфигурации мастера, отслеживаемые репликами PostgreSQL

Level of difficultyMedium
Reading time9 min
Views1.8K

Значения восьми параметров конфигурации мастера (primary, ведущего сервера PostgreSQL) сохраняются в управляющих файлах и изменения их значений передаются через журнал (WAL) на реплики. Если реплика открыта для запросов (hot_standby=on), то значения пяти числовых параметров на реплике должны быть не меньше, чем на мастере, иначе процесс startup прекратит накат (replay) журнальных записей. А после рестарта экземпляры реплик не запустятся. В статье рассматриваются эти параметры особенности изменения их значений.

Значения пяти числовых параметров конфигурации, сохраненных в управляющем файле кластера, можно посмотреть утилитой pg_controldata:

Читать далее

Обновление Кибер Бэкапа — обзор новинок в версии 17.3

Reading time6 min
Views1.6K

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

Помимо этого мы развили защиту платформ виртуализации VMware, oVirt и подобных систем, а также OpenStack. Мы доработали механизмы резервного копирования и восстановления Kubernetes, расширили возможности аудита событий безопасности и интеграции с системами SIEM, внедрили ряд других улучшений.

Читать далее

Язык твой — друг твой. Дообучаем языковые модели, собираем корпуса, делаем книги на малоресурсных языках

Level of difficultyMedium
Reading time14 min
Views8.6K

📌 градиент обреченный

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

Мы научимся:

1. Дообучать мультиязычные языковые модели, переводящие текст в векторное представление (эмбеддинги).

2. Использовать их для выравнивания текстов библиотекой lingtrain-aligner, извлекая из текстов параллельные корпуса.

3. Загружать датасеты и модели на HuggingFace, чтобы это было доступно всем.

4. Создавать из выравнивания параллельные книги для изучения языков.

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

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

Читать далее

lazyjournal — ленивый интерфейс для поиска и анализа логов

Level of difficultyEasy
Reading time7 min
Views4.7K

Ранее, я уже писал статью о различных способах, которые мне приходилось использовать для чтения логов, и к какому решению в итоге пришел. Хотя прошло не так много времени, с тех пор приложение не переставало развиваться. Узнав о том, что на Хабре проходит сезон Open source, мне показалось это отличным поводом подчеркнуть, что именно стало причиной для создания данного инструмента, а также рассказать немного подробнее про основные и новые функции.

Читать далее

XML vs Compose, не можете решить? Часть 1: Введение

Level of difficultyMedium
Reading time2 min
Views3.3K

Jetpack Compose — не просто «альтернатива XML». Это совершенно другой парадигмальный сдвиг в том, как Android отрисовывает и управляет UI. Но чтобы по‑настоящему понять, чем Compose отличается от привычного XML, давайте посмотрим, что происходит под капотом в каждом случае.

Читать далее

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

Reading time13 min
Views11K

📌 градиент обреченный

Хочу показать, как создать мультиязычный параллельный корпус и книги при помощи моего пет-проекта.

Для примера возьмем 10 редакций "Мастера и Маргариты" Михаила Булгакова (ru, uk, by, en, fr, it, es, de, hu, zh). Сначала выровняем девять переводов с оригиналом, а затем выровняем все вместе. Получим параллельный корпус на 10 языках и много красивых книг. Приступим.

Код я оформил в виде веб-приложения, основная логика которого выполняется при помощи библиотеки lingtrain-aligner. Выравнивать можно прямиком из кода на python, либо через UI. В приложении будет удобней разрешать конфликты и там есть редактор, позволяющий корректировать получающийся корпус плюс дополнительные опции по верстке. Код у проекта открытый, можно посмотреть как все работает внутри. Приступим.

Читать далее

Организация ML-проекта с примерами

Level of difficultyMedium
Reading time5 min
Views2.5K

Организация - это важно. То же относится к ML-проектам. Из каких компонент он должен состоять? Как оформить проект, чтобы всего хватало и было удобно это масштабировать? Рассмотрим организацию по шаблону CookieCutter с примерами.

Читать далее

Аккаунт разработчика Google Play Console и Apple Developer. Как создать из России 2025. Пошаговая инструкция регистрации

Level of difficultyEasy
Reading time12 min
Views6.6K

В 2024 году помогли с регистрацией аккаунта разработчика в Google Play и App Store десяткам компаний. Казалось бы — что такого? Вводишь данные и готово. Но лицензия платная, а на пользователях РФ санкции, что доставляет определенные неудобства. Как в таких реалиях создать аккаунт, чтобы опубликовать мобильное приложение — рассказываем в статье.

Читать далее

Переходим с Microsoft Active Directory на РЕД АДМ. Два подхода к миграции ИТ-инфраструктуры

Reading time8 min
Views8.3K

Привет, Хабр! В сегодняшнем материале рассмотрим два подхода к переносу ИТ-инфраструктуры на отечественную систему централизованного управления. В комплекте: обзор возможностей и пошаговая инструкция, как подготовить домен к миграции, установить доверительные отношения или создать параллельную инфраструткуру.

Читать далее

Что в черном ящике, или Как разработчику понять, что требует оптимизации в БД PostgreSQL

Level of difficultyEasy
Reading time20 min
Views11K

Привет! Меня зовут Дмитрий Руденко, я из команды Databases Т-Банка. В последние годы наблюдается тенденция к переходу на Postgres со стороны многих команд и компаний, что приводит к увеличению количества Postgres-баз данных, требующих эффективного мониторинга и управления. 

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

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

Читать далее

Model Context Protocol, обзор и практика

Level of difficultyEasy
Reading time9 min
Views9.6K

В конце 2024г компания Anthropic, создатель LLM-моделей Claude, опубликовала стандарт Model Context Protocol и выпустила статью, посвящённую видению Anthropic того, как строить эффективные системы с AI-агентами: Building effective agents (хорошая вводная статья по паттернам агентских систем).

Прошло всего 3 месяца, и к этому моменту поддержка MCP уже появилась почти во всех AI- вайб-IDE, во многих LLM-интерфейсах, были выпущены тысячи MCP-серверов от компаний и сообщества.
Самое время написать о том, что это такое :)

Читать далее

Wolfram Natural Language Understanding или спасение для студентов

Level of difficultyMedium
Reading time12 min
Views5.8K

Wolfram — крутая штука. Сколько школьников получило из-за него пятерку, а сколько студентов зачет, не сосчитать...

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

Хоть скопируй лабораторную по физике...

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

Языковая модель (NLU) — разгадка.

Читать далее

Построение высоконагруженного WebSocket-сервера на Kotlin + Ktor: архитектура и лучшие практики

Level of difficultyMedium
Reading time24 min
Views3K

WebSocket-сервер на Ktor – это эффективное решение для реального времени, позволяющее держать тысячы двунаправленных соединений без создания потоков на каждое подключение. Благодаря корутинам Kotlin Ktor упрощает реализацию WebSocket-коммуникаций в реальном времени (Ktor 101: Efficient JVM HTTP Toolkit | The IntelliJ IDEA Blog). В данной статье мы разберём архитектуру такого сервера, использование корутин и каналов для масштабируемой обработки сессий, поддержку комнат (чатов, игровых лобби, сигналинга), управление состоянием клиентов (heartbeat, реконнекты), масштабирование на несколько узлов, интеграцию с внешними сервисами, а также приведём примеры кода и практические советы из боевого опыта.

Читать далее

TACACS in da Сloud

Level of difficultyHard
Reading time25 min
Views11K

Вот есть у вас сотня коммутаторов или маршрутизаторов. Это много или мало?

Ну вроде как мало. А если надо на всех разом нового сотрудника добавить? А потом удалить уволившегося? А потом поротировать скомпрометированные пароли и ключи?

И тут приходит служба безопасности, которая, во-первых, хочет централизованно контролировать, у кого какие доступы, во-вторых, актуальны ли они на железках, в-третьих, ещё и смотреть, кто что когда запускал, да ещё и разрешать или запрещать это делать («Просто продолжай, не останавливайся» © СИБ).

Ну вот совсем уже и не мало. Чувствуете, чем это пахнет? Даааа, TACACS-ом.

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

Читать далее

Переключение между контекстами убивает эффективность разработчиков на корню

Reading time10 min
Views30K

Я программист. Меня всё время отвлекают, и я хочу об этом поговорить.

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

Каждое короткое сообщение, которое вы отправляете коллеге в Slack, отнимает у него 23 минуты продуктивной работы. И это далеко не всё.

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

Читать далее

Information

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