Тренды

Все что касается разработки: образовательные статьи, тренды, технологии, языки, фреймворки и многое другое!

Скрейпинг PDF с нуля на Python: библиотеки tabula-py и Pandas

Скрейпинг PDF с нуля на Python: библиотеки tabula-py и Pandas

Специалисту в области науки о данных приходится анализировать данные в любой форме, ведь они хранятся как в специальных SQL-базах, вроде PostgreSQL и MySQL, так...
Понятие об умных указателях Rust

Понятие об умных указателях Rust

В этой статье мы разберемся, что именно представляют собой умные указатели, откуда они берутся и как работают. Если по-простому, умный указатель  —  это абстрактный тип...
Почему вам стоит написать свой API-шлюз с нуля

Почему вам стоит написать свой API-шлюз с нуля

Любой организации, имеющей в своем распоряжении пару микросервисов, необходим контроль за тем, кто получает к ним доступ и на каких условиях. Такой контроль помогает...
Скрытые нововведения в iOS 15

Скрытые нововведения в iOS 15

Самая интригующая часть нового функционала, появившегося по итогам проведения конференции WWDC21, была запрятана в замечаниях к выпуску Xcode 13. Все программы и библиотеки dylib, имеющие...
Топ-15 лайфхаков для работы с Python

Топ-15 лайфхаков для работы с Python

Python, без сомнения, является одним из самых популярных языков программирования. Простой и легкий в освоении, он завоевал признание многочисленного сообщества. Python  —  “самый мощный язык,...
Феномен NFT и причины его популярности

Феномен NFT и причины его популярности

NFT расшифровывается как non-fungible token (невзаимозаменяемые токены). Взаимозаменяемость  —  это способность актива быть обмененным или замещенным аналогичными активами с одинаковой стоимостью. Предположим, у вас есть одна...
Двусторонняя связь без интернета: Nearby Connections

Двусторонняя связь без интернета: Nearby Connections

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

Программа на Си для проверки числа: положительное или отрицательное

Чему вы научитесь в этой статье? Проверять, является ли число (введенное пользователем) отрицательным или положительным. Какие нужны знания для понимания этой программы? Потребуются знания по следующим темам на...
Осваиваем реактивное программирование на Java

Осваиваем реактивное программирование на Java

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

Программа на C++ для перестановки цифр числа в обратном порядке

В этой программе будем получать от пользователя число и переставлять цифры этого числа в обратном порядке. Начнем программу с заголовочного файла. #include <iostream> → непрерывный поток...
Асинхронная многопоточность в Python

Асинхронная многопоточность в Python

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

Автоматическое масштабирование CI с помощью Kraken CI

Kraken CI — это современная локальная система CI/CD с открытым исходным кодом, которая обладает высокой масштабируемостью и ориентирована на тестирование. Kraken CI имеет лицензию Apache 2.0....
Как сделать калькулятор на C

Как сделать калькулятор на C

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

Асинхронность в Java

Асинхронное программирование  —  обширная и получившая широкое обсуждение тема, но инженеры-программисты все еще ищут, как лучше реализовать эту идею и интегрировать в приложения. Мне  — ...
Как запустить любое ПО с графическим интерфейсом в Docker?

Как запустить любое ПО с графическим интерфейсом в Docker?

Вы, конечно, прекрасно знаете, что такое docker и контейнеры и даже как развернуть модель машинного обучения в docker? Но есть еще один интересный вопрос:...
Тестирование уровня данных в Android Room с помощью Rxjava, LiveData и сопрограмм Kotlin

Тестирование уровня данных в Android Room с помощью Rxjava, LiveData и сопрограмм Kotlin

В чем смысл начинать тестирование с уровня данных? Выбор архитектуры, будь то MVVM, MVP, MVC или MV, по минимуму затрагивает уровень данных. Во время архитектурных миграций...
Асинхронный Rust: проблемы и способы их решения

Асинхронный Rust: проблемы и способы их решения

В 2013 году я открыл для себя Rust и сразу решил изучить его, сделав своим основным языком программирования. Через четыре года я переехал в Берлин...
Как протестировать код на Go с Github Actions

Как протестировать код на Go с Github Actions

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

Перестановка двух чисел на Си

Что такое перестановка двух чисел? Перестановкой двух чисел называют обмен значениями двух переменных. Например, переменная num1 содержит значение 20, а num2 содержит значение 40. После перестановки...
3 способа локального хранения и чтения учетных данных в Python

3 способа локального хранения и чтения учетных данных в Python

Хранение учетных данных в качестве глобальных переменных среды Если учетные данные хранятся в виде глобальных переменных среды, к ним можно получить доступ с помощью любого...
8 хитрых приемов написания кода на Go

8 хитрых приемов написания кода на Go

Я использую Go уже несколько лет, и иногда удается обнаружить маленькие хитрости в написании кода, которые облегчают мне жизнь. Сегодня я поделюсь ими с...
Классификация текстов отзывов о фильмах с помощью Scikit-learn

Классификация текстов отзывов о фильмах с помощью Scikit-learn

Сначала мы посмотрим, как подготовить текстовые данные для подачи их в модель машинного обучения. Затем покажем, как использовать Scikit-learn для реализации модели классификатора, а...
Модификатор Kotlin, которого не должно было быть

Модификатор Kotlin, которого не должно было быть

Большинство разработчиков Kotlin уверены в том, что свойство val здесь эквивалентно использующемуся в Java свойству final. А что, если я скажу, что это не...
Android 12: радикально новый дизайн от Google

Android 12: радикально новый дизайн от Google

Material You  —  новая веха в эволюции текущего поколения Material Design (“материального дизайна”), используемого Android-устройствами (и почти всеми продуктами Google). Идея, лежащая в основе...
Что нового в Python 3.10?

Что нового в Python 3.10?

Разработка Python 3.10 стабилизировалась, и пришло время наконец-то протестировать все те новые функции, которые войдут в финальный выпуск. Мы расскажем все самое интересное о том,...
3 функции Pandas для группировки и агрегирования данных

3 функции Pandas для группировки и агрегирования данных

При работе с данными в Pyth on у программистов есть инструмент, который никогда не подведет: pandas. Это полнофункциональная и интуитивно понятная библиотека с открытым...
5 рекомендаций по оптимизации пул-реквестов

5 рекомендаций по оптимизации пул-реквестов

Создание пул-реквеста (запроса на размещение изменений в основной ветке) и ожидание результатов ревью  —  стандартные процедуры в процессе написания кода, являющиеся важной и неотъемлемой...
Как отслеживать события файловой системы в Python

Как отслеживать события файловой системы в Python

Прочитав эту статью, вы научитесь обнаруживать изменения в существующих файлах приложения Python. Для этого возьмем хорошо поддерживаемый модуль под названием watchdog.  Согласно официальной документации, watchdog...
JSON-сериализация необязательных полей в Go

JSON-сериализация необязательных полей в Go

Язык Go получил широкое распространение в бэкенд-программировании, и с каждым днем сообщество его разработчиков становится все больше.Мне тоже очень нравится писать код на Go. Недавно...
RxJS и Angular: декларативный If/Else

RxJS и Angular: декларативный If/Else

Исходный код: Github 🚀 | Интерактивные примеры и фрагменты кода🚀 Цель статьи 🎯 Задействование оператора фильтра RxJS. Использование последовательной парадигмы декларативного программирования для потенциального улучшения ясности кода...
Корутины и управление разрешениями в Android

Корутины и управление разрешениями в Android

Из этой статьи вы узнаете, как обрабатывать разрешения среды выполнения Android, появившиеся в Android Marshmallow, с помощью корутин (сопрограмм). Такой подход позволит обрабатывать разрешения...
Функциональное программирование на Python

Функциональное программирование на Python

Что такое функциональное программирование? Функциональные языки программирования разрабатываются специально для создания приложений, ориентированных на обработку списков или символьные вычисления, так как функциональное программирование основывается на...
Нормальное завершение работы в Go

Нормальное завершение работы в Go

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

Компилируем меньше с SOLID

Привет всем Android-разработчикам! Давайте разберем принципы SOLID, вернее, один из них.  Недавно я углубился в SOLID и нашел один скрытый потенциал. Теперь хочу рассказать про...
3 инструмента для отслеживания и визуализации выполнения кода на Python

3 инструмента для отслеживания и визуализации выполнения кода на Python

Для чего нужны новые инструменты? Видели когда-нибудь такой вывод ошибок? 2 divided by 1 is equal to 2.0. Traceback (most recent call last): File "loguru_example.py", line...
Основы Go: ввод-вывод файловой системы

Основы Go: ввод-вывод файловой системы

Введение Чтение с диска и запись на диск, а также перемещение по файловой системе  —  это основной элемент в любом языке. Узнаем, как все это...
Как оптимизировать набор текста с помощью Python

Как оптимизировать набор текста с помощью Python

Набор текста давно превратился в неотъемлемую часть нашей повседневной рутины. Поэтому умение оптимизировать процесс ввода текста с клавиатуры приносит огромную пользу тем, кто большую...
Как создать простого командного бота в Python

Как создать простого командного бота в Python

Итак, как часто вы узнаете погоду или время у Siri, Алисы или Google? Сейчас на рынке существует несколько видов ботов. Некоторые из них более...
Топ-5 языков программирования для начинающих

Топ-5 языков программирования для начинающих

Выбор первого языка программирования является дилеммой, с которой сталкивались практически все мы, когда стояли в начале своего путешествия по миру разработки. Этот выбор в итоге...
Использование конкурентности при создании API в Go

Использование конкурентности при создании API в Go

Когда в 2014 году я впервые начинал писать приложения на Golang, мое внимание сразу же привлекло самое необычное и интересное, что есть в этом...
Создаем настраиваемую цепочку обязанностей в Go

Создаем настраиваемую цепочку обязанностей в Go

Цепочка обязанностей или цепочка команд — это шаблон проектирования, позволяющий передавать запросы по цепочке Handlers. Каждый Handler решает, нужно ли обработать и расширить запрос или же...
8 полезных приемов программирования на C++

8 полезных приемов программирования на C++

1. Как включить все стандартные библиотеки одной командой Чтобы разом включить в проект все стандартные библиотеки, используйте #include <bits/stdc++.h>. Это особенно полезно в условиях дефицита времени...
Введение в байт-код Java

Введение в байт-код Java

Каждому Java-разработчику известно, какую роль в экосистеме языка играет JVM. Однако большинство не разбирается в том, как работает JVM под капотом. Хотя для разработки...
Конвейер BitBucket CI/CD для синхронизации веток с GitHub

Конвейер BitBucket CI/CD для синхронизации веток с GitHub

Зачастую возникает необходимость синхронизировать ветки между двумя различными репозиториями  —  например, репозиторий BitBucket и репозиторий GitHub. Это распространенный сценарий при работе с облачным репозиторием, но...
22 сниппета на Python для повседневных задач

22 сниппета на Python для повседневных задач

В этой статье хотелось бы поделиться 22 фрагментами кода на Python, которые помогут вам в решении повседневных задач. 1. Прием нескольких входных значений, разделенных пробелами Этот...
Все, что вам нужно знать о переходе на реляционную базу данных AWS

Все, что вам нужно знать о переходе на реляционную базу данных AWS

Каждая компания располагает огромным объемом данных, которыми нужно корректно управлять. Чтобы руководство принимало взвешенные решения, оно должно быть хорошо осведомлено о принципах деятельности своей...
Сборка мусора в Java: что это такое и как работает в JVM

Сборка мусора в Java: что это такое и как работает в JVM

Что такое сборка мусора в Java? Сборка мусора  —  это процесс восстановления заполненной памяти среды выполнения путем уничтожения неиспользуемых объектов. В таких языках, как C и C++,...
Как скрывают секретные ключи и пароли в Python

Как скрывают секретные ключи и пароли в Python

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

Python для новичков: логические операторы, выражения присваивания и управление контекстом

Для большинства начинающих программистов Python стал отличной стартовой площадкой в мир разработок. Большинство же тех, кто уже владеет каким-либо другим языком программирования, подумывают о...
Go. Прорабатываем 25 основных вопросов собеседования

Go. Прорабатываем 25 основных вопросов собеседования

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

Выбор лучшего фреймворка для создания мобильного приложения

Для создания мобильных приложений есть множество фреймворков. Но выбрать нужно лишь один. Совсем недавно каждый разработчик занимался разработкой мобильных приложений, используя Software Development Kit (SDK),...
Владеешь merge  -  освой и rebase

Владеешь merge  -  освой и rebase

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

Почему Dockerfile больше не нужен для создания контейнера в Go

Интегрируя, адаптируя и обучая новых инженеров в FlowUp, я пришел к выводу: на формирование глубокого понимания того, как работают Dockerfiles, уходит слишком много времени....
Как стать разработчиком Go: в 6 шагах от карьеры

Как стать разработчиком Go: в 6 шагах от карьеры

Golang (иначе Go) является востребованным языком программирования, особенно у тех, кто работает с продуктами Google. Он используется многими крупными компаниями такими, как Uber, Medium,...
Однонаправленный поток данных в пользовательском интерфейсе Android

Однонаправленный поток данных в пользовательском интерфейсе Android

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

9 советов, как выделиться среди Java-разработчиков

На протяжение десятилетий Java считается одним из самых популярных языков программирования. Все больше и больше людей желают освоить этот язык, из-за чего образуется сильная...
Меньше образы Docker => быстрее CI-конвейер

Меньше образы Docker => быстрее CI-конвейер

CI/CD позволяет разработчикам и организациям реализовывать циклы задач быстрее. Автоматизируя такие процессы, как сборка, тестирование и развертывание ПО, мы затрачиваем меньше времени на типовые...
Продвинутый функционал Git: хитрые приемы и команды

Продвинутый функционал Git: хитрые приемы и команды

git  —  очень мощный инструмент, который практически каждый разработчик задействует ежедневно. Но для большинства его использование сводится всего к нескольким командам: pull, commit и...
Thonny - идеальная IDE для новичков Python

Thonny - идеальная IDE для новичков Python

Мечтаете освоить программирование на Python, но не знаете, с чего начать? Не волнуйтесь. Thonny станет вашим гидом на протяжении всего пути обучения  —  даже...
Инструменты прототипирования в 2021 году

Инструменты прототипирования в 2021 году

Прототипирование является ключевой частью проектирования UI и UX. Дизайнеры могут создать прототипы как с высокой, так и с низкой точностью, в зависимости от их...
ТОП-5 законов для каждого UX-дизайнера

ТОП-5 законов для каждого UX-дизайнера

Когда люди слышат слово «дизайн», они обычно думают, что это творческая работа, которая подразумевает создание красивого внешнего вида. Но UX-дизайн доказывает, что привлекательный продукт...
Введение в программирование на Rust

Введение в программирование на Rust

Rust  —  это перспективный язык программирования, набирающий рекордную популярность для низкоуровневых систем, таких как операционные системы и компиляторы. В 2020 году по итогам опроса разработчиков...
Долгожданные инструкции Switch-Case в Python

Долгожданные инструкции Switch-Case в Python

Python 3.10 обрел немало интересных возможностей, одна из которых привлекла мое внимание в особенности  —  структурное сопоставление с шаблоном, иначе говоря инструкции switch/case. Несмотря на...
Обработка событий по времени в бессерверной архитектуре

Обработка событий по времени в бессерверной архитектуре

Бессерверность  —  мир событий Когда-то в качестве серверов все размещали непрерывно запущенные демоны, но теперь мы вступаем в бессерверную эру, когда все запускается событиями. Это очевидно, если...
SQLite: как организовывать таблицы

SQLite: как организовывать таблицы

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

Как создать простой планировщик событий в Go

Базовый рабочий механизм представляет собой следующее: запланированное событие добавляется в базу данных, из которой оно будет выполняться в определенное время. Другая задача будет запускаться...
Незаслуженно забытый ForkJoinPool

Незаслуженно забытый ForkJoinPool

Всем известно о новых функциях, которыми нас порадовал JDK 8, и, вероятно, трудно найти Java-разработчика, который не знает, что такое Java Streams, лямбды или...
Реализация интерфейсов в Golang

Реализация интерфейсов в Golang

Интерфейсы  —  это инструменты для определения наборов действий и поведения. Они позволяют объектам опираться на абстракции, а не фактические реализации других объектов. При этом...
Шесть фич YAML, о которых не знает большинство программистов

Шесть фич YAML, о которых не знает большинство программистов

YAML  —  это формат файла, обычно используемый для сериализации данных. Существует множество проектов, использующих файлы YAML для настройки, таких как Docker-compose, pre-commit, TravisCI, AWS...
Абстракции с нулевой стоимостью* в Kotlin

Абстракции с нулевой стоимостью* в Kotlin

*Могут применяться особые условия Внимание: этот пост в блоге охватывает экспериментальную функцию Kotlin, которая может быть изменена. Эта статья была написана с использованием Kotlin 1.3.50. Безопасность...
Бенчмарки в Golang: тестируем производительность кода

Бенчмарки в Golang: тестируем производительность кода

Честно вам признаюсь  —  бенчмаркинг (тестирование производительности) не входит в число моих самых сильных сторон, к тому же и провожу я его не так...
Как удаленно отлаживать сайты для Android с помощью Chrome DevTools

Как удаленно отлаживать сайты для Android с помощью Chrome DevTools

Поскольку под управлением Android работает более 2,5 млрд устройств, разработчики не могут игнорировать оптимизацию веб-страниц для этой операционной системы (ОС). Обычно на устройствах с...
7 способов повысить свою продуктивность в Python

7 способов повысить свою продуктивность в Python

Python  —  один из самых популярных среди языков современного поколения и наверняка останется таковым в ближайшие десять лет. Это фантастический язык программирования практически для...
Три способа захвата скриншотов с помощью Selenium WebDriver

Три способа захвата скриншотов с помощью Selenium WebDriver

При работе с автоматизированными тестами в Selenium часто приходится делать скриншот веб-страницы или ее части. Это полезно, особенно при отладке ошибок или проверке согласованности...
Создаем собственную Alexa в 20 строках Python

Создаем собственную Alexa в 20 строках Python

У всех моих друзей есть Alexa, а у меня нет, из-за чего они надо мной смеются. Натерпевшись вдоволь, я решил: “Хватит!”. Я связался со своей...
Состояния потоков в Java

Состояния потоков в Java

«Гораздо проще уже спроектировать класс потокобезопасным, чем модернизировать его позже».― Брайан Гетц. Потоки Java играют важную роль в параллельном программировании. Поток в любой момент времени находится...
Jetpack DataStore: улучшенная система хранения данных

Jetpack DataStore: улучшенная система хранения данных

Что такое DataStore На протяжении многих лет разработчики Android хранили небольшие фрагменты конфиденциальных пользовательских данных с помощью общих настроек (shared preferences). Этот подход имеет следующие...
Сделай сам  -  как автоматизировать прошивку смартфонов

Сделай сам  -  как автоматизировать прошивку смартфонов

Иногда выдается свободное время, когда можно смастерить что-нибудь полезное из старых гаджетов. Однажды я подумал… сколько добра пропадает! Ведь вся эта вычислительная мощность может быть...
Как использовать Laravel Sail с бэкендом Docker Desktop на WSL 2

Как использовать Laravel Sail с бэкендом Docker Desktop на WSL 2

Каждому разработчику рано или поздно приходится иметь дело с Docker и контейнерами. Посмотрим, как происходит установка Docker Desktop на Windows 10, как она интегрируется...
Оптимизация структур в Golang для эффективного распределения памяти

Оптимизация структур в Golang для эффективного распределения памяти

Поговорим сегодня о выравнивании структур в Golang. Производительность компьютеров растет с каждым годом. Их вычислительные возможности позволяют выполнять все более сложные задачи. В стремлении применять...
Кастомизируем дефолтную заставку во Flutter

Кастомизируем дефолтную заставку во Flutter

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

Современное хранилище работает быстро - это API мешают делу

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

Создание собственной симуляции активной материи на Python

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

Поддержание документации в актуальном состоянии с помощью Bit и GitHub

Написание документации для кода (будь то небольшая библиотека или полный набор микросервисов, взаимодействие с которыми необходимо другим разработчикам)  —  это занятие кропотливое и утомительное. Основная...
В ожидании Java 16: Stream.toList() и другие методы преобразования

В ожидании Java 16: Stream.toList() и другие методы преобразования

Только самообслуживание  В 2004 году я работал архитектором ПО на Java в крупной финансовой компании. На тот момент в этом языке отсутствовало большинство эффективных функциональностей...
Как на самом деле работает Git

Как на самом деле работает Git

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

Поиск утечек памяти с помощью автоматизированных тестов

Процесс управления памятью может стать фактором, весьма затрудняющим работу в приложениях iOS. В связи с этим нужно уделять пристальное внимание размещенным в памяти object...
Советы по модуляризации приложений Android

Советы по модуляризации приложений Android

Создание модульных приложений/библиотек для Android дает целый ряд преимуществ, а процессу разработки следует уделять достаточно внимания. Перечень получаемых плюсов достаточно большой, перечислим лишь основные...
Работа с GitHub Actions на маркетплейсе

Работа с GitHub Actions на маркетплейсе

Поиск экшенов Для этого есть два способа. Непосредственно в маркетплейсе GitHub  В маркетплейсе размещается два вида инструментов для расширения основной функциональности GitHub: Приложения.Экшены. Для поиска экшенов в самом маркетплейсе...
7 Лучших курсов и книг по программированию на Rust для начинающих в 2021 году

7 Лучших курсов и книг по программированию на Rust для начинающих в 2021 году

Если вы хотите изучить в 2021 году язык программирования Rust и ищете какие-нибудь полезные ресурсы, например книги, руководства и онлайн-курсы, то эта статья специально...
8 частых ошибок в Android-разработке

8 частых ошибок в Android-разработке

Ошибка № 1: не учитывать, что всё должно быть на своих местах Экосистема Android стремительно распространяется по всему миру. Вместе с этим растёт и сообщество, состоящее...
Набор инструментов Go для работы с микросервисами

Набор инструментов Go для работы с микросервисами

REST и gRPC: идеальное сочетание Микросервисы обычно работают на фреймворках HTTP и RPC, таких как REST и gRPC. REST построен на основе объектно-ориентированного проектирования  —  подхода,...
Реализация GitHub Action в контейнере Docker

Реализация GitHub Action в контейнере Docker

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

Clean Architecture в Android для начинающих

Даже до того, как я начал специализироваться на Android, меня, как разработчика, всегда восхищал хорошо структурированный, чистый и понятный в целом код. “Задача архитектуры программного...
Насколько С++ быстрее Python

Насколько С++ быстрее Python

Есть миллион причин любить Python (особенно специалистам по данным). Но сильно ли он отличается от более профессиональных низкоуровневых языков программирования, таких как С или...
8 полезных на практике приёмов для веб-разработчиков

8 полезных на практике приёмов для веб-разработчиков

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

Мутационное тестирование: создай мутанта и прокачай тест

Какая же проблема связана с модульными тестами? Дело в том, что можно написать их сколько душе угодно, и они даже пройдут, но это совсем...
9 Уровней применения функции zip в Python

9 Уровней применения функции zip в Python

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

Как создать масштабируемую архитектуру для крупных мобильных проектов

Принципы создания крупного масштабируемого проекта Для начала определим нормы разработки крупного приложения: Сокращение зависимостей. Любое изменение должно затрагивать как можно меньшее количество кода.Возможность повторного использования. Отдельные...
В гостях у GitHub Package Registry

В гостях у GitHub Package Registry

Сервис управления пакетами GitHub Package Registry был разработан и представлен в середине 2019 компанией Microsoft. Его создание, наряду с приобретениями GitHub и NPM, говорит...
Тип Result в Rust

Тип Result в Rust

Рассмотрим тип Result для обработки случаев успеха и случаев ошибок в вычислениях на Rust и методы для манипулирования значениями и их обработки. Изучим примеры использования и функциональность методов.
ClickHouse + Kafka = ❤

ClickHouse + Kafka = ❤

Узнаем, как внедрить в проект средство аналитики, на что способен ClickHouse в сочетании с Kafka и для чего нужны здесь материализованные представления. Построим небольшую аналитическую систему.
Как загрузить 3D-модель с помощью PyWeb3D

Как загрузить 3D-модель с помощью PyWeb3D

Познакомимся с библиотекой three.js с синтаксисом Python и научимся загружать 3D-модели, используя PyWeb3D.
Rust: реализация двоичного дерева

Rust: реализация двоичного дерева

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