Как часто вы ездите в офис? Сколько раз в неделю?
#интерактив
#интерактив
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🤖 25 бесплатных AI-инструментов для разработчиков
ИИ-помощники способны заменить GitHub Copilot, проверить код и даже сделать UX/UI-дизайн. Мы сделали подборку.
🟣 Codeuim
Помогает писать код. Можно опробовать в браузере или установить в качестве расширения в популярные IDE. Поддерживает более 70 языков программирования.
🟣 Codiga
Проверит, проанализирует и отрефакторит ваш код.
🟣 GPT Pilot
Создатели инструмента утверждают, что он позволит ускорить процесс разработки в 20 раз. С помощью GPT Pilot можно пошагово разработать собственное приложение.
🟣 Open Interpreter
Альтернатива официальному плагину Code Interpreter от Open AI. Может управлять браузером Chrome для поиска в интернете.
🟣 GPT-Code-Clippy
А это опенсорсный аналог GitHub Copilot на базе GPT-3.
Ещё 20 инструментов можно найти здесь
О других классных новых инструментах мы писали тут
#дайджест
ИИ-помощники способны заменить GitHub Copilot, проверить код и даже сделать UX/UI-дизайн. Мы сделали подборку.
🟣 Codeuim
Помогает писать код. Можно опробовать в браузере или установить в качестве расширения в популярные IDE. Поддерживает более 70 языков программирования.
🟣 Codiga
Проверит, проанализирует и отрефакторит ваш код.
🟣 GPT Pilot
Создатели инструмента утверждают, что он позволит ускорить процесс разработки в 20 раз. С помощью GPT Pilot можно пошагово разработать собственное приложение.
🟣 Open Interpreter
Альтернатива официальному плагину Code Interpreter от Open AI. Может управлять браузером Chrome для поиска в интернете.
🟣 GPT-Code-Clippy
А это опенсорсный аналог GitHub Copilot на базе GPT-3.
Ещё 20 инструментов можно найти здесь
О других классных новых инструментах мы писали тут
#дайджест
Почему нет метода iterator.add() чтобы добавить элементы в коллекцию?
— Iterator предназначен только для итерации по коллекции, а не для модификации коллекции. Добавление элементов через итератор нарушило бы принцип единственной ответственности.
— Многие коллекции, например ArrayList, реализуются на основе массива. Добавление элемента в середину массива — дорогая операция, требующая создания нового массива и копирования всех элементов.
— Если позволить итератору изменять коллекцию, это может привести к непредсказуемому поведению и ошибкам, особенно при работе с многопоточностью.
— Collection уже предоставляет методы add() и remove() для модификации коллекции, поэтому нет необходимости дублировать эту функциональность в Iterator.
#вопросы_с_собеседований
— Iterator предназначен только для итерации по коллекции, а не для модификации коллекции. Добавление элементов через итератор нарушило бы принцип единственной ответственности.
— Многие коллекции, например ArrayList, реализуются на основе массива. Добавление элемента в середину массива — дорогая операция, требующая создания нового массива и копирования всех элементов.
— Если позволить итератору изменять коллекцию, это может привести к непредсказуемому поведению и ошибкам, особенно при работе с многопоточностью.
— Collection уже предоставляет методы add() и remove() для модификации коллекции, поэтому нет необходимости дублировать эту функциональность в Iterator.
#вопросы_с_собеседований
👨💻 9 трендов в найме айтишников в 2023 году
Рассказываем, что интересного происходит в найме IT-специалистов.
По данным Хабр Карьеры, бэкендеры и фронтендеры испытывают трудности с поиском работы — спрос на них уменьшился на 4% и 15% соответственно.
Но сложнее всего сейчас мобильным разработчикам. А все потому, что рынок мобильной разработки рухнул на 24% по сравнению с показателями прошлого года. Но этот тренд в большей степени коснулся стажеров и джунов.
Читать статью
Рассказываем, что интересного происходит в найме IT-специалистов.
По данным Хабр Карьеры, бэкендеры и фронтендеры испытывают трудности с поиском работы — спрос на них уменьшился на 4% и 15% соответственно.
Но сложнее всего сейчас мобильным разработчикам. А все потому, что рынок мобильной разработки рухнул на 24% по сравнению с показателями прошлого года. Но этот тренд в большей степени коснулся стажеров и джунов.
Читать статью
#вопросы_с_собеседования
Как не допустить сериализацию?
Чтобы не допустить автоматическую сериализацию можно переопределить private методы для создания исключительной ситуации NotSerializableException.
private void writeObject(ObjectOutputStream out) throws IOException {
throw new NotSerializableException();
}
private void readObject(ObjectInputStream in) throws IOException {
throw new NotSerializableException();
}
Как не допустить сериализацию?
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
🤔 Очередной #дайджест по Java
🟢 Книга Security in Computing, 6th Edition — искусство компьютерной и информационной безопасности: от приложений и сетей до облаков и криптовалют
🟢 Вещественные числа с плавающей двоичной точкой в .NET и .NET Framework — коллекция ситуаций с этими числами, которые возникают на платформах .NET и .NET Framework в Windows на процессорах семейства x86
🟢 Подкаст c Тимуром Мухитдиновым — разговор о стартапе на Джаве и архитектуре в Букинге
🟢 Насколько быстра Java 21 — автор сравнивает производительность 21 версии по сравнению с 17
🟢 JVM Language Summit 2023 — доклад про виртуальные потоки, про историю, челленджи и про то как ими пользоваться
🟢 Книга Security in Computing, 6th Edition — искусство компьютерной и информационной безопасности: от приложений и сетей до облаков и криптовалют
🟢 Вещественные числа с плавающей двоичной точкой в .NET и .NET Framework — коллекция ситуаций с этими числами, которые возникают на платформах .NET и .NET Framework в Windows на процессорах семейства x86
🟢 Подкаст c Тимуром Мухитдиновым — разговор о стартапе на Джаве и архитектуре в Букинге
🟢 Насколько быстра Java 21 — автор сравнивает производительность 21 версии по сравнению с 17
🟢 JVM Language Summit 2023 — доклад про виртуальные потоки, про историю, челленджи и про то как ими пользоваться
✍️🦾 Компилирование «железного» бинарника Java-программы Google Closure Stylesheets с GraalVM
Closure Stylesheets — это компилятор CSS, написанный Гугл на Java в рамках набора инструментов Closure Tools для веб-разработки, который в свое время обладал внушительными функциями такими как экспансия браузерных префиксов (например, для трансформации display: flex; в display: -webkit-flex; display: -ms-flexbox), переменными и др. Прошло уже более 10 лет с момента зачатия этого проекта, многие инновации уже укоренились, и в прошлом году его архивировали, т.к. все, включая сотрудников Гугл, используют мейнстрим утилиты типа SASS / autoprefixer.
В статье речь пойдет про то, как автор обновил свой форк с Java 1.8 на JDK 11 и использовал утилиту Oracle native-image из пакета GraalVM для того, чтобы собрать native binary, то есть бинарник с машинным кодом, который позволяет запускать программу вообще без Java. Он расскажет о том, какие проблемы встретил во время апгрейда, в том числе связанных с рефлексией, и сравнит скорость запуска / работы / потребления памяти стандартного JAR и собранного bin.
Читать статью
#гайд
Closure Stylesheets — это компилятор CSS, написанный Гугл на Java в рамках набора инструментов Closure Tools для веб-разработки, который в свое время обладал внушительными функциями такими как экспансия браузерных префиксов (например, для трансформации display: flex; в display: -webkit-flex; display: -ms-flexbox), переменными и др. Прошло уже более 10 лет с момента зачатия этого проекта, многие инновации уже укоренились, и в прошлом году его архивировали, т.к. все, включая сотрудников Гугл, используют мейнстрим утилиты типа SASS / autoprefixer.
В статье речь пойдет про то, как автор обновил свой форк с Java 1.8 на JDK 11 и использовал утилиту Oracle native-image из пакета GraalVM для того, чтобы собрать native binary, то есть бинарник с машинным кодом, который позволяет запускать программу вообще без Java. Он расскажет о том, какие проблемы встретил во время апгрейда, в том числе связанных с рефлексией, и сравнит скорость запуска / работы / потребления памяти стандартного JAR и собранного bin.
Читать статью
#гайд
Вебинар на тему: Конкурентность при работе с базами данных — обработка тысяч одновременных записей и обеспечение согласованности данных
Данное событие состоится 6 ноября и продлится несколько часов.
Будут рассмотрены потенциальные проблемы при работе со связкой java->database. Покажут выполнение тысячи апдейтов над одними и теми же строками и наиболее распространенные подходы, для достижения согласованности и производительности.
Регистрация тут
Данное событие состоится 6 ноября и продлится несколько часов.
Будут рассмотрены потенциальные проблемы при работе со связкой java->database. Покажут выполнение тысячи апдейтов над одними и теми же строками и наиболее распространенные подходы, для достижения согласованности и производительности.
Регистрация тут
📚✏️ Категоризированный список всех функций Java и JVM начиная с JDK 8 по 21
С момента выпуска версии 8 и вплоть до версии 21 Java формировалась с помощью 232 JDK Enhancement Proposals (JEPs) и множества других небольших обновлений, каждое из которых привносит некоторые улучшения в платформу.
Полный список JEP можно найти на веб-сайте OpenJDK в рамках проектов jdk и jdk9.
Новые языковые возможности
🔹 Pattern Matching для switch type и guarded patterns
🔹 Record Patterns для switch и instanceof для деконструкции сложных вложенных структур
🔹 Безымянные переменные
В статье вас ждет больше примеров нововведений
#гайд
С момента выпуска версии 8 и вплоть до версии 21 Java формировалась с помощью 232 JDK Enhancement Proposals (JEPs) и множества других небольших обновлений, каждое из которых привносит некоторые улучшения в платформу.
Полный список JEP можно найти на веб-сайте OpenJDK в рамках проектов jdk и jdk9.
Новые языковые возможности
🔹 Pattern Matching для switch type и guarded patterns
String formatted = switch (o) {
case Integer i when i > 10 -> String.format(«a large Integer %d», i);
case Integer i -> String.format(«a small Integer %d», i);
case Long l -> String.format(«a Long %d», l);
default -> o.toString();
};
🔹 Record Patterns для switch и instanceof для деконструкции сложных вложенных структур
if (r instanceof ColoredPoint(Point2D(int x, int y), Color c)) {
// work with x, y, and c
}
🔹 Безымянные переменные
var _ = mySet.add(x); // ignore the return value
try {
// ...
} catch (Exception _) { // ignore the exception object
// ...
}
list.stream()
.map((_) -> /* ... */) // ignore the parameter
.toList();
В статье вас ждет больше примеров нововведений
#гайд
Книги The Garbage Collection Handbook: The Art of Automatic Memory Management
В книге рассматриваются новые проблемы сборки мусора, возникшие в результате последних достижений в области аппаратного и программного обеспечения. Исследуются последствия этих изменений для разработчиков и реализаторов высокопроизводительных сборщиков мусора. Наряду с простыми и традиционными алгоритмами в книге рассматриваются современные параллельные, инкрементные, сборки мусора в реальном времени. Алгоритмы и концепции часто описываются с помощью псевдокода и иллюстраций.
На нашем книжном канале вы можете найти уйму литературы, которая поможет решить любую встретившуюся задачу.
В книге рассматриваются новые проблемы сборки мусора, возникшие в результате последних достижений в области аппаратного и программного обеспечения. Исследуются последствия этих изменений для разработчиков и реализаторов высокопроизводительных сборщиков мусора. Наряду с простыми и традиционными алгоритмами в книге рассматриваются современные параллельные, инкрементные, сборки мусора в реальном времени. Алгоритмы и концепции часто описываются с помощью псевдокода и иллюстраций.
На нашем книжном канале вы можете найти уйму литературы, которая поможет решить любую встретившуюся задачу.
Отложенная инициализация
Отложенная инициализация — это паттерн проектирования, который позволяет отложить создание объекта до момента его реального использования. Он полезен, когда создание объекта требует значительных ресурсов или происходит в условиях, когда объект может не понадобиться.
В Java есть несколько способов реализации отложенной инициализации. Два наиболее распространенных подхода — это использование двойной проверки и использование внутреннего класса. На картинке мы рассмотрели использование двойной проверки (Double-Checked Locking).
Отложенная инициализация — это паттерн проектирования, который позволяет отложить создание объекта до момента его реального использования. Он полезен, когда создание объекта требует значительных ресурсов или происходит в условиях, когда объект может не понадобиться.
В Java есть несколько способов реализации отложенной инициализации. Два наиболее распространенных подхода — это использование двойной проверки и использование внутреннего класса. На картинке мы рассмотрели использование двойной проверки (Double-Checked Locking).
Очередной #дайджест по Java
❎ Книга, Java: The Complete Reference — много примеров кода, комментариев к нему и заданий для закрепления материала.
❎ Пишем минимальный ActivityPub-сервер с нуля — основы протокола ActivityPub и минимально возможная реализация сервера
❎ Cloud Native + Spring Cloud: Руководство для начинающих — современный подход к созданию, развертыванию и управлению приложениями с помощью облачных вычислений
❎ hydra-java — проект-инкубатор, который упрощает работу с Hydra из java-приложений
❎ Docker Compose: MongoDB и Spring Boot с примерами — как докеризовать Spring Boot и MongoDB с помощью Docker Compose
❎ Книга, Java: The Complete Reference — много примеров кода, комментариев к нему и заданий для закрепления материала.
❎ Пишем минимальный ActivityPub-сервер с нуля — основы протокола ActivityPub и минимально возможная реализация сервера
❎ Cloud Native + Spring Cloud: Руководство для начинающих — современный подход к созданию, развертыванию и управлению приложениями с помощью облачных вычислений
❎ hydra-java — проект-инкубатор, который упрощает работу с Hydra из java-приложений
❎ Docker Compose: MongoDB и Spring Boot с примерами — как докеризовать Spring Boot и MongoDB с помощью Docker Compose
#вопросы_с_собеседования
Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
🔹 Существуют статические и нестатические блоки инициализации.
🔹 Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
🔹 Несколько блоков инициализации выполняются в порядке следования в коде класса.
🔹Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
🔹 Блок инициализации возможно создать и в анонимном классе.
Зачем нужны и какие бывают блоки инициализации?
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Книга Pro Spring 6: An In-Depth Guide to the Spring Framework
Эта книга выходит далеко за рамки основ: вы узнаете, как использовать новейший Spring Framework 6 для создания различных уровней и частей современных сложных корпоративных Java-прикладных систем, сверху донизу, включая доступ к данным, генерацию SQL с помощью jOOQ, персистентность с помощью Hibernate, транзакции, настройку безопасности, классические уровни web и презентаций и добавление некоторой реактивности.
#книги
Заполучить ее
В нашем книжном канале есть еще масса обучающей литературы, которая ждет вас 😉
Эта книга выходит далеко за рамки основ: вы узнаете, как использовать новейший Spring Framework 6 для создания различных уровней и частей современных сложных корпоративных Java-прикладных систем, сверху донизу, включая доступ к данным, генерацию SQL с помощью jOOQ, персистентность с помощью Hibernate, транзакции, настройку безопасности, классические уровни web и презентаций и добавление некоторой реактивности.
#книги
Заполучить ее
В нашем книжном канале есть еще масса обучающей литературы, которая ждет вас 😉
🎯🤔 Абстрактные классы и методы в Java
Абстракция — это процесс сокрытия деталей реализации и представления пользователю только существенных функций. Это позволяет нам сосредоточиться на том, что делает объект, а не на том, как он это делает.
В Java абстрактные классы и методы являются ключевыми инструментами для реализации абстракции. Абстрактные классы служат шаблонами для создания подклассов, в то время как абстрактные методы предоставляют схему поведения этих подклассов.
Читать статью
#обучалка
Абстракция — это процесс сокрытия деталей реализации и представления пользователю только существенных функций. Это позволяет нам сосредоточиться на том, что делает объект, а не на том, как он это делает.
В Java абстрактные классы и методы являются ключевыми инструментами для реализации абстракции. Абстрактные классы служат шаблонами для создания подклассов, в то время как абстрактные методы предоставляют схему поведения этих подклассов.
Читать статью
#обучалка