Программируем с ChatGPT: 10 советов
Хотите извлечь максимальную пользу из ChatGPT? Эти советы помогут ускорить работу, внедрив в нее ChatGPT, но при этом не допустить критических ошибок.
Принципы SOLID в инженерии данных. Часть 3
Выясним, как с принципами SOLID сочетается функциональное программирование, каковы их достоинства и недостатки. Продемонстрируем на примерах нарушение и соблюдение этих принципов.
Язык C: основы синтаксиса
От ознакомления с базовой программной структурой C перейдем к усвоению других строительных блоков этого языка.
4 способа улучшить навыки написания кода
Чтобы достичь карьерных высот в сфере программирования, нужно постоянно работать над мастерством написания кода. Воспользуйтесь советами опытного программиста, которые помогут стать профессионалом.
Как настроить отдельные SSH-ключи для нескольких учётных записей GitLab
Перейдём сразу к делу. Допустим, у вас есть один GitLab для личных проектов и один для работы. Проблем не возникнет, пока не придётся работать...
Запечатанный класс
Часто нам приходится представлять ограниченный набор возможностей: веб-запрос либо успешно выполняется, либо не выполняется, User может быть либо про-пользователем, либо обычным.
Чтобы смоделировать это, мы...
Портируем решатель судоку с Java на WebAssembly
Мне давно хотелось приступить к изучению WebAssembly, но никак не находилось подходящего материала. Однако недавно я просматривал некоторые старые программы и вспомнил, что как-то...
Хитрости объектно-ориентированного программирования. Часть 6 SLAP для функций
Это мини-серия статей по написанию поддерживаемого объектно-ориентированного кода без лишней нервотрепки.
Предыдущие части: Часть 1, Часть 2, Часть 3, Часть 4 и Часть 5.
Элементарные функции
Должен признать: очень долгое...
Использование свойств lazy в Kotlin для связывания представлений Android
Чтобы выполнить операцию над одним из представлений при работе с UI-слоем приложения Android, его нужно получить его через findViewById. Несмотря на то, что использование...
Основы реактивного программирования
Предлагаем ознакомиться с основами реактивного программирования и его основными компонентами. Кроме того, предлагаем пошаговое руководство по использованию фреймворка Reactor, предоставляющего абстракции для реактивного программирования.
Поддержание документации в актуальном состоянии с помощью Bit и GitHub
Написание документации для кода (будь то небольшая библиотека или полный набор микросервисов, взаимодействие с которыми необходимо другим разработчикам) — это занятие кропотливое и утомительное.
Основная...
Под капотом модификатора suspend
Корутины Kotlin предоставили Android разработчикам модификатор suspend. Изучив его, вы поймете, почему функция suspend не возвращает ничего до тех пор, пока не будет завершена...
Думаете, хеш-карты нельзя отсортировать? Еще как можно!
Научимся реализовывать интерфейс sort.Sort в любой структуре данных. Узнаем, какие методы задействуются в Golang для добавления сортировки.
Как использовать перечисления в Golang
Изучим способы создания перечислений с идентификатором iota и структурными тегами. Проверим поведения на тестовых сценариях.
Оптимизация кода Python с помощью конечных запятых: мощная техника
Конечные запятые в списке или словаре могут показаться избыточными. Но на самом деле они позволяют улучшить читабельность Python-кода, предотвращают ошибки при перестановке строк, облегчают форматирование кода. Почувствуйте мощь этой техники, изучив примеры фрагментов кода с конечными запятыми и без них.
Android 12: радикально новый дизайн от Google
Material You — новая веха в эволюции текущего поколения Material Design (“материального дизайна”), используемого Android-устройствами (и почти всеми продуктами Google). Идея, лежащая в основе...
Диагностика кода на Rust
Отладка кода на Rust — дело непростое. Может быть, она и возможна, но здесь и близко нет таких инструментов, которые позволяют осуществлять её в...
Понятие об умных указателях Rust
В этой статье мы разберемся, что именно представляют собой умные указатели, откуда они берутся и как работают.
Если по-простому, умный указатель — это абстрактный тип...
Двусторонняя связь без интернета: Nearby Connections
Nearby Connections API позволяет пользователям соединяться друг с другом даже в тех случаях, когда интернет недоступен. При этом API использует Bluetooth и другие технологии, способные обеспечивать одноранговую связь на близком расстоянии (обычно в пределах 100 метров).
Как я создал свою первую видеоигру
В прошлом году во время новогодних праздников мне очень захотелось начать новый параллельный проект. Я не знал, чего именно хочу, но я был уверен,...
Go: точечная вставка значения в структуру
Подробно и с примерами рассмотрим функционал мощного и элегантного пакета dot для сложноиерархических структур. На основе тестов дадим рекомендации по его использованию.
VS Code Remote-SSH для удаленной разработки
Зачем ограничивать себя nano и vi, когда есть удобное расширение VS Code Remote-SSH для удаленной разработки? Вперед за знаниями!
Навигация по настраиваемой доставке
Android App Bundle — это новый формат публикации для Android-приложений, заменяющий монолитный APK. Сам пакет приложений непосредственно не устанавливается. Вместо этого Google Play генерирует оптимизированные APK...
Создание и отслеживание первого рабочего потока Github Actions
Github Actions — это собственное решение Github для CI/CD (непрерывной интеграции и непрерывного развёртывания ПО). Оно стало доступно сообществу разработчиков с момента запуска Github...
Когда стоит использовать перечисления в Java?
Где же все-таки можно, а где не стоит использоваться перечисления? Краткое руководство "в картинках".
Создание пользовательских аннотаций в Java
Продолжаем разговор об аннотациях в Java - теперь кроме предопределенных "из коробки" аннотаций научимся писать и применять свои собственные.
Решение крупномасштабных задач машинного обучения на Python
Представляем краткое руководство по использованию библиотеки xLearn. Алгоритмы, поддерживаемые этой библиотекой, позволят решать многие задачи машинного обучения.
Ключевое слово vararg и оператор spread в Kotlin
Что осталось за кадром?
В некоторых случаях необходимо определить функцию с переменным числом параметров; Вот пара примеров, с которыми вы, вероятно, сталкивались в Android:printf(String format, Obj......
В ожидании Java 16: Stream.toList() и другие методы преобразования
Только самообслуживание
В 2004 году я работал архитектором ПО на Java в крупной финансовой компании. На тот момент в этом языке отсутствовало большинство эффективных функциональностей...
Представление концепций ООП с реальными сценариями
Что общего между разработчиком и архитектором, которому поручено спроектировать дом? Подробно разберем понятия ООП для применения в реальных проектах.
Go: как циклы преобразуются в ассемблерную программу?
ℹ️ В статье речь идёт о Go 1.13.
Циклы в программировании — понятие мощное и довольно простое. Тем не менее возникает необходимость преобразовывать их в основные команды,...
Ссылки на методы в Java
Ссылки на методы появились вместе с лямбда-выражениями в Java 8, и с тех пор упрощают жизнь разработчикам. Но у их применения есть некоторые ограничения. Как обойти одно из них - на использование метода с параметром - расскажем в этом материале.
Как разбить монолитное приложение на микросервисы без рефакторинга
Сделаем шаг навстречу более гибкой методологии разработки и познакомимся с концепцией архитектуры Just-in-Time (пер. в нужный момент), которая позволяет реорганизовывать приложения без рефакторинга.
Начало работы с базой данных Room в Android
Хранение данных — один из важнейших аспектов разработки мобильных приложений для Android. Чтобы упростить этот процесс, используйте передовую библиотеку Room. В сегодняшнем гайде пошагово пройдемся по настройке Room и выполнению с ее помощью базовых операций.
Визуализация стратегии автоматизированного тестирования
Стратегия тестирования — это подход к автоматизированному тестированию вашего программного обеспечения. Она очень важна, и к ней следует отнестись серьезно. Я предложу визуальный способ...
Разработка приложения на основе генеративного ИИ в React IDE
Создание приложений сопряжено с проблемами, способными замедлить процесс разработки и затруднить совместную работу. Codux - бесплатная визуальная среда разработки для приложений React + TypeScript - сделает этот процесс намного проще и эффективнее.
Что такое бессерверная платформа?
Понятие о бессерверной платформе
Бессерверная платформа помогает разрабатывать и развёртывать функции AWS Lambda вместе с необходимыми им инфраструктурными ресурсами AWS. Фактически это интерфейс командной строки,...
Новый API форматировщика дат в Swift
В версии Swift 5.5 и iOS 15 у нас появился новый API средства форматирования. С ним строковое отображение дат будет более декларативным и интуитивно...
Тестирование для не тестировщиков
Тестирование является одним из ключевых этапов разработки. Вне зависимости от того, над каким проектом вы работаете, тестирование — это залог того, что вы сможете поставлять качественные...
Топ-10 самых распространенных ошибок в проектах Go. Часть 2
Предыдущая часть: Часть 1, Часть 2
Инициализация среза
Иногда конечная длина среза бывает известна. Допустим, нужно преобразовать срез Foo в срез Bar, что означает, что они...
Внимание: работает пакет Python Tweepy!
Обучающее руководство по извлечению любых данных из твитов посредством пакета Python Tweepy и форматированию их в датафрейм Pandas.
Хитрости и приемы эффективного программирования на Kotlin
Проведем краткий обзор крутого функционала Kotlin. Начнем писать код по-котлиновски, сделав его более лаконичным и удобным для человеческого восприятия.
Зачем и как реализовать ленивую загрузку компонентов в Angular
Ленивая загрузка — это техника загрузки чего-то по требованию.
Она применяется к различным уровням процесса разработки приложений — от модулей до компонентов. Ленивая загрузка на...
Язык C: константы и литералы
Константы - фиксированные величины, которые не изменяются во время выполнения программы. Эти фиксированные величины также называются литералами.
SQL: загадки на сообразительность
Насколько хорошо вы владеете языком SQL? Всегда ли добиваетесь ожидаемых результатов? Попробуйте решить три головоломки по SQL, которые включают временную метку, зависимые и независимые фильтры, а также неправильно действующие левые объединения. Верные ответы прилагаются!
Инструкция для новичка: как программировать дополненную реальность для Smart Glass
Обзор
В этом туториале я поделюсь основной информацией об умных очках. Затем, используя пример проекта с хакатона, проведу вас через весь процесс. А начнем мы...
Что такое Flutter и зачем его изучать?
Сегодня доступно множество инструментов для мобильной разработки. Одним из них является Flutter, который в последнее время стал довольно популярным. Рассказываем, в чем секрет успеха Flutter и почему стоит обратить на него внимание.
PEG парсеры и Python
Несколько лет назад кто-то спросил, имеет ли смысл переключать Python на парсер PEG. Или на грамматику PEG. Не помню точно. Тогда я ещё не...
Введение в Navigation Architecture Component
Среди компонентов Jetpack, самым интересным является Navigation Architecture Component. Навигация управляет перемещением между destinations. Destinations обычно представлены фрагментами, однако поддерживают activities и другие пользовательские...
Как с легкостью создать установщик пакетов Android
Ищете простой способ создания установщика пакетов Android? Библиотека Ackpine позволит выполнить этот процесс, избавив вас от многих забот и большого объема кода.
Функциональные возможности систем типов Julia и Rust
Я твёрдо убеждён, и многие со мной в этом согласятся, что прекрасным началом разработки программы является выявление подходящих представлений реальной проблемы, которую мы пытаемся...
Jetpack Compose: пользовательский интерфейс Twitter
Я решил протестировать Jetpack Compose, сделав простой клон пользовательского интерфейса Twitter после того, как наткнулся на этот твит Mariano Zorrilla:
Он использовал Flutter (отличный инструмент для...
Феномен NFT и причины его популярности
NFT расшифровывается как non-fungible token (невзаимозаменяемые токены).
Взаимозаменяемость — это способность актива быть обмененным или замещенным аналогичными активами с одинаковой стоимостью.
Предположим, у вас есть одна...
Базовый класс Android ViewModel за 5 минут
Класс ViewModel служит прослойкой между View и Model в структурном паттерне проектирования MVVM. Рассмотрим особенности реализации ViewModel на реальном примере.
Как отслеживать среду выполнения Docker с помощью Prometheus и Grafana
Как определять производительность и поведение контейнеров и хост-систем? С помощью метрик. Поэтапно пройдем весь процесс: установка серверов, настройка Prometheus, запуск брандмауэра и экспортера Docker для извлечения метрик, создание дашборда в Grafana.
Тест рабочего цикла C++ через написание кода для декодера base85
Всем привет! Меня зовут Герман Диаго, по образованию я инженер компьютерной науки и уже долгое время увлечён разработкой разного рода ПО.
Большую часть своей карьеры...
Как стать инженером Python в 2023 году
Предлагаем подробное руководство по овладению основными навыками работы с Python, которые требуются начинающим программистам в 2023 году. Это руководство, составленное с учетом последних тенденций и технологий IT-индустрии, поможет сосредоточиться на самом главном.
Хитрости объектно-ориентированного программирования. Часть 2: Закон Деметры
Это мини-серия статей по написанию поддерживаемого объектно-ориентированного кода без лишней нервотрепки.
Предыдущие части: Часть 1
Единственный закон в программировании — это отсутствие законов. А закон Деметры — это, скорее, рекомендации, а...
Лучшие практики для эффективного кода на Golang. Часть 1
Изучим рекомендации с примерами кода на Go. Рассмотрим отступы, импорт пакетов, названия переменных, длину строк, константы, обработку ошибок, глобальные переменные, структуры для сложных данных, комментарии, горутины.
Выполнение AES/GCM в Android
Столкнувшись с рядом проблем, связанных с выполнением шифрования и расшифровки AES в Android, я решил поделиться своим опытом.
TL;DR: здесь можно найти готовое решение. Если...
Тестирование производительности: rust/warp против go/fasthttp
В чем причина недостаточной эффективности rust/warp и что ведет к увеличению производительности? Применим хитрые приемы, способные улучшить работу версии Rust.
3 интерактивных инструмента для управления командами в Linux
Эти инструменты позволят находить и отфильтровывать нужные команды, добавлять их в избранное для мгновенного выполнения и предоставят множество других полезных возможностей.
Почему большинство программистов выбирают Python
Python - второй (после JavaScript) по распространенности язык программирования, который используют 15,7 млн человек. Рассказываем, с чем связана его популярность и как понять, подходит ли он именно вам.
Знакомство с фабричным методом
Фабричный метод упрощает процесс создания объектов, делает код более удобным в обслуживании и обеспечивает ряд других преимуществ. Разберем принцип его работы на реальном примере создания игровых персонажей.
Подключение приложений Android к серверу с помощью gRPC
Пройдем весь процесс поэтапно: создание проекта, файл Gradle, канал взаимодействия клиента и сервера. Настроим локальный сервер, потоковую передачу от клиента и двунаправленную с асинхронной «заглушкой», а также «защелкой» с обратным отсчетом для ожидания текущего потока.
Меньше образы Docker => быстрее CI-конвейер
CI/CD позволяет разработчикам и организациям реализовывать циклы задач быстрее. Автоматизируя такие процессы, как сборка, тестирование и развертывание ПО, мы затрачиваем меньше времени на типовые...
Роль Fragments в современной разработке приложений для Android
Функция библиотеки Fragments при разработке приложений для Android серьезно изменилась. Посмотрим, в чем заключаются изменения и к чему они приводят.
Развертывание Gatsby-сайта с помощью GitHub Actions
Вот уже несколько недель, как я знакомлюсь с Gatsby. Пока что я перенесла на него свой старый блог с Jekyll и создала конвейер, непрерывно...
Малоизвестный пакет Go, который пригодится при выполнении SQL-миграций
Пакет embed, который появился в Go 1.16, предоставляет возможность встраивать файлы и каталоги в бинарные файлы Go. Предлагаем узнать, как этот пакет используется для встраивания файлов миграции SQL в бинарный файл.
Когда чистый код нецелесообразен
Хотя у чистого кода имеется ряд преимуществ, его внедрение в проект не всегда оправдано. Рассмотрим ситуации, когда чистый код слишком дорог.
Тип Result в Rust
Рассмотрим тип Result для обработки случаев успеха и случаев ошибок в вычислениях на Rust и методы для манипулирования значениями и их обработки. Изучим примеры использования и функциональность методов.
Python — это суперсила!
Компьютеры — это круто. Они дают вам возможность претворять в жизнь модели и идеи, которые сидят в вашей голове, ожидая, когда их выпустят в реальный мир.
Я...
Сложные вопросы на собеседовании для тех, кто 7 лет работал с Java. Часть 1
Увеличьте свои шансы на успех, впечатлив потенциальных работодателей знаниями и навыками. Разберем некоторые вопросы с подробными объяснениями и примерами.
Сопоставление LiveData, SingleLiveEvent и MediatorLiveData в Android
Хотите эффективно управлять данными и событиями в приложении Android, а также создавать удобный в обслуживании код? Уделите внимание таким важным структурам Android Architecture Components, как LiveData, SingleLiveEvent и MediatorLiveData.
О дивный читаемый код
Введение
Большинство начинающих программистов сталкивается со многими дилеммами в процессе написания кода, например задумываются о том, какой код будет востребован в индустрии. У каждой компании...
Навигация во Flutter с использованием AutoRoute
Как настроить библиотеку пакетов AutoRoute? Как назвать страницы маршрута? Как управлять стеком и полностью очищать его, чтобы возвращаться на первую экранную страницу? Предлагаем краткое руководство по навигации во Flutter - оно даст ответы на эти и многие другие вопросы.
8 инструментов для предпринимателей, похожих на ChatGPT
ChatGPT - не единственный на рынке инструмент искусственного интеллекта. Рассмотрим 8 альтернатив, которые также могут пригодиться.
ReSvelte — инструмент разработчика Svelte и визуализатор дерева компонентов (расширение VS Code)
Хотите корректно построить дерево компонентов и справиться с проблемой повторного рендеринга? ReSvelte - это инструмент, который решит обе задачи. Узнайте о том, как, работая над проектом, одновременно использовать ReSvelte.
Новые функции стандартной библиотеки Kotlin 1.5
Рассмотрим 7 основных изменений: новые функции коллекции, целочисленные типы без знака, деление с округлением вниз, API преобразования текста с учетом регистра, функции для проверки свойств символов и т. д. Узнаем, какие функции делают преобразование отдельных символов в числа более выразительным.
Как заказывали: админ-панель от Django Jet
Нет пределов совершенству! Под таким девизом займемся улучшением панели администратора в приложении Django. А в качестве волшебной палочки воспользуемся шаблоном django-jet-reboot.
Как отобразить индикатор выполнения на стандартной консоли с помощью Java
Как добиться того, чтобы прогресс выполнения консольного приложения показывался напрямую в консоли? Рассмотрим вариант реализации такого прогресс-бара.
Как обнаружить злые твиты при помощи машинного обучения
Мне не нужно напоминать вам о том, что Интернет может быть очагом негатива, несмотря на все его положительные качества. Вы только взгляните на Reddit,...
Байт-код Java: назначение, структура и использование
Занимаетесь разработкой компиляторов, современных фреймворков или Java-инструментов? Тогда вам необходимо знать, как что такое байт-код, какова его структура, зачем он нужен и как с ним работать. Эти знания позволят эффективно использовать байт-код Java в своих целях.
Как сделать интеллектуальное приложение вопросов и ответов базы знаний с GPT-3 и Ruby
Подготовим базу знаний с двумя скриптами для GPT-3 вопросов и обучим модель ответам по содержимому сайта. Поэтапно создадим ИИ вопросов и ответов, разберем отладку ответов и два способа доработки модели.
Инструменты для создания виртуального окружения в Python
В этой статье я хочу поделиться инструментами для создания виртуального окружения в Python, а также разобрать их преимущества и недостатки.
Различные инструменты для создания виртуального...
Разработка макроса Rust для автоматического написания шаблонного кода SQL
Макросы облегчают жизнь разработчикам, позволяя автоматизировать некоторые процессы. Сегодня поговорим о возможностях метапрограммирования в Rust.
Абстракции с нулевой стоимостью* в Kotlin
*Могут применяться особые условия
Внимание: этот пост в блоге охватывает экспериментальную функцию Kotlin, которая может быть изменена. Эта статья была написана с использованием Kotlin 1.3.50.
Безопасность...
Dynamic Feature Modules: навигация
В последнее время моя команда начала проходить испытание по модуляризации нашего приложения. Одна из первых вещей, за которые мы взялись основательно, была навигация, а...
Kubernetes: установка MicroK8s на локальном компьютере за 5 минут
В чем преимущества MicroK8s перед Minikube? Запустим его, проверим состояние кластера, добавим дополнения, научимся останавливать.
Как восстановить положение прокрутки виджета RecyclerView
Возможно, у вас была проблема, когда RecyclerView терял позицию прокрутки при повторном создании Activity/Fragment. Обычно это происходит из-за того, что данные Adapter загружаются асинхронно...
Quarkus — горячий тренд Java-разработки
С революционным фреймворком Quarkus разработка на Java станет еще проще, быстрее и эффективнее. Оцените его ключевые особенности и преимущества по сравнению со Spring Boot.
Лень писать игру на Rust одному? Позовите на помощь ChatGPT
На что способен ChatGPT? Заменит ли он в итоге программистов? Разберем его возможности на примере написания игры Pong и подумаем, не пора ли искать другую работу.
5 способов упростить повседневные задачи с помощью ChatGPT
ИИ-бот ChatGPT может стать хорошим помощником для разработчиков ПО. Рассмотрим основные возможности этого инструмента при создании и комментировании кода, анализе и сравнении библиотек.
Переход на PgCat — прокси-сервер Postgres следующего поколения
Сравним функционал PgCat по временно́й задержке и корректности. Рассмотрим особенности балансировки нагрузки и отработки отказа реплики, клиентов с плохим поведением и поддержку сегментированных БД.
Глубокое погружение в Java: рефлексия и загрузчик классов. Часть 3
В этой части рассмотрим использование рефлексии и загрузчика классов на примере добавления функциональности плагина в Java-приложение и модификации классов во время выполнения. В завершение поговорим о том, почему две мощные функции Java - динамическая типизация и изменяемые во время выполнения классы - должны войти в арсенал каждого программиста.
Как прокачать навык отладки
В какой-то момент, каждый из нас сталкивается с ошибками при написании кода. Собственно, процесс разработки в том и состоит. При возникновении ошибки, вы теряетесь...
Порты Docker: что вы на самом деле открываете?
Docker - превосходный инструмент, но по умолчанию небезопасный. И дело тут не в портах, которые могут оказаться общедоступными. Дело в людях, которые сидят за клавиатурой. Подключайтесь к решение этой проблемы.
Создание расширяющих методов на C#
Рассказываем, что такое расширяющие методы и как с их помощью можно дополнять функциональность классов без их изменения.
Советы по модуляризации приложений Android
Создание модульных приложений/библиотек для Android дает целый ряд преимуществ, а процессу разработки следует уделять достаточно внимания. Перечень получаемых плюсов достаточно большой, перечислим лишь основные...
Ключевые PHP-операторы
Чтобы использовать язык PHP по максимуму, нужно уметь обращаться с его основными операторами. О них сегодня и поговорим.
Mermaid: универсальный инструмент для создания диаграмм
Пополним рабочий арсенал новым революционным инструментом для построения диаграмм, имя которому Mermaid. Рассмотрим принцип работы и его преимущества по сравнению с PlantUML.
Графы и пути — алгоритм Дейкстры
Примеры из веб-приложения здесь.
Зачем
В 1959 году Эдсгер Дейкстра пришел к выводу о том, что компьютеры могут находить самые эффективные траектории, измеряя и высчитывая расстояния в...
Разветвление на различные очереди SQS с помощью фильтрации сообщений SNS
SNS и SQS — сервисы AWS, которые часто находят применение в событийно-управляемой архитектуре. Сочетание этих сервисов дает возможность отправлять сообщения по разным каналам. Часто...
Какие языки программирования лучше учить в 2019 году
Если бы мы жили в идеальном мире, выбор языка программирования ни на что бы не влиял. Большинство популярных языков используются для похожих задач. Неопытным...
Распознавание звуков с помощью глубокого обучения
Вы когда-нибудь просыпались с непонятным ощущением: слышишь какой-то звук, но точно знаешь, что в этом звуке что-то не то?
Распознавание звуков — это один базовых...