Шаблоны проектирования Python: рекомендации и антипаттерны
Как реализовать шаблоны корректно и избежать антипаттернов? Рассмотрим продвинутые темы, стратегии перехода от антипаттернов к передовым практикам, проиллюстрируем реальными примерами и кодом.
Обзор библиотеки Datatable в Python
Данные, с которыми вы работаете, уже настолько большие, что вы часами ждёте их загрузки? Пора осваивать новый инструмент, который избавит вас от долгого ожидания...
Принцип DRY в Kotlin: повышение качества и удобства сопровождения кода
Принцип DRY позволит оптимизировать процесс Kotlin-разработки: снизит количество ошибок, упростит обновление и сопровождение кода, повысит его читаемость. Ознакомьтесь с примерами применения этого подхода и рекомендациями по его корректному использованию.
Учимся избегать null-значений в современном Java. Часть 1
Null. Правила использования
В своем выступлении “Null References: The billion dollar mistake” (“Нулевые ссылки: ошибка на миллиард долларов”), Тони Хоар описывает реализацию нулевых ссылок в...
Выполнение AES/GCM в Android
Столкнувшись с рядом проблем, связанных с выполнением шифрования и расшифровки AES в Android, я решил поделиться своим опытом.
TL;DR: здесь можно найти готовое решение. Если...
Экспериментируем с…
Пагинация — достаточно известная, но трудная в реализации функция. Поэтому я решил разработать демонстрационное приложение на основе Android Paging Library с пагинацией, основанной на пользовательских запросах...
Как быстро создать и развернуть веб-приложение на Python
Все, что вам потребуется для разработки и развертывания простейшего приложения, - знание языка Python и библиотеки Streamlit. Это пошаговое руководство поможет не только быстро создать приложение, но и поделиться им с друзьями.
Полезные хитрости на Python от А до Я
Python — это один из самых популярных и востребованных языков программирования в мире. И на то есть множество причин:
· прост в изучении;
· мега-универсальный;
· огромное разнообразие модулей...
Наблюдаемость как суперспособность
Автор рассказывает о платформе отслеживания инцидентов incident.io, а ее устройстве изнутри и рекомендует, где и как разместить трассировки, чтобы облегчить жизнь разработчиков ПО.
Внедрение зависимостей на Android с помощью Hilt
Внедрение зависимостей (DI) — это метод, широко используемый в программировании и хорошо подходящий для Android-разработки. При нем зависимости предоставляются классу, а не создаются самостоятельно. Следуя принципам...
Интерфейсы в Go для повышения тестируемости кода
Интерфейсы в Go
Интерфейсы — это абстракции, описывающие поведение различных типов, но не определяющие детали его реализации. Например, вы можете запросить и принять деньги от кассира...
Как отслеживать события файловой системы в Python
Прочитав эту статью, вы научитесь обнаруживать изменения в существующих файлах приложения Python. Для этого возьмем хорошо поддерживаемый модуль под названием watchdog.
Согласно официальной документации, watchdog...
Решение алгоритмических проблем: Поиск повторяющихся элементов в массиве
Проблема
Найти дубликат в массиве
Given an array of n + 1 integers between 1 and n, find one of the duplicates.
If there are multiple possible...
Как прокачать навык отладки
В какой-то момент, каждый из нас сталкивается с ошибками при написании кода. Собственно, процесс разработки в том и состоит. При возникновении ошибки, вы теряетесь...
Введение в каналы Golang
Golang использует горутины для параллельного программирования. На них можно ссылаться как на подзадачи для приложения. Если вы новичок в Golang, то рекомендую для начала...
Обработка файлов на C
Какие функции используются для открытия, редактирования и закрытия файлов? Рассмотрим особенности их применения с текстовыми и двоичными файлами.
14 вопросов по валидациям на Ruby on Rails
Шпаргалка для собеседования по важной теме Ruby. Некоторые ответы снабжены примерами кода.
C++: подробное руководство по вложенным операторам If-Else
Разберем реальные сценарии и типичные ошибки использования if-else. Как уменьшить вложенность и какие имеются альтернативы?
Как улучшить навыки работы с Python в 2023 году
Хотите узнать, как повысить эффективность вашего кода с точки зрения времени выполнения и сохранения памяти? Воспользуйтесь советами, которые помогут перейти на новый уровень написания кода Python.
Загрузочные представления в SwiftUI
Загрузочные представления являются одним из типичных компонентов приложения, и в этой статье вы научитесь грамотно их создавать и использовать с возможностью кастомизации.
Моделирование лесных пожаров
Моделирование природных явлений - процесс непростой, но увлекательный. Он позволяет выявить закономерности, на которые затем можно ориентироваться в условиях реального мира. Сегодня поговорим о том, как создать модель лесных пожаров с помощью numpy и matplotlib и какие при этом факторы стоит учитывать.
Сниппеты Python для начинающих: распаковка кортежей, пауза в секундах и случайное число
Добавьте в закладки 12 профессиональных Python сниппетов для решения повседневных задач, ведь когда-нибудь они помогут сохранить ваш день!
Феномен NFT и причины его популярности
NFT расшифровывается как non-fungible token (невзаимозаменяемые токены).
Взаимозаменяемость — это способность актива быть обмененным или замещенным аналогичными активами с одинаковой стоимостью.
Предположим, у вас есть одна...
Создаём «ToDo» приложение с помощью Electron
Мы будем создавать приложение ToDo с помощью библиотеки Electron. Мы затронем следующие темы: хранение данных, использование нескольких окон, взаимодействие между браузерами.
Что необходимо для этого
Я...
Идиоматический Python для новичков
Python — это язык программирования общего назначения, который широко используется в таких областях, как научные вычисления, искусственный интеллект, веб-разработки, финансовое моделирование и многих других. Одна из...
Знакомство с функциональным программированием в Python, JavaScript и Java
Функциональное программирование (ФП) представляет собой процесс создания ПО путем компоновки чистых функций. В современном мире работодатели ищут программистов, способных применять к решению задач различные...
C++: практическое руководство по priority_queue
На примерах покажем, как создаeтся приоритизированная очередь, применяются пользовательские типы, обходятся ограничения. Рассмотрим реальный сценарий.
Хитрости объектно-ориентированного программирования. Часть 4: Шаблон Starter для Android
Это мини-серия статей по написанию поддерживаемого объектно-ориентированного кода без лишней нервотрепки.
Предыдущие части: Часть 1, Часть 2, Часть 3.
Создание
Обычно мы создаем объекты в одном месте. Это может...
3 инструмента для отслеживания и визуализации выполнения кода на Python
Для чего нужны новые инструменты?
Видели когда-нибудь такой вывод ошибок?
2 divided by 1 is equal to 2.0.
Traceback (most recent call last):
File "loguru_example.py", line...
Комментарии к коду: почему больше не всегда значит лучше
Многие программисты злоупотребляют комментариями, что приводит к неправильному пониманию назначения и логики кода. Рассмотрим случаи, когда комментарии необходимы, а когда от них лучше воздержаться.
Под капотом модификатора suspend
Корутины Kotlin предоставили Android разработчикам модификатор suspend. Изучив его, вы поймете, почему функция suspend не возвращает ничего до тех пор, пока не будет завершена...
Тестирование сервиса ASP.NET Core с помощью xUnit
Вступление и предварительные условия
Эта статья относится к серии, в которой мы создаём “ходячий скелет” (walking skeleton) приложения с помощью ASP.NET Core и Angular, а...
Как дизассемблировать код Python и повысить его производительность
Базовое знакомство с простой, но эффективной техникой оптимизации кода через его дизассемблирование.
Как работает функция Defer в Golang
В Golang, благодаря появлению целого ряда новых средств и инструментов, которыми не могут похвастать другие языки серверного программирования, реализована очень мощная и гибкая модель...
Утилитные классы в Kotlin с точки зрения Java-разработчика
Разобравшись, в чем заключаются различия в реализации утилитных классов в Kotlin и Java, вы сделаете важный шаг в освоении языка Kotlin. Будь вы опытный Java-разработчик, желающий расширить спектр своих навыков, или новичок в программировании, уделите внимание этому аспекту.
8 хитрых приемов написания кода на Go
Узнаем о маленьких хитростях в написании кода, которые облегчают жизнь. Поработаем с проверкой ключей, приведением типов, с массивами с append, с отображением имен и значений параметров в структуре, а также создадим имитированный интерфейс и интерфейс на основе структуры.
Мифы Go, в которые мы верим: емкость
Узнаем правильный ответ на вопрос: «Как растет емкость среза?» В каких случаях она удваивается, а в каких нет?
Python PyQt5: современные графические интерфейсы для Windows, MacOS и Linux
Установка и настройка Python PyQt5 для новичков: кнопки, поля ввода, всплывающие окна и событийно-ориентированное программирование.
Разветвление вселенной UI
В 2023 году нам предстоит увидеть новые версии пользовательского опыта. Ознакомьтесь с некоторыми из них, а заодно поразмышляйте над тем, нужно ли нам отказаться от пользовательского интерфейса вообще или стоит переосмыслить его в пользу более естественных, минималистичных и осязаемых вариантов?
Опыт работы с Golang: путь проб и ошибок
В течение года мы разрабатывали сложную систему, функционирующую в режиме полуреального времени в производственной среде. Было принято решение написать ее на Golang. Поскольку опыт...
Удаленная отладка контейнеризованного Java-приложения с IntelliJ IDEA
Как быть, если в локальных сеансах отладки проблема не воссоздается? Пошагово пройдем процесс настройки и запуска отладчика.
Создание Copilot для визуального распознавания в Azure
Хотите создать чат-бота для обобщения и релевантного поиска видеоконтента в Azure? Ознакомьтесь с примером разработки и использования цифрового помощника Copilot. Он поможет быстро находить как ключевые моменты видеоролика, так и заданные фрагменты.
3 функции Pandas для группировки и агрегирования данных
При работе с данными в Pyth on у программистов есть инструмент, который никогда не подведет: pandas. Это полнофункциональная и интуитивно понятная библиотека с открытым...
Пять действительно крутых пакетов Python
Обширная экосистема Python содержит в себе пакеты, модули и библиотеки, которые можно использовать для создания собственных приложений. Некоторые пакеты и модули включены в Python...
Лучшие iOS SDK инструменты за 2019 год
В 2019 году появилось множество приложений для iOS, которые однозначно стоит добавить на главный экран вашего устройства. Например, Mobike для бесстанционного проката велосипедов, Blinkist...
Как создать пользовательскую поисковую панель SwiftUI с LazyVStack
Решаем практическую задачу по созданию инструмента для выбора кода страны - реализуем пользовательскую поисковую панель LazyVStack, содержащую данные с разделами и их индексами.
Kubernetes: установка MicroK8s на локальном компьютере за 5 минут
В чем преимущества MicroK8s перед Minikube? Запустим его, проверим состояние кластера, добавим дополнения, научимся останавливать.
Интерактивные отчеты в Jupyter Notebook
Jupyter Notebook - важный инструмент для специалиста по науке о данных. С его помощью можно выполнять базовые задачи, такие как очистка данных, визуализация, создание...
Функциональное программирование на Python
Что такое функциональное программирование?
Функциональные языки программирования разрабатываются специально для создания приложений, ориентированных на обработку списков или символьные вычисления, так как функциональное программирование основывается на...
Рекомпозиция в Jetpack Compose и View-рендеринг на основе XML: в чем разница?
Переход от традиционного View-рендеринга на основе XML к рекомпозиции в Jetpack Compose может оказаться непростым. Но преимущества Compose с точки зрения производительности, удобства разработки и обслуживания оправдывают затраченные усилия.
Переменная __name__ в Python
Введение в переменную _ _name_ _ и варианты ее использования в Python
Скорее всего, вы встречали переменную __name__ при работе с кодом Python. Она выглядит следующим...
Развертывание приложений Python в Azure
Хотите легко создавать и использовать приложения, делая их доступными для других людей? Предлагаем пошаговый гайд по развертыванию рабочего приложения Python с помощью фреймворка Streamlit в облачной среде Azure.
Как легко оптимизировать Jupyter Notebook. Часть 2
Руководство для начинающих о том, как сделать Jupyter Notebook быстрее, мощнее и круче
Часть 1, Часть 2
Магические команды (Magic)
Magic — это отличные команды, упрощающие нашу жизнь при решении определенных...
5 простейших приемов работы на C#
Эти приемы работы на C# должен знать каждый, а тем, кто знает, полезно повторить. Типы, допускающие значения «null», обнаружение пустых строк, readonly и константы, простой способ завершения приложения и разрыв строк с «newline».
Как создать импульсный эффект в Jetpack Compose
Хотите впечатлить своих пользователей импульсным эффектом? Воспользуйтесь простым руководством по его созданию и использованию. В нем вы найдете примеры реализации этой анимации применительно к кнопке: по умолчанию, с градиентом, с настройкой цвета и формы, опционально.
10 советов по созданию чистого кода для мобильной разработки на Kotlin в 2024 году
Умением писать чистый код должен обладать каждый программист. Разберем 10 полезных рекомендаций по созданию четкого и понятного кода, который легко сопровождать и отлаживать.
Топ-5 языков программирования для начинающих
Выбор первого языка программирования является дилеммой, с которой сталкивались практически все мы, когда стояли в начале своего путешествия по миру разработки.
Этот выбор в итоге...
10 полезных советов по повышению производительности при работе с VS Code
Visual Studio Code - не просто текстовый редактор. Это мощный инструмент, который значительно повышает производительность и оптимизирует рабочий процесс. Воспользуйтесь этими советами по работе с ним.
Перестановка двух чисел на Си
Что такое перестановка двух чисел?
Перестановкой двух чисел называют обмен значениями двух переменных. Например, переменная num1 содержит значение 20, а num2 содержит значение 40. После перестановки...
[C++] часть 3: синхронизация потоков в ресторане
Часть 1, Часть 2, Часть 3
Мы уже видели, как разные потоки с помощью мьютекса спокойно могут получать доступ к общим данным. Но что делать,...
Ключевые PHP-операторы
Чтобы использовать язык PHP по максимуму, нужно уметь обращаться с его основными операторами. О них сегодня и поговорим.
Последовательное объединение адаптеров с помощью MergeAdapter
Пример использования: отображение верхнего и нижнего колонтитулов списка.
MergeAdapter — это новый класс, доступный в recyclerview:1.2.0-alpha02, который позволяет последовательно объединять несколько адаптеров для отображения в одном RecyclerView....
Как писать промпты для ChatGPT
Чтобы научиться писать промпты для ChatGPT, требуется время и практика. Эти рекомендации помогут создавать качественные промпты, с которыми ChatGPT будет генерировать точные и релевантные ответы.
Rust для разработчиков JS
Rust не вызвал у меня большого интереса, когда я впервые прочитал о нём. Это было около двух лет назад. Я работал веб-разработчиком, программировал в...
Как подключить визуальный отладчик к задачам МО в Kubernetes
С ростом размеров и сложности моделей МО все более востребованными становятся облачные ресурсы для их обучения. В связи с этим особую актуальность приобретает вопрос отладки. В статье рассмотрим способ подключения визуального отладчика VSCode к удаленной среде глубокого обучения, что позволит оптимизировать и повысить эффективность отладки.
Освоение различных видов линий в Jetpack Compose с помощью PathEffect
Устали от однообразных линий в Jetpack Compose? Вы не одиноки! Сегодня поговорим о том, как создавать различные стили линий и фигур в рамках Jetpack Compose и использовать их на практике.
Как Ktlint облегчает жизнь разработчикам
Узнайте о фантастических возможностях Ktlint и о том, как внедрить его в проект. Этот инструмент, выполняющий статический анализ и автоматическое форматирование кода, позволит сэкономить массу времени и трудозатрат.
Python-библиотеки интерпретации моделей ML
Все эти библиотеки устанавливаются через pip и сопровождаются подробной документацией. Акцент в них делается на визуализацию.
Yellowbrick
Yellowbrick — это расширение scikit-learn, которое позволяет использовать полезные и красивые...
Когда параллелизм превосходит конкурентность
Скорее всего, для большинства из вас эти две концепции означают одно и то же, или же вы затрудняетесь объяснить, в чём между ними разница....
Превращаем сценарии Python в инструменты МО
В конечном счете в каждом нетривиальном проекте машинного обучения появляется масса ошибок и внутренними инструментами, которые невозможно сопровождать. Эти инструменты - обычно patchwork из...
Поиск и устранение утечек памяти в Python
Одним из основных плюсов динамически интерпретируемых языков (включая Python) является то, что с ними можно легко управлять памятью. По мере необходимости объекты (массивы и...
Внедрение зависимостей в Android с помощью Koin
Как и Dagger-Hilt, Koin является популярным фреймворком для внедрения зависимостей. Однако пользоваться им гораздо проще. Вы можете убедиться в этом на примере написания простого приложения для получения данных.
10 отличных JavaScript библиотек на 2020 год
JavaScript — язык интернета. Вы можете запускать его в браузере или на сервере, а можете использовать для мобильных приложений.
Хотя он и хорош сам по...
Функциональные возможности Python, которые часто игнорируют
Простота Python позволяет быстро начать писать код, но не каждый разработчик достигает вершин в этом деле. Без овладения всеми функциональными возможностями современного Python невозможно стать профи, создающим эффективный код.
Обработка ошибок в Golang с помощью Panic, Defer и Recover
В Golang предусмотрен простой интерфейс для ошибок. Любая ошибка, возвращаемая в Golang, следует такому определению интерфейса:
type error interface {
Error() string
}
Создание сообщения об...
Забудьте про pip — используйте uv
Хотите устанавливать Python-пакеты в 100 раз быстрее, чем с pip? Используйте uv — сверхскоростной и супернадежный установщик и разрешитель Python-пакетов. Узнайте о создателе, возможностях, бенчмарках, установке и использовании этого инструмента.
Топ-10 вопросов о Pandas на StackOverflow
Эти десять вопросов получили наибольшее количество голосов в категории Pandas на платформе StackOverflow. Они были актуальны десять лет назад, такими же остаются и сегодня. Ответы на них позволяют закрепить фундаментальные операции в Pandas.
Плохого кода не существует!
Немного размышлений на тему плохого кода, приправленных перчинкой юмора.
Написание модульного теста на Go с gRPC
Настроим тестовый сервер, объявим ожидаемый результат и сравним с фактическим. Запустим модульный тест. Что, если тест не выполнен?
Компилируем меньше с SOLID
Привет всем Android-разработчикам! Давайте разберем принципы SOLID, вернее, один из них.
Недавно я углубился в SOLID и нашел один скрытый потенциал. Теперь хочу рассказать про...
Обнаружение и предотвращение утечек памяти в Java
Утечка памяти - распространенная проблема, доставляющая немало хлопот разработчикам. Но это не значит, что с ней нельзя бороться. Узнайте о распространенных инструментах обнаружения и приемах предотвращения утечек памяти в Java.
Рекомендации по Go: выделение памяти с new
Разберем нюансы функции new на примерах. Для каких целей и типов она используется, как ею упрощается инициализация?
8 инструментов для предпринимателей, похожих на ChatGPT
ChatGPT - не единственный на рынке инструмент искусственного интеллекта. Рассмотрим 8 альтернатив, которые также могут пригодиться.
Как узнать, допускает ли изменения коллекция в Java?
Ответ на этот вопрос - никак. Между тем преимущества различения изменяемых и неизменяемых коллекций в Java очевидны. Это не менее важно, чем отличать мастику для натирки полов от начинки для десерта.
Как стать разработчиком Go: в 6 шагах от карьеры
Golang (иначе Go) является востребованным языком программирования, особенно у тех, кто работает с продуктами Google. Он используется многими крупными компаниями такими, как Uber, Medium,...
Swift: 7 секретов оптимизации
Обзор 7 функциональностей Swift для создания качественного кода: ключевое слово indirect, атрибут @autoclosure, свойства Lazy и другие.
C++: подробное руководство по std::accumulate
На примерах разберем нюансы этой функции, в том числе ее отличия от параллельных алгоритмов C++17. Рассмотрим реальный сценарий и типичные ошибки.
Найти все на C++: практическое руководство
Изучим, как на C++ реализуется и применяется функциональность find_all. Проиллюстрируем примерами, обозначим типичные проблемы, дадим рекомендации.
C++: полное руководство по explicit
Изучим нюансы этого ключевого слова, реальный сценарий использования. Проиллюстрируем примерами, дадим рекомендации.
C++: полное руководство по динамическим массивам
Изучим практическое применение этих массивов, оптимизацию их производительности. Проиллюстрируем примерами и реальным сценарием использования.
Инструменты прототипирования в 2021 году
Прототипирование является ключевой частью проектирования UI и UX. Дизайнеры могут создать прототипы как с высокой, так и с низкой точностью, в зависимости от их...
30 полезных сниппетов на Python, которые можно освоить за 30 секунд
Python — один из популярнейших языков, который активно используется в анализе данных и машинном обучении, при разработке ПО, в автоматизации и так далее. Такая...
Метапрограммирование на Go
Большинство современных сайтов реализуют некий MV*-фреймворк как формально, так и неформально. Если вы пишете много кода, скорее всего, вы пишете много моделей снова и...
Использование методов расширения в C# для элегантного и плавного кода
Методы расширения являются неотъемлемой частью современной платформы .NET и широко применяются в языке запросов LINQ, одной из лучших функциональных возможностей .NET. К сожалению, многих они отпугивают:...
Злые единицы - добрый Frink
Введение
Единица измерения — это физическое свойство, представляющее собой число, например, расстояние или время. Мы почти всегда говорим о системе единиц СИ.
У единиц могут быть...
9 странностей Python для C++ программистов
Python можно назвать странным языком программирования.
По крайней мере, когда вы переходите с других языков вроде C, C++, C#, Java, PHP или JavaScript. Все эти...
3 способа мониторинга изменений лог-файлов в Java
Научимся отслеживать изменения файлов тремя разными способами: запланированная задача + File.lastModified, WatchService и Apache Commons-IO.
Python — идеальный инструмент для любой проблемы
Размышления о моей первой программе на Python.
Размышления это всегда помогающее (а иногда и развлекающее) занятие. Из ностальгических соображений, конечно, если можно испытывать ностальгию по...
5 ключевых понятий Python и их магические методы
Введение
Когда дело касается именования функций в Python, мы вольны использовать нижние подчеркивания, наряду с буквами и числами. Символы подчеркивания между словами особой роли не...
Jetpack Compose Canvas: 10 практических примеров
Разрабатываете пользовательское представление, игру или визуализацию данных? API Canvas обеспечит вам необходимые гибкость и контроль. Ознакомьтесь с его возможностями по созданию пользовательских рисунков.
Оптимизация кода задачи на миллиард строк — ускоряем запуск в 87 раз
Поэтапно увеличим производительность реализации парсера для огромного файла. Устраним копии и баги, воспользуемся профилировщиком, хеш-картой линейного зондирования, микрооптимизациями, распараллелим код.
Какой язык программирования учить в 2022 году?
В последние годы на рынке программного обеспечения сформировались принципиально новые перспективные направления для профессионального развития разработчика.
1. Unity (C#)
“Более половины игр в мире создано на Unity”....
Создание API в R при помощи Plumber
Что это за инструмент - Plumber - и как с его помощью можно легко вывести собственное приложение R в продакшен-среду? Ответ на примере создания простого API.
8 способов “настроить” Data-команду на успех. Часть первая
Мы живем в золотой век Data-ориентированных организаций. Алгоритмы! Большие Данные! У вас вероятно, даже есть Data Scientist в штате или два! Но …
Если ваши Data-специалисты тратят...
Руководство по Docker. Часть 2: Docker Compose для JavaScript, Python и Redis
Рассмотрим написание docker-compose.yml и запуск веб-приложения в связанных контейнерах Docker Compose на примере Node.js и Redis.



























































![[C++] часть 3: синхронизация потоков в ресторане С](https://nuancesprog.ru/wp-content/uploads/2020/02/1_Rg65NaL9YsH99zq35bX9Yg-218x150.png)












































