🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали
Эзотерические языки разрабатывают в концептуальных, экспериментальных и развлекательных целях. Их общая черта — максимально запутанный и странный синтаксис, понятный только посвященным. В этой подборке — языки, которые выбрали бы Ходор, доктор Лектер, Малевич, Джеймс Бонд, Терминатор и Луи Армстронг, если бы решили войти в айти.
👉 Читать статью
👉 Зеркало
Эзотерические языки разрабатывают в концептуальных, экспериментальных и развлекательных целях. Их общая черта — максимально запутанный и странный синтаксис, понятный только посвященным. В этой подборке — языки, которые выбрали бы Ходор, доктор Лектер, Малевич, Джеймс Бонд, Терминатор и Луи Армстронг, если бы решили войти в айти.
👉 Читать статью
👉 Зеркало
Подготовили для вас #дайджест новинок мира Java
♦️ Настройка CI/CD глазами разработчика — не про объяснения что такое CI/CD, docker-compose, а про более глубокие вещи
♦️ Шторм на рынке мобильной разработки — как пережить и что предусмотреть бизнесу в 2024
♦️ Repeatable migrations в Flyway — любая миграция — это новый файл, который невозможно сравнить со старым
♦️ Книга «Functional Design: Principles, Patterns, and Practices» — как и зачем использовать функциональное программирование для создания лучших систем для реальных клиентов
♦️ Использование resilience4j со Spring Boot — про библиотеку с набором инструментов для повышения надежности и отказоустойчивости java приложений в микросервисной архитектуре
♦️ Настройка CI/CD глазами разработчика — не про объяснения что такое CI/CD, docker-compose, а про более глубокие вещи
♦️ Шторм на рынке мобильной разработки — как пережить и что предусмотреть бизнесу в 2024
♦️ Repeatable migrations в Flyway — любая миграция — это новый файл, который невозможно сравнить со старым
♦️ Книга «Functional Design: Principles, Patterns, and Practices» — как и зачем использовать функциональное программирование для создания лучших систем для реальных клиентов
♦️ Использование resilience4j со Spring Boot — про библиотеку с набором инструментов для повышения надежности и отказоустойчивости java приложений в микросервисной архитектуре
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Почему Map не наследуется от Collection?
Это связано с различиями в их целях и использовании. Интерфейс Collection представляет собой общие методы для работы с группой объектов, таких как добавление, удаление и проверка наличия элемента. Он ориентирован на работу с коллекциями объектов, где каждый объект является элементом коллекции.
Интерфейс Map, с другой стороны, представляет собой отображение ключей на значения. Он не рассматривает элементы коллекции как отдельные объекты, а предоставляет доступ к значению, связанному с определенным ключом. Это более общий и мощный подход, который не сводится к работе с отдельными элементами коллекции.
Интерфейс Map включает в себя методы для управления парами ключ-значение и обеспечивает эффективный доступ к значениям по ключу. По этим причинам он не является подтипом Collection. Однако, классы, реализующие интерфейс Map, часто предоставляют методы, которые позволяют работать с элементами коллекции или возвращают представление коллекции ключей, значений или записей (ключ-значение).
Таким образом, хотя Map и Collection предоставляют абстракции для работы с группой объектов, они решают разные задачи, и поэтому не существует иерархического отношения наследования между ними.
#для_продвинутых
Это связано с различиями в их целях и использовании. Интерфейс Collection представляет собой общие методы для работы с группой объектов, таких как добавление, удаление и проверка наличия элемента. Он ориентирован на работу с коллекциями объектов, где каждый объект является элементом коллекции.
Интерфейс Map, с другой стороны, представляет собой отображение ключей на значения. Он не рассматривает элементы коллекции как отдельные объекты, а предоставляет доступ к значению, связанному с определенным ключом. Это более общий и мощный подход, который не сводится к работе с отдельными элементами коллекции.
Интерфейс Map включает в себя методы для управления парами ключ-значение и обеспечивает эффективный доступ к значениям по ключу. По этим причинам он не является подтипом Collection. Однако, классы, реализующие интерфейс Map, часто предоставляют методы, которые позволяют работать с элементами коллекции или возвращают представление коллекции ключей, значений или записей (ключ-значение).
Таким образом, хотя Map и Collection предоставляют абстракции для работы с группой объектов, они решают разные задачи, и поэтому не существует иерархического отношения наследования между ними.
#для_продвинутых
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
FairSemaphore
Это класс, реализующий семафор, который обеспечивает справедливое распределение разрешений между потоками. Это означает, что потоки, ожидающие разрешения, будут получать его в порядке очереди, а не в случайном порядке.
В примере на картинке два потока будут пытаться получить доступ к ресурсу, который защищен с помощью FairSemaphore. Потоки будут получать доступ к ресурсу по очереди, а не в случайном порядке.
Это класс, реализующий семафор, который обеспечивает справедливое распределение разрешений между потоками. Это означает, что потоки, ожидающие разрешения, будут получать его в порядке очереди, а не в случайном порядке.
В примере на картинке два потока будут пытаться получить доступ к ресурсу, который защищен с помощью FairSemaphore. Потоки будут получать доступ к ресурсу по очереди, а не в случайном порядке.
Forwarded from Библиотека devops’а
☸️ Покоряем Kubernetes: от базовых концепций к эффективному управлению контейнерами
Умение работать с Kubernetes — ценный навык для продвинутого разработчика, и совершенно необходимый — для каждого DevOps-инженера. Расскажем просто и понятно, как разобраться в основных концепциях Kubernetes.
Читать статью
#гайд
Умение работать с Kubernetes — ценный навык для продвинутого разработчика, и совершенно необходимый — для каждого DevOps-инженера. Расскажем просто и понятно, как разобраться в основных концепциях Kubernetes.
Читать статью
#гайд
✍️✍️ Юнит-тесты: чек-лист методик проектирования
Все много раз слышали о необходимости писать модульные тесты и о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.
Автор задумался: есть ли руководство, которое облегчило бы генерацию тестовых сценариев и помогло выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.
Материал будет полезен разработчикам, которые уже пишут модульные тесты и которые только думают внедрять их в свой проект, а также желают применить методики проектирования тестов.
Читать статью
#почитать
Все много раз слышали о необходимости писать модульные тесты и о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.
Автор задумался: есть ли руководство, которое облегчило бы генерацию тестовых сценариев и помогло выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.
Материал будет полезен разработчикам, которые уже пишут модульные тесты и которые только думают внедрять их в свой проект, а также желают применить методики проектирования тестов.
Читать статью
#почитать
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Метод newSingleThreadExecutor()
Метод newSingleThreadExecutor() используется для создания ExecutorService с единственным рабочим потоком. ExecutorService предоставляет удобный способ управления выполнением задач в асинхронном режиме.
В примере выше создается ExecutorService с одним рабочим потоком, и две задачи (task1 и task2) передаются на выполнение с использованием метода submit(). Закрытие ExecutorService выполняется с помощью метода shutdown(), который гарантирует, что больше никакие задачи не будут приняты, и потоки будут завершены после завершения всех текущих задач.
Метод newSingleThreadExecutor() используется для создания ExecutorService с единственным рабочим потоком. ExecutorService предоставляет удобный способ управления выполнением задач в асинхронном режиме.
В примере выше создается ExecutorService с одним рабочим потоком, и две задачи (task1 и task2) передаются на выполнение с использованием метода submit(). Закрытие ExecutorService выполняется с помощью метода shutdown(), который гарантирует, что больше никакие задачи не будут приняты, и потоки будут завершены после завершения всех текущих задач.
🧠 Знания — сила! Что должен изучить каждый программист?
Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Пройти опрос
Мы запускаем опрос среди наших читателей, чтобы выяснить, какие ключевые компетенции необходимо развивать программисту на текущий момент. Какие направления стоит изучать в первую очередь? Уровень каких знаний влияет на зарплату в отрасли?
Мы проведем анализ ответов и составим ТОП-лист навыков, которые не помешают освоить каждому программисту и разработчику для успешного карьерного роста!
👉 Пройти опрос
Очередной #дайджест по Java
☕ Spring AI 0.8.0 уже доступен — удобный API для моделей искусственного интеллекта, API для хранения векторов, вызов функций, ETL-фреймворк для инженерии данных
☕ Quarkus — горячий тренд Java-разработки
☕ Apache Kafka 3.7.0 — описание основных функций, о которых вы должны знать
☕ Как выдержать критику от других разрабов — чужие мнения и своя самооценка
☕ Slim Docker Images для Java — как создавать слим Docker-образы для Java-приложений с помощью Alpine Linux и Jlink
☕ Spring AI 0.8.0 уже доступен — удобный API для моделей искусственного интеллекта, API для хранения векторов, вызов функций, ETL-фреймворк для инженерии данных
☕ Quarkus — горячий тренд Java-разработки
☕ Apache Kafka 3.7.0 — описание основных функций, о которых вы должны знать
☕ Как выдержать критику от других разрабов — чужие мнения и своя самооценка
☕ Slim Docker Images для Java — как создавать слим Docker-образы для Java-приложений с помощью Alpine Linux и Jlink
😶🌫️😶🌫️ Изоляция в тестах с Kafka
Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тестов с Kafka по-прежнему представляют собой вызов.
В статье описывается подход, который значительно упрощает процесс тестирования, обеспечивая изоляцию тестов и предоставляя набор инструментов для достижения этой цели. При успешной реализации изоляции, тесты с Kafka могут быть организованы так, что на этапе проверки результатов обеспечивается полный доступ ко всем сообщениям, возникшим в ходе теста, избегая при этом необходимости в использовании методов принудительного ожидания, таких как Thread.sleep()
Читать статью
#туториал
Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тестов с Kafka по-прежнему представляют собой вызов.
В статье описывается подход, который значительно упрощает процесс тестирования, обеспечивая изоляцию тестов и предоставляя набор инструментов для достижения этой цели. При успешной реализации изоляции, тесты с Kafka могут быть организованы так, что на этапе проверки результатов обеспечивается полный доступ ко всем сообщениям, возникшим в ходе теста, избегая при этом необходимости в использовании методов принудительного ожидания, таких как Thread.sleep()
Читать статью
#туториал
ServletContext
Интерфейс, предоставляющий методы для взаимодействия с контекстом сервлета. Контекст сервлета — это область, в которой работает сервлет, и предоставляет средства для обмена данными между сервлетами, а также для доступа к различным ресурсам, таким как файлы, базы данных и другие.
Некоторые из основных методов ServletContext:
getInitParameter(String name): возвращает значение инициализационного параметра сервлета, указанного по имени.
getInitParameterNames(): возвращает имена всех инициализационных параметров сервлета.
getAttribute(String name): возвращает значение атрибута, сохраненного в контексте сервлета по имени.
setAttribute(String name, Object object): устанавливает значение атрибута в контексте сервлета.
getRequestDispatcher(String path): возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.
getRealPath(String path): преобразует виртуальный путь в абсолютный путь на сервере.
Интерфейс, предоставляющий методы для взаимодействия с контекстом сервлета. Контекст сервлета — это область, в которой работает сервлет, и предоставляет средства для обмена данными между сервлетами, а также для доступа к различным ресурсам, таким как файлы, базы данных и другие.
Некоторые из основных методов ServletContext:
getInitParameter(String name): возвращает значение инициализационного параметра сервлета, указанного по имени.
getInitParameterNames(): возвращает имена всех инициализационных параметров сервлета.
getAttribute(String name): возвращает значение атрибута, сохраненного в контексте сервлета по имени.
setAttribute(String name, Object object): устанавливает значение атрибута в контексте сервлета.
getRequestDispatcher(String path): возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.
getRealPath(String path): преобразует виртуальный путь в абсолютный путь на сервере.
🍍Подборка лучших статей «Библиотеки программиста» за февраль: сохраняй в заметки, чтобы не пропустить #самыйсок
😈 Даркнет: как устроен теневой рынок труда
🚀🏢 Стартапы vs IT-гиганты: куда лучше устроиться Junior-разработчику
🗄️ Базовые запросы SQL: получение записей из БД
🥇 Спортивная мотивация и мотивация в IT, что общего?
😺🐙💡 Как сделать креативный профиль на GitHub
🎮👨💻 15 игр, которые научат программированию
🧑🏻🏫 Менторство в IT: как стать айтишником, найти работу мечты и облегчить себе жизнь
⛩️ 6 способов нестандартно войти в Айти
📈 5 трендов в подборе ИТ-специалистов на 2024 год
🐍⛓️ Цепи Маркова: генерирование читабельной бессмыслицы за 20 строк на Python
☕📦 10 Java-библиотек, которые изменят твой код навсегда
🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали
😈 Даркнет: как устроен теневой рынок труда
🚀🏢 Стартапы vs IT-гиганты: куда лучше устроиться Junior-разработчику
🗄️ Базовые запросы SQL: получение записей из БД
🥇 Спортивная мотивация и мотивация в IT, что общего?
😺🐙💡 Как сделать креативный профиль на GitHub
🎮👨💻 15 игр, которые научат программированию
🧑🏻🏫 Менторство в IT: как стать айтишником, найти работу мечты и облегчить себе жизнь
⛩️ 6 способов нестандартно войти в Айти
📈 5 трендов в подборе ИТ-специалистов на 2024 год
🐍⛓️ Цепи Маркова: генерирование читабельной бессмыслицы за 20 строк на Python
☕📦 10 Java-библиотек, которые изменят твой код навсегда
🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Агрегация
Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.
Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
Агрегация — это отношение между классами, когда один класс содержит ссылки на объекты другого класса. Важно отметить, что агрегация является одним из способов управления отношениями между классами в ООП.
Примером агрегации может быть, например, класс «Университет», который содержит коллекцию объектов класса «Студент». В этом случае, «Университет» агрегирует (содержит) множество объектов «Студент». Важно, чтобы объекты «Студент» оставались независимыми и могли существовать отдельно от объекта «Университет».
Forwarded from Книги для джавистов | Java
📚Quick Functional Programming (2023)
✍️Автор: David Matuszek
📃Страниц: 128
Функциональное программирование - это мощный инструмент, который вы можете использовать в дополнение ко всем своим обычным инструментам, в той мере, в какой ваш текущий основной язык поддерживает его. Большинство языков имеют хотя бы базовую поддержку.
Попробуйте функциональное программирование. Вы можете быть удивлены, насколько сильно один инструмент может помочь вам в повседневном программировании.
Скачать книгу
✍️Автор: David Matuszek
📃Страниц: 128
Функциональное программирование - это мощный инструмент, который вы можете использовать в дополнение ко всем своим обычным инструментам, в той мере, в какой ваш текущий основной язык поддерживает его. Большинство языков имеют хотя бы базовую поддержку.
Попробуйте функциональное программирование. Вы можете быть удивлены, насколько сильно один инструмент может помочь вам в повседневном программировании.
Скачать книгу
Forwarded from Книги для джавистов | Java
📚Pro Jakarta EE 10: Open Source Enterprise Java-based Cloud-native Applications Development (2023)
✍️Автор: Peter Späth
📃Страниц: 512
Эта книга поможет вам создавать более сложные корпоративные облачные и другие приложения на базе Java, которые могут работать в корпоративных и других критически важных средах.
Что внутри:
🔸Создавайте сложные приложения Jakarta EE
🔸Создайте рабочий процесс профессиональной разработки с помощью Jakarta EE
🔸Создавайте более продвинутые приложения для веб-разработки
🔸Работайте с более продвинутыми вспомогательными технологиями для повышения зрелости и стабильности приложений в корпоративной среде
Скачать книгу
✍️Автор: Peter Späth
📃Страниц: 512
Эта книга поможет вам создавать более сложные корпоративные облачные и другие приложения на базе Java, которые могут работать в корпоративных и других критически важных средах.
Что внутри:
🔸Создавайте сложные приложения Jakarta EE
🔸Создайте рабочий процесс профессиональной разработки с помощью Jakarta EE
🔸Создавайте более продвинутые приложения для веб-разработки
🔸Работайте с более продвинутыми вспомогательными технологиями для повышения зрелости и стабильности приложений в корпоративной среде
Скачать книгу