Подборка Telegram каналов для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Знаете ли вы, что можно создать полнофункциональное веб-приложение на Java с помощью Spring Initializr? Вот как это сделать за 45 секунд ⚡️
👉@BookJava
👉@BookJava
😁3👍2💩2👻2
Как приложению ограничить доступ к файлу?
В целях безопасности, весь доступ приложения к определенным частям кода и ресурсам может быть ограничен. Решения о доступе к, например, Reflection API, или к файлу принимаются менеджером безопасности.
Внутри менеджера представлен набор методов
Экземпляр класса
Менеджер безопасности изначально был нужен для ограничения апплетов – они выполнялись в браузере пользователя и не должны были получить доступ к локальным пользовательским данным. Сейчас технология апплетов устарела, но
👉@BookJava
В целях безопасности, весь доступ приложения к определенным частям кода и ресурсам может быть ограничен. Решения о доступе к, например, Reflection API, или к файлу принимаются менеджером безопасности.
Внутри менеджера представлен набор методов
check*(
), которые делегируют выполнение основному методу checkPermission()
. Сам доступ, права на который нужно проверить, представляется классом java.security.Permission
. Так, доступ к файлу на чтение проверяет метод checkRead
. Он передает в checkPermission
объект FilePermission
с указанным именем файла.Экземпляр класса
SecurityManager
, который реализует нужную логику ограничения доступа, можно установить программно методом System.setSecurityManager
, или на старте приложения флагом -Djava.security.manager
. По умолчанию менеджер не установлен.Менеджер безопасности изначально был нужен для ограничения апплетов – они выполнялись в браузере пользователя и не должны были получить доступ к локальным пользовательским данным. Сейчас технология апплетов устарела, но
SecurityManager
остается всё таким же актуальным.👉@BookJava
👍5🙉1
На что способны виртуальные потоки Java в обработке файлов
Начнем с того,что я не специалист по Java и у меня нет коммерческого опыта на этом языке. Я просто обычный кодер, который по вечерам пилит проекты на Java, а основной мой стек состоит из PHP и смеси Python + Go. В данной статье хочу с вами поделиться опытом с использованием виртуальных потоках (Virtual Threads) в обработке файлов.
https://habr.com/ru/articles/803955/
👉@BookJava
Начнем с того,что я не специалист по Java и у меня нет коммерческого опыта на этом языке. Я просто обычный кодер, который по вечерам пилит проекты на Java, а основной мой стек состоит из PHP и смеси Python + Go. В данной статье хочу с вами поделиться опытом с использованием виртуальных потоках (Virtual Threads) в обработке файлов.
https://habr.com/ru/articles/803955/
👉@BookJava
Хабр
На что способны виртуальные потоки Java в обработке файлов
Привет, Хабр! Предисловие Начнем с того,что я не специалист по Java и у меня нет коммерческого опыта на этом языке. Я просто обычный кодер, который по вечерам пилит проекты на Java, а основной мой...
👍5
25 расширений Docker для Java-разработчика
Знакомство с миром Docker подобно исследованию огромной игровой площадки компьютерной магии. Каждый раз, когда мы пишем код или настраиваем что-то, мы понимаем, насколько потрясающей может быть контейнеризация. Как разработчики, мы всегда ищем способы сделать нашу работу более плавной и быстрой. Именно здесь на помощь приходят расширения Docker.
https://digma.ai/top-docker-extensions-for-developers/
👉@BookJava
Знакомство с миром Docker подобно исследованию огромной игровой площадки компьютерной магии. Каждый раз, когда мы пишем код или настраиваем что-то, мы понимаем, насколько потрясающей может быть контейнеризация. Как разработчики, мы всегда ищем способы сделать нашу работу более плавной и быстрой. Именно здесь на помощь приходят расширения Docker.
https://digma.ai/top-docker-extensions-for-developers/
👉@BookJava
👍4
👍9
Что хранится в файле манифеста?
В JAR архиве можно найти файл
Манифест – текстовый файл, который состоит из заголовков, строчек вида
Вот некоторые из часто используемых заголовков:
• Информация об архиве: Manifest-Version, Created-By, Multi-Release, Built-By
• Main-class – точка входа приложения
• Classpath приложения
• Информация об экстеншне (Specification и Implementation, deprecated)
• Заголовки OSGI бандла
• Типы и хэши файлов архива (особенно применимо в Android приложениях)
Полный список стандартных заголовков можно почитать в документации.
👉@BookJava
В JAR архиве можно найти файл
META-INF/MANIFEST.MF
. Это манифест архива – хранилище его метаинформации. Манифест обычно добавляется той же утилитой, которой собирается jar-файл: maven-jar-plugin
, команда JDK jar
.Манифест – текстовый файл, который состоит из заголовков, строчек вида
ключ: значение
. Заголовки разделены на секции. Файл начинается с главной секции, описывающей метаинформацию всего архива. Следом, отделенные пустыми строками, идут секции для отдельных пакетов и файлов. В них могут переопределяться общие заголовки. JVM игнорирует неизвестные ей заголовки, что позволяет сторонним утилитам хранить в манифесте свою специфичную метаинформацию.Вот некоторые из часто используемых заголовков:
• Информация об архиве: Manifest-Version, Created-By, Multi-Release, Built-By
• Main-class – точка входа приложения
• Classpath приложения
• Информация об экстеншне (Specification и Implementation, deprecated)
• Заголовки OSGI бандла
• Типы и хэши файлов архива (особенно применимо в Android приложениях)
Полный список стандартных заголовков можно почитать в документации.
👉@BookJava
👍7
Трассировка в Spring Boot3
Вспоминая свои первые годы работы, я несколько удивляюсь тому, как я устранял проблемы, связанные с продакшеном. Я работал над проектом, в котором занимался всем - от взаимодействия с клиентами до кода, развертывания и, естественно, решения проблем. Когда возникала проблема и у меня не было четкого решения, я брал дамп базы данных продакшена, запускал приложение на своей машине с этой базой данных, затем звонил заказчику и пытался повторить его действия, используя необходимые отладочные указатели и операторы печати, чтобы точно определить проблему. В то время этот метод оказался для меня эффективным. Приложение было небольшим, с ограниченной базой пользователей, и с ним вполне мог справиться один разработчик. Однако я еще не понимал важности протоколирования.
https://medium.com/javarevisited/tracing-in-spring-boot3-097205dc08f4
👉@BookJava
Вспоминая свои первые годы работы, я несколько удивляюсь тому, как я устранял проблемы, связанные с продакшеном. Я работал над проектом, в котором занимался всем - от взаимодействия с клиентами до кода, развертывания и, естественно, решения проблем. Когда возникала проблема и у меня не было четкого решения, я брал дамп базы данных продакшена, запускал приложение на своей машине с этой базой данных, затем звонил заказчику и пытался повторить его действия, используя необходимые отладочные указатели и операторы печати, чтобы точно определить проблему. В то время этот метод оказался для меня эффективным. Приложение было небольшим, с ограниченной базой пользователей, и с ним вполне мог справиться один разработчик. Однако я еще не понимал важности протоколирования.
https://medium.com/javarevisited/tracing-in-spring-boot3-097205dc08f4
👉@BookJava
👍3😁2
Media is too big
VIEW IN TELEGRAM
Java 23: Восстановление баланса с помощью примитивных паттернов
Постоянное внедрение сопоставления шаблонов в Java привело к тому, что некоторые функции языка оказались более значимыми, чем другие, и разбалансировали язык. В Java 23 примитивные паттерны исправят эту ситуацию в отношении примитивных типов в
0:00 Intro
1:02 Existing Patterns
1:23 Type Patterns
1:32 Guarded Patterns
1:53 Record Patterns
2:09 Unnamed Patterns
2:29 Nested Patterns
2:50 Summary of Existing Patterns
3:38 Primitive Patterns in
5:17 Primitive Patterns in
6:30 Primitive Patterns when Nested
7:33 Upcoming Patterns
7:59 Deconstruction Patterns
8:40 Static Patterns
9:09 Instance Patterns
9:54 Constant Patterns
10:37 Try JDK 23 EA!
источник
👉@BookJava
Постоянное внедрение сопоставления шаблонов в Java привело к тому, что некоторые функции языка оказались более значимыми, чем другие, и разбалансировали язык. В Java 23 примитивные паттерны исправят эту ситуацию в отношении примитивных типов в
instanceof
и switch
. В этом эпизоде также рассматриваются другие грядущие паттерны ('deconstruction', 'static', 'instance' и 'constant') и показывается, как они будут развивать сопоставление паттернов в Java.0:00 Intro
1:02 Existing Patterns
1:23 Type Patterns
1:32 Guarded Patterns
1:53 Record Patterns
2:09 Unnamed Patterns
2:29 Nested Patterns
2:50 Summary of Existing Patterns
3:38 Primitive Patterns in
instanceof
5:17 Primitive Patterns in
switch
6:30 Primitive Patterns when Nested
7:33 Upcoming Patterns
7:59 Deconstruction Patterns
8:40 Static Patterns
9:09 Instance Patterns
9:54 Constant Patterns
10:37 Try JDK 23 EA!
источник
👉@BookJava
👍3
Советы по использованию Spring Framework 🚀
Используйте аспектно-ориентированное программирование (AOP) в SpringFramework для решения сквозных задач. Реализуйте протоколирование, безопасность и кэширование с помощью
и pointcuts. 🔥
👉@BookJava
Используйте аспектно-ориентированное программирование (AOP) в SpringFramework для решения сквозных задач. Реализуйте протоколирование, безопасность и кэширование с помощью
@Aspect
и pointcuts. 🔥
👉@BookJava
👍3🥴2
Дмитрий Тучс — The art of JUnit extensions
В режиме онлайн берем микросервисный проект (Spring Authorization Server, Spring OAuth 2.0 Resource Server) и строим полноценную инфраструктуру для работы с тестовыми данными, авторизацией и другим, используя JUnit Extensions. Только практические навыки, которые будут полезны большинству автоматизаторов на Java.
https://www.youtube.com/watch?v=NFHdzKcU5OU
👉@BookJava
В режиме онлайн берем микросервисный проект (Spring Authorization Server, Spring OAuth 2.0 Resource Server) и строим полноценную инфраструктуру для работы с тестовыми данными, авторизацией и другим, используя JUnit Extensions. Только практические навыки, которые будут полезны большинству автоматизаторов на Java.
https://www.youtube.com/watch?v=NFHdzKcU5OU
👉@BookJava
YouTube
Дмитрий Тучс — The art of JUnit extensions
Ближайшая конференция — Heisenbug 2025 Autumn, 19—20 октября, Санкт-Петербург + online. Подробности и билеты: https://jrg.su/D6uGC9
— —
В режиме онлайн берем микросервисный проект (Spring Authorization Server, Spring OAuth 2.0 Resource Server) и строим полноценную…
— —
В режиме онлайн берем микросервисный проект (Spring Authorization Server, Spring OAuth 2.0 Resource Server) и строим полноценную…
👍3
Совет по Java 🚀
Если вам нужно работать с API, требующим
👉@BookJava
Если вам нужно работать с API, требующим
List<String>
, но вы хотите работать с текстовыми блоками Java 14, вы можете легко преобразовать их в List
. В Java 17 вы можете сначала вызвать lines()
для String
, который возвращает Stream
, а затем непосредственно toList()
, который выдает List
.👉@BookJava
👍5
Как прочитать криптографический ключ?
Для чтения криптографического ключа необходимо использовать классы Java Cryptography Architecture (JCA). Пример кода для чтения криптографического ключа из файла вида PKCS#8 с помощью этих классов может выглядеть следующим образом:
// Используем ключ для выполнения криптографических операций
👉@BookJava
Для чтения криптографического ключа необходимо использовать классы Java Cryptography Architecture (JCA). Пример кода для чтения криптографического ключа из файла вида PKCS#8 с помощью этих классов может выглядеть следующим образом:
// Загружаем публичный ключ из файла
FileInputStream fis = new FileInputStream("public.pem");
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
byte[] keyBytes = new byte[dis.available()];
dis.readFully(keyBytes);
dis.close();
// Преобразуем байты в объект PublicKey
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey publicKey = kf.generatePublic(spec);
// Используем ключ для выполнения криптографических операций
👉@BookJava
👍3
Сравните репозитории Spring Data
Основная часть работы в Spring Data строится вокруг интерфейса
CrudRepository – базовый набор операций над сущностями: создание, чтение, изменение и удаление (CRUD).
PagingAndSortingRepository – добавляет к CRUD возможность постраничной загрузки данных с определенной сортировкой.
JpaRepository – расширение
MongoRepository – расширение
Вспомогательные методы, специфичные для конкретной модели данных, добавляются в пользовательские интерфейсы-наследники. Основываясь на именах добавляемых методов, фреймворк сам создаёт их реализацию.
👉@BookJava
Основная часть работы в Spring Data строится вокруг интерфейса
Repository
. Это маркерный интерфейс. От него наследуются интерфейсы-специализации, которые уже содержат методы для работы с сущностями базы данных. Все эти интерфейсы параметризуются двумя типами: самой сущности и её идентификатора.CrudRepository – базовый набор операций над сущностями: создание, чтение, изменение и удаление (CRUD).
PagingAndSortingRepository – добавляет к CRUD возможность постраничной загрузки данных с определенной сортировкой.
JpaRepository – расширение
PagingAndSortingRepository
, полноценно реализующее Java Persistence API. Добавляет ряд методов, таких как например flush и deleteInBatch.MongoRepository – расширение
PagingAndSortingRepository
, специфичное для MongoDB.Вспомогательные методы, специфичные для конкретной модели данных, добавляются в пользовательские интерфейсы-наследники. Основываясь на именах добавляемых методов, фреймворк сам создаёт их реализацию.
👉@BookJava
👍9
Регулярные выражения в Java
В Java регулярные выражения или Regex (сокращенно), можно использовать для поиска, манипулирования и редактирования строк в Java. Проверка электронной почты и паролей - вот несколько областей строк, где Regex широко используется для определения ограничений. Регулярные выражения в Java представлены в пакете java.util.regex. Он состоит из 3 классов и 1 интерфейса. Пакет java.util.regex в основном состоит из следующих трех классов, как показано ниже в табличной форме:
Pattern Class
Matcher Class
PatternSyntaxException Class
MatchResult Interface
https://www.geeksforgeeks.org/regular-expressions-in-java/
👉@BookJava
В Java регулярные выражения или Regex (сокращенно), можно использовать для поиска, манипулирования и редактирования строк в Java. Проверка электронной почты и паролей - вот несколько областей строк, где Regex широко используется для определения ограничений. Регулярные выражения в Java представлены в пакете java.util.regex. Он состоит из 3 классов и 1 интерфейса. Пакет java.util.regex в основном состоит из следующих трех классов, как показано ниже в табличной форме:
Pattern Class
Matcher Class
PatternSyntaxException Class
MatchResult Interface
https://www.geeksforgeeks.org/regular-expressions-in-java/
👉@BookJava
👍4
В Java 21 появилось множество новых функций и методов, которые помогут нам писать код более качественно. Но их легко не заметить или пропустить их использование, поскольку это относительно новая версия.
https://foojay.io/today/ensuring-the-right-usage-of-java-21-new-features/
👉@BookJava
https://foojay.io/today/ensuring-the-right-usage-of-java-21-new-features/
👉@BookJava
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
🧠 Если у вас есть конфликты при мерже, не волнуйтесь!
Воспользуйтесь волшебной палочкой, чтобы разрешить простые конфликты. Убрав их, вы сможете сосредоточиться на разрешении остальных. #IntelliJIDEATips
👉@BookJava
Воспользуйтесь волшебной палочкой, чтобы разрешить простые конфликты. Убрав их, вы сможете сосредоточиться на разрешении остальных. #IntelliJIDEATips
👉@BookJava
👍4