✍️Библиотека программиста» находится в поиске автора оригинальных статей
Кто нужен?
● Энтузиасты (джуны и выше), которые держат руку на пульсе, читают помимо книг зарубежные техноблоги
● Энтузиасты, которым есть что сказать
Тематика
● DevOps
● В четырех случаях из пяти вы предлагаете тему статьи
Объем
● От 7 до 15 тыс. знаков без учета кода
● 2-3 статьи в месяц
Оплата
● 8к руб. за статью
● Работаем с самозанятыми (компенсируем налог), ИП
Я пишу «так себе», что делать?
Чтобы написать статью, которую не стыдно опубликовать, достаточно овладеть инфостилем. У нас есть бесплатный курс для начинающих копирайтеров «Статьи для IT: как объяснять и распространять значимые идеи». Время прохождения курса: 1-2 недели.
✉️Пишите на [email protected]
Кто нужен?
● Энтузиасты (джуны и выше), которые держат руку на пульсе, читают помимо книг зарубежные техноблоги
● Энтузиасты, которым есть что сказать
Тематика
● DevOps
● В четырех случаях из пяти вы предлагаете тему статьи
Объем
● От 7 до 15 тыс. знаков без учета кода
● 2-3 статьи в месяц
Оплата
● 8к руб. за статью
● Работаем с самозанятыми (компенсируем налог), ИП
Я пишу «так себе», что делать?
Чтобы написать статью, которую не стыдно опубликовать, достаточно овладеть инфостилем. У нас есть бесплатный курс для начинающих копирайтеров «Статьи для IT: как объяснять и распространять значимые идеи». Время прохождения курса: 1-2 недели.
✉️Пишите на [email protected]
#дайджест перед выходными
⭕ JEP 477 в качестве Preview направлен в Java 23.— улучшение позволяет писать упрощенные декларации для программ, состоящих из метода main, которые могут быть расширены по мере роста навыков
⭕ Как создать библиотеку OSS — запись прямого эфира в рамках Zymposium, в котором можно было предложить идею новой ZIO-библиотеки и начать имплементировать ее в режиме лайф-кодинга
⭕ Вышел Kotlin 2.0 — центральный элемент новой мажорной версии — новый компилятор K2, который в значительной степени ориентирован на мультиплатформенность
⭕ Что нового в IntelliJ IDEA Ultimate 2024.1 — завезли кучу небольших апдейтов
⭕ Разбираем магических зверей безопасности: AuthZ: abac/rbac, AuthN и 2FA — еще одна попытка объяснить разницу между этими совершенно разными вещами
⭕ JEP 477 в качестве Preview направлен в Java 23.— улучшение позволяет писать упрощенные декларации для программ, состоящих из метода main, которые могут быть расширены по мере роста навыков
⭕ Как создать библиотеку OSS — запись прямого эфира в рамках Zymposium, в котором можно было предложить идею новой ZIO-библиотеки и начать имплементировать ее в режиме лайф-кодинга
⭕ Вышел Kotlin 2.0 — центральный элемент новой мажорной версии — новый компилятор K2, который в значительной степени ориентирован на мультиплатформенность
⭕ Что нового в IntelliJ IDEA Ultimate 2024.1 — завезли кучу небольших апдейтов
⭕ Разбираем магических зверей безопасности: AuthZ: abac/rbac, AuthN и 2FA — еще одна попытка объяснить разницу между этими совершенно разными вещами
Forwarded from Библиотека питониста | Python, Django, Flask
🐍🏗️ Основы архитектуры для джунов: построение масштабируемых и чистых приложений на Python
Когда речь идёт о создании масштабируемых и поддерживаемых приложений, понимание таких важных понятий, как принципы чистого кода, архитектурные паттерны и SOLID практики проектирования, имеет решающее значение. Они позволяют сохранить ясность кодовой базы и возможность её сопровождения по мере роста проектов.
О том, как реализовать эти принципы в Python, читайте в нашей новой статье.
🔗 Ссылка на статью
🔗 Зеркало
Когда речь идёт о создании масштабируемых и поддерживаемых приложений, понимание таких важных понятий, как принципы чистого кода, архитектурные паттерны и SOLID практики проектирования, имеет решающее значение. Они позволяют сохранить ясность кодовой базы и возможность её сопровождения по мере роста проектов.
О том, как реализовать эти принципы в Python, читайте в нашей новой статье.
🔗 Ссылка на статью
🔗 Зеркало
ConcurrentSkipListSet
Это реализация интерфейса Set, предназначенная для хранения уникальных элементов в отсортированном порядке. Она основана на структуре данных, называемой Skip List, и обеспечивает эффективную поддержку многопоточности.
Основные особенности ConcurrentSkipListSet:
👉 ConcurrentSkipListSet не позволяет хранить дублирующиеся элементы. Если вы попытаетесь добавить в него элемент, который уже существует, операция добавления завершится успешно, но элемент не будет дублироваться.
👉 Элементы в ConcurrentSkipListSet хранятся в отсортированном порядке по их естественному порядку (если элементы реализуют интерфейс Comparable) или с использованием заданного компаратора.
👉 ConcurrentSkipListSet является потокобезопасной структурой данных. Она обеспечивает безопасное чтение и запись элементов из нескольких потоков без необходимости явной синхронизации.
Это реализация интерфейса Set, предназначенная для хранения уникальных элементов в отсортированном порядке. Она основана на структуре данных, называемой Skip List, и обеспечивает эффективную поддержку многопоточности.
Основные особенности ConcurrentSkipListSet:
👉 ConcurrentSkipListSet не позволяет хранить дублирующиеся элементы. Если вы попытаетесь добавить в него элемент, который уже существует, операция добавления завершится успешно, но элемент не будет дублироваться.
👉 Элементы в ConcurrentSkipListSet хранятся в отсортированном порядке по их естественному порядку (если элементы реализуют интерфейс Comparable) или с использованием заданного компаратора.
👉 ConcurrentSkipListSet является потокобезопасной структурой данных. Она обеспечивает безопасное чтение и запись элементов из нескольких потоков без необходимости явной синхронизации.
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
🏅 Как стать мидлом за 3 года: 12 советов джунам
Переход от статуса джуна к мидлу — важная, и пожалуй, самая сложная веха в карьере любого разработчика. Рассказываем об эффективных приемах и дополнительных навыках, которые помогут вам сократить этот извилистый путь
👉 Статья
Переход от статуса джуна к мидлу — важная, и пожалуй, самая сложная веха в карьере любого разработчика. Рассказываем об эффективных приемах и дополнительных навыках, которые помогут вам сократить этот извилистый путь
👉 Статья
Ответьте на 3 вопроса, чтобы получить вводные занятия к курсу «Алгоритмы и структуры данных»
🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/ffb04e66
На вводной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/ffb04e66
🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/ffb04e66
На вводной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Чем полезны неизменяемые объекты?
Неизменяемость (immutability) помогает облегчить написание многопоточного кода. Неизменяемый объект может быть использован без какой-либо синхронизации. К сожалению, в Java нет аннотации @Immutable, которая делает объект неизменяемым, для этого разработчикам нужно самим создавать класс с необходимыми характеристиками. Для этого необходимо следовать некоторым общим принципам: инициализация всех полей только в конструкторе, отсутствие методов setX() вносящих изменения в поля класса, отсутствие утечек ссылки, организация отдельного хранилища копий изменяемых объектов и т.д.
Неизменяемость (immutability) помогает облегчить написание многопоточного кода. Неизменяемый объект может быть использован без какой-либо синхронизации. К сожалению, в Java нет аннотации @Immutable, которая делает объект неизменяемым, для этого разработчикам нужно самим создавать класс с необходимыми характеристиками. Для этого необходимо следовать некоторым общим принципам: инициализация всех полей только в конструкторе, отсутствие методов setX() вносящих изменения в поля класса, отсутствие утечек ссылки, организация отдельного хранилища копий изменяемых объектов и т.д.
🤔🤔 Как сделать пароль менеджер
Для хранения паролей будет использоваться файл формата xml, который будет шифроваться методом AES-256 и храниться в облаке. В качестве облака был выбран сервис «Яндекс диск».
Основной процесс — это загрузка файла с паролями из облака, затем загрузка файла в оперативную память, его расшифровка и вывод паролей в интерфейс пользователю. По завершению работы с паролями, в оперативной памяти формируется XML-структура с паролями, которая шифруется и сохраняется в файл. Затем этот файл загружается в облако.
Продолжение тут
#гайд
Для хранения паролей будет использоваться файл формата xml, который будет шифроваться методом AES-256 и храниться в облаке. В качестве облака был выбран сервис «Яндекс диск».
Основной процесс — это загрузка файла с паролями из облака, затем загрузка файла в оперативную память, его расшифровка и вывод паролей в интерфейс пользователю. По завершению работы с паролями, в оперативной памяти формируется XML-структура с паролями, которая шифруется и сохраняется в файл. Затем этот файл загружается в облако.
Продолжение тут
#гайд
💥💥 Как шаблонный метод может сломать ваш Java код
ООП — это замечательно. За несоблюдение этой парадигмы принято ругать, а знание паттернов зачастую является обязательным. Но даже правильный подход не страхует полностью от ошибок. О том, как сломать программу при помощи обычного шаблонного метода, узнаете в статье.
Читать
#гайд
ООП — это замечательно. За несоблюдение этой парадигмы принято ругать, а знание паттернов зачастую является обязательным. Но даже правильный подход не страхует полностью от ошибок. О том, как сломать программу при помощи обычного шаблонного метода, узнаете в статье.
Читать
#гайд
Очередной #дайджест по Java
1️⃣ Новый пакет scala-repl в MELPA для разработчиков Scala — расширение Emacs для интерактивной работы с sbt/mill/scala-cli-проектами
2️⃣ JEP 482: Flexible Constructor Bodies направлен в JDK 23 в статусе second preview — при переходе в статус second preview его переименовали и теперь поля класса можно инициализировать до того, как будет вызван super()
3️⃣ sbt Android plugin — плагин с функциональностью sbt для разработки приложений под платформу Android
4️⃣ Опыт разработки сервиса отправки сообщений в Apache Kafka с использованием SASL/Kerberos и Avro Schema Registry — опыт создания сервиса для отправки сообщений в Apache Kafka с использованием Spring Boot, аутентификацией SASL/Kerberos и применением Avro Schema Registry для продюсера
5️⃣ SBOM support in Spring Boot 3.3 — SBOM описывает компоненты, которые использует ваша система, это может быть полезным, например, для автоматизированного составления списков уязвимостей вашей программы
1️⃣ Новый пакет scala-repl в MELPA для разработчиков Scala — расширение Emacs для интерактивной работы с sbt/mill/scala-cli-проектами
2️⃣ JEP 482: Flexible Constructor Bodies направлен в JDK 23 в статусе second preview — при переходе в статус second preview его переименовали и теперь поля класса можно инициализировать до того, как будет вызван super()
3️⃣ sbt Android plugin — плагин с функциональностью sbt для разработки приложений под платформу Android
4️⃣ Опыт разработки сервиса отправки сообщений в Apache Kafka с использованием SASL/Kerberos и Avro Schema Registry — опыт создания сервиса для отправки сообщений в Apache Kafka с использованием Spring Boot, аутентификацией SASL/Kerberos и применением Avro Schema Registry для продюсера
5️⃣ SBOM support in Spring Boot 3.3 — SBOM описывает компоненты, которые использует ваша система, это может быть полезным, например, для автоматизированного составления списков уязвимостей вашей программы
Forwarded from Библиотека собеса по Java | вопросы с собеседований
В каких состояниях может пребывать поток?
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Что выведет код сверху?
Anonymous Quiz
17%
40000
55%
Compilation error, cannot convert long to short
26%
-25536
2%
Свой вариант
Если вы используете DTO в Spring Data/JPA, вы можете автоматизировать отображение между сущностями и DTO с помощью библиотеки Blaze Persistence. Тогда вы сможете воспользоваться преимуществами, например, паттерна Spring repository.
Forwarded from Библиотека собеса по Java | вопросы с собеседований
В каких состояниях может пребывать поток?
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
#дайджест перед выходными
🔽 Spring AI 1.0.0 M1 release — из значимых нововведений: API для создания промптов, похожий на RestClient и JdbcClient, поддержка новых моделей и векторных хранилищ, TestContainers
🔽 Module Imports in Java 23 — автор рассказывает о книге, в которой описывается предварительный просмотр функции, основанной на модулях, которая может быть использована, даже если код не находится в модулях
🔽 Делаем ZIO-Kafka безопаснее и быстрее — пофиксили дублирование сообщений при ребалансе, добавив механизм отложенного выполнения, который дожидается, пока все сообщения в очереди не будут обработаны
🔽 Hibernate ORM 6.6 — небольшая заметка, которая рассказывает об аннотация, которая указывает на то, что в случае наследования сущностей Hibernate должен создавать прокси не на суперкласс, а на конкретного наследника
🔽 Spec-first and code-first, hand in hand — теперь вам не надо разрываться между подходами spec-first или code-first, а использовать оба одновременно
🔽 Spring AI 1.0.0 M1 release — из значимых нововведений: API для создания промптов, похожий на RestClient и JdbcClient, поддержка новых моделей и векторных хранилищ, TestContainers
🔽 Module Imports in Java 23 — автор рассказывает о книге, в которой описывается предварительный просмотр функции, основанной на модулях, которая может быть использована, даже если код не находится в модулях
🔽 Делаем ZIO-Kafka безопаснее и быстрее — пофиксили дублирование сообщений при ребалансе, добавив механизм отложенного выполнения, который дожидается, пока все сообщения в очереди не будут обработаны
🔽 Hibernate ORM 6.6 — небольшая заметка, которая рассказывает об аннотация, которая указывает на то, что в случае наследования сущностей Hibernate должен создавать прокси не на суперкласс, а на конкретного наследника
🔽 Spec-first and code-first, hand in hand — теперь вам не надо разрываться между подходами spec-first или code-first, а использовать оба одновременно