6 рекомендаций по запуску современной кодовой базы Android с нуля
Шесть тем в фокусе: внедрение зависимостей, чистая архитектура, Jetpack Compose, Kotlin, конвейеры сборки, безопасность. Расскажем обо всем, что важно, дополнив фрагментами кода и пояснениями.
Обучение LLM (и не только) на Go. С Python в люльке
Автор показывает, как реализовать шаблон развертывания приложений Sidecar на примере шаблонного кода Python из туториалов, который не сильно затруднит Go-разработчиков, когда понадобится обучать собственные, настраиваемые модели ML. Материал построен от простого к сложному: в конце умозрительный, но работающий пример кода с задержкой между запросом и ответом намного короче, чем 0,35 мс.
5 малоизвестных компонентов Compose
Jetpack Compose Material 3 скрывает целый арсенал малоизвестных, но крайне полезных компонентов. Они помогают решать специфические UI-задачи быстрее и создавать более продуманный пользовательский опыт. В этой статье рассмотрим пять таких "скрытых жемчужин".
is-A против has-A
Сравним эти две концепции: когда, зачем, где и как применяются. Изучим нюансы и проблемы, проиллюстрируем кодом.
Защита секретов в Android: от ключей API до хранения в продакшене
В Android-разработке хранение секретов в коде приложения — прямая угроза безопасности. Ключи API, токены и другие конфиденциальные данные могут быть извлечены из APK-файла. Узнайте, как построить надежную защиту, исходя из того, что клиентское приложение всегда может быть скомпрометировано.
Осваиваем ViewThatFits. Часть 2
Изучим сложные механизмы макета, попробуем раскрыть его логику и потенциал. Детально проанализируем идеальные размеры и адаптивность ViewThatFits, покажем его роль в различных сценариях применения.
Неужели ИИ подвел нас к порогу «дивного нового мира» Хаксли?
Общество, управляемое с помощью машин, в конечном итоге лишится свободы. Об этом предупреждал Олдос Хаксли в своей антиутопии "О дивный новый мир". Подумаем, насколько в эпоху ИИ сбылись пророческие предсказания Хаксли и не пора ли к ним прислушаться, чтобы избежать полного порабощения.
Ruby on Rails 7: важные рекомендации для высококачественного кода
Используйте Hotwire для современного фронтенда, оптимизируйте запросы к базе данных, повышайте качество кода инструментами вроде RuboCop - и ваши проекты Rails 7 будут выгодно отличаться. Так создаются высокопроизводительные, сопровождаемые, масштабируемые приложения.
C++: полное руководство по операторам Switch со строками
Разберем эффективные альтернативы строковым переключениям. Проиллюстрируем практическими примерами, дадим рекомендации и поможем с выбором оптимального подхода.
Как украсть API-ключи ChatGPT
А вы знаете, где нужно хранить API-ключи ChatGPT, чтобы спать спокойно? Известно ли вам, как злоумышленники могут обойти популярные техники безопасности и получить доступ к вашим API-ключам? Чтобы этого не случилось, ознакомьтесь с основными правилами безопасности фронтенда.
Почему стоит использовать Ruby on Rails
Краткий обзор Ruby. Чем объясняется его эффективность? Разберем преимущества этого языка.
Операторы Ruby: звездочка * и двойная звездочка **
Изучим эти мощные инструменты, их принцип работы. Рассмотрим, как аргументы передаются в методы, собираются в массив и хеш, каковы особенности присвоения значений.
Миф о «простом» приложении
Простые приложения — это не "быстро и дешево". Это самый дорогой и сложный продукт, за кажущейся легкостью которого прячутся тысячи решений, куча выброшенных функций и месяцы работы, чтобы все работало незаметно для вас.
Прекратите копировать логику сборки — используйте Gradle Convention Plugins
Хватит тратить время на синхронизацию десятков модулей вручную — откройте для себя мощь Gradle Convention Plugins. Этот инструмент позволит вам забыть о дублировании кода, централизовать настройки, ускорить сборку и сделать поддержку крупного проекта по-настоящему управляемой.
Бесконечное количество репозиториев Git на Cloudflare Worker с быстрым развертыванием
Авторы Gitlip рассказывают о своем продукте — инструменте совместной разработки в эпоху искусственного интеллекта. Это комплексное сочетание контроля версий на основе Git, совместного написания кода и развертывания в один клик. Цель — упростить практическое применение современных моделей искусственного интеллекта.
React Native или Swift: может ли JavaScript превзойти нативный iOS?
В 2026 году этот вопрос звучит острее, чем когда-либо: может ли JavaScript-фреймворк реально бросить вызов нативному Apple? Предлагаемое исследование разложит по полочкам ключевые факторы, чтобы вы приняли решение, основанное не на хайпе, а на технических и бизнес-потребностях вашего проекта.
Забудьте про сохранение изображений на Android в JPEG/PNG: HEIF и AVIF сэкономят до 50...
Хотите, чтобы ваше Android-приложение стало легче, быстрее и современнее? Откажитесь от старых форматов JPEG/PNG и переходите на HEIF и AVIF, чтобы сохранять те же изображения, только размером в 2 раза меньше и без потери качества. Они обеспечат вам молниеносную загрузку изображений и разгрузку памяти на 50 %.
C++: полное руководство по Mutable
Разберем преимущества этого инструмента, типичные сценарии и потенциальные ошибки. Проиллюстрируем практическими примерами, дадим рекомендации.
Рекомпозиция в Jetpack Compose и View-рендеринг на основе XML: в чем разница?
Переход от традиционного View-рендеринга на основе XML к рекомпозиции в Jetpack Compose может оказаться непростым. Но преимущества Compose с точки зрения производительности, удобства разработки и обслуживания оправдывают затраченные усилия.
C++: подробное руководство по выводу массива
Разберем преимущества разных подходов и реальные сценарии. Проиллюстрируем практическими примерами, поможем определиться с выбором.
Всплывающие подсказки (Tooltips) в Compose Material 3
Всплывающие подсказки (Tooltips) — незаменимый элемент, который помогает пользователям разобраться в интерфейсе. С Compose Material 3 больше не нужны сторонние библиотеки — вся мощь для создания и кастомизации подсказок уже встроена. В этой статье разберем, как работать с простыми и расширенными подсказками в стабильной версии 1.3.2, а также изучим новые возможности альфа-версии 1.4.0.
C++: полное руководство по «приведению вверх»
Изучим нюансы приведения вверх, проиллюстрировав их практическими примерами и реальными сценариями. Разберем неявное и явное приведения, полиморфизм, конструкторы и деструкторы, множественное наследование, dynamic_cast.
Реверсинг плагина компилятора Compose: перехват фронтенда
Как плагином компилятора нарушаются правила Kotlin? Изучим архитектуру, FIR-фронтенд компилятора. Заглянем внутрь и попробуем сориентироваться: что и где перехватывается при прохождении этапов компилятора Kotlin?
Сервис балансировки нагрузки на ПИД-регуляторах — умозрительный пример
Автор материала рассказывает о ПИД-регуляторе, показывает умозрительный пример с управлением скоростью автомобиля, а затем реализует симуляцию балансировщика нагрузки на Python. Удивительно, но тот же метод для балансировки нагрузки применили в Uber. Подробности читайте по ссылке ниже.
C++: полное руководство по memset
Разберем сценарии применения, проиллюстрируем практическими примерами. Обозначим типичные проблемы и их решения, дадим рекомендации.
Что мы теряем, когда экономим творческие усилия
Искусственный интеллект создает идеальные изображения собак за секунды, но мы почему-то до сих пор помним уродливых щенков, нарисованных в детстве на старом софте. Не обесценивает ли упрощение творческого процесса его результат? Ответ на этот вопрос заставит вас пересмотреть свое отношение к творчеству и технологиям.
Как решить реальную задачу при помощи структурированной конкурентности и виртуальных потоков Java 21
Любую сложную задачу можно разбить на простые. Особенно просто и естественно это делается в одном потоке выполнения кода. Но что делать в многопоточной среде, где отношения между конкурентно выполняемыми задачами хранит только ваша голова? Java 21 разгружает вашу голову идеей структурированной конкурентности. JDK позволяет явно выделить подзадачи (подстеки), чтобы затем получить общий итог работы подзадач. Смотрим, как это делается, на примере реальной задачи.
Утраченное искусство красоты кода
В эпоху ИИ-генерации мы все реже задумываемся о том, что код может быть не просто функциональным, а по-настоящему красивым. Но было время, когда элегантность алгоритмов восхищала, как поэзия, а программисты оставляли в строках частицу своего мышления. Что происходит с искусством кода, когда его создание переходит к машинам?
Кодифицируйте схемы архитектуры AWS уже сегодня
Разберем преимущества этой альтернативы интерфейсам drag-and-drop. Создадим простую схему бессерверной архитектуры.
C++: полное руководство по explicit
Изучим нюансы этого ключевого слова, реальный сценарий использования. Проиллюстрируем примерами, дадим рекомендации.
Язык выражений Spring для создания простого движка правил
Научимся определять и оценивать бизнес-правила записей в базе данных. Настроим проект, проиллюстрируем примерами.
C++: полное руководство по бинарной сортировке
Изучим реализацию и эффективное применение бинарной сортировки, проиллюстрируем примерами. Сравним по производительности с другими алгоритмами, дадим рекомендации.
C++: полное руководство по кортежам
Изучим реальные применения кортежей на практике и расширенные операции. Обозначим типичные проблемы и их решения.
Эффективная стратегия тестирования Android-проектов. Часть 2: модульное тестирование
Эта часть посвящена основным элементам модульного тестирования при подготовке Android-проектов, а также различным типам тестовых дублеров. Вы узнаете, что именно надо тестировать при Android-разработке и получите рекомендации по написанию удобных в обслуживании и эффективных тестов.
C++: полное руководство по функциям Floor и Ceil
Изучим эффективное применение этих функций в реальных сценариях, проиллюстрируем примерами. Обозначим типичные проблемы и их решения.
Ruby on Rails — пишите тесты, как профессионал
Узнаем на простых и эффективных примерах, как пишутся оптимизированные, быстрые и точные тесты. Хорошие тесты против плохих: как сокращается дублирование, поддерживается четкая структурированность, соблюдается принцип DRY.
C++: полное руководство по unique_ptr
Изучим реальные применения unique_ptr на практике. Обозначим типичные проблемы и их решения, а также преимущества unique_ptr в производительности.
[SwiftUI] @AppStorage: управление UserDefaults с помощью ViewModel
Чем @AppStorage отличается от @State и как решается потенциальная проблема @AppStorage с самим SwiftUI? Применим подход со ViewModel.
C++: полное руководство по сортировке пузырьком
Оптимизируем базовую реализацию, изучим реальные применения. Замерим выполнение при разных размерах входных данных, обозначим типичные проблемы и их решения.
Ruby: рефакторинг без лишних сложностей
С чего начать и как избежать ловушки усложнения? Дадим рекомендации с небольшим примером.
Разработка игр для малышей: больше пользы, меньше разочарования
Когда настольная детская игра превращается из развлечения в объект статистического исследования, открывается удивительная математика детского счастья. Узнайте о том, как гениальный дизайн игр для малышей балансирует на тонкой грани между радостью победы и азартом борьбы.
Реализация тематических фильтров новостей в приложении TrendNow. Часть 3
Эта часть посвящена реализации тематического фильтра трендовых новостей в агрегаторе. Вы узнаете, как добиться отображения трендовых новостей на основе выбранной пользователем темы, сохранять выбранную тему в локальном хранилище с помощью DataStore и оптимизировать рекомпозиции.
Ruby может быть лучше Python для абсолютных новичков
Когда дело доходит до обучения новичков программированию, часто доминируют два языка — это Ruby и Python. Оба являются интерпретируемыми языками высокого уровня, известные своей относительно легкостью изучения и большим поддерживающим сообществом. Однако если углубиться в нюансы обучения, то можно обнаружить несколько причин, по которым Ruby может предложить новичкам явные преимущества перед Python.
C++: полное руководство по обработке файлов с fstream
Разберем основные файловые операции, проиллюстрируем практическими примерами. Обозначим типичные сценарии, дадим рекомендации.
C++: полное руководство по вставке в векторах
Изучим нюансы векторной вставки, ее влияние на производительность. Проиллюстрируем примерами, обозначим типичные проблемы, дадим рекомендации.
C++: подробное руководство по размерам векторов
Разберем простые и продвинутые методы получения размера вектора, нюансы производительности. Рассмотрим типичные ошибки и реальные сценарии.
Анализ тональности в 3 шага: использование quick_sentiments в Python
Устали от бесконечной предварительной обработки текста и сложных пайплайнов машинного обучения? Теперь у вас будет возможность получать готовые прогнозы тональности всего в три шага — без головной боли с настройкой моделей и очисткой данных. Откройте для себя quick_sentiments: пакет, который превращает трудоемкие задачи в минутные операции.
Реализация бесконечной прокрутки списка новостей в приложении TrendNow. Часть 4
Реализация бесконечной прокрутки в Lazy Column Jetpack Compose - новый шаг в создании новостного приложения TrendNow. Она позволит без проблем загружать больше трендовых новостей по мере того, как пользователь прокручивает список.
5 функций-расширений в арсенале каждого разработчика Jetpack Compose
Изучим пять функций из асенала разработчика Jetpack Compose и столько же для работы с системой представлений. Проиллюстрируем примерами.
Роль Gradle в Android-проектах
Gradle — мощное средство сборки в современной Android-разработке. Понимание его работы критически важно для разработчика: от корректной настройки зависимостей до оптимизации процесса сборки. В этой статье мы подробно разберем архитектуру Gradle, его жизненный цикл и ключевые компоненты, чтобы помочь вам освоить этот важный инструмент.
C++: подробное руководство по cортированным векторам
Разберем основные операции, выполняемые с сортированными векторами, и реальные сценарии. Сравним по эффективности эти векторы с несортированными.
C++: полное руководство по динамическим массивам
Изучим практическое применение этих массивов, оптимизацию их производительности. Проиллюстрируем примерами и реальным сценарием использования.
fastquadtree: Как я использовал Rust, чтобы сделать максимально быстрое квадродерево на Python
Как увеличить производительность муравьиного симулятора в 10 раз, а потом создать самое быстрое квадродерево на Python? История библиотеки fastquadtree — от решения конкретной задачи до высокопроизводительного open-source инструмента.
Аттестации: новое поколение подписей в PyPI
Представляем читателям обзор аттестаций PyPI в цифрах и диаграммах с конкретным примером и, конечно же, кодом. В материале также рассказывается о том, кому и зачем понадобится механизм. Особое внимание авторы уделяют происхождению пакета, которое позволяет отследить процесс появления пакета вплоть до конкретного устройства.
Как создать Open Source библиотеку Android
Пошагово пройдем процесс проектирования. Спланируем надежную стратегию согласно жизненным циклам проекта ПО с открытым исходным кодом - от проектирования до выпуска.
Kotlin: изолированные классы и интерфейс
Хотите писать Kotlin-код, который компилятор проверяет за вас? Все дело в грамотном использовании изолированных классов и интерфейсов. Узнайте, как выбирать между ними для создания идеальной — гибкой, удобочитаемой и типобезопасной — архитектуры.
Реализация кэширования новостных тем в приложении TrendNow. Часть 5
В этой части вы узнаете о том, как эффективно реализовать кэширование новостных тем на стороне клиента с использованием базы данных Room. Это может быть полезно для снижения ограничения скорости API, уменьшения нагрузки на сервер, повышения эффективности приложения.
Найти все на C++: практическое руководство
Изучим, как на C++ реализуется и применяется функциональность find_all. Проиллюстрируем примерами, обозначим типичные проблемы, дадим рекомендации.
Ruby: unless против if
Разберем невидимые отличия и нюансы. В конце - небольшая шпаргалка по применению if и unless.
Пайплайн рендеринга во Flutter: фаза сборки
Фаза сборки имеет решающее значение в процессе рендеринга во Flutter. Прислушайтесь к рекомендациям по оптимизации этой фазы, чтобы создавать высокопроизводительные и визуально привлекательные веб-приложения с бесшовным пользовательским опытом.
Добавление новостных тем в приложение TrendNow. Часть 2
2-я часть посвящена добавлению в новостное приложение раздела тем с реализацией горизонтальной прокрутки в LazyColumn. Вы узнаете, зачем стоит создать еще одну ViewModel и как добавить раздел/элемент в LazyColumn Jetpack Compose, чтобы избежать ненужных рекомпозиций.
За пределами GeometryReader: создание улучшенных модификаторов SwiftUI с помощью onGeometryChange
Откажитесь от GeometryReader, который нарушает верстку — используйте onGeometryChange для точного отслеживания геометрии без изменения иерархии представлений. Этот элегантный подход сделает ваш код чище, макеты — более предсказуемыми, а разработку — приятнее.
Отходим от монолита: освоение модульной навигации в Android (Kotlin и компонент Jetpack Navigation)
Основной граф навигации слишком запутан? Пора переходить к модульной навигации. Разберем, как развязать модули и ускорить разработку.
C++: полное руководство по циклам while
Разберем сценарии применения, проиллюстрируем практическими примерами, дадим рекомендации. Когда предпочтительнее цикл do-while?
Кэширование трендовых новостей в приложении TrendNow с помощью OkHttp Cache. Часть 6
В этой части вы узнаете о решении проблемы ограничения скорости API в TrendNow путем реализации OkHttp Cache для кэширования трендовых новостей на стороне клиента. Это решение, хотя и не устраняет полностью проблему, помогает минимизировать ограничение скорости API.
3 инструмента для отслеживания и визуализации выполнения кода на Python
Для чего нужны новые инструменты?
Видели когда-нибудь такой вывод ошибок?
2 divided by 1 is equal to 2.0.
Traceback (most recent call last):
File "loguru_example.py", line...
Инженерия данных: руководство для начинающих, вдохновленное Формулой-1
Сложные понятия и процессы лучше всего объяснять на конкретных кейсах. Сегодня покажем, как работать с данными, на примере компании, участвующей в гоночном чемпионате Формула-1.
Обработка файлов на C
Какие функции используются для открытия, редактирования и закрытия файлов? Рассмотрим особенности их применения с текстовыми и двоичными файлами.
Создайте собственный AdBlocker за 10 минут
Расширения для браузера всегда меня восхищали. В современном мире их ценность уже не столь очевидна, в особенности из-за перехода от десктопных версий браузеров к...
Я хочу изучать AI и машинное обучение. С чего мне начать?
Когда-то я работал в Apple Store и мечтал изменить свою жизнь: вместо обслуживания техники Apple, мне хотелось ее создавать.
Я начал изучать машинное обучение (ML)...





































![[SwiftUI] @AppStorage: управление UserDefaults с помощью ViewModel [SwiftUI] @AppStorage: управление UserDefaults с помощью ViewModel](https://nuancesprog.ru/wp-content/uploads/2025/02/SwiftUI-pattern-218x150.png)































