Развертывание Gatsby-сайта с помощью GitHub Actions
Вот уже несколько недель, как я знакомлюсь с Gatsby. Пока что я перенесла на него свой старый блог с Jekyll и создала конвейер, непрерывно...
Ключевое слово vararg и оператор spread в Kotlin
Что осталось за кадром?
В некоторых случаях необходимо определить функцию с переменным числом параметров; Вот пара примеров, с которыми вы, вероятно, сталкивались в Android:printf(String format, Obj......
Хитрости объектно-ориентированного программирования. Часть 2: Закон Деметры
Это мини-серия статей по написанию поддерживаемого объектно-ориентированного кода без лишней нервотрепки.
Предыдущие части: Часть 1
Единственный закон в программировании — это отсутствие законов. А закон Деметры — это, скорее, рекомендации, а...
Jetpack Compose: пользовательский интерфейс Twitter
Я решил протестировать Jetpack Compose, сделав простой клон пользовательского интерфейса Twitter после того, как наткнулся на этот твит Mariano Zorrilla:
Он использовал Flutter (отличный инструмент для...
Инструкция для новичка: как программировать дополненную реальность для Smart Glass
Обзор
В этом туториале я поделюсь основной информацией об умных очках. Затем, используя пример проекта с хакатона, проведу вас через весь процесс. А начнем мы...
О дивный читаемый код
Введение
Большинство начинающих программистов сталкивается со многими дилеммами в процессе написания кода, например задумываются о том, какой код будет востребован в индустрии. У каждой компании...
Двусторонняя связь без интернета: Nearby Connections
Двусторонняя связь, устанавливаемая без интернета, открывает новые возможности для пользователей. К примеру, позволяет работать большой командой и обмениваться видео, файлами и текстовыми сообщениями.
Конечно, существуют...
Тестирование производительности: rust/warp против go/fasthttp
В чем причина недостаточной эффективности rust/warp и что ведет к увеличению производительности? Применим хитрые приемы, способные улучшить работу версии Rust.
Python — это суперсила!
Компьютеры — это круто. Они дают вам возможность претворять в жизнь модели и идеи, которые сидят в вашей голове, ожидая, когда их выпустят в реальный мир.
Я...
Создание пользовательских аннотаций в Java
Продолжаем разговор об аннотациях в Java - теперь кроме предопределенных "из коробки" аннотаций научимся писать и применять свои собственные.
Почему большинство программистов выбирают Python
Python - второй (после JavaScript) по распространенности язык программирования, который используют 15,7 млн человек. Рассказываем, с чем связана его популярность и как понять, подходит ли он именно вам.
Топ-10 самых распространенных ошибок в проектах Go. Часть 2
Предыдущая часть: Часть 1, Часть 2
Инициализация среза
Иногда конечная длина среза бывает известна. Допустим, нужно преобразовать срез Foo в срез Bar, что означает, что они...
Как обнаружить злые твиты при помощи машинного обучения
Мне не нужно напоминать вам о том, что Интернет может быть очагом негатива, несмотря на все его положительные качества. Вы только взгляните на Reddit,...
Как стать инженером Python в 2023 году
Предлагаем подробное руководство по овладению основными навыками работы с Python, которые требуются начинающим программистам в 2023 году. Это руководство, составленное с учетом последних тенденций и технологий IT-индустрии, поможет сосредоточиться на самом главном.
Swift: 7 секретов оптимизации
Обзор 7 функциональностей Swift для создания качественного кода: ключевое слово indirect, атрибут @autoclosure, свойства Lazy и другие.
ReSvelte — инструмент разработчика Svelte и визуализатор дерева компонентов (расширение VS Code)
Хотите корректно построить дерево компонентов и справиться с проблемой повторного рендеринга? ReSvelte - это инструмент, который решит обе задачи. Узнайте о том, как, работая над проектом, одновременно использовать ReSvelte.
Использование свойств lazy в Kotlin для связывания представлений Android
Чтобы выполнить операцию над одним из представлений при работе с UI-слоем приложения Android, его нужно получить его через findViewById. Несмотря на то, что использование...
Абстракции с нулевой стоимостью* в Kotlin
*Могут применяться особые условия
Внимание: этот пост в блоге охватывает экспериментальную функцию Kotlin, которая может быть изменена. Эта статья была написана с использованием Kotlin 1.3.50.
Безопасность...
Логирование — корень всех проблем отладки
Логирование играет важную роль в получении информации о поведении системы, помощи в отладке и эффективном решении проблем. Следуя лучшим практикам и используя инструменты анализа логов, такие как ELK Stack, вы получите более глубокое представление о своих системах и сможете создавать более надежные и производительные приложения.
Язык C: основы синтаксиса
От ознакомления с базовой программной структурой C перейдем к усвоению других строительных блоков этого языка.
Реализация односвязного списка в Golang
Разберем структуру односвязного списка, компоненты его узлов. Рассмотрим четыре способа вставить и удалить данные в связном списке, реализацию с ним других операций.
Разработка макроса Rust для автоматического написания шаблонного кода SQL
Макросы облегчают жизнь разработчикам, позволяя автоматизировать некоторые процессы. Сегодня поговорим о возможностях метапрограммирования в Rust.
Когда чистый код нецелесообразен
Хотя у чистого кода имеется ряд преимуществ, его внедрение в проект не всегда оправдано. Рассмотрим ситуации, когда чистый код слишком дорог.
Выполнение AES/GCM в Android
Столкнувшись с рядом проблем, связанных с выполнением шифрования и расшифровки AES в Android, я решил поделиться своим опытом.
TL;DR: здесь можно найти готовое решение. Если...
Dynamic Feature Modules: навигация
В последнее время моя команда начала проходить испытание по модуляризации нашего приложения. Одна из первых вещей, за которые мы взялись основательно, была навигация, а...
Как прокачать навык отладки
В какой-то момент, каждый из нас сталкивается с ошибками при написании кода. Собственно, процесс разработки в том и состоит. При возникновении ошибки, вы теряетесь...
Как оптимизировать навигацию в Jetpack Compose
Проанализируем ситуацию с навигацией в Jetpack Compose, выявим существующие проблемы и рассмотрим конструктивное решение в виде реализации чистой навигации.
Скрытые нововведения в iOS 15
Самая интригующая часть нового функционала, появившегося по итогам проведения конференции WWDC21, была запрятана в замечаниях к выпуску Xcode 13.
Все программы и библиотеки dylib, имеющие...
Что возвращать в Go: структуры или интерфейсы?
В подробном руководстве исследуем преимущества и особенности возвращения структур и интерфейсов на Go. Рассмотрим реальные сценарии с практическими примерами, рекомендации, альтернативные стратегии.
Инструменты для создания виртуального окружения в Python
В этой статье я хочу поделиться инструментами для создания виртуального окружения в Python, а также разобрать их преимущества и недостатки.
Различные инструменты для создания виртуального...
Тип Result в Rust
Рассмотрим тип Result для обработки случаев успеха и случаев ошибок в вычислениях на Rust и методы для манипулирования значениями и их обработки. Изучим примеры использования и функциональность методов.
Рефакторинг большой раскадровки в несколько меньших
День настал
Я недавно работал над iOS приложением, которое уже находится на рынке. Оно было выпущено прежде, чем Apple запустили новый чудо фреймворк SwiftUI, и...
Рост производительности машинного обучения с Rust
Сделаем с нуля небольшой ML-фреймворк на Rust для создания нейросетевых моделей. За счет чего скорость обучения здесь в 5,5 раза выше, чем с Python и PyTorch?
Что нового в Jetpack
Android Jetpack — это набор библиотек, направленных на то, чтобы помочь вам легко писать высококачественные приложения, поддерживая более старые версии Android. Спустя два года после запуска...
Как использовать GitLab в качестве реестра Helm-чартов
Поскольку Helm вошел в число поддерживаемых форматов пакетных менеджеров GitLab, не помешает научиться создавать, упаковывать и публиковать Helm-чарты в реестре пакетов GitLab.
Язык С: типы данных
Типы данных в языке C - это обширная система, используемая для объявления переменных или различных функций. Тип переменной определяет, сколько места она занимает в памяти и как интерпретируется хранящийся битовый паттерн.
Как восстановить положение прокрутки виджета RecyclerView
Возможно, у вас была проблема, когда RecyclerView терял позицию прокрутки при повторном создании Activity/Fragment. Обычно это происходит из-за того, что данные Adapter загружаются асинхронно...
Как улучшить скорость сборки проектов Android
Gradle всегда славился медлительностью и ресурсоемкостью, однако с помощью небольших изменений в конфигурации можно значительно повысить скорость сборки проекта.
Метрика из сканирования сборки до и...
8 инструментов для предпринимателей, похожих на ChatGPT
ChatGPT - не единственный на рынке инструмент искусственного интеллекта. Рассмотрим 8 альтернатив, которые также могут пригодиться.
Магия совместимости XML и Jetpack Compose
Статья подскажет, как перевести проект с представлений XML на Jetpack Compose и воспользоваться всеми его преимуществами.
5 способов упростить повседневные задачи с помощью ChatGPT
ИИ-бот ChatGPT может стать хорошим помощником для разработчиков ПО. Рассмотрим основные возможности этого инструмента при создании и комментировании кода, анализе и сравнении библиотек.
Как написать на Java функцию, подобную sizeof в C
В качестве упражнения реализуем функцию sizeOf() на Java, чтобы без проблем получать размеры разных типов данных, как в C.
Новые функции стандартной библиотеки Kotlin 1.5
Рассмотрим 7 основных изменений: новые функции коллекции, целочисленные типы без знака, деление с округлением вниз, API преобразования текста с учетом регистра, функции для проверки свойств символов и т. д. Узнаем, какие функции делают преобразование отдельных символов в числа более выразительным.
Rust: рефакторинг для новичков
Возьмем код, написанный начинающим программистом Rust, выявим недочеты и внесем необходимые коррективы. Процесс рефакторинга сопроводим пояснениями и наглядными примерами.
Современное хранилище работает быстро - это API мешают делу
Последние десять лет я почти целиком провел в специализированной продуктовой компании, создавая высокопроизводительные системы ввода-вывода. У меня была возможность наблюдать за быстрым, решительным развитием...
Тестирование клиент-серверов на Rust для IoT
Выбор подходящих зависимостей для проекта может быть сложной задачей. При принятии решения здесь необходимо учитывать множество аспектов — начиная от производительности и заканчивая стилем...
Глубокое погружение в Java: рефлексия и загрузчик классов. Часть 1
Рефлексия и загрузчики классов в Java позволяют решать многие проблемы и создавать гибкие программы. В этой части уделим основное внимание рефлексии - способности работающей программы исследовать себя и внешнее окружение, изменяя свое поведение.
Все, что вам нужно знать о переходе на реляционную базу данных AWS
Каждая компания располагает огромным объемом данных, которыми нужно корректно управлять. Чтобы руководство принимало взвешенные решения, оно должно быть хорошо осведомлено о принципах деятельности своей...
Советы по модуляризации приложений Android
Создание модульных приложений/библиотек для Android дает целый ряд преимуществ, а процессу разработки следует уделять достаточно внимания. Перечень получаемых плюсов достаточно большой, перечислим лишь основные...
Лень писать игру на Rust одному? Позовите на помощь ChatGPT
На что способен ChatGPT? Заменит ли он в итоге программистов? Разберем его возможности на примере написания игры Pong и подумаем, не пора ли искать другую работу.
SQL: загадки на сообразительность
Насколько хорошо вы владеете языком SQL? Всегда ли добиваетесь ожидаемых результатов? Попробуйте решить три головоломки по SQL, которые включают временную метку, зависимые и независимые фильтры, а также неправильно действующие левые объединения. Верные ответы прилагаются!
Хитрости объектно-ориентированного программирования. Часть 5: Правило бойскаутов
Всегда оставляйте лагерь чище, чем вы его застали
Это мини-серия статей по написанию поддерживаемого объектно-ориентированного кода без лишней нервотрепки.
Предыдущие части: Часть 1, Часть 2, Часть 3 и Часть 4.
Энтропия
Энтропия — это отсутствие порядка...
Как заказывали: админ-панель от Django Jet
Нет пределов совершенству! Под таким девизом займемся улучшением панели администратора в приложении Django. А в качестве волшебной палочки воспользуемся шаблоном django-jet-reboot.
Ключевые PHP-операторы
Чтобы использовать язык PHP по максимуму, нужно уметь обращаться с его основными операторами. О них сегодня и поговорим.
3 интерактивных инструмента для управления командами в Linux
Эти инструменты позволят находить и отфильтровывать нужные команды, добавлять их в избранное для мгновенного выполнения и предоставят множество других полезных возможностей.
Как ваша программа использует память
Программирование на языках, которые позволяют взаимодействовать с памятью на более низком уровне, как например в C и C++, иногда доставляет немало проблем, с которыми...
Компилируем меньше с SOLID
Привет всем Android-разработчикам! Давайте разберем принципы SOLID, вернее, один из них.
Недавно я углубился в SOLID и нашел один скрытый потенциал. Теперь хочу рассказать про...
Как сделать кастомные шорткаты для Siri
Шорткаты в Сири
Это новая эппловская фича для iOS 12. Ее анонсировали во время приветственной речи на WWDC 2018, и вот уже этой осенью ею можно...
Как отобразить индикатор выполнения на стандартной консоли с помощью Java
Как добиться того, чтобы прогресс выполнения консольного приложения показывался напрямую в консоли? Рассмотрим вариант реализации такого прогресс-бара.
Однонаправленный поток данных в пользовательском интерфейсе Android
Вступление
Рассмотренные в этой статье идеи основаны на лучших описаниях особенностей реализации приложений Android, которые были успешно проверены на практике при создании реального приложения для...
Распознавание лиц с помощью CoreML и ARKit
Создаём приложение с одним окном
Для начала нам понадобится создать iOS проект «single view app» (прим: автор работает в Xcode).
Теперь у нас есть проект. Мы обойдёмся...
TDD и обработка исключений в ASP.NET Core с помощью xUnit
Введение и подготовка к работе
В данной статье мы продолжаем работу над построением и развертыванием “ходячего скелета” приложения при помощи ASP.NET Core WebApi и клиента Angular....
Экспериментируем с битбордом и битовыми операциями в Unreal 4
Идея прототипа игры
Главный герой Таичи застрял в мире клеток. Он пытается найти выход и может передвигаться только, если мы поможем ему раскрасить клетки, указав...
Топ-10 вопросов о Pandas на StackOverflow
Эти десять вопросов получили наибольшее количество голосов в категории Pandas на платформе StackOverflow. Они были актуальны десять лет назад, такими же остаются и сегодня. Ответы на них позволяют закрепить фундаментальные операции в Pandas.
Поиск утечек памяти с помощью автоматизированных тестов
Процесс управления памятью может стать фактором, весьма затрудняющим работу в приложениях iOS. В связи с этим нужно уделять пристальное внимание размещенным в памяти object...
Kubernetes: установка MicroK8s на локальном компьютере за 5 минут
В чем преимущества MicroK8s перед Minikube? Запустим его, проверим состояние кластера, добавим дополнения, научимся останавливать.
Как изменить PYTHONPATH на Windows
Вы читаете эту статью, потому что пользуетесь:
Windows 10+Python 3.3+Anaconda3
… и хотите изменить PYTHONPATH.
Краткая инструкция
Откройте C:Users<your_username>Anaconda3Libsite-packagesСоздайте файл python37.pthИзмените файл и добавьте в него строку C:\Users\<your_username>\my_module
Подробное...
Порты Docker: что вы на самом деле открываете?
Docker - превосходный инструмент, но по умолчанию небезопасный. И дело тут не в портах, которые могут оказаться общедоступными. Дело в людях, которые сидят за клавиатурой. Подключайтесь к решение этой проблемы.
Как создать бессерверное приложение с помощью AWS Chalice
Недавно я наткнулся на AWS Chalice и был очарован его простотой и удобством пользования.
AWS Chalice — это бессерверная платформа, которая позволяет создавать бессерверные приложения...
Новые инструменты Android 11 для обеспечения конфиденциальности и стабильности
В рамках наших постоянных усилий по созданию высококачественных приложений мы часто ищем области, куда можем инвестировать инструменты и ресурсы, которые дадут вам более ясную...
Хитрости объектно-ориентированного программирования. Часть 4: Шаблон Starter для Android
Это мини-серия статей по написанию поддерживаемого объектно-ориентированного кода без лишней нервотрепки.
Предыдущие части: Часть 1, Часть 2, Часть 3.
Создание
Обычно мы создаем объекты в одном месте. Это может...
Что такое Flutter и зачем его изучать?
Сегодня доступно множество инструментов для мобильной разработки. Одним из них является Flutter, который в последнее время стал довольно популярным. Рассказываем, в чем секрет успеха Flutter и почему стоит обратить на него внимание.
Развертывание приложений Python в Azure
Хотите легко создавать и использовать приложения, делая их доступными для других людей? Предлагаем пошаговый гайд по развертыванию рабочего приложения Python с помощью фреймворка Streamlit в облачной среде Azure.
Как разбить монолитное приложение на микросервисы без рефакторинга
Сделаем шаг навстречу более гибкой методологии разработки и познакомимся с концепцией архитектуры Just-in-Time (пер. в нужный момент), которая позволяет реорганизовывать приложения без рефакторинга.
Ключевые вопросы для собеседования по Spring Boot в 2023 году. Часть 1
Хотите получить должность Java-разработчика или повысить свой профессиональный уровень? Ознакомьтесь с актуальными ответами на 50 ключевых вопросов по микросервисам Spring Boot для собеседования с кандидатами на должность Java-программиста или инженера ПО.
Разработка приложения на основе генеративного ИИ в React IDE
Создание приложений сопряжено с проблемами, способными замедлить процесс разработки и затруднить совместную работу. Codux - бесплатная визуальная среда разработки для приложений React + TypeScript - сделает этот процесс намного проще и эффективнее.
Подробное знакомство с кортежами в C#
История эволюции кортежей в C#, включая описание и примеры их использования как в старом виде, так и в современном.
Тестирование сервиса ASP.NET Core с помощью xUnit
Вступление и предварительные условия
Эта статья относится к серии, в которой мы создаём “ходячий скелет” (walking skeleton) приложения с помощью ASP.NET Core и Angular, а...
Принципы SOLID в инженерии данных. Часть 2
Построим реальный конвейер данных: реализуем объекты с классами, обеспечив соблюдение принципов SOLID применением подхода программной инженерии. Узнаем, как они используются в приложениях обработки данных на Python. Вторая часть.
Основы реактивного программирования
Предлагаем ознакомиться с основами реактивного программирования и его основными компонентами. Кроме того, предлагаем пошаговое руководство по использованию фреймворка Reactor, предоставляющего абстракции для реактивного программирования.
Создание бесчисленных областей предпросмотра в AWS с помощью Lambda@Edge
Целью большинства команд веб-разработки является переход к непрерывному развёртыванию, для которого одним из существенных факторов может послужить наличие у каждой ветви функции собственного URL...
Комбинаторы парсеров: от parsimmon до nom (Typescript → Rust)
В этой статье мы вкратце рассмотрим процесс повторной реализации фиктивного синтаксического анализатора языка запросов, написанного на Typescript. Новая реализация будет на Rust.
Комбинатор парсеров представляет...
Как обеспечить возможность обнаружения для совместно используемых компонентов
Компоненты привносят модульность в дизайн приложений. Модульность, в свою очередь, обеспечивает возможность повторного использования, благодаря которой можно создавать приложения без необходимости каждый раз изобретать...
Как создать на Python скринер акций и выполнить анализ настроений на основе ИИ
Ищете продвинутый способ скрининга акций для инвестирования? Предлагаем руководство по запуску программы, которая поможет получить список "недооцененных" акций с их обзором и список статей с последними финансовыми новостями с их общим настроением.
Представление концепций ООП с реальными сценариями
Что общего между разработчиком и архитектором, которому поручено спроектировать дом? Подробно разберем понятия ООП для применения в реальных проектах.
5 востребованных методов программирования на Bash
Рассмотрим 5 популярных приемов работы с кодом интерпретатора команд Bash. Они помогают писать более производительные и легко читаемые скрипты командной оболочки.
Как сделать анимированную кнопку загрузки с Jetpack Compose
Задействуем широкий функционал библиотеки на Android для более привлекательного приложения с меньшим кодом, мощными инструментами и интуитивно понятными API на Kotlin.
Что такое ViewModel
Представляем ViewModel доступным языком. Рассказываем, что такое ViewModel и как эффективно использовать этот компонент в Android-приложениях.
Последовательное объединение адаптеров с помощью MergeAdapter
Пример использования: отображение верхнего и нижнего колонтитулов списка.
MergeAdapter — это новый класс, доступный в recyclerview:1.2.0-alpha02, который позволяет последовательно объединять несколько адаптеров для отображения в одном RecyclerView....
Как писать промпты для ChatGPT
Чтобы научиться писать промпты для ChatGPT, требуется время и практика. Эти рекомендации помогут создавать качественные промпты, с которыми ChatGPT будет генерировать точные и релевантные ответы.
Как создать API-шлюз в Rust посредством библиотеки Hyper
Научимся создавать эффективный API-шлюз в Rust, задействуя библиотеку Hyper и YAML-файлы конфигурации. Кроме того, напишем модульные тесты для тестирования логики авторизации и проверим корректную работу API-шлюза.
Настраиваем автоматизированную модерацию с помощью OpenAI
Бьетесь над задачей максимизации пользовательского опыта? Воспользуйтесь инструментами, основанными на искусственном интеллекте.
Как компьютер выполняет математические вычисления
Что позволяет вашему ПК, ноутбуку или смартфону быть легким, быстрым и относительно недорогим девайсом? Что делает компьютер эффективным, сокращая энергопотребление и тепловыделение? Поищем ответы на эти вопросы "под капотом" вычислительной машины.
Как сделать интеллектуальное приложение вопросов и ответов базы знаний с GPT-3 и Ruby
Подготовим базу знаний с двумя скриптами для GPT-3 вопросов и обучим модель ответам по содержимому сайта. Поэтапно создадим ИИ вопросов и ответов, разберем отладку ответов и два способа доработки модели.
Области видимости в Android и Hilt
Определение области видимости объекта A в объекте B означает, что на протяжении всего жизненного цикла объект B всегда будет иметь один и тот же...
Событийно-ориентированная архитектура
Создадим простой проект Spring Boot с темами и разделами Kafka для публикации событий отправителями и подписки получателей. Разберем стратегии реализации повторных попыток, масштабируем микросервисы.
Лучшие iOS SDK инструменты за 2019 год
В 2019 году появилось множество приложений для iOS, которые однозначно стоит добавить на главный экран вашего устройства. Например, Mobike для бесстанционного проката велосипедов, Blinkist...
Создание расширяющих методов на C#
Рассказываем, что такое расширяющие методы и как с их помощью можно дополнять функциональность классов без их изменения.
Эти декораторы Python позволят сократить код вдвое
Декораторы - интересный, мощный и полезный инструмент, способный значительно сокращать и структурировать код Phyton. Убедитесь в этом сами.
Go — единственный выбор для бэкенд-разработчика?
Go впечатляет балансом свой простоты и мощи. Но можно ли его назвать "золотой клеткой" для бэкенд-разработчика? Способен ли он удовлетворить широкий спектр бэкенд-потребностей? Чтобы ответить на этот вопрос, оцените технические возможности языка Go.
Разбираемся с Render Props и HOC в React
Детальное представление Render Props и компонентов высшего порядка в React
Для чего нужны эти паттерны?
React предлагает Компоненты, представляющие собой простой способ повторного использования кода. Компонент инкапсулирует множество вещей...
Как научиться задавать вопросы, проектировать системы и выявлять ошибки?
7 навыков логического мышления, необходимых для карьерного роста разработчика программного обеспечения
Основы языка освоены. Что дальше?
Универсальная система из семи шагов для тех, кто уже освоил азы первого языка программирования и не уверен в дальнейших действиях.
Управляйте приложением React с помощью голоса
Не так давно я реализовал с помощью TensorFlowJS модель распознавания голоса. Даже несмотря на то, что задача была очень интересной, ее расширение могло вызвать...
PHP: поймай меня, если сможешь
Рассмотрим механизмы управления ошибками и исключениями в коде: блоки try, catch, finally, типы-объединения. Изучим продвинутые техники для создания более надежных и сопровождаемых PHP-приложений.