Самый страшный файл в проекте — тот, который «работает, не трогай» 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Proglib.academy | IT-курсы
У вас в проекте есть файл вроде utils_v2_final_FIX.py, который все боятся трогать ❓
Что делаете с таким легаси?
❤️ Не трогаю: работает — и ладно
👍 Переписываю с нуля и надеюсь на лучшее
🔥 Сначала покрываю тестами, потом рефакторю по частям
👾 У нас такого нет — честно-честно
На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов.
До 31 июля действует скидка и бессрочный доступ к материалам.
🔗 Занять место со скидкой
🏃♀️ Proglib Academy
Что делаете с таким легаси?
❤️ Не трогаю: работает — и ладно
👍 Переписываю с нуля и надеюсь на лучшее
🔥 Сначала покрываю тестами, потом рефакторю по частям
👾 У нас такого нет — честно-честно
На курсе «ИИ для разработчиков» разберём третий подход: как с помощью агента зафиксировать текущее поведение легаси-кода тестами, а затем менять его небольшими безопасными шагами — без одного огромного PR на тысячу файлов.
До 31 июля действует скидка и бессрочный доступ к материалам.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾1
Разработчик, DevOps-инженер или техлид — у каждого своя причина навести порядок в работе с AI-агентами.
Разбираем, чем отличаются их задачи 😊
Разбираем, чем отличаются их задачи 😊
Forwarded from Proglib.academy | IT-курсы
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
Please open Telegram to view this post
VIEW IN TELEGRAM
В C++23 приняли P2718R0 — и старый баг range-for тихо исчез. Но не для всех временных объектов и не безусловно.
std::vector<int> getData() { return {1, 2, 3}; }
for (int x : getData() // временный 1
| filtered) // вью поверх него
std::cout << x;
Please open Telegram to view this post
VIEW IN TELEGRAM
Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механика. Нашли альтернативу 👇
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
❤1👍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
🧨 Задача: битовое поле, которое лжёт
Сделали компактную структуру флагов. Записали 1, сравниваем с 1 — не сходится. Призраки?
Задача: объясни, почему однобитное знаковое поле хранит не то, что ждёшь, и какое значение реально читается. Как объявить поле правильно?
Сделали компактную структуру флагов. Записали 1, сравниваем с 1 — не сходится. Призраки?
struct Flags { int active : 1; };
int main() {
Flags f;
f.active = 1;
if (f.active == 1)
std::cout << "ok\n"; // не печатает!
}
Задача: объясни, почему однобитное знаковое поле хранит не то, что ждёшь, и какое значение реально читается. Как объявить поле правильно?
❤1
Forwarded from Библиотека программиста
Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?
Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.
В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что сохраняет auto при чтении элемента vector<bool>?
C++20. Что выведет программа?
👾 — 0 0
👍 — 1 1
🥰 — 0 1
⚡️ — Ошибка компиляции
Ответ: 🥰 — 0 1.
snapshot — отдельное значение bool. А auto выводит для proxy тип std::vector<bool>::reference: это объект-посредник, связанный с битом вектора. После изменения flags[0] преобразование proxy в bool даёт true. Вектор не менял размер, поэтому proxy остаётся действительным.
Правило в проекте стандарта C++
Библиотека задач по C++
C++20. Что выведет программа?
#include <iostream>
#include <vector>
int main() {
std::vector<bool> flags{false};
bool snapshot = flags[0];
auto proxy = flags[0];
flags[0] = true;
std::cout << snapshot << ' '
<< static_cast<bool>(proxy);
}
👾 — 0 0
👍 — 1 1
🥰 — 0 1
⚡️ — Ошибка компиляции
snapshot — отдельное значение bool. А auto выводит для proxy тип std::vector<bool>::reference: это объект-посредник, связанный с битом вектора. После изменения flags[0] преобразование proxy в bool даёт true. Вектор не менял размер, поэтому proxy остаётся действительным.
Библиотека задач по C++
👾6🥰4
До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.
Например, можно совместить:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽
Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какое значение по умолчанию получит виртуальный метод?
C++20. Что выведет программа?
👾 — Derived 1
👍 — Derived 2
🥰 — Base 1
⚡️ — Ошибка компиляции
Ответ: 👾 — Derived 1.
Виртуальный вызов выбирает реализацию Derived::show. Но аргумент по умолчанию берётся из объявления, доступного через статический тип ref — Base&. Поэтому вызывается Derived::show(1).
Правило в проекте стандарта C++
Библиотека задач по C++
C++20. Что выведет программа?
#include <iostream>
struct Base {
virtual void show(int n = 1) {
std::cout << "Base " << n;
}
};
struct Derived : Base {
void show(int n = 2) override {
std::cout << "Derived " << n;
}
};
int main() {
Derived object;
Base& ref = object;
ref.show();
}
👾 — Derived 1
👍 — Derived 2
🥰 — Base 1
⚡️ — Ошибка компиляции
Виртуальный вызов выбирает реализацию Derived::show. Но аргумент по умолчанию берётся из объявления, доступного через статический тип ref — Base&. Поэтому вызывается Derived::show(1).
Библиотека задач по C++
👾9
Разделяют ли копии mutable-лямбды один счётчик?
C++20. Что выведет программа?
👾 — 1 2 3
👍 — 1 1 1
🥰 — Ошибка компиляции
⚡️ — 1 2 1
Ответ: ⚡️ — 1 2 1.
Захваченный по значению n хранится внутри объекта лямбды. При копировании next создаётся другой объект со своим n, пока равным нулю. mutable разрешает менять этот внутренний счётчик, но не объединяет состояние копий.
Правило в проекте стандарта C++
Библиотека задач по C++
C++20. Что выведет программа?
#include <iostream>
int main() {
auto next = [n = 0]() mutable {
return ++n;
};
auto copy = next;
std::cout << next() << ' ';
std::cout << next() << ' ';
std::cout << copy();
}
👾 — 1 2 3
👍 — 1 1 1
🥰 — Ошибка компиляции
⚡️ — 1 2 1
Захваченный по значению n хранится внутри объекта лямбды. При копировании next создаётся другой объект со своим n, пока равным нулю. mutable разрешает менять этот внутренний счётчик, но не объединяет состояние копий.
Библиотека задач по C++
⚡3👾3