Основные принципы сборки мусора в Java
Освобождение памяти - один из важнейших процессов в среде Java, повышающий производительность приложения. Сегодня проследим за главными этапами этого процесса, разберем основные типы сборщиков мусора и познакомимся с лучшими практиками управления памятью в Java.
Плохие модели машинного обучения? Но их можно откалибровать
Для правильного расчета вероятностей оракул не нужен. В чем разница между хорошими калибровкой и производительностью, и когда одна предпочтительнее другой?
5 проектов Go: управление безопасностью и контейнерами, создание бэкендов
Расскажем об интересных проектах Golang, связанных в том числе с разведкой по открытым источникам. Используйте их в своих приложениях.
Как создать простое Flutter-приложение ToDo с помощью Hive
Говорят, Hive - лучшая БД для локального хранения данных. Сейчас мы это и проверим на практическом примере создания приложения ToDo на Flutter.
[C++] часть 2: МЬЮТЕКС. Пишем наш первый код для многопоточной среды
Часть 1, Часть 2
В прошлой статье мы разобрались с тем, что такое конкурентность/параллелизм и зачем нужна синхронизация. Настала пора изучить примитивы синхронизации, которые предлагает...
Введение в модульное тестирование на Python
Вы только что написали фрагмент кода и не знаете, что делать дальше. Отправлять ли pull request, чтобы коллеги провели ревизию кода или же протестировать...
13 чит-кодов к жизни программиста
Соревнуйтесь с самим собой, а не с другими программистами - это одно из правил, о котором многие узнают слишком поздно. Чтобы с вами этого не случилось, возьмите на вооружение 13 чит-кодов от опытного программиста.
Как освоить API-интерфейсы Metal с UIView и SwiftUI
Раскроем возможности программирования графических процессоров с Metal для создания сложной 3D-графики, обработки изображений и других задач. Предоставим фрагменты кода и рекомендации для применения Metal в собственном приложении iOS или macOS.
Kotlin: продвинутые техники функционального программирования
Подробно и с реальными примерами рассмотрим приемы программирования для создания выразительного и эффективного кода. Изучим мощный инструментарий: от нюансов функций для работы с коллекциями, элегантности композиции функций и до эффективности хвостовой рекурсии.
Пять отличных Python-библиотек для data science
Python — это лучший друг специалистов по данным, а библиотеки значительно упрощают их жизнь. Работая над NLP-проектом, я открыл для себя пять отличных Python-библиотек, которые мне...
Quarkus — горячий тренд Java-разработки
С революционным фреймворком Quarkus разработка на Java станет еще проще, быстрее и эффективнее. Оцените его ключевые особенности и преимущества по сравнению со Spring Boot.
Сложные вопросы на собеседовании для тех, кто 7 лет работал с Java. Часть 2
Увеличьте свои шансы на успех, впечатлив потенциальных работодателей знаниями и навыками. Разберем некоторые вопросы с подробными объяснениями и примерами.
Как создавать и публиковать консольные приложения на Python
Подробное руководство по созданию и публикации консольных приложений на Python
Консольные приложения — это те, которые вы запускаете в терминале. Скорее всего, вы уже пытались их создать. Или,...
Раскройте потенциал VS Code для программирования на Ruby
Рассмотрим расширения и библиотеки для повышения продуктивности при работе с кодом на Ruby. Настроим альтернативную RubyMine, бесплатную среду разработки.
6 отборных практик для определения метода __init__ в Python
Создание читаемого и удобного в обслуживании кода Python начинается с грамотного определения метода __init__. В связи с эти предлагаем 6 наилучших практик, проверенных личным опытом автора.
Разворачиваем декораторы. Часть 2
Предыдущие части: Часть 1
Вспомним о чем шла речь
Предыдущий пост я писал про основы декораторов в Python. Для тех, кто не читал её, в двух...
Язык R: прокачайте свои навыки до следующего уровня
Узнайте, как анализировать и ускорить код на R. Напишите эффективный код в своем следующем проекте, следуя этим рекомендациям.
Как работать с большими наборами данных в Python: 3 способа
Нехватка памяти ПК при обработке больших данных - большая проблема для специалистов по науке о данных. Предлагаем узнать 3 оптимальных способа ее решения.
Основы программирования UDP-сокетов на Java
Сокеты — это абстракция самого низкого уровня для программистов, работающих в области сетевого программирования. Существует в основном два способа (протокола) того, как должна происходить коммуникация сокетов.
Один...
Для чего нужен указатель в Си?
Указатель в Си — это переменная, содержащая адрес другой переменной. Сложность указателей заключается в понимании где и для чего они могут пригодиться.
Перед тем, как...
MVVM на Android с компонентами архитектуры + библиотека Koin
Введение
С MVVM (Model-View-ViewModel) процесс разработки графического интерфейса для пользователей делится на две части. Первая — это работа с языком разметки или кодом GUI. Вторая — разработка бизнес-логики или...
Как создать плавающую кнопку для Android приложения
Для начала создайте пустой Android проект.
Добавьте зависимость Android Design, потому что FAB находится в этой библиотеке. Скопируйте и вставьте её в свой проект.
implementation 'com.android.support:design:28.0.0'
Если...
Создай приложение Go и соревнуйся в реальном времени
Соревновательный дух живет в каждом! Расскажем, как реализовать приложение Go, которое позволяет в режиме реального времени состязаться с оппонентами и проверять свою эрудицию.
RxJS и Angular: декларативный If/Else
Исходный код: Github 🚀 | Интерактивные примеры и фрагменты кода🚀
Цель статьи 🎯
Задействование оператора фильтра RxJS. Использование последовательной парадигмы декларативного программирования для потенциального улучшения ясности кода...
Элегантное ООП на Python
Сила Python в его гибкости. Это один из самых простых языков для объектно-ориентированного программирования. Иногда его даже критикуют за чрезмерную гибкость. Я покажу самый...
Контейнеры Docker и их связывание в сети
Создадим три файла Dockerfile с прямым подключением каждого к своему репозиторию GitHub, сделаем из них три пользовательских образа Docker, а из каждого образа - по одному контейнеру. Один изолируем в сети Development, два поместим в Production и проверим их взаимодействие.
PHP: принятие решений
Рассмотрим, как работают операторы принятия решений if, elseif… else и switch.
Автоматизация создания файлов для нового экрана с плагином для Android Studio
Введение
Приходилось ли вам работать над проектом со сложной архитектурой, в котором для создания нового экрана нужно добавить несколько новых файлов с определенным содержимым? Например,...
Под капотом модификатора suspend
Корутины Kotlin предоставили Android разработчикам модификатор suspend. Изучив его, вы поймете, почему функция suspend не возвращает ничего до тех пор, пока не будет завершена...
Оптимизация структур в Golang для эффективного распределения памяти
Поговорим сегодня о выравнивании структур в Golang.
Производительность компьютеров растет с каждым годом. Их вычислительные возможности позволяют выполнять все более сложные задачи. В стремлении применять...
Руководство по анализу данных с SQL
Данные - это новое топливо цифровой эры. Однако с ростом их количества появляется необходимость извлекать из них смысл. В результате этого появилось множество профессий,...
Знакомство с фабричным методом
Фабричный метод упрощает процесс создания объектов, делает код более удобным в обслуживании и обеспечивает ряд других преимуществ. Разберем принцип его работы на реальном примере создания игровых персонажей.
Результаты опроса разработчиков Angular в 2023 году
Ознакомьтесь с инициативами сообщества Angular, высказанными в опросе 2023 года. Многие из них были учтены в дорожной карте Angular на 2024 год, нацеленной на улучшение опыта разработчиков и повышение производительности фреймворка.
Доступно об API-вызове во Flutter: лучшие практики с демонстрацией кода
Рассказываем, как во Flutter использовать методы API-вызова HTTP, POST, GET и как создавать модели для представления данных, получаемых с сервера. Следуя этим практикам, вы будете писать более надежный и эффективный код.
10 полезных советов по повышению производительности при работе с VS Code
Visual Studio Code - не просто текстовый редактор. Это мощный инструмент, который значительно повышает производительность и оптимизирует рабочий процесс. Воспользуйтесь этими советами по работе с ним.
Разностный алгоритм Майерса и наблюдаемые свойства в Kotlin - как их объединить, чтобы облегчить жизнь разработчика
Посмотрите на анимацию ниже. Это группа разноцветных элементов, которые при нажатии кнопки начинают перемещаться. С точки зрения разработчика, эти элементы размещаются внутри RecyclerView с...
3 секретных оружия в арсенале Python
Я уже пишу на Python более 5 лет. Примечательно, что при этом мой арсенал инструментов с течением времени не увеличивался, а наоборот уменьшался. Многие...
8 частых ошибок в Android-разработке
Ошибка № 1: не учитывать, что всё должно быть на своих местах
Экосистема Android стремительно распространяется по всему миру. Вместе с этим растёт и сообщество, состоящее...
Работа с панелью индикаторов. Руководство программиста Python. Часть 3
Часть 1, Часть 2, Часть 3
В этой серии статей в качестве основной платформы для Dashboarding используется Dash от Plotly.
Прежде чем перейти к этой статье,...
Топовые пакеты Python для очистки данных
Многим кажется, что наука о данных сводится исключительно к разработке моделей машинного обучения и оценке технических показателей. Это не так - круг обязанностей гораздо шире. Специалисты работают над сбором, очисткой, анализом, пониманием данных и т. д. Разберем же наиболее эффективные инструменты Python, предназначенные для очистки данных.
Проекты на Python с помощью Visual Studio Code
Зачем использовать виртуальные среды в науке о данных?
Управление зависимостями играет важную роль для разработчиков пакетов и ПО. Но как насчет специалистов по науке о...
Почему гейм-дизайнеру нужно программирование
Программисту не обязательно быть гейм-дизайнером, но каждый гейм-дизайнер должен быть программистом. Узнайте о том, почему навык написания кода жизненно важен в разработке игр и как им овладеть.
Простое объяснение интерфейсов на Golang
Что общего у электророзеток с интерфейсами? Как создавать интерфейсы правильно? Попробуем понять этого непонятного зверя!
Наследование и полиморфизм в Python
Наследование
Наследование — это способность объекта принимать одну или несколько характеристик от других классов объектов, обычно переменных или функций-членов. Можно провести аналогию между этим понятием...
Go: точечная вставка значения в структуру
Подробно и с примерами рассмотрим функционал мощного и элегантного пакета dot для сложноиерархических структур. На основе тестов дадим рекомендации по его использованию.
5 способов упростить повседневные задачи с помощью ChatGPT
ИИ-бот ChatGPT может стать хорошим помощником для разработчиков ПО. Рассмотрим основные возможности этого инструмента при создании и комментировании кода, анализе и сравнении библиотек.
Асинхронность в Java
Асинхронное программирование — обширная и получившая широкое обсуждение тема, но инженеры-программисты все еще ищут, как лучше реализовать эту идею и интегрировать в приложения.
Мне — ...
Топ-5 языков программирования для начинающих
Выбор первого языка программирования является дилеммой, с которой сталкивались практически все мы, когда стояли в начале своего путешествия по миру разработки.
Этот выбор в итоге...
Как читать CSV-файлы на Java с помощью Open CSV
Вкратце рассмотрим возможности по обработке CSV-файлов на языке Java, ведь этот формат файлов часто встречается в повседневной работе.
Изучение Python: от нуля до мастера
Первым делом спросим себя, что такое Python? Создатель языка, Гвидо ван Россум, описывает его следующим образом:
"Язык программирования высокого уровня, главная идея которого - это...
Практикум по созданию сценариев командной строки
Сценарии командной строки играют важную роль в современных операционных системах. Предлагаем углубиться в это понятие и поучиться писать скрипты shell.
Как оптимизировать навигацию в Jetpack Compose
Проанализируем ситуацию с навигацией в Jetpack Compose, выявим существующие проблемы и рассмотрим конструктивное решение в виде реализации чистой навигации.
Шпаргалка по регулярным выражениям. В примерах
Регулярные выражения (regex или regexp) очень эффективны для извлечения информации из текста. Для этого нужно произвести поиск одного или нескольких совпадений по определённому шаблону...
Что такое Flutter и зачем его изучать?
Сегодня доступно множество инструментов для мобильной разработки. Одним из них является Flutter, который в последнее время стал довольно популярным. Рассказываем, в чем секрет успеха Flutter и почему стоит обратить на него внимание.
Осваиваем веб-скрэпинг на Python
В этой короткой статье рассказывается про методику вэб-скрэпинга (англ. web scraping) - набор инструментов по извлечению данных с сайтов. Если вы сталкивались с проблемами...
10 проектов для изучения Golang в 2023 году
Учиться лучше на практике, и оптимальный способ освоить Golang - создавать проекты. Мы отобрали для вас подходящие проекты - не слишком сложные и не самые простые - с курсами для начинающих и опытных разработчиков.
Ключевые PHP-операторы
Чтобы использовать язык PHP по максимуму, нужно уметь обращаться с его основными операторами. О них сегодня и поговорим.
Новости об Android
Обновления для Android 11
Мы все еще находимся на стадии предварительного обзора для разработчиков Android 11.
Developer Preview 4
Превью-релиз был выпущен пару недель назад. О Developer Preview 4...
Учимся избегать null-значений в современном Java. Часть 1
Null. Правила использования
В своем выступлении “Null References: The billion dollar mistake” (“Нулевые ссылки: ошибка на миллиард долларов”), Тони Хоар описывает реализацию нулевых ссылок в...
Глубокое погружение в режим Copy-on-Write в pandas. Часть 3
Внедрение процесса Copy-on-Write (CoW) является серьезным изменением, которое способно оказать определенное влияние на код pandas. В этой части мы изучим способы адаптации кода, чтобы избежать ошибок при включенном по умолчанию CoW.
4 golang-сниппета, которые вводят в заблуждение разработчиков C#!
В лингвистике такое явление получило название ложные друзья переводчика, то есть слова, похожие по звучанию или написанию, но совершенно разные по значению. Например, английское...
Обучение Inception в Google распознаванию пользовательских изображений
Ищете краткое руководство по обучению классификатора пользовательских изображений? С помощью Inception API от Google Brain с этой задачей можно справиться быстрее, чем выпить чашку...
Автоматизация скриптов на Python при помощи AWS Lightsail
В своей работе специалиста по данным я осознал, насколько необходимо автоматизировать любой и каждый аспект рабочего процесса. Когда большинство людей слышит слова “наука о...
Продвинутое применение «select» в Ruby
На примерах изучим, как select комбинируется и объединяется с другими методами. Рассмотрим особенности ключевого слова next со сложными условиями.
Идеальная настройка вашего Golang проекта
Часть 1, Часть 2, Часть 3
При запуске нового проекта самые большие трудности у меня всегда вызывала его настройка. Всегда стараешься сделать её «идеальной»:
используешь лучшую...
10 отличных JavaScript библиотек на 2020 год
JavaScript — язык интернета. Вы можете запускать его в браузере или на сервере, а можете использовать для мобильных приложений.
Хотя он и хорош сам по...
Овладей Python, создавая реальные приложения. Часть 5
Делаем анализ тональности высказываний в Twitter за 3 минуты
Предыдущие части: Часть 1, Часть 2, Часть 3, Часть 4
В этой части мы создадим скрипт Python, который при помощи Twitter поможет...
9 странностей Python для C++ программистов
Python можно назвать странным языком программирования.
По крайней мере, когда вы переходите с других языков вроде C, C++, C#, Java, PHP или JavaScript. Все эти...
5 причин выбрать Flutter в 2020 году
Что такое Flutter?
Flutter — это платформенно-независимая технология Google для создания приложений, используемых на мобильных, настольных и веб-платформах. Официально она была представлена в декабре 2018 года и за...
7 лучших CLI-библиотек Python в 2023 году
Повысьте свой уровень программирования на Python, освоив 7 самых продвинутых CLI-библиотек. Их возможности максимально упростят разработку интерфейса командной строки и позволят сократить код до минимума.
Миграции баз данных с Golang
Изучим достоинства и недостатки очень полезного инструмента не только для тестирования, но и для контроля и управления версиями БД. Разберем особенности написания и применения SQL-миграций в службах на Go.
Создание общей библиотеки Linux
Краткая вводная инструкция по написанию общей библиотеки Linux на C++. Разберемся, что такое библиотека, и поэтапно ее создадим.
Топ-15 лайфхаков для работы с Python
Python, без сомнения, является одним из самых популярных языков программирования. Простой и легкий в освоении, он завоевал признание многочисленного сообщества.
Python — “самый мощный язык,...
4 ситуации из жизни лямбда-функций в Python
Начнем с того, что лямбда-функции не пользуются особой популярностью у программистов Python, да и у меня они вызывают смешанные чувства. Новичкам непросто в них...
Байт-код JVM: манипулирование и инструментация
Манипулирование байт-кодом JVM и его инструментация - техники, позволяющие максимально оптимизировать Java-приложения и входящие в арсенал каждого продвинутого разработчика. Узнайте о широких возможностях этих техник, сложностях их применения и лучших практиках.
Java. Вложенные классы
Вложенный (иначе — внутренний) класс в объектно-ориентированных языках программирования — это такой класс,объявленный внутри другого класса.
Это позволяет объединять логически связанные между собой классы и...
Магия совместимости XML и Jetpack Compose
Статья подскажет, как перевести проект с представлений XML на Jetpack Compose и воспользоваться всеми его преимуществами.
Как уменьшить объем шаблонного кода в тестах Kotlin
Узнаем один отличный прием Kotlin! Он позволяет оптимизировать тесты и сделать их понятными и удобными в сопровождении.
Проектирование и развертывание Python-приложения для машинного обучения. Часть 2
Не нужно быть Атлантом, чтобы перенести модель в облако. Нужно лишь усвоить ключевые концепции проектирования Python-приложения для машинного обучения. Предлагаем рассмотреть их на высоком и низком уровнях, чтобы принять оптимальные решения для сбалансирования нагрузки и устранения узких мест при развертывании.
Обновления в Android 11: Scoped Storage и другие улучшения конфиденциальности
Все последние улучшения в Android на уровне ОС касаются защиты приложений и пользовательских данных, а также более упорядоченного предоставления доступа. Несмотря на преимущества изменений,...
Python/C API - ускорение Python при помощи кода на C
Пакет ctypes для начинающих: запуск библиотек на C из Python и функции CUDA ускорят не только вычисления, но и процесс разработки.
Хитрости объектно-ориентированного программирования. Часть 6 SLAP для функций
Это мини-серия статей по написанию поддерживаемого объектно-ориентированного кода без лишней нервотрепки.
Предыдущие части: Часть 1, Часть 2, Часть 3, Часть 4 и Часть 5.
Элементарные функции
Должен признать: очень долгое...
Создание приложения ChatGPT в SwiftUI
Предлагаем руководство по разработке в SwiftUI приложения ИИ, подобного ChatGPT. Настроив поведение своего чат-бота с помощью системных сообщений, вы сможете создать нечто оригинальное.
Незаслуженно забытый ForkJoinPool
Всем известно о новых функциях, которыми нас порадовал JDK 8, и, вероятно, трудно найти Java-разработчика, который не знает, что такое Java Streams, лямбды или...
Jetpack DataStore: улучшенная система хранения данных
Что такое DataStore
На протяжении многих лет разработчики Android хранили небольшие фрагменты конфиденциальных пользовательских данных с помощью общих настроек (shared preferences). Этот подход имеет следующие...
Автоматизация скриншот-тестирования предварительных просмотров Compose с использованием отражения
Это решение по автоматизации скриншот-тестирования предварительных просмотров Composable занимает всего пару часов, интегрируется в проект и имеет почти нулевые затраты на обслуживание. При этом оно позволяет быть уверенным в том, что любое изменение пользовательского интерфейса не приведет к неожиданным сбоям.
Овладей Python, создавая реальные приложения. Часть 4
Предыдущие части: Часть 1, Часть 2, Часть 3
Время от времени появляются новые языки программирования, а с ними и крупные сообщества пользователей. Python существует уже довольно долго, поэтому...
Понятия “связанности” и “связности” в объектно-ориентированном программировании
Рассмотрим такие характеристики кода, как связанность и связность. Разберем каждое из понятий и на примерах определим их наилучшее сочетание для чистоты кода и удобства его сопровождения.
Rust: взгляд старого программиста
Так сложились обстоятельства, что у меня возник перерыв в работе, в который я решил переключиться на Rust. Название этого языка резонировало с моим настроением,...
Как вызвать из C# генерируемую на Rust библиотеку
Объединяем преимущества двух языков. Узнаем, как создать библиотеку на Rust, выполнить сборку и с помощью P/Invoke вызвать из C# ее функции.
Популярные лайфхаки для Python
Эти крутые советы для Python сделают ваш код красивее
1. Распаковка элементов массива
first_name, last_name = print(first_name) #выводится Farhadprint(last_name) #выводится Malik
2. Обмен значений переменных
first_name, last_name = last_name,...
Реализуем функцию управления взглядом с помощью SwiftUI, ARKit и SceneKit
Предлагаем изучить опыт создания на SwiftUI hands-free приложения с применением ARKit и SceneKit. Для лучшего понимания возвращаемых значений будет использован также фреймворк SwiftUI Charts.
Какую архитектуру выбрать — с единой или множеством Activity?
Обе архитектуры - как с единой, так и со множеством Activity - находят свое место в Android-разработке. Изучаем плюсы и минусы каждого подхода, а также их случаи использования.
Нормальное завершение работы в Go
Go очень популярен среди разработчиков бэкенда, а его сообщество с каждым днем только растет.Лично я предпочитаю писать код на Go.
В этом кратком руководстве описывается...
Автоматизация работы с Python
Введение
Работу по вводу данных можно разделить на следующие категории:
Извлечение данных из таблиц (Excel, Google Sheets) и перемещение их в другое место (веб-страница или другая...
Запечатанный класс
Часто нам приходится представлять ограниченный набор возможностей: веб-запрос либо успешно выполняется, либо не выполняется, User может быть либо про-пользователем, либо обычным.
Чтобы смоделировать это, мы...
Реализация интерфейсов в Golang
Интерфейсы — это инструменты для определения наборов действий и поведения. Они позволяют объектам опираться на абстракции, а не фактические реализации других объектов. При этом...
Как использовать GPT-3 для поиска и рекомендаций текстового контента
Общий обзор по генерации векторов GPT-3 для анализа сходства документов. Научимся вычислять косинусное сходство и на его основе определять максимально похожие документы.
Шаблон проектирования прототипов в современном C++
Шаблон проектирования прототипов — это порождающий шаблон проектирования, который помогает в прототипировании (недорогом создании/копировании) объекта с использованием отдельных методов или полиморфных классов. Прототипом можно считать модель...
Почему стоит упрощать проекты МО
Аргументируем, почему не стоит тратить время и силы на сложную модель МО, а лучше в интересах бизнес-клиентов заняться созданием работоспособного MVP.
P.S. Дорогой рефакторинг, нам нужно на время расстаться
Я люблю рефакторинг. Действительно люблю. В процессе TDD (разработки через тестирование) по мере прохождения тестов я могу сосредоточиться исключительно на коде, дорабатывая и доводя...
Создание интерфейсов, удобных для алгоритмов
Дизайнер должен досконально знать материалы, с которыми работает. В прошлом это было понимание особых свойств древесины, металлов, печатных станков и, наконец, пикселей. Современным дизайнерам...
Обзор 8 ключевых команд Npm и Yarn
Хочешь быть продуктивным - учи команды команды npm и yarn CLI. А мы предоставим актуальную информацию о самых востребованных из них.
Эффективное использование ESLint
Когда мы взаимодействуем в каком-либо проекте, то лучше всего придерживаться некоего общего стиля написания кода. Это облегчит коллегам его чтение и сократит временные затраты....
Почему все веб-сайты выглядят одинаково?
Интернету не хватает креативных решений, поэтому я попросил своих учеников разработать редизайн уже существующих веб-сайтов.
Современный интернет однообразен. Все выглядит одинаково: одинаковые шрифты, похожие страницы,...