Всем хорошего воскресения! 🖐
Напоминаю!
Сегодня в 16:00 по МСК мы вновь собираемся в Яндекс.Телемост!
Разберемся как написать своего чат бота в телеграм на Spring, подключим к нему API OpenWeather и заставим показывать текущую погоду в любой точке мира.⛅
Приходите - будет интересно!😉
Напоминаю!
Сегодня в 16:00 по МСК мы вновь собираемся в Яндекс.Телемост!
Разберемся как написать своего чат бота в телеграм на Spring, подключим к нему API OpenWeather и заставим показывать текущую погоду в любой точке мира.
Приходите - будет интересно!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3 1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1👨💻1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Пишем погодного телеграм-бота! ☀️
Встреча от 30.03.2025
Запись встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы написали своего бота.🤖
При написании мы узнали и повторили:
🔜 Как вообще пишут бота и с какими библиотеками.
🔜 Как работает логика бота.
🔜 Как по REST передают json и как его парсить.
🔜 Настроили свой кэш и шедулер.
🔜 Как всегда допустил немного ошибок и успешно их решил)
Кстати в гите более полная версия того бота который я запускал Вам для теста!
Ссылка на Git - https://github.com/Oleborn/WeatherChatBot
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Всем спасибо за участие и то что пришли, для меня это важно!
Надеюсь вы напишете своих ботов и обязательно похвастаете перед нами😉
Встреча от 30.03.2025
Запись встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы написали своего бота.
При написании мы узнали и повторили:
Кстати в гите более полная версия того бота который я запускал Вам для теста!
Ссылка на Git - https://github.com/Oleborn/WeatherChatBot
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Всем спасибо за участие и то что пришли, для меня это важно!
Надеюсь вы напишете своих ботов и обязательно похвастаете перед нами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍1
А вы знали, что первое официально зарегистрированное нападение робота-доставщика на человека произошло в 2023 году?
В середине июня 2023 года робот-курьер от Starship Technologies неоднократно нападал на британца и его собаку, а сам инцидент произошел в британском городе Милтон-Кинс.
Ну и пруф
#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
"Программное обеспечение — это газ: оно расширяется, заполняя любой объем."
Натан Мирвольд, бывший CTO Microsoft, сказал это в 1991 году в интервью журналу Forbes, описывая природу ПО.
Почитать короткую биографию
#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
Wikipedia
Nathan Myhrvold
former CTO at Microsoft
👍4
Аннотация @CreatedBy
Аннотация @CreatedBy используется в Spring Data для автоматического заполнения поля информацией о пользователе, создавшем сущность. Это часть механизма аудита Spring Data, позволяющего автоматически отслеживать, кто и когда создавал или изменял сущности. Аннотация находится в пакете org.springframework.data.annotation.
Параметры аннотации
Аннотация @CreatedBy не имеет параметров. Она применяется к полям сущности, которые должны автоматически заполняться информацией о создателе.
Пример использования:
Жизненный цикл аннотации
Инициализация:
Аннотация активируется при включении аудита через @EnableJpaAuditing
Требуется регистрация AuditingEntityListener для сущности
Выполнение:
Перед сохранением новой сущности (при вызове save())
Spring автоматически определяет текущего пользователя и устанавливает значение поля
Обновление:
Поле заполняется только при создании сущности
Не изменяется при последующих обновлениях
Механизмы Spring и настройки Spring Boot
AuditingEntityListener:
Класс, обрабатывающий события жизненного цикла сущности
Автоматически заполняет аннотированные поля
AuditorAware:
Интерфейс для получения информации о текущем пользователе
Требуется реализация для работы @CreatedBy
EnableJpaAuditing:
Аннотация для активации механизма аудита
Настройки Spring Boot
Активация аудита:
Конфигурация сущности:
Настройки безопасности (если используется Spring Security):
Варианты настройки
Типы полей:
Может использоваться с любым типом (String, Long, UUID)
Чаще всего используется String для хранения имени пользователя
Интеграция с Spring Security:
Автоматическое получение имени текущего пользователя
Пример реализации AuditorAware:
Кастомные реализации:
Возможность использовать ID пользователя вместо имени
Интеграция с кастомными системами аутентификации
Комбинирование с другими аннотациями аудита:
#Java #Training #Hard #Spring #SpringDataJPA #CreatedBy
Аннотация @CreatedBy используется в Spring Data для автоматического заполнения поля информацией о пользователе, создавшем сущность. Это часть механизма аудита Spring Data, позволяющего автоматически отслеживать, кто и когда создавал или изменял сущности. Аннотация находится в пакете org.springframework.data.annotation.
Параметры аннотации
Аннотация @CreatedBy не имеет параметров. Она применяется к полям сущности, которые должны автоматически заполняться информацией о создателе.
Пример использования:
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Document {
@CreatedBy
private String createdBy;
// Другие поля
}
Жизненный цикл аннотации
Инициализация:
Аннотация активируется при включении аудита через @EnableJpaAuditing
Требуется регистрация AuditingEntityListener для сущности
Выполнение:
Перед сохранением новой сущности (при вызове save())
Spring автоматически определяет текущего пользователя и устанавливает значение поля
Обновление:
Поле заполняется только при создании сущности
Не изменяется при последующих обновлениях
Механизмы Spring и настройки Spring Boot
AuditingEntityListener:
Класс, обрабатывающий события жизненного цикла сущности
Автоматически заполняет аннотированные поля
AuditorAware:
Интерфейс для получения информации о текущем пользователе
Требуется реализация для работы @CreatedBy
EnableJpaAuditing:
Аннотация для активации механизма аудита
Настройки Spring Boot
Активация аудита:
@Configuration
@EnableJpaAuditing
public class AuditConfig {
@Bean
public AuditorAware<String> auditorProvider() {
return () -> Optional.ofNullable(SecurityContextHolder.getContext())
.map(SecurityContext::getAuthentication)
.map(Authentication::getName);
}
}
Конфигурация сущности:
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Order {
@CreatedBy
private String createdBy;
@CreatedDate
private LocalDateTime createdDate;
// Другие поля
}
Настройки безопасности (если используется Spring Security):
spring.security.user.name=admin
spring.security.user.password=secret
Варианты настройки
Типы полей:
Может использоваться с любым типом (String, Long, UUID)
Чаще всего используется String для хранения имени пользователя
Интеграция с Spring Security:
Автоматическое получение имени текущего пользователя
Пример реализации AuditorAware:
public class SecurityAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
return Optional.ofNullable(SecurityContextHolder.getContext())
.map(SecurityContext::getAuthentication)
.filter(Authentication::isAuthenticated)
.map(Authentication::getName);
}
}
Кастомные реализации:
Возможность использовать ID пользователя вместо имени
Интеграция с кастомными системами аутентификации
Комбинирование с другими аннотациями аудита:
@CreatedBy
private String createdBy;
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedBy
private String lastModifiedBy;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
#Java #Training #Hard #Spring #SpringDataJPA #CreatedBy
👍3
Что выведет код?
#Tasks
import java.util.LinkedList;
public class Task310325 {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.addFirst(3);
list.removeLast();
System.out.println(list.get(1));
}
}
#Tasks
👍4
👍1
Вопросы с собеседования 👩💻
Что делает метод charAt() в классе String?
Что делает метод charAt() в классе String?
Anonymous Quiz
2%
Удаляет символ из строки
10%
Добавляет символ в строку
69%
Возвращает символ по индексу
20%
Преобразует строку в массив символов
👍3🤯1
Аннотация @CreatedDate
Аннотация @CreatedDate используется в Spring Data для автоматического заполнения поля датой и временем создания сущности. Это часть механизма аудита Spring Data, который позволяет автоматически отслеживать временные метки создания и модификации сущностей. Аннотация находится в пакете org.springframework.data.annotation.
Параметры аннотации
Аннотация @CreatedDate не имеет параметров. Она применяется к полям сущности, которые должны автоматически заполняться временем создания.
Пример использования:
Поддерживаемые типы данных
Поле с аннотацией @CreatedDate может быть одного из следующих типов:
java.time.LocalDateTime
java.time.LocalDate
java.time.ZonedDateTime
java.util.Date
java.util.Calendar
java.sql.Timestamp
Long (для timestamp в миллисекундах)
Жизненный цикл аннотации
Инициализация:
Активируется при включении аудита через @EnableJpaAuditing
Требуется регистрация AuditingEntityListener для сущности
Выполнение:
Автоматически устанавливает текущую дату и время при первом сохранении сущности
Значение устанавливается один раз при создании и не изменяется при последующих обновлениях
Обновление:
Для отслеживания времени изменения следует использовать @LastModifiedDate
Механизмы Spring и настройки Spring Boot
AuditingEntityListener:
Обрабатывает события жизненного цикла сущности
Автоматически заполняет аннотированные поля датой/временем
EnableJpaAuditing:
Аннотация для активации механизма аудита
Настройки Spring Boot
Активация аудита в конфигурационном классе:
Конфигурация сущности:
Настройка часового пояса (опционально):
Варианты настройки и использования
Комбинирование с другими аннотациями аудита:
Использование разных типов даты/времени:
Кастомные форматы даты (при использовании с DTO):
Использование в проекциях Spring Data:
Особенности работы
Одноразовое заполнение:
Значение устанавливается только при первом сохранении сущности
Не изменяется при последующих обновлениях
Точность времени:
Зависит от базы данных и JPA-провайдера
Для высокой точности рекомендуется использовать java.time типы
Синхронизация времени:
Время берется с сервера, где выполняется приложение
Для распределенных систем рекомендуется использовать единый источник времени
#Java #Training #Hard #Spring #SpringDataJPA #CreatedDate
Аннотация @CreatedDate используется в Spring Data для автоматического заполнения поля датой и временем создания сущности. Это часть механизма аудита Spring Data, который позволяет автоматически отслеживать временные метки создания и модификации сущностей. Аннотация находится в пакете org.springframework.data.annotation.
Параметры аннотации
Аннотация @CreatedDate не имеет параметров. Она применяется к полям сущности, которые должны автоматически заполняться временем создания.
Пример использования:
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Document {
@CreatedDate
private LocalDateTime createdAt;
// Другие поля
}
Поддерживаемые типы данных
Поле с аннотацией @CreatedDate может быть одного из следующих типов:
java.time.LocalDateTime
java.time.LocalDate
java.time.ZonedDateTime
java.util.Date
java.util.Calendar
java.sql.Timestamp
Long (для timestamp в миллисекундах)
Жизненный цикл аннотации
Инициализация:
Активируется при включении аудита через @EnableJpaAuditing
Требуется регистрация AuditingEntityListener для сущности
Выполнение:
Автоматически устанавливает текущую дату и время при первом сохранении сущности
Значение устанавливается один раз при создании и не изменяется при последующих обновлениях
Обновление:
Для отслеживания времени изменения следует использовать @LastModifiedDate
Механизмы Spring и настройки Spring Boot
AuditingEntityListener:
Обрабатывает события жизненного цикла сущности
Автоматически заполняет аннотированные поля датой/временем
EnableJpaAuditing:
Аннотация для активации механизма аудита
Настройки Spring Boot
Активация аудита в конфигурационном классе:
@Configuration
@EnableJpaAuditing
public class AuditConfig {
// Дополнительные настройки при необходимости
}
Конфигурация сущности:
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Order {
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
// Другие поля
}
Настройка часового пояса (опционально):
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
Варианты настройки и использования
Комбинирование с другими аннотациями аудита:
@CreatedDate
private LocalDateTime createdAt;
@CreatedBy
private String createdBy;
@LastModifiedDate
private LocalDateTime updatedAt;
@LastModifiedBy
private String updatedBy;
Использование разных типов даты/времени:
@CreatedDate
private Date createdAt; // java.util.Date
@CreatedDate
private Long createdTimestamp; // timestamp в миллисекундах
Кастомные форматы даты (при использовании с DTO):
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@CreatedDate
private LocalDateTime createdAt;
Использование в проекциях Spring Data:
public interface OrderProjection {
@Value("#{target.createdAt}")
String getFormattedCreatedAt();
}
Особенности работы
Одноразовое заполнение:
Значение устанавливается только при первом сохранении сущности
Не изменяется при последующих обновлениях
Точность времени:
Зависит от базы данных и JPA-провайдера
Для высокой точности рекомендуется использовать java.time типы
Синхронизация времени:
Время берется с сервера, где выполняется приложение
Для распределенных систем рекомендуется использовать единый источник времени
#Java #Training #Hard #Spring #SpringDataJPA #CreatedDate
👍2