Тренды

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

Java

Java. Вложенные классы

Вложенный (иначе  —  внутренний) класс в объектно-ориентированных языках программирования  —  это такой класс,объявленный внутри другого класса. Это позволяет объединять логически связанные между собой классы и...
Python

Встроенная база данных Python

Если вы разработчик программного обеспечения, то, скорее всего, вы знакомы с невероятно легкой базой данных SQLite или даже уже использовали ее. Она содержит практически...
C

Программируем робота E-puck в симуляторе Webots

Хотите изучить робота, но у вас нет возможности его купить? А может, вы просто не знаете с чего начать? Тогда симулятор роботов Webots вам...
Python

Идиоматический Python для новичков

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

LocalStack: запуск AWS на локальном компьютере

Более миллиона компаний по всему миру создают приложения на облаке AWS. Одна из проблем при работе с облаком — это огромное количество сервисов в распоряжении, а...
Python

Пространства имен и области видимости в Python

Содержание:  Пространства имен в Python. Встроенное пространство имен. Глобальное пространство имен.Локальное и объемлющее пространства имен.  Область видимости переменной. Словари пространств имен Python.  Функция globals().Функция locals(). Изменение переменных вне области видимости. Объявление global.Объявление...
Golang

Go скучный. И это здорово!

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

Что нового в системной трассировке Android Studio

В Android Studio 4.0 мы пересмотрели UI профилировщика (Profiler), чтобы обеспечить более интуитивно понятный рабочий процесс записи работы ЦПУ. Мы продолжали вносить улучшения, основываясь...
Rust

Тестирование клиент-серверов на Rust для IoT

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

Распознаём 50 видов текста на C++ с Plywood

Посмотрим на скромный текстовый файл: Этот файл может содержать удивительное количество различных форматов. Текст может быть закодирован как ASCII, UTF-8, UTF-16 (с прямым или обратным...
Java

Портируем решатель судоку с Java на WebAssembly

Мне давно хотелось приступить к изучению WebAssembly, но никак не находилось подходящего материала. Однако недавно я просматривал некоторые старые программы и вспомнил, что как-то...
Python

Работа с панелью индикаторов. Руководство программиста Python. Часть 3

Часть 1, Часть 2, Часть 3 В этой серии статей в качестве основной платформы для Dashboarding используется Dash от Plotly. Прежде чем перейти к этой статье,...
Python

Работа с панелью индикаторов. Руководство программиста Python.Часть 2

Часть 1, Часть 2 Это вторая статья из нашей серии об использовании Python-фреймворка Dash от Plotly в качестве основной платформы для работы с панелью индикаторов....
Android

Под капотом модификатора suspend

Корутины Kotlin предоставили Android разработчикам модификатор suspend. Изучив его, вы поймете, почему функция suspend не возвращает ничего до тех пор, пока не будет завершена...
Frink

Злые единицы - добрый Frink

Введение Единица измерения  —  это физическое свойство, представляющее собой число, например, расстояние или время. Мы почти всегда говорим о системе единиц СИ. У единиц могут быть...
AWS

Создание бесчисленных областей предпросмотра в AWS с помощью Lambda@Edge

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

Уведомления о контактах

Android 11 мы делаем более ориентированным и выразительным для людей, переосмысливая то, как мы разговариваем по телефону, и создавая ОС, которая может распознавать и...
Python

Не автоматизируйте всё подряд

Я склонен попадать в ловушку, пытаясь автоматизировать все подряд. Изучение и внедрение чего-то нового — это очень весело. Особенно если вы новичок в программировании: всё выглядит так,...
Python

6 веских причин поговорить об f-строках в Python

Одним из первых наших шагов в самом начале изучения любого языка программирования является вывод строки “Hello, World!”. Практически то же самое мы делаем и...
CPP

Шаблон проектирования прототипов в современном C++

Шаблон проектирования прототипов — это порождающий шаблон проектирования, который помогает в прототипировании (недорогом создании/копировании) объекта с использованием отдельных методов или полиморфных классов. Прототипом можно считать модель...
Python

Сможете ли вы решить эти 3 «простые» задачи на Python?

Правильное решение вас удивит Попробуйте решить эти задачи самостоятельно, а потом проверьте себя по готовым ответам. Подсказка: У всех задач есть нечто общее. Так что если разобраться...
Linux

Углубление в параметры ядра. Часть 1: загрузочные параметры

Диапазон статьи. EC2 (эластичное облако вычислений) — это наиболее часто используемый AWS-сервис, поскольку он надёжен, гибок и позволяет масштабируемость. EC2 можно назвать “хребтом” AWS, т.к. прямо или...
JavaScript

Rust для разработчиков JS

Rust не вызвал у меня большого интереса, когда я впервые прочитал о нём. Это было около двух лет назад. Я работал веб-разработчиком, программировал в...
Python

Как создавать и публиковать консольные приложения на Python

Подробное руководство по созданию и публикации консольных приложений на Python Консольные приложения — это те, которые вы запускаете в терминале. Скорее всего, вы уже пытались их создать. Или,...
Pandas

TextHero - самый простой способ чистки и анализа текста в Pandas

Упрощенная обработка естественного языка (NLP) Я всегда нахожусь в поиске новых инструментов, которые помогут мне упростить процедуру обработки естественного языка, поэтому, когда я наткнулся на короткий...
Android

Новые инструменты Android 11 для обеспечения конфиденциальности и стабильности

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

Actix или Rocket? Сравнение двух мощных платформ для веб-приложений на Rust

Понятие платформ для веб-приложений Прежде чем приступать к сравнению этих двух платформ Rust, давайте сначала разберёмся, что в принципе собой представляют платформы для веб-приложений. Для создания...
Java

Замеры производительности на Java с JMH

Практически каждому разработчику известна фраза, сказанная Дональдом Кнутом в 1974 году: “Преждевременная оптимизация — корень всех зол”. Но откуда мы должны узнать, что именно стоит оптимизировать? С...
Rust

Использование SQLite с Rust и Actix Web (с тестами)

В этой статье мы рассмотрим, как использовать SQLite (вместе с Diesel) и Rust как в файловом режиме, так и в режиме памяти. Необходимые условия Кроме Rust...
Java

Основы программирования UDP-сокетов на Java

Сокеты — это абстракция самого низкого уровня для программистов, работающих в области сетевого программирования. Существует в основном два способа (протокола) того, как должна происходить коммуникация сокетов. Один...
CPP

Тест рабочего цикла C++ через написание кода для декодера base85

Всем привет! Меня зовут Герман Диаго, по образованию я инженер компьютерной науки и уже долгое время увлечён разработкой разного рода ПО.  Большую часть своей карьеры...
Jetpack Compose

Jetpack Compose: пользовательский интерфейс Twitter

Я решил протестировать Jetpack Compose, сделав простой клон пользовательского интерфейса Twitter после того, как наткнулся на этот твит Mariano Zorrilla: Он использовал Flutter (отличный инструмент для...
Python

Проверка типов в Python

Почему мы используем проверку типов? Помощь типов внесла существенные изменения в систему нашей разработки платформы Tiqets. Среди очевидных преимуществ:  Понижение когнитивной нагрузки при работе с кодом. Типы...
Java

Синхронизация в Java. Часть 2

Часть 1, Часть 2 Состояние гонки Вновь приветствую вас в теме “Синхронизация в Java”! Надеюсь, что вы прочли мою предыдущую статью. Давайте разберёмся, что же такое состояние...
Java

Синхронизация в Java. Часть 1

Прежде чем перейти к самой синхронизации, я объясню многопоточность на примере простого кода.  Первым классом будет класс “Countdown”, а класс “ThreadColor” будет выглядеть вот так: public...
Julia

Стоит ли учить Julia?

Julia — это новейший IT-язык, поэтому я решил его попробовать. Вопрос в том, стоит ли добавлять его в арсенал специалиста по данным? Установка Первое, что стоит знать о...
R

Введение в R: линейная алгебра

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

7 ошибок Python, от которых стоит немедленно избавиться

Введение Python относительно прост в освоении, но, учитывая его обширный функционал, в нём легко допустить ошибку. Кроме того, ошибки в течение длительного времени могут оставаться...
CProgramming

Как работает программа «Hello World!»?

Вы когда-нибудь задумывались о том, как работает знаменитая программа «Hello World!»? Давайте подробно разберём ассемблерный код и увидим, что происходит, так сказать, за кадром...
Java

Основы программирования TCP-сокетов на Java

Клиент-серверная архитектура — наиболее распространенная структура приложений в Интернете. В этой архитектуре клиенты (т.е. персональные компьютеры, устройства Интернета вещей и т. д.) сначала запрашивают ресурсы с...
Python

Attr - одна из лучших практик объектно-ориентированного Python

Известно, что Python очень гибкий язык, который может использоваться в функциональном, процедурном и объектно-ориентированном программировании. Честно говоря, я пишу на нем классы только при...
Android

Что нового в Jetpack

Android Jetpack — это набор библиотек, направленных на то, чтобы помочь вам легко писать высококачественные приложения, поддерживая более старые версии Android. Спустя два года после запуска...
Linux

Пользователь Linux пробует Windows в 2020

Неужели WSLv2, новый терминал и PowerToys переманят меня в другой лагерь? Я сижу на Linux уже 2 года и последние полгода проработал на Arch. И вот,...
Julia

Улётные пакеты Julia для машинного обучения - мечта программиста!

Несмотря на то, что Julia все еще относительно молодой и перспективный язык, иногда он просто поражает своей не по годам зрелой экосистемой. Особенно это...
Python

Пять отличных Python-библиотек для data science

Python — это лучший друг специалистов по данным, а библиотеки значительно упрощают их жизнь. Работая над NLP-проектом, я открыл для себя пять отличных Python-библиотек, которые мне...
Google Play

Ответы на распространенные вопросы о подписании приложений в Google Play

Приложения для Android имеют криптографическую подпись разработчика. С ее помощью менеджер пакетов на устройстве пользователя может проверить, что каждое обновление приложения происходит из одного...
Python

15 Python пакетов, которые нужно попробовать

Подборка самых полезных и разноплановых Python-пакетов с PyPI За что мы любим Python? Для начала, это — красивый и простой в изучении язык. Но есть и другая причина:...
Julia

В поисках лучшей среды для Julia: Juno или Jupyter?

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

Новости об Android

Обновления для Android 11 Мы все еще находимся на стадии предварительного обзора для разработчиков Android 11. Developer Preview 4 Превью-релиз был выпущен пару недель назад. О Developer Preview 4...
Python

Избегайте этих нелепых ошибок при работе с Python

Чем больше вы практикуетесь, тем легче программирование становится для вас, но суть не меняется: программирование — это сложно. Оно может стать ещё сложнее при неудачном сочетании обязательств и рабочих...
Python

Перестаньте использовать range() в цикле for в Python

Цикл for. Краеугольный камень программирования. Технологический приём, который вы осваиваете, ещё будучи новичком, и продолжаете использовать в течение всей своей карьеры программиста.  Если вы использовали...
UX Design

10 шаблонов поведения для UX-дизайна

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

Parcel + Rust и WASM = идеальный ромком

Введение Мне уже давно хотелось попробовать использовать Rust и WASM вместе. Причин для этого была масса: небольшой размер пакета, низкоуровневый доступ с надёжной производительностью и...
Elastic Search

Несколько распространенных вопросов об ElasticSearch

Зачем я пишу эту статью? Документация Elasticsearch не показалась достаточно хорошо организованной и способной пригодиться новичку. В итоге я прыгал по различным статьям и видео в...
Julia

Стоит ли заменить Python на Julia?

В течение последних двух лет популярность интерпретируемого языка Python, который был написан на C, резко возросла. Хоть он и является полезным языком, который стал...
Git

4 новых продукта GitHub, которые изменят код

Совсем недавно GitHub провел свое первое виртуальное мероприятие — GitHub Satellite. Тысячи людей подключились к прямой трансляции, которая весь день радовала публику интересными докладами, сгенерированной музыкой...
Android

Как настроить базу данных с Firebase Firestore для Android

Начало Загрузите стартовый проект с GitHub. Откройте приложение в Android Studio и дайте завершитьсяGradle sync. Запустите приложение и вы увидите список покупок: Создание проекта в Firebase Console Первый шаг — это...
Python

4 ситуации из жизни лямбда-функций в Python

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

Кросс-компиляция программ Rust для запуска на маршрутизаторе

Вы никогда не задумывались о том, чтобы запустить на домашнем роутере какой-нибудь пакет Ubuntu? Для этого можно было бы использовать контейнеры LXC. Всё это...
Python

Логирование в Python с помощью Logzero

Logzero - это пакет Python, созданный Крисом Хагером, который упрощает отображение информации и сведений об отладке в качестве оператора print в Python 2 и...
Rust

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

Недавно я начал изучать Android и iOS на предмет возможности обмена между ними бизнес-логикой. Этот поиск привёл меня к Rust — очень интересному и относительно новому...
Clean Code

О дивный читаемый код

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

Учимся писать строки документации в Python

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

R - язык для статистической обработки данных. Часть 3/3

Часть 1, Часть 2, Часть 3 В предыдущем материале мы остановились на теме корреляции из раздела “Статистические вычисления в языке R”. Переходим к ковариации.  Ковариация Ковариация была...
Python

Топ-10 магических команд в Python, которые повысят вашу продуктивность

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

Новое в Android 11

Оцените превью для обновлений некоторых уже существующих функций, а также доступных нововведений, таких как IME animation control. Синхронизированные анимации IME Идея заключается в том, что IME (редактор...
Python

Nota Bene для программиста Python

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

R - язык для статистической обработки данных. Часть 2/3

Часть 1, Часть 2 Предыдущую часть мы закончили темой векторов, а в этой — переходим к матрицам.  9. Что такое матрица? Матрица, как структура данных, тоже часто встречается в R.  Её...
Python

Почему Python не станет языком программирования будущего

Причины популярности Python Успех Python отражается в тенденциях Stack Overflow, рассчитанных по количеству тегов в постах, что является довольно хорошим показателем популярности языка, учитывая размер...
Rust

Использование строк в Rust

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

Как сделать приложение-чат с Redis, WebSocket и Go

Протокол WebSocket предоставляет двунаправленный (сервер и клиент могут обмениваться сообщениями) и полнодуплексный (сервер или клиент могут отправлять сообщения одновременно) канал связи, подходящий для сценариев...
R

R - язык для статистической обработки данных. Часть 1/3

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

3 секретных оружия в арсенале Python

Я уже пишу на Python более 5 лет. Примечательно, что при этом мой арсенал инструментов с течением времени не увеличивался, а наоборот уменьшался. Многие...
Kotlin

Отмена в корутинах

Часть 1, Часть 2 В разработке, как и в жизни, мы знаем, что важно избегать делать больше работы, чем необходимо, так как это может привести...
Python

Сможет ли Julia занять место рядом с Python

Julia и Python —языки программирования, которыми я очень дорожу. Использование Julia вместо Python обладает множеством преимуществ, таких как меньшее время написания кода и более...
Java

Кто на свете всех сильнее - Java, Go и Rust в сравнении

Мне показалось интересным провести сравнение между Java, Go и Rust. Речь идет не о бенчмарке, а о сравнении таких характеристик, как размер выходного исполняемого...
Kotlin

Корутины Kotlin: как работать асинхронно в Android

Kotlin предоставляет корутины, которые помогают писать асинхронный код синхронно. Android — это однопоточная платформа, и по умолчанию все работает на основном потоке (потоке UI). Когда настает...
Python

Изучаем Python: генераторы, стримы и yield

В Python часто используются generator иyield. Расскажу в этой статье об основных свойствах generator, а также преимуществах работы с ним. Разберёмся в подробностях, как...
Java

Java-Lombok: нужны ли геттеры и сеттеры?

Привет всем энтузиастам Java! Давайте поговорим о Java и рефакторинге. Как известно, Java остается одним из наиболее популярным языком программирования. В каждом новом релизе...
Git

Команда Git Rerere — автоматизируйте решения для устранения конфликтов слияния

rerere - сокращение от "reuse recorded resolution" (повторное использование сохраненных разрешений конфликтов). С помощью этой команды Git запоминает, каким образом был разрешен конфликт, чтобы при...
Kotlin

Как и для чего использовать нативную библиотеку сериализации Kotlin

Вывод из статьи В конце статьи вы узнаете, почему команда Kotlin создала новую библиотеку сериализации, несмотря на наличие многих продвинутых решений, таких как Moshi и Gson....
Jupyter

Интерактивные отчеты в Jupyter Notebook

Jupyter Notebook - важный инструмент для специалиста по науке о данных. С его помощью можно выполнять базовые задачи, такие как очистка данных, визуализация, создание...
Python

Потоковые и многопроцессорные модули на Python

Главная идея потоков заключается в выполнении последовательности таких инструкций внутри программы, которые могут выполняться независимо от другого кода. Так в чём же разница между потоковой...
Kotlin

Корутины: исключения

Часть 1, Часть 2 Мы, разработчики, обычно тратим много времени на полировку наилучшего сценария работы нашего приложения. Однако не менее важно обеспечить надлежащий пользовательский опыт,...
Kotlin

Запечатанный класс

Часто нам приходится представлять ограниченный набор возможностей: веб-запрос либо успешно выполняется, либо не выполняется, User может быть либо про-пользователем, либо обычным. Чтобы смоделировать это, мы...
Docker

Docker: привязываем порты

Решаем вопрос с портами раз и навсегда Вы когда-нибудь были на собеседовании на должность младшего разработчика, где от вас ожидали, что вы знаете, как работает Docker?...
Android

Изменение типа с помощью typealias

Когда определения типов отвлекают от значения вашего кода из-за нечитабельности, выразительности или просто длины, у Kotlin есть подходящая функция: typealias! Typealias позволяет давать альтернативные...
AWS

Автоматизация скриптов на Python при помощи AWS Lightsail

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

5 причин выбрать Flutter в 2020 году

Что такое Flutter? Flutter — это платформенно-независимая технология Google для создания приложений, используемых на мобильных, настольных и веб-платформах. Официально она была представлена в декабре 2018 года и за...
Kotlin

Корутины: основы

Часть 1, Часть 2 Эта серия постов подробно посвящена отменам и исключениям в корутинах. Отмена важна тем, что она помогает избежать выполнения большего количества...
DataScience

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

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

Go: трассировочный пакет

ℹ️ В статье речь идёт о Go 1.13. В Go имеется инструмент для проведения трассировки и получения подробного представления о работе программы во время её...
Docker

Список важнейших команд в Docker

Содержание #1. Сборка; #2. Запуск контейнеров; #3. Отладка контейнеров; #4 О Docker в AWS ECS; #5. Очистка образов Docker; #6. Извлечение образов Docker из удалённого регистра; #7. Экспорт и импорт...
Data Science

QR-разложение матрицы

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

Go: как циклы преобразуются в ассемблерную программу?

ℹ️ В статье речь идёт о Go 1.13. Циклы в программировании — понятие мощное и довольно простое. Тем не менее возникает необходимость преобразовывать их в основные команды,...
Python

На собеседование в Google через челлендж Python #1

Как-то раз я искал в гугле что-то насчёт Python, как вдруг всплыло приглашение принять участие в испытании по программированию от Google (так называемое foo.bar...
Android

Топ-5 трендовых библиотек для Android за 1 квартал 2020 года

Мы находимся почти в конце первого квартала 2020 года и много всего происходит в сообществе Android. Android 11 Developer Preview уже вышел с большим...
Golang

Go: стратегия встраивания и ограничение

ℹ️ В статье используется Go 1.13. Процесс встраивания состоит в замене вызова функции на тело этой функции. И хотя такая оптимизация увеличивает размер двоичного кода,...
Python

Вы умеете говорить на Python?

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

Отладка Go для профессионалов

Многие разработчики редко используют отладчик при возникновении проблем в коде. Если вы пишете модульные тесты и используете линтинг и рефакторинг, то этот быстрый и...
5 актуальных рекомендаций по оптимизации отладки

5 актуальных рекомендаций по оптимизации отладки

Ох, уж эти ошибки! Их появление в коде ничего, кроме досады, не вызывает. Лично мне они точно портят настроение. Только представьте: вы создаете продукт,...
4 пользовательских хука React, которые должен знать каждый разработчик

4 пользовательских хука React, которые должен знать каждый разработчик

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

7 FrontEnd трендов и инструментов для JavaScript на 2020

Мир JavaScript быстро развивается. Изменения во фронтенде и веб-разработке происходят невероятно быстро. Сегодня, если вы не мастер Webpack, React Hooks, Jest, Vue и NG, вы,...
Реализация React Query в веб-приложении

Реализация React Query в веб-приложении

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

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

Фотошоп и немного изобретательности — вот два инструмента, с помощью которых создаются современные знаменитости. Нет, я не об известных Instagram-моделях с отредактированными фотографиями. Я говорю о...