Статьи Утилиты Telegram YouTube RuTube Отзывы

Статьи с тэгом «руководство»

Springdoc для документации REST API

18 ноября 2024

Тэги: Spring Boot, руководство, Kotlin, gradle, rest.

Ранее я уже публиковал статью Подключение Swagger к Spring Boot для создания документации по REST API. К сожалению, с последними версиями Spring Boot описанный там подход уже не работает, т.к. на смену springfox-swagger пришёл springdoc. По функционалу springdoc предоставляет всё то же самое, но аннотации для разметки классов и методов нужно использовать другие. Поэтому в данной статье подробно рассмотрим пример документирования REST API с помощью springdoc и его отличия от springfox.

Springdoc – это библиотека для проекта на Spring Boot, которая автоматически будет генерировать документацию по вашему REST API на основании исходного кода и специальных аннотаций. Таким образом, ваша документация будет всегда актуальной и её не нужно как-то дополнительно актуализировать каждый раз при изменении исходников.

Читать полностью...

Настройка Ubuntu под хостинг JVM приложения

14 ноября 2024

Тэги: Spring, руководство, Java, gradle, maven, PostgreSQL, SQL, Nginx, Linux.

Если Вам интересно, как настроить сервер для хостинга JVM приложения, то предлагаю вашему вниманию следующую инструкцию. Предположим, вы только что получили доступ к чистому VPS серверу, на котором крутится Ubuntu и вы хотите на нём развернуть полноценное JVM приложение, основанное на Spring. Для полноты картины мы настроим также локальный postgres и доступ извне по http.

Прежде всего обновляем индекс менеджера пакетов apt. У вас должно быть достаточно прав для выполнения sudo, а также ваш сервер должен иметь доступ в Интернет.

Читать полностью...

Обработка ошибок в GraphQL

13 мая 2024

Тэги: Collections, Spring Boot, руководство, Kotlin, GraphQL, json.

Продолжаем цикл статей про работу с GraphQL в проекте, написанном на Kotlin и Spring Boot. В первой статье GraphQL в Spring Boot мы создали проект, который возвращает информацию о книгах и их авторах. Во второй части Мутации в GraphQL мы научились менять данные.

Обработка ошибок в Spring Boot Graphql

Теперь рассмотрим как можно обрабатывать ошибки в GraphQL и менять их формат.

Читать полностью...

Настройка postgres для доступа по сети

12 мая 2024

Тэги: PostgreSQL, руководство.

Для того чтобы открыть доступ по локальной сети с других машин к БД, которая развёрнута на данной, нужно отредактировать два файла: postgresql.conf и pg_hba.conf. Привожу пример для своей операционной системы, основанной на Linux (Ubuntu).

В файле /etc/postgresql/номер_версии/main/postgresql.conf находим строку

listen_addresses = '*'

и раскомментируем её (убираем решётку в начале строки) или добавляем, если такой строки в файле нет.

Данная настройка позволяет обрабатывать все запросы, приходящие извне. В противном случае будут обрабатываться только локальные запросы.

Затем в файле /etc/postgresql/номер_версии/main/pg_hba.conf с правами администратора нужно указать, какие хосты имеют право подключаться к указанной БД и каким образом обеспечивается безопасность подключения.

Читать полностью...

Полезные команды Linux

2 апреля 2024

Тэги: руководство, Linux, файлы.

Если вы только начинаете работать в unix-подобной системе, такой как Linux или MacOS, то для вас будет полезна следующая таблица, в которой я постарался собрать часто используемые консольные команды.

Сразу добавляйте эту страницу в «Избранное»! Если у вас есть идеи, как расширить этот список – пишите в комментах.

Базовые команды

КомандаОписание
pwdвывести полный путь до текущей директории
lsсписок файлов в текущей директории
ls -laсписок файлов в текущей директории, в том числе скрытых
cd или cd ~перейти в домашний каталог
cd путьперейти в указанный каталог
historyистория выполненных ранее команд с порядковыми номерами
!номер_командыповторить команду с указанным номером
clearочистить консоль
exitзакрыть консоль (при работе в оконном режиме) или разлогиниться (если вы заходили под другим пользователем)
Читать полностью...

GraphQL в Spring Boot

27 марта 2024

Тэги: Spring Boot, руководство, gradle, Kotlin, Collections, GraphQL, json.

Логотип GraphQL

GraphQL – это стандарт клиент-серверного взаимодействия, который позволяет довольно гибко запрашивать данные с сервера. Основное отличие от традиционных REST-запросов состоит в том, что клиент сам выбирает, какие поля он будет запрашивать у сервера, тогда как REST предполагает заранее определённый фиксированный формат. При этом сервер будет подгружать из хранилища ровно те поля, которые необходимы и ничуть не больше.

Читать полностью...

Перебор элементов через Iterator

11 февраля 2024

Тэги: Java, Collections, алгоритмы, руководство.

Интерфейсы Iterator и Iterable часто используются для работы с коллекциями в Java. Они позволяют эффективно и безопасно работать с коллекциями, обеспечивая контроль над процессом перебора элементов (итерации).

Интерфейс Iterator

Паттерн Итератор

Интерфейс Iterator представляет собой одноимённый шаблон проектирования «Итератор» и содержит несколько методов. Нас интересуют два из них:

interface Iterator<E> {

    boolean hasNext();

    E next();
}
  1. Метод hasNext(), который возвращает true при наличии следующего элемента.
  2. Метод next(), который сдвигает указатель итератора на следующий элемент и возвращает этот элемент в качестве результата. Если доступных элементов не осталось – метод кидает исключение NoSuchElementException.

Пример использования интерфейса Iterator:

Читать полностью...

Как скомпилировать исходники java вручную

13 января 2024

Тэги: Java, файлы, руководство.

В современной разработке многие рутинные процессы автоматизированы достаточно хорошо, поэтому вам не приходится каждый раз компилировать ваши исходники вручную. Я не сомневаюсь, что вы прекрасно знаете, как это делается. А для тех, кто забыл или решил освежить свои знания, рассмотрим небольшой пример.

Наш проект будет состоять всего из двух классов, причём один будет вызывать метод другого.

Класс Greeter содержит метод sayHello(). Этот метод выводит приветствие на экран:

package ru.devmark.helper;

public class Greeter {
    public void sayHello() {
        System.out.println("Привет, мир!");
    }
}

Сохраним этот исходный код в текстовый файл, имя которого обязательно должно совпадать с именем класса, т.е. Greeter.java.

Читать полностью...

Inline-кнопки в telegram-боте

29 декабря 2023

Тэги: Spring Boot, руководство, Kotlin.

В предыдущей статье Telegram-бот на Spring Boot мы написали telegram-бота на Kotlin и Spring Boot. Мы рассмотрели, как добавляются простые команды, команды с параметрами, а также научились отображать простые кнопки в клиентском приложении telegram.

Но обычные кнопки являются не более чем заранее подготовленными текстовыми сообщениями пользователя. Они не несут никакого контекста и потому не подходят для более сложных сценариев взаимодействия. Однако пришла пора добавить в наш бот чуть больше интерактива!

Добавляем поддержку обратных вызовов

Предположим, вы решили написать онлайн-квиз в виде Telegram-бота. Бот должен выдать вопрос и какие-то варианты ответа к нему. Если это делать с помощью обычных кнопок, то довольно сложно сопоставить ответ пользователя с конкретным вопросом, т.к. обычные кнопки не хранят контекст. Но есть встраиваемые (inline) кнопки, которые относятся непосредственно к сообщению. Они добавляют гораздо больше интерактива и именно их вы видели, когда регистрировали бота в BotFather.

inline-кнопки в Bot Father

Встроенные кнопки взаимодействуют с ботом в фоновом режиме при помощи обратных вызовов (callback). Поэтому имеет смысл создать отдельный набор классов и интерфейсов для их поддержки.

Читать полностью...

Удаление записи через DELETE-запрос в Spring Boot

28 декабря 2023

Тэги: Java, SQL, Spring Boot, rest, руководство.

В статье Обновление записи через PUT-запрос в Spring Boot мы научились обновлять данные в БД. Теперь попробуем создать полноценный rest-интерфейс для удаления существующих записей.

За основу возьмём наше приложение из указанной статьи. Оно состоит из трёх слоёв: репозиторий (работа с БД), бизнес-логика приложения (service) и сам rest-интерфейс (controller), который обрабатывает входящий json и генерирует исходящий.

Репозиторий

Начнём с доработки репозитория (интерфейс ProfileRepository).

void deleteProfileById(int id);

Для удаления нам достаточно знать только id записи.

В реализацию интерфейса репозитория (ProfileRepositoryImpl) добавим sql-запрос в виде константы, которую принято размещать в начале класса:

private static final String SQL_DELETE_PROFILE = "delete from profile where id = :id";
Читать полностью...

Далее ❯