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

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

Полезные команды 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";
Читать полностью...

Обновление записи через PUT-запрос в Spring Boot

28 декабря 2023

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

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

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

Репозиторий

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

void updateProfile(String firstName, String secondName, int age, int id);

Для обновления нам потребуется указать id записи, а также остальные значимые поля.

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

private static final String SQL_UPDATE_PROFILE =
        "update profile set first_name = :firstName, last_name = :lastName, age = :age where id = :id";
Читать полностью...

Добавление записи через POST-запрос в Spring Boot

28 декабря 2023

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

В статье Работа с БД в Spring Boot на примере postgresql мы узнали как читать данные из БД. Но чтение данных – это лишь малая часть всех операций, которые встречаются в типичном java-приложении. Теперь попробуем создать полноценный rest-интерфейс для добавления новых записей, их модификации и удаления.

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

Репозиторий

Начнём с доработки репозитория (интерфейс ProfileRepository), где до сих пор был только один метод чтения данных. Добавим метод вставки записи в БД:

void insertProfile(String firstName, String secondName, int age);

При добавлении новой записи нам достаточно всего три поля. id будет сгенерирован в БД автоматически.

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

private static final String SQL_INSERT_PROFILE =
        "insert into profile (first_name, last_name, age) values (:firstName, :lastName, :age)";
Читать полностью...

Работа с БД в Spring Boot на примере postgresql

28 декабря 2023

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

Данная статья является продолжением Spring Boot Restful Service, где была бы раскрыта тема работы с БД в Spring Boot. Давайте рассмотрим эту тему подробнее на примере СУБД postgresql, а в качестве основы возьмём проект, который мы делали в той статье.

Напомню, что проект представляет из себя простой restful-service, который принимает GET-запрос по HTTP и возвращает профиль пользователя по его id.

Создание и заполнение таблицы

Сам профиль содержит кроме id также имя, фамилию и возраст. Поэтому создадим таблицу profile в базе данных.

CREATE TABLE public.profile
(
    id         serial,
    first_name character varying(50) NOT NULL,
    last_name  character varying(50) NOT NULL,
    age        integer               NOT NULL,
    CONSTRAINT profile_id_pk PRIMARY KEY (id)
);

insert into profile (first_name, last_name, age)
values ('Иван', 'Петров', 23);

Для поля id можно использовать тип serial. Он представляет собой целое число, которое увеличивается на 1 автоматически при вставке новой записи в таблицу.

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

Spring Boot Restful Service

28 декабря 2023

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

Что мы получим в результате

Простой сервис на Spring Boot, который при выполнении get-запроса будет возвращать профиль пользователя в формате json в зависимости от id, который передаётся в запросе. При возникновении исключительных ситуаций (например, профиль не найден), пользователь получит соответствующий ответ.

Реализуем обработку get-запроса

Сразу оговорюсь, что здесь рассмотрю только создание самого веб-сервиса. Чаще всего, он будет обращаться к базе для получения профиля пользователя. Мы же этого здесь делать не будем, а только сымитируем загрузку профиля по id. Но всё, что касается взаимодействия по http, будет работать как положено.

Spring Boot позволяет просто и без лишних телодвижений создавать веб-сервисы. При этом конфигурацию служебных бинов он берёт на себя. Вы всегда можете переопределить дефолтное поведение, объявив тот или иной бин явно.

Давайте с помощью Spring Initializr создадим новый проект, в котором в качестве сборщика укажем maven, в качестве языка – Java 21 (поскольку это самая свежая версия с длительной поддержкой на текущий момент) и добавим одну зависимость Spring Web. Этого вполне достаточно для нашего проекта.

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

Далее ❯