Обработка событий по времени в бессерверной архитектуре
Бессерверность — мир событий
Когда-то в качестве серверов все размещали непрерывно запущенные демоны, но теперь мы вступаем в бессерверную эру, когда все запускается событиями.
Это очевидно, если...
MVI на Eventbrite
Архитектура MVI обеспечивает приложениям Eventbrite четкое разделение задач, предсказуемый поток данных и централизованное управление состоянием. Изучите подробно эту архитектуру, оцените ее преимущества перед MVVM и узнайте, как имплементировать ее в приложение.
Ваш ИИ не глуп — у него просто нет обвязки
Принято считать ошибающийся ИИ недостаточно умным. На самом деле моделям чаще всего не хватает не ума, а обвязки — четкой инструкции из нескольких простых правил. Узнайте, как написать такую инструкцию, чтобы превратить хаотичное поведение агента на базе ИИ в надежную работу с файлами, тестами и средой.
20 фрагментов Python, которые стоит выучить прямо сегодня
Python — язык программирования без лишнего синтаксиса. Читаемость и простота дизайна — две основные причины его огромной популярности.
Как говорится в дзене Python:
Красивое лучше, чем уродливое.Явное лучше, чем неявное.
Вот...
Пайплайн рендеринга во Flutter: фаза сборки
Фаза сборки имеет решающее значение в процессе рендеринга во Flutter. Прислушайтесь к рекомендациям по оптимизации этой фазы, чтобы создавать высокопроизводительные и визуально привлекательные веб-приложения с бесшовным пользовательским опытом.
Руководство по анализу данных с SQL
Данные - это новое топливо цифровой эры. Однако с ростом их количества появляется необходимость извлекать из них смысл. В результате этого появилось множество профессий,...
6 рекомендаций по запуску современной кодовой базы Android с нуля
Шесть тем в фокусе: внедрение зависимостей, чистая архитектура, Jetpack Compose, Kotlin, конвейеры сборки, безопасность. Расскажем обо всем, что важно, дополнив фрагментами кода и пояснениями.
7 признаков того, что вы стали продвинутым пользователем Sklearn
Мечтаете присоединиться к клубу опытных пользователей Sklearn - настоящих мастеров машинного обучения? А может, вы уже состоите в нем, не подозревая об этом? Давайте проверим!
R - язык для статистической обработки данных. Часть 1/3
Я сам изучал R в течение последних нескольких недель.
В своей статье я рассказываю о языке программирования R и его главных концепциях, которые пригодятся каждому...
Обработка файлов на C
Какие функции используются для открытия, редактирования и закрытия файлов? Рассмотрим особенности их применения с текстовыми и двоичными файлами.
Неизбежное зло современной разработки ПО
JIRA не помогает писать код. JIRA помогает менеджерам отчитываться перед другими менеджерами. А разработчики просто вынуждены в этом участвовать. Разберем, как система для "гибкой разработки" стала главным тормозом индустрии.
C++: подробное руководство по вложенным операторам If-Else
Разберем реальные сценарии и типичные ошибки использования if-else. Как уменьшить вложенность и какие имеются альтернативы?
Введение в R: линейная алгебра
R — очень мощный язык, разработанный специально для анализа и визуализации данных и машинного обучения, что делает его обязательным к изучению для любого начинающего специалиста по...
Решение алгоритмических проблем: Поиск повторяющихся элементов в массиве
Проблема
Найти дубликат в массиве
Given an array of n + 1 integers between 1 and n, find one of the duplicates.
If there are multiple possible...
Python/C API - ускорение Python при помощи кода на C
Пакет ctypes для начинающих: запуск библиотек на C из Python и функции CUDA ускорят не только вычисления, но и процесс разработки.
Эти декораторы Python позволят сократить код вдвое
Декораторы - интересный, мощный и полезный инструмент, способный значительно сокращать и структурировать код Phyton. Убедитесь в этом сами.
Бережливое тестирование, или Почему модульные тесты хуже, чем вы думаете
Тестирование — противоречивая тема. Люди крепко держатся за свои убеждения относительно подходов к тестированию. Разработка через тестирование — самый яркий пример. Нехватка чётких эмпирических данных провоцирует людей на...
Модульные тесты на Golang: от стандартного Testing до Testify
Напишем тесты для проверки работы функций. Посмотрим, как совершенствуются тестовые сценарии с Testify.
Как создать анимацию кругового вытеснения в Jetpack Compose
Хотите разработать анимацию плавного кругового вытеснения, часто используемую в видеомонтаже и презентациях для создания плавных переходов между кадрами и слайдами? Предлагаем освоить как ручной, так и автоматический случаи использования этого анимационного эффекта.
Почему стоит использовать Ruby on Rails
Краткий обзор Ruby. Чем объясняется его эффективность? Разберем преимущества этого языка.
Анализ независимых компонент в Python
Предположим, вы на вечеринке беседуете с милой девушкой. Вас атакует множество звуков: разговоры людей по всему дому, громко играющая на фоне музыка. Тем не...
Глубокое погружение в Java: рефлексия и загрузчик классов. Часть 3
В этой части рассмотрим использование рефлексии и загрузчика классов на примере добавления функциональности плагина в Java-приложение и модификации классов во время выполнения. В завершение поговорим о том, почему две мощные функции Java - динамическая типизация и изменяемые во время выполнения классы - должны войти в арсенал каждого программиста.
Стоит ли учить Julia?
Julia — это новейший IT-язык, поэтому я решил его попробовать. Вопрос в том, стоит ли добавлять его в арсенал специалиста по данным?
Установка
Первое, что стоит знать о...
Как освоить API-интерфейсы Metal с UIView и SwiftUI
Раскроем возможности программирования графических процессоров с Metal для создания сложной 3D-графики, обработки изображений и других задач. Предоставим фрагменты кода и рекомендации для применения Metal в собственном приложении iOS или macOS.
Обработка ошибок в Go
Обработка ошибок в Go постоянно вызывает споры и возникает среди тем ежегодного опроса о сложнейших проблемах, с которыми встречаются разработчики, пишущие на этом языке....
Как я встраивал ресурсы в Go
Во время стажировки в WSO2, я работал над проектом разработки процессов непрерывной интеграции и развёртывания ПО для WSO2 API Manager. Работа велась в основном...
Thonny - идеальная IDE для новичков Python
Мечтаете освоить программирование на Python, но не знаете, с чего начать? Не волнуйтесь. Thonny станет вашим гидом на протяжении всего пути обучения — даже...
Поддержание документации в актуальном состоянии с помощью Bit и GitHub
Написание документации для кода (будь то небольшая библиотека или полный набор микросервисов, взаимодействие с которыми необходимо другим разработчикам) — это занятие кропотливое и утомительное.
Основная...
Ловушка для горутины
Горутина — это эффективный и легковесный механизм многопоточного выполнения, популярный среди разработчиков Go. С помощью семантики горутин программисты добиваются эффективного выполнения параллельных процессов в программе. Впрочем,...
Базовый класс Android ViewModel за 5 минут
Класс ViewModel служит прослойкой между View и Model в структурном паттерне проектирования MVVM. Рассмотрим особенности реализации ViewModel на реальном примере.
5 основных фреймворков для Java-разработчиков
Приветствую вас, Java-разработчики! Размышляете над тем, какой фреймворк освоить, чтобы стать полноценным специалистом? Спешу вас обрадовать — это как раз тема данной статьи. Как-то...
Дорожная карта iOS для разработчиков Android: основы
Хотите стать универсальным разработчиком, знающим особенности программирования как для Android, так и для iOS? Этот гайд расскажет о различиях и сходствах работы с этими двумя платформами.
Реализуем функцию управления взглядом с помощью SwiftUI, ARKit и SceneKit
Предлагаем изучить опыт создания на SwiftUI hands-free приложения с применением ARKit и SceneKit. Для лучшего понимания возвращаемых значений будет использован также фреймворк SwiftUI Charts.
Идиоматический Python для новичков
Python — это язык программирования общего назначения, который широко используется в таких областях, как научные вычисления, искусственный интеллект, веб-разработки, финансовое моделирование и многих других. Одна из...
Слияние больших языковых моделей с помощью mergekit
Слияние — инновационный способ создания передовых языковых моделей. В сегодняшнем гайде рассмотрим слияние с помощью библиотеки mergekit, подробно опишем, как работают механизмы SLERP, TIES, DARE и passthrough, а также приведем примеры конфигураций.
Конкурентность и синхронизация на Go: горутины, мьютексы и WaitGroup
Разберем нюансы конкурентности и реальные применения. Дадим рекомендации по избежанию типичных ошибок.
Go: стратегия встраивания и ограничение
ℹ️ В статье используется Go 1.13.
Процесс встраивания состоит в замене вызова функции на тело этой функции. И хотя такая оптимизация увеличивает размер двоичного кода,...
5 малоизвестных компонентов Compose
Jetpack Compose Material 3 скрывает целый арсенал малоизвестных, но крайне полезных компонентов. Они помогают решать специфические UI-задачи быстрее и создавать более продуманный пользовательский опыт. В этой статье рассмотрим пять таких "скрытых жемчужин".
Удалённые вызовы процедур в Golang
Что такое удалённые вызовы процедур?
Удалённый вызов процедур (RPC) — это подпрограмма в распределённых вычислениях. Реализация RPC напоминает реализацию локальных вызовов, но обычно они не идентичны. Как...
Почему микросервисы нужны каждому разработчику
Изучим преимущества и недостатки микросервисов: как здесь создается, развертывается и сопровождается ПО, определяются границы сервисов. Разберем стратегии надежной микросервисной архитектуры.
Превращаем сценарии Python в инструменты МО
В конечном счете в каждом нетривиальном проекте машинного обучения появляется масса ошибок и внутренними инструментами, которые невозможно сопровождать. Эти инструменты - обычно patchwork из...
Построение комплексных конвейеров сборки вокруг Kubernetes
Интегрируем современные практики и инструменты DevOps. Настроив каждый экземпляр, сконфигурировав инструменты и подключив все системы, создадим комплексный рабочий процесс.
Абстракции с нулевой стоимостью* в Kotlin
*Могут применяться особые условия
Внимание: этот пост в блоге охватывает экспериментальную функцию Kotlin, которая может быть изменена. Эта статья была написана с использованием Kotlin 1.3.50.
Безопасность...
Компонентный подход: реализация экранов с помощью библиотеки Decompose. Часть 2
В этой части рассмотрим с позиций компонентного подхода реализацию сложных экранов с использованием библиотеки Decompose. Используя описанные методы, вы сможете управлять экранами любой сложности.
Rust и разработка кроссплатформенных решений для мобильных устройств
Недавно я начал изучать Android и iOS на предмет возможности обмена между ними бизнес-логикой. Этот поиск привёл меня к Rust — очень интересному и относительно новому...
Функциональное программирование со Scala: введение
Если вас интересует функциональное программирование, в этой статье вы найдете несколько важных аспектов этого направления и особенностей его работы в Scala.
Классические программы порождают концептуальные...
C++: подробное руководство по массивам
Разберем основные концепции, в том числе продвинутые. Проиллюстрируем примерами с решениями, поможем подготовиться к собеседованию.
Kotlin Coroutines для Android — Прощай RxJava?
Недавно JetBrains анонсировала новую фичу, которая известна как coroutines (coroutines является экспериментальной функцией в Kotlin 1.1+). Кстати, jetbrains — это место, где можно найти настоящее сокровище,...
15 Python пакетов, которые нужно попробовать
Подборка самых полезных и разноплановых Python-пакетов с PyPI
За что мы любим Python? Для начала, это — красивый и простой в изучении язык. Но есть и другая причина:...
Rust или Си: кто Усэйн Болт в мире программирования?
Си — это сэнсэй черепашек-ниндзя
«Си — язык небезупречный, со странностями, но невероятно успешный». (Деннис Ритчи).
Си — это императивный язык программирования общего назначения и один...
7 Лучших курсов и книг по программированию на Rust для начинающих в 2021 году
Если вы хотите изучить в 2021 году язык программирования Rust и ищете какие-нибудь полезные ресурсы, например книги, руководства и онлайн-курсы, то эта статья специально...
Магия совместимости XML и Jetpack Compose
Статья подскажет, как перевести проект с представлений XML на Jetpack Compose и воспользоваться всеми его преимуществами.
Управление зависимостями в Python: файл pyproject.toml
Познакомимся с файлом pyproject.toml, рассмотрим его практическое применение и возможности в управлении зависимостями в проектах Python.
Изучение нового языка для работы с данными
В постоянно меняющейся экосистеме инструментов для анализа данных вам придется часто изучать все новые и новые языки, чтобы идти в ногу со временем и...
Ошибки в Rust: формула
Сравним философию обработки ошибок Go, Java и Rust. Рассмотрим ошибки на уровне крейта и модуля, попробуем создать иерархию ошибок. Как происходит отображение ошибок?
Компонентный подход: организация навигации с помощью библиотеки Decompose. Часть 3
Компонентный подход позволяет масштабироваться до больших проектов с десятками или даже сотнями экранов. Узнайте, как с помощью Decompose и Jetpack Compose настроить сложную навигацию в таком приложении, а также как добавить уровни навигации.
Пакет Lambda-слоев AWS для Python
Lambda-слои AWS упрощают управление функцией и ее обновление, позволяют уменьшить размер пакета развертывания и облегчают обмен кодом между командами. Узнайте о том, как заархивировать пакет Lambda-слоя и загрузить его в AWS.
Как прокачать навык отладки
В какой-то момент, каждый из нас сталкивается с ошибками при написании кода. Собственно, процесс разработки в том и состоит. При возникновении ошибки, вы теряетесь...
Как овладеть наукой о геопространственных данных в 2023 году
Предлагаем пошаговое руководство по овладению наукой о геопространственных данных с помощью Python с нуля. Имея в своем распоряжении указанные здесь навыки и ресурсы, каждый сможет стать профессионалом в области анализа геопространственных данных.
CodeGPT: расширение VSCode с функциями ChatGPT
Расширение CodeGPT поможет генерировать, объяснять, рефакторить и документировать код, а также находить в нем проблемы и получать ответы на вопросы. Узнайте, как установить GPT-3 внутри VSCode с использованием официального API OpenAI.
Django Google SEO: поисковая оптимизация сайта на Python для индексации в Google
Показываем четыре простых шага для повышения рейтинга сайта в поисковой системе Google благодаря улучшению Django Search Engine Optimization.
Сетевое программирование в Go
Предлагаем пошаговый гайд по созданию надежного TCP-сервера с использованием Go. Такой сервер обеспечивает регистрируемую и контролируемую доставку потока одновременных соединений.
Обработка ошибок в Golang с помощью Panic, Defer и Recover
В Golang предусмотрен простой интерфейс для ошибок. Любая ошибка, возвращаемая в Golang, следует такому определению интерфейса:
type error interface {
Error() string
}
Создание сообщения об...
Как настроить внешний вид Visual Studio Code
Хотите, чтобы редактор кода способствовал вашей продуктивности и не вызывал усталости глаз? Ознакомьтесь с подборкой популярных тематических пакетов, делающих VS Code визуально приятным и более производительным.
Псевдоним типа в Swift
Рассмотрим практические применения typealias: упрощение сигнатур и типов функций, кортежи, рефакторинг и миграции, ограничения, замыкания, словари, протоколы. Изучим на примерах, как создаются четкие, лаконичные, гибкие структуры кода, благодаря чему в Swift совершенствуется процесс разработки, упрощаются сложные типы, повышается удобство восприятия кода.
Моделирование лесных пожаров
Моделирование природных явлений - процесс непростой, но увлекательный. Он позволяет выявить закономерности, на которые затем можно ориентироваться в условиях реального мира. Сегодня поговорим о том, как создать модель лесных пожаров с помощью numpy и matplotlib и какие при этом факторы стоит учитывать.
20 основных вопросов для собеседования по Android
Без этих 20 вопросов не обходится ни одно собеседование по Android-разработке. Попробуйте ответить на них самостоятельно, заглядывая в готовые ответы лишь в случае затруднения.
Как создать приложение Android за 7 шагов
Хотите создать свое первое Android-приложение и ищете доступное руководство? Оно перед вами: всего 7 простых шагов - и приложение успешно работает на Android-устройстве.
Инструмент, который автоматически находит уязвимости в Python-коде
TL;DR
В январе 2019 года мы запустили инструмент, который эффективно находит уязвимости в Python-коде. Мы создали автоматизированную систему, в которой объединили алгоритмы анализа потока данных...
Введение в линейное программирование на Python
Если ваша цель - получить максимум выгоды из имеющихся ресурсов, не тратя на поиск решения много времени, то воспользуйтесь линейным программированием. Это средство помогает оптимизировать задачи со множеством переменных и ограничений.
Android Networking в 2019 - Retrofit с Kotlin Coroutines
В 2018 году произошли серьезные изменения мира Android, особенно касательно Android Networking. Многие перешли от использования RxJava к Kotlin Coroutines, для обработки многопоточности в...
Язык C: константы и литералы
Константы - фиксированные величины, которые не изменяются во время выполнения программы. Эти фиксированные величины также называются литералами.
Развертывание Gradio на AWS: краткое руководство для начинающих
Предлагаем пошаговое руководство по развертыванию базового приложения Gradio с помощью Amazon Web Services (AWS). Предварительный опыт работы с AWS не требуется, поскольку каждый шаг будет сопровождаться детальными инструкциями.
Шпаргалка по регулярным выражениям. В примерах
Регулярные выражения (regex или regexp) очень эффективны для извлечения информации из текста. Для этого нужно произвести поиск одного или нескольких совпадений по определённому шаблону...
Лучшие практики модульного тестирования
Тестирование имеет большое значение. Модульное тестирование — еще большее, это бесспорно. Вот пишешь какой-то код, и надо бы покрыть его тестами. Но как только...
Вкратце о прокси Spring Boot
Изучим нюансы прокси-системы Spring и сформулируем ее золотые правила. Сравним прокси JDK и CGLIB, поможем определиться с выбором. Рассмотрим дополнительные сценарии.
5 приемов Python, которые отличают профессионалов от новичков
Чем отличается senior- от junior-программиста? Ответить на этот вопрос поможет Advent of Code. Этот обучающий сервис для программистов отлично иллюстрирует различия в подходах к решению задач специалистами разного уровня.
Плюсы и минусы программирования на Java
Не так много технологий могут похвастаться тем, что они актуальны уже более 20 лет. Однако в этом году Java заняла пятое место в списке...
Fake-объекты практичнее mock-объектов
Стоит помнить — если вы имеете дело с неудачно разработанным API, предпочтительнее использовать mock-объекты.
Пример кода.
Что такое mock- и fake-объекты
Определения можно найти во множестве статей...
Python для начинающих: all, any, zip, enumerate, filter, map
Подробные примеры применения на практике шести стандартных функций Python: all, any, zip, enumerate, filter, map.
Многопоточность на Rust: ускоряем приложения, делаем их эффективнее
Продемонстрируем мощный подход к выполнению операций в многосхемных базах данных и к параллельной обработке данных. Из строгой системы типов Rust, асинхронных возможностей и потоковой модели создадим надежное приложение.
Развертывание Gatsby-сайта с помощью GitHub Actions
Вот уже несколько недель, как я знакомлюсь с Gatsby. Пока что я перенесла на него свой старый блог с Jekyll и создала конвейер, непрерывно...
Почему Python не станет языком программирования будущего
Причины популярности Python
Успех Python отражается в тенденциях Stack Overflow, рассчитанных по количеству тегов в постах, что является довольно хорошим показателем популярности языка, учитывая размер...
Как реализовать древовидную сортировку в стандартной библиотеке Go
Двоичная куча
Итак, двоичная куча — это:
Контейнер, предоставляющий свой максимальный элемент за время O(1), добавляющий элемент за O(log n) и удаляющий максимальный элемент за O(log n).Неполное бинарное...
Лучшие инструменты для разработки приложений под Android
Android предлагает разработчикам массу возможностей: это универсальная, открытая платформа, используемая миллионами пользователей по всему миру, с удивительно простой в использовании площадкой для распространения приложений....
Обзор итераторов в Go
Релиз Go 1.22 запланирован на февраль 2024 года, но уже сегодня можно оценить некоторые из его возможностей. Поговорим о том, как будут выглядеть итераторы и как может расшириться стандартная библиотека для их поддержки.
Знакомство с фабричным методом
Фабричный метод упрощает процесс создания объектов, делает код более удобным в обслуживании и обеспечивает ряд других преимуществ. Разберем принцип его работы на реальном примере создания игровых персонажей.
Null - это зло!
Не сомневаюсь, что заголовок статьи привлек ваше внимание! А теперь позвольте мне аргументировать свою точку зрения, поскольку процентов на 50%, а то и больше,...
Как создавать и публиковать консольные приложения на Python
Подробное руководство по созданию и публикации консольных приложений на Python
Консольные приложения — это те, которые вы запускаете в терминале. Скорее всего, вы уже пытались их создать. Или,...
Битва 4 инструментов визуализации данных на языке Python
Предлагаем сравнить потенциал Pyecharts, Plotly, Matplotlib и Seaborn, а также возможности использования каждого инструмента (на примерах визуализации данных фондового рынка).
Забудьте про pip — используйте uv
Хотите устанавливать Python-пакеты в 100 раз быстрее, чем с pip? Используйте uv — сверхскоростной и супернадежный установщик и разрешитель Python-пакетов. Узнайте о создателе, возможностях, бенчмарках, установке и использовании этого инструмента.
Космическое приключение компилятора Golang
Исследуем кухню компиляции и разберемся, как исходный код Go превращается в исполняемый двоичный. Подробно опишем этапы и техники получения рецепта АСД и приготовим из ассемблерного кода вкусный машинный код.
Как автоматизировать удаление ненужных файлов с помощью Python
Пошаговое руководство по автоматизации удаления ненужных файлов. Поработаем с Python и планировщиком задач cron.
Matplotlib или Plotly: как выбрать библиотеку для визуализации данных в Python
Не знаете, что предпочесть: Plotly или Matplotlib? Неправильный выбор может стоить вам часов работы и свести на нет всю эффективность дэшборда. Секрет в том, что "лучшей" библиотеки не существует — есть та, что идеально подходит под ваши цели. Готовы узнать, какая из них сделает ваш проект по-настоящему мощным?
Как я создал 2D-игру с помощью Ebiten за 40 минут
Хотите создать видеоигру менее чем за час? Следуйте руководству по максимально упрощенной разработке 2D-игры с использованием языка Go и библиотеки Ebiten и возможностью развертывания на Windows, macOS и Linux.
Рекомендации по Go: выделение памяти с new
Разберем нюансы функции new на примерах. Для каких целей и типов она используется, как ею упрощается инициализация?
Внедрение зависимостей на Android с помощью Hilt
Внедрение зависимостей (DI) — это метод, широко используемый в программировании и хорошо подходящий для Android-разработки. При нем зависимости предоставляются классу, а не создаются самостоятельно. Следуя принципам...
Мониторинг приложения Golang с Prometheus, Grafana, New Relic и Sentry
Изучим, как осуществляются мониторинг и логирование службы Go. Напишем код приложения и модульный тест, создав конфигурационные и тестовые файлы, и посмотрим метрики в дашборде Grafana.
Android 12: радикально новый дизайн от Google
Material You — новая веха в эволюции текущего поколения Material Design (“материального дизайна”), используемого Android-устройствами (и почти всеми продуктами Google). Идея, лежащая в основе...
Как развернуть GitLab с помощью Docker за 5 секунд
GitLab - это веб-инструмент управления репозиториями Git, который помогает командам совместно работать над кодом. Расскажем, как быстро развернуть экземпляр GitLab.
Модульное тестирование с имитацией сетевых вызовов
Модульное тестирование — отличный способ удостовериться, что приложение работает на протяжении многих итераций. Иногда важно убедиться, что всё вместе работает асинхронно и что данные согласованы. Но...
✨ Расширения для Visual Studio Code, которые поднимут процесс разработки на новый уровень
Давайте поговорим о Code — Visual Studio Code.
Мои дорогие читатели попросили меня рассказать о тех расширения, которые я использую для разработки. Этим мы сейчас и займёмся.
Наш VSC...
Как ускорить сайт с помощью Varnish HTTP Cache и Docker
Полная инструкция с наглядным описанием методики, необходимой конфигурации и настроек, а также бенчмарками.
Что стоит знать дизайнеру перед первым хакатоном
Опыт и уроки, извлеченные из участия и победы на хакатоне
Одна из причин, по которой я так люблю дизайн, заключается в том, что его постоянное развитие...
Библиотека Ethers.js: новичкам на заметку
Познакомимся с библиотекой ethers.js и узнаем, как именно она обеспечивает взаимодействие с виртуальной машиной Ethereum в Remix.








































































































