Тренды

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

Жажда скорости: Python с расширениями С

Жажда скорости: Python с расширениями С

Хотите, чтобы Python работал на всех скоростях? Тогда пора познакомиться с расширениями С. Узнаем, как их создавать, применять в программах Python, а затем сравним скорость программы с расширениями и без.
Бесперебойный API на Golang

Бесперебойный API на Golang

Создадим API с максимальным временем бесперебойной работы при обновлении двоичных файлов. Реализуем два решения и протестируем их примерами.
Django REST Framework: REST API на Python с нуля

Django REST Framework: REST API на Python с нуля

Прикладное руководство для новичков Python и Django по написанию API на примере сайта бронирования отелей.
Все о ключевых словах static и final

Все о ключевых словах static и final

Разберемся, как объявлять классы, методы и переменные с использованием ключевых слов static и final, а также узнаем, для каких случаев целесообразно их применять.
Как защитить учетные данные с помощью переменных среды в Python

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

Как быстро и без особых усилий скрыть учетные данные, исключив их передачу по сети небезопасным способом.
Очереди с приоритетом в Java

Очереди с приоритетом в Java

В Java включает очереди с приоритетом в рамках Collections Framework. Очередь приоритетов называется так по одному из главных способов применения  —  планирования работы в...
OpenTelemetry и Sentry - недооцененные инструменты трассировки распределенных систем на Golang

OpenTelemetry и Sentry - недооцененные инструменты трассировки распределенных систем на Golang

Краткое описание 🚶 Создадим небольшой пример инструментирования приложения на Golang с его настройкой, использованием OpenTelemetry и передачей получаемых трассировок на бэкенд Sentry. Вот ссылка на него...
Запуск тестовых сценариев с Maven

Запуск тестовых сценариев с Maven

Не знакомы с Maven? Здесь представлена кое-какая информация об этом инструменте. Ее должно быть достаточно для начала работы с ним. Для запуска тестовых сценариев традиционно...
Создание GUI PyWebIO для удаления пакетов Python

Создание GUI PyWebIO для удаления пакетов Python

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

5 крутых приемов, которые улучшат работу на R

R  —  отличный язык, который используется для обработки данных и работы с ними. Рассмотрим пять крутых приемов работы на R, которые просто необходимо знать....
Наследование и полиморфизм в Python

Наследование и полиморфизм в Python

Наследование Наследование  —  это способность объекта принимать одну или несколько характеристик от других классов объектов, обычно переменных или функций-членов. Можно провести аналогию между этим понятием...
Конкурентность на Go: объяснение шаблона Worker Pool

Конкурентность на Go: объяснение шаблона Worker Pool

Введение Если хотите, можете пропустить вводную часть и переходить сразу к подробному разбору реализации. Когда я только начинал работать с языком Go, то немного скептически относился...
9 странностей Python для C++ программистов

9 странностей Python для C++ программистов

Python можно назвать странным языком программирования. По крайней мере, когда вы переходите с других языков вроде C, C++, C#, Java, PHP или JavaScript. Все эти...
Новый API форматировщика дат в Swift

Новый API форматировщика дат в Swift

В версии Swift 5.5 и iOS 15 у нас появился новый API средства форматирования. С ним строковое отображение дат будет более декларативным и интуитивно...
Основы безопасного программирования

Основы безопасного программирования

Безопасность приложений не ограничивается только аутентификацией. У хакеров есть бесчисленное множество способов атаковать систему в обход этой процедуры. Программистам важно обладать базовыми знаниями, чтобы не...
Перегрузка функций в TypeScript

Перегрузка функций в TypeScript

Если у вас есть опыт работы с любым типизированным языком, то, вероятно, вам знакома концепция перегрузки функций. Если нет, то вкратце напомню ее суть:...
Scrum: 5–3–5–3–3

Scrum: 5–3–5–3–3

В начале работы с Agile и Scrum, оказывая помощь коллегам, я обычно использовал комбинацию 3–5–3, где: первые “3”  —  три роли Scrum;“5”  —  пять событий...
Лучшие практики модульного тестирования

Лучшие практики модульного тестирования

Тестирование имеет большое значение. Модульное тестирование  —  еще большее, это бесспорно. Вот пишешь какой-то код, и надо бы покрыть его тестами. Но как только...
Основы API Time для Java

Основы API Time для Java

Во многих языках программирования работа с датой и временем  —  непростая задача. Но, начиная с Java 8, JDK предоставляет новый API Time, полностью меняющий...
Визуализация стратегии автоматизированного тестирования

Визуализация стратегии автоматизированного тестирования

Стратегия тестирования  —  это подход к автоматизированному тестированию вашего программного обеспечения. Она очень важна, и к ней следует отнестись серьезно. Я предложу визуальный способ...
Rust: взгляд старого программиста

Rust: взгляд старого программиста

Так сложились обстоятельства, что у меня возник перерыв в работе, в который я решил переключиться на Rust. Название этого языка резонировало с моим настроением,...
3 применения исключений, которые улучшат навыки программирования на Java

3 применения исключений, которые улучшат навыки программирования на Java

В статье мы узнаем: 1. Как выбрасывать исключение в пустом классе «Optional».2. Как тестировать и просматривать исключение.3. Как использовать ошибки утверждения. 1. Как выбрасывать исключение в...
Python для начинающих: какая разница между tuple, list и set?

Python для начинающих: какая разница между tuple, list и set?

Язык программирования Python предоставляет четыре встроенных типа данных для хранения коллекций из объектов. Все они наделены различными свойствами и характеристиками: list (список), tuple (кортеж),...
Комбинаторы парсеров: от parsimmon до nom (Typescript → Rust)

Комбинаторы парсеров: от parsimmon до nom (Typescript → Rust)

В этой статье мы вкратце рассмотрим процесс повторной реализации фиктивного синтаксического анализатора языка запросов, написанного на Typescript. Новая реализация будет на Rust. Комбинатор парсеров представляет...
Скрейпинг 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 играют важную роль в параллельном программировании. Поток в любой момент времени находится...
Web security

Введение в Веб-безопасность

Есть множество причин изучать веб-безопасность, например: Вы ответственный пользователь, который обеспокоен утечкой личных данных. Вы ответственный веб-разработчик, который заинтересован в повышении безопасности...
Education

Какой язык программирования используют самые счастливые разработчики?

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

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

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

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

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

Ruby on Rails меняет всё

Ruby on Rails поможет вам сэкономить кучу времени при написании кода. Пишите меньше, достигая тех же целей, которых достигли бы при помощи других языков. От...