Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇
Forwarded from Proglib.academy | IT-курсы
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из методов класса Object является устаревшим и не рекомендуется для использования в Java 9 и выше?
Anonymous Quiz
78%
finalize()
9%
notify()
11%
clone()
2%
toString()
👍1🥱1
Один доступ вместо вечного выбора между «нужно для работы» и «давно хотелось изучить» 👇
Forwarded from Proglib.academy | IT-курсы
Сегодня хочется разобраться в AI-агентах. Через пару недель появляется задача, где нужны алгоритмы. Потом понимаешь, что неплохо бы освежить Python или математику для Data Science.
В подписку Proglib Academy входят все основные направления — AI, ML, Python, алгоритмы, математика для DS и другие курсы, а ещё закрытый видеохаб с вебинарами практиков.
Начать можно с пробного месяца. Если решите остаться, его стоимость зачтётся при оформлении подписки
Please open Telegram to view this post
VIEW IN TELEGRAM
Какая временная сложность у contains() в ArrayList в худшем случае?
Anonymous Quiz
2%
O(log1)
6%
O(1)
82%
O(n)
10%
O(log n)
🥱2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.
— когда дорогая модель действительно нужна, а когда хватит дешёвой;
— сколько стоит один прогон и куда уходят токены;
— какие задачи можно отдавать субагентам;
— как настроить маршрутизацию моделей;
— что проверять в AI-коде перед merge.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека программиста
Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?
Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.
В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
OpenJDK 21. Что выведет код? Нужные импорты подключены.
var values = new ArrayList<>(List.of(1, 2, 3, 4));
var middle = values.subList(1, 3);
middle.clear();
System.out.println(values);
👾 — [1, 2, 3, 4]
👍 — [2, 3]
🥰 — [1, 4]
⚡️ — ConcurrentModificationException
subList возвращает представление части списка, связанное с исходным списком. Индекс 1 включён, индекс 3 не включён: middle содержит 2 и 3. Вызов clear удаляет эти элементы из исходного ArrayList.
Please open Telegram to view this post
VIEW IN TELEGRAM
Oracle
ArrayList (Java SE 21 & JDK 21)
declaration: module: java.base, package: java.util, class: ArrayList
🥰6👾4👍2
До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.
Например, можно совместить:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽
Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога.
Please open Telegram to view this post
VIEW IN TELEGRAM
OpenJDK 21. Что выведет код? Нужные импорты подключены.
class Demo {
static void change(StringBuilder text) {
text.append("B");
text = new StringBuilder("C");
text.append("D");
}
public static void main(String[] args) {
var text = new StringBuilder("A");
change(text);
System.out.println(text);
}
}👾 — AB
👍 — CD
🥰 — ABCD
⚡️ — Ошибка компиляции
Java передаёт значение ссылки. Сначала параметр text и переменная вызывающего кода указывают на один StringBuilder, поэтому append("B") виден снаружи. Затем параметр получает ссылку на другой объект. Это не переназначает переменную в main.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾9👍8
OpenJDK 21. Что выведет код? Нужные импорты подключены.
class Demo {
static class Resource implements AutoCloseable {
public void close() {
throw new IllegalStateException("close");
}
}
public static void main(String[] args) {
try (var resource = new Resource()) {
throw new IllegalArgumentException("body");
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println(
e.getSuppressed()[0].getMessage()
);
}
}
}👾 — close, затем body
👍 — Только close
🥰 — Ошибка компиляции
⚡️ — body, затем close
В try-with-resources исключение из тела остаётся основным. Ошибка при закрытии ресурса добавляется к нему как подавленная и доступна через getSuppressed(). Поэтому e содержит ошибку с сообщением body, а первый подавленный элемент — ошибку close.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡4🔥1
OpenJDK 21. Что выведет код? Нужные импорты подключены.
var stream = Stream.of("A", "B");
System.out.println(stream.count());
stream.forEach(System.out::println);👾 — 2, затем A и B
👍 — 2, затем IllegalStateException
🥰 — Только 2, без исключения
⚡️ — Ошибка компиляции
count — терминальная операция: поток уже использован. В OpenJDK 21 повторная терминальная операция на этом Stream.of вызывает IllegalStateException. Чтобы снова обработать те же данные, нужно создать новый поток из источника.
Please open Telegram to view this post
VIEW IN TELEGRAM
Oracle
Stream (Java SE 21 & JDK 21)
declaration: module: java.base, package: java.util.stream, interface: Stream
👍5👾1
В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.
Например, можно совместить два направления по работе с ИИ:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога.
Акция действует до 31 октября включительно
Please open Telegram to view this post
VIEW IN TELEGRAM
OpenJDK 21. Что выведет код? Нужные импорты подключены.
Integer value = null;
boolean useValue = true;
Integer result = useValue ? value : 0;
System.out.println(result);
👾 — null
👍 — 0
🥰 — NullPointerException
⚡️ — Ошибка компиляции
Ветви Integer и int образуют числовое условное выражение типа int. При выборе value требуется распаковать Integer в int. Но value равен null, поэтому возникает NullPointerException. Тип переменной result не отменяет эту распаковку.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰6👍1
OpenJDK 21. Что выведет код? Нужные импорты подключены.
var a = new BigDecimal("1.0");
var b = new BigDecimal("1.00");
var hash = new HashSet<BigDecimal>();
hash.add(a);
hash.add(b);
var tree = new TreeSet<BigDecimal>();
tree.add(a);
tree.add(b);
System.out.println(hash.size() + " " + tree.size());👾 — 2 1
👍 — 1 1
🥰 — 2 2
⚡️ — 1 2
HashSet опирается на equals и hashCode. Для BigDecimal equals учитывает и числовое значение, и scale: у 1.0 и 1.00 он различается. TreeSet без собственного компаратора использует compareTo, которое считает эти значения равными. Поэтому размеры — 2 и 1.
Please open Telegram to view this post
VIEW IN TELEGRAM
Oracle
BigDecimal (Java SE 21 & JDK 21)
declaration: module: java.base, package: java.math, class: BigDecimal
👾4👍1
Приглашаем на Java Jam — бесплатный митап ЮMoney для бэкенд-разработчиков 🔥
✅ 29 октября, четверг, 19:00 МСК — приходите на митап в Санкт-Петербурге или смотрите трансляцию.
Спикеры из ЮMoney и Сбера выступят с докладами:
🟣 Один апгрейд — больше сотни сервисов: как мы обновляем Java-стек в компании
Обсудим, как обновить Gradle, Spring Boot и Java в 120+ компонентах, не останавливая разработку. Расскажем, как выстраивали процессы на протяжении этого времени: от порядка действий и массовых патчей до взаимодействия с командами и решения трудностей, с которыми столкнулись во время последнего обновления.
🟣 Как я автоматизировал свой проект — и всё сломал
Разберём, как выстроить автоматизацию в проекте с помощью ИИ и какие шишки можно набить на пути. Поговорим, как работает длинный контекст в моделях и как организовать работу с учётом этих особенностей.
🟣 Откатить нельзя оставить: мониторинг выкладки релиза на основе Sentry
Ошибки случаются. Узнаем, какие из них появляются или возникают чаще после последнего релиза — и достаточно ли этого, чтобы принять решение об откате.
Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Java Jam👈
Спикеры из ЮMoney и Сбера выступят с докладами:
Обсудим, как обновить Gradle, Spring Boot и Java в 120+ компонентах, не останавливая разработку. Расскажем, как выстраивали процессы на протяжении этого времени: от порядка действий и массовых патчей до взаимодействия с командами и решения трудностей, с которыми столкнулись во время последнего обновления.
Разберём, как выстроить автоматизацию в проекте с помощью ИИ и какие шишки можно набить на пути. Поговорим, как работает длинный контекст в моделях и как организовать работу с учётом этих особенностей.
Ошибки случаются. Узнаем, какие из них появляются или возникают чаще после последнего релиза — и достаточно ли этого, чтобы принять решение об откате.
Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Java Jam
Please open Telegram to view this post
VIEW IN TELEGRAM
Java 21. Что выведет код?
import java.util.Arrays;
class Demo {
public static void main(String[] args) {
int[] numbers = {1, 2, 3};
var list = Arrays.asList(numbers);
System.out.println(list.size());
}
}
👾 — 3
👍 — 1
🥰 — 0
⚡️ — Ошибка компиляции
Метод получает один объект — массив int[]. Его элементы не превращаются автоматически в отдельные объекты Integer. Поэтому список содержит один массив. Для Integer[] результат был бы другим: список содержал бы три числа.
Please open Telegram to view this post
VIEW IN TELEGRAM
Oracle
Arrays (Java SE 21 & JDK 21)
declaration: module: java.base, package: java.util, class: Arrays
👍3❤1🔥1👾1