Как украсть API-ключи ChatGPT

Как украсть API-ключи ChatGPT

А вы знаете, где нужно хранить API-ключи ChatGPT, чтобы спать спокойно? Известно ли вам, как злоумышленники могут обойти популярные техники безопасности и получить доступ к вашим API-ключам? Чтобы этого не случилось, ознакомьтесь с основными правилами безопасности фронтенда.
C++: полное руководство по операторам Switch со строками

C++: полное руководство по операторам Switch со строками

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

is-A против has-A

Сравним эти две концепции: когда, зачем, где и как применяются. Изучим нюансы и проблемы, проиллюстрируем кодом.
Рекомпозиция в Jetpack Compose и View-рендеринг на основе XML: в чем разница?

Рекомпозиция в Jetpack Compose и View-рендеринг на основе XML: в чем разница?

Переход от традиционного View-рендеринга на основе XML к рекомпозиции в Jetpack Compose может оказаться непростым. Но преимущества Compose с точки зрения производительности, удобства разработки и обслуживания оправдывают затраченные усилия.
5 малоизвестных компонентов Compose

5 малоизвестных компонентов Compose

Jetpack Compose Material 3 скрывает целый арсенал малоизвестных, но крайне полезных компонентов. Они помогают решать специфические UI-задачи быстрее и создавать более продуманный пользовательский опыт. В этой статье рассмотрим пять таких "скрытых жемчужин".
C++: полное руководство по «приведению вверх»

C++: полное руководство по «приведению вверх»

Изучим нюансы приведения вверх, проиллюстрировав их практическими примерами и реальными сценариями. Разберем неявное и явное приведения, полиморфизм, конструкторы и деструкторы, множественное наследование, dynamic_cast.
C++: подробное руководство по выводу массива

C++: подробное руководство по выводу массива

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

Реверсинг плагина компилятора Compose: перехват фронтенда

Как плагином компилятора нарушаются правила Kotlin? Изучим архитектуру, FIR-фронтенд компилятора. Заглянем внутрь и попробуем сориентироваться: что и где перехватывается при прохождении этапов компилятора Kotlin?
C++: полное руководство по std::stoi

C++: полное руководство по std::stoi

Изучим, как эффективно применяется эта функция и справляется с пограничными случаями в реальных приложениях. Обозначим типичные проблемы и их решения.
Забудьте про сохранение изображений на Android в JPEG/PNG: HEIF и AVIF сэкономят до 50 % места

Забудьте про сохранение изображений на Android в JPEG/PNG: HEIF и AVIF сэкономят до 50...

Хотите, чтобы ваше Android-приложение стало легче, быстрее и современнее? Откажитесь от старых форматов JPEG/PNG и переходите на HEIF и AVIF, чтобы сохранять те же изображения, только размером в 2 раза меньше и без потери качества. Они обеспечат вам молниеносную загрузку изображений и разгрузку памяти на 50 %.
Кодифицируйте схемы архитектуры AWS уже сегодня

Кодифицируйте схемы архитектуры AWS уже сегодня

Разберем преимущества этой альтернативы интерфейсам drag-and-drop. Создадим простую схему бессерверной архитектуры.
Прекратите копировать логику сборки — используйте Gradle Convention Plugins

Прекратите копировать логику сборки — используйте Gradle Convention Plugins

Хватит тратить время на синхронизацию десятков модулей вручную — откройте для себя мощь Gradle Convention Plugins. Этот инструмент позволит вам забыть о дублировании кода, централизовать настройки, ускорить сборку и сделать поддержку крупного проекта по-настоящему управляемой. 
C++: полное руководство по Mutable

C++: полное руководство по Mutable

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

Язык выражений Spring для создания простого движка правил

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

Утраченное искусство красоты кода 

В эпоху ИИ-генерации мы все реже задумываемся о том, что код может быть не просто функциональным, а по-настоящему красивым. Но было время, когда элегантность алгоритмов восхищала, как поэзия, а программисты оставляли в строках частицу своего мышления. Что происходит с искусством кода, когда его создание переходит к машинам?
Эффективная стратегия тестирования Android-проектов. Часть 2: модульное тестирование

Эффективная стратегия тестирования Android-проектов. Часть 2: модульное тестирование

Эта часть посвящена основным элементам модульного тестирования при подготовке Android-проектов, а также различным типам тестовых дублеров. Вы узнаете, что именно надо тестировать при Android-разработке и получите рекомендации по написанию удобных в обслуживании и эффективных тестов.
Ruby on Rails  -  пишите тесты, как профессионал

Ruby on Rails  —  пишите тесты, как профессионал

Узнаем на простых и эффективных примерах, как пишутся оптимизированные, быстрые и точные тесты. Хорошие тесты против плохих: как сокращается дублирование, поддерживается четкая структурированность, соблюдается принцип DRY.
Сервис балансировки нагрузки на ПИД-регуляторах — умозрительный пример

Сервис балансировки нагрузки на ПИД-регуляторах — умозрительный пример

Автор материала рассказывает о ПИД-регуляторе, показывает умозрительный пример с управлением скоростью автомобиля, а затем реализует симуляцию балансировщика нагрузки на Python. Удивительно, но тот же метод для балансировки нагрузки применили в Uber. Подробности читайте по ссылке ниже.
C++: полное руководство по memset

C++: полное руководство по memset

Разберем сценарии применения, проиллюстрируем практическими примерами. Обозначим типичные проблемы и их решения, дадим рекомендации.
Всплывающие подсказки (Tooltips) в Compose Material 3

Всплывающие подсказки (Tooltips) в Compose Material 3

Всплывающие подсказки (Tooltips) — незаменимый элемент, который помогает пользователям разобраться в интерфейсе. С Compose Material 3 больше не нужны сторонние библиотеки — вся мощь для создания и кастомизации подсказок уже встроена. В этой статье разберем, как работать с простыми и расширенными подсказками в стабильной версии 1.3.2, а также изучим новые возможности альфа-версии 1.4.0.
Ruby: рефакторинг без лишних сложностей

Ruby: рефакторинг без лишних сложностей

С чего начать и как избежать ловушки усложнения? Дадим рекомендации с небольшим примером.
[SwiftUI] @AppStorage: управление UserDefaults с помощью ViewModel

[SwiftUI] @AppStorage: управление UserDefaults с помощью ViewModel

Чем @AppStorage отличается от @State и как решается потенциальная проблема @AppStorage с самим SwiftUI? Применим подход со ViewModel.
Реализация тематических фильтров новостей в приложении TrendNow. Часть 3

Реализация тематических фильтров новостей в приложении TrendNow. Часть 3

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

Реализация бесконечной прокрутки списка новостей в приложении TrendNow. Часть 4

Реализация бесконечной прокрутки в Lazy Column Jetpack Compose - новый шаг в создании новостного приложения TrendNow. Она позволит без проблем загружать больше трендовых новостей по мере того, как пользователь прокручивает список.
C++: подробное руководство по размерам векторов

C++: подробное руководство по размерам векторов

Разберем простые и продвинутые методы получения размера вектора, нюансы производительности. Рассмотрим типичные ошибки и реальные сценарии.
C++: полное руководство по explicit

C++: полное руководство по explicit

Изучим нюансы этого ключевого слова, реальный сценарий использования. Проиллюстрируем примерами, дадим рекомендации.
C++: полное руководство по функциям Floor и Ceil

C++: полное руководство по функциям Floor и Ceil

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

Ruby может быть лучше Python для абсолютных новичков

Когда дело доходит до обучения новичков программированию, часто доминируют два языка — это Ruby и Python. Оба являются интерпретируемыми языками высокого уровня, известные своей относительно легкостью изучения и большим поддерживающим сообществом. Однако если углубиться в нюансы обучения, то можно обнаружить несколько причин, по которым Ruby может предложить новичкам явные преимущества перед Python.
C++: подробное руководство по cортированным векторам

C++: подробное руководство по cортированным векторам

Разберем основные операции, выполняемые с сортированными векторами, и реальные сценарии. Сравним по эффективности эти векторы с несортированными.
C++: полное руководство по обработке файлов с fstream

C++: полное руководство по обработке файлов с fstream

Разберем основные файловые операции, проиллюстрируем практическими примерами. Обозначим типичные сценарии, дадим рекомендации.
5 функций-расширений в арсенале каждого разработчика Jetpack Compose

5 функций-расширений в арсенале каждого разработчика Jetpack Compose

Изучим пять функций из асенала разработчика Jetpack Compose и столько же для работы с системой представлений. Проиллюстрируем примерами.
Роль Gradle в Android-проектах

Роль Gradle в Android-проектах

Gradle — мощное средство сборки в современной Android-разработке. Понимание его работы критически важно для разработчика: от корректной настройки зависимостей до оптимизации процесса сборки. В этой статье мы подробно разберем архитектуру Gradle, его жизненный цикл и ключевые компоненты, чтобы помочь вам освоить этот важный инструмент.
Как создать Open Source библиотеку Android

Как создать Open Source библиотеку Android

Пошагово пройдем процесс проектирования. Спланируем надежную стратегию согласно жизненным циклам проекта ПО с открытым исходным кодом  -  от проектирования до выпуска.
C++: полное руководство по вставке в векторах

C++: полное руководство по вставке в векторах

Изучим нюансы векторной вставки, ее влияние на производительность. Проиллюстрируем примерами, обозначим типичные проблемы, дадим рекомендации.
C++: полное руководство по динамическим массивам

C++: полное руководство по динамическим массивам

Изучим практическое применение этих массивов, оптимизацию их производительности. Проиллюстрируем примерами и реальным сценарием использования.
C++: полное руководство по бинарной сортировке

C++: полное руководство по бинарной сортировке

Изучим реализацию и эффективное применение бинарной сортировки, проиллюстрируем примерами. Сравним по производительности с другими алгоритмами, дадим рекомендации.
Kotlin: изолированные классы и интерфейс

Kotlin: изолированные классы и интерфейс

Хотите писать Kotlin-код, который компилятор проверяет за вас? Все дело в грамотном использовании изолированных классов и интерфейсов. Узнайте, как выбирать между ними для создания идеальной — гибкой, удобочитаемой и типобезопасной — архитектуры. 
Аттестации: новое поколение подписей в PyPI

Аттестации: новое поколение подписей в PyPI

Представляем читателям обзор аттестаций PyPI в цифрах и диаграммах с конкретным примером и, конечно же, кодом. В материале также рассказывается о том, кому и зачем понадобится механизм. Особое внимание авторы уделяют происхождению пакета, которое позволяет отследить процесс появления пакета вплоть до конкретного устройства.
Найти все на C++: практическое руководство

Найти все на C++: практическое руководство

Изучим, как на C++ реализуется и применяется функциональность find_all. Проиллюстрируем примерами, обозначим типичные проблемы, дадим рекомендации.
Реализация кэширования новостных тем в приложении TrendNow. Часть 5

Реализация кэширования новостных тем в приложении TrendNow. Часть 5

В этой части вы узнаете о том, как эффективно реализовать кэширование новостных тем на стороне клиента с использованием базы данных Room. Это может быть полезно для снижения ограничения скорости API, уменьшения нагрузки на сервер, повышения эффективности приложения.
Ruby: unless против if

Ruby: unless против if

Разберем невидимые отличия и нюансы. В конце  -  небольшая шпаргалка по применению if и unless.
Добавление новостных тем в приложение TrendNow. Часть 2

Добавление новостных тем в приложение TrendNow. Часть 2

2-я часть посвящена добавлению в новостное приложение раздела тем с реализацией горизонтальной прокрутки в LazyColumn. Вы узнаете, зачем стоит создать еще одну ViewModel и как добавить раздел/элемент в LazyColumn Jetpack Compose, чтобы избежать ненужных рекомпозиций.
Как решить реальную задачу при помощи структурированной конкурентности и виртуальных потоков Java 21

Как решить реальную задачу при помощи структурированной конкурентности и виртуальных потоков Java 21

Любую сложную задачу можно разбить на простые. Особенно просто и естественно это делается в одном потоке выполнения кода. Но что делать в многопоточной среде, где отношения между конкурентно выполняемыми задачами хранит только ваша голова? Java 21 разгружает вашу голову идеей структурированной конкурентности. JDK позволяет явно выделить подзадачи (подстеки), чтобы затем получить общий итог работы подзадач. Смотрим, как это делается, на примере реальной задачи.
C++: полное руководство по циклам while

C++: полное руководство по циклам while

Разберем сценарии применения, проиллюстрируем практическими примерами, дадим рекомендации. Когда предпочтительнее цикл do-while?
Пайплайн рендеринга во Flutter: фаза сборки

Пайплайн рендеринга во Flutter: фаза сборки

Фаза сборки имеет решающее значение в процессе рендеринга во Flutter. Прислушайтесь к рекомендациям по оптимизации этой фазы, чтобы создавать высокопроизводительные и визуально привлекательные веб-приложения с бесшовным пользовательским опытом.
За пределами GeometryReader: создание улучшенных модификаторов SwiftUI с помощью onGeometryChange

За пределами GeometryReader: создание улучшенных модификаторов SwiftUI с помощью onGeometryChange

Откажитесь от GeometryReader, который нарушает верстку — используйте onGeometryChange для точного отслеживания геометрии без изменения иерархии представлений. Этот элегантный подход сделает ваш код чище, макеты — более предсказуемыми, а разработку — приятнее.
Кэширование трендовых новостей в приложении TrendNow с помощью OkHttp Cache. Часть 6

Кэширование трендовых новостей в приложении TrendNow с помощью OkHttp Cache. Часть 6

В этой части вы узнаете о решении проблемы ограничения скорости API в TrendNow путем реализации OkHttp Cache для кэширования трендовых новостей на стороне клиента. Это решение, хотя и не устраняет полностью проблему, помогает минимизировать ограничение скорости API.
Как участие в открытых проектах помогает найти работу?

Как участие в открытых проектах помогает найти работу?

Мечтаете о карьере разработчика ПО, но не знаете, как выгодно выделиться на фоне конкурентов? Узнайте о преимуществах участия в таких мероприятиях, как Hacktoberfest, и внесении вклада в такие открытые проекты, как Taipy, Composio, CopilotKit и ToolJet. 
Все, что нужно знать о SASS

Все, что нужно знать о SASS

Что такое SASS и зачем его осваивать? Какие в SASS функциональные возможности, для чего здесь файлы «Partials» и какие есть инструменты для компиляции?
Jupyter Notebook

Настройте свой Jupyter Notebook правильно

В своей известной презентации “Я не люблю блокноты” (видео и слайды) Джоэль Грус критикует Jupyter Notebook — вероятно, самую популярную среду разработки для машинного обучения. Для...
DataScience

Алгоритм Гровера - квантовые вычисления

Задача Предположим, у нас есть крупная база данных из N элементов. Мы хотим найти один из элементов, например p, по ID, скажем w. Используя классические...
Kubernetes: безопасное управление секретами с GitOps

Kubernetes: безопасное управление секретами с GitOps

GitOps  —  это модное словечко в последнее время на слуху. Обозначает оно, по сути, декларативное управление ресурсами для такого представления текущего состояния, чтобы в...