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
🔥2
Почему в доменной логике предпочтительнее DateTimeImmutable, а не DateTime?
Anonymous Quiz
4%
Immutable быстрее
79%
modify()/add() меняют сам объект, если он расшарен по ссылкам, появляются скрытые баги
8%
DateTime не умеет в таймзоны
9%
Immutable поддерживает больше форматов
👍4🔥1
Разработчику нужен стабильный результат, DevOps — контроль инфраструктуры, техлиду — правила для всей команды. Собрали это в одном посте 👇
Forwarded from Proglib.academy | IT-курсы
Но цель одна: перейти от случайных удачных запусков к управляемому процессу на реальном проекте — с понятными правилами, ревью, контролем расходов и безопасности
На курсе «ИИ для разработчиков» участники выстраивают такой процесс на практике: подключают инструменты, задают границы для агента и учатся понимать, где ему можно доверять работу, а где требуется проверка.
Please open Telegram to view this post
VIEW IN TELEGRAM
После POST UI должен видеть своё изменение, но проекции обновляются асинхронно. Что корректнее?
Anonymous Quiz
16%
Возвращать 200 и сразу читать из проекции
83%
Возвращать 202 Accepted + ссылку на статус, пока проекция не догонит
0%
Увеличить TTL кеша
2%
Синхронно ждать репликации БД
🥱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
This media is not supported in your browser
VIEW IN TELEGRAM
Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.
— когда дорогая модель действительно нужна, а когда хватит дешёвой;
— сколько стоит один прогон и куда уходят токены;
— какие задачи можно отдавать субагентам;
— как настроить маршрутизацию моделей;
— что проверять в AI-коде перед merge.
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP 8.4. Чему равно выражение array_is_list([0 => 'a', 2 => 'b'])?
Anonymous Quiz
36%
true
57%
false
4%
null
3%
TypeError
Forwarded from Библиотека программиста
Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?
Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.
В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP 8.4. В WeakMap есть один ключ-объект со значением 123. После unset последней обычной ссылки на объект что вернёт count($map)?
Anonymous Quiz
39%
0
25%
1
26%
null
10%
Ошибка
PHP 8.4. Что выведет код?
<?php
$left = ['timeout' => 10];
$right = ['timeout' => 20];
$union = $left + $right;
$merged = array_merge($left, $right);
echo $union['timeout'], ' ', $merged['timeout'];
👾 — 20 20
👍 — 10 20
🥰 — 10 10
⚡️ — Ошибка: массивы нельзя складывать
Оператор + объединяет массивы по ключам и при совпадении сохраняет значение из левого массива. array_merge для одинаковых строковых ключей берёт значение из более позднего массива. Здесь ключ timeout строковый: правила перенумерации числовых ключей не участвуют.
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: Array - Manual
Array Operators
👍8
До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.
Например, можно совместить:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽
Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога.
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP 8.4. Что выведет код?
<?php
$data = ['token' => null];
var_dump(isset($data['token']));
var_dump(array_key_exists('token', $data));
👾 — true, затем true
👍 — true, затем false
🥰 — false, затем false
⚡️ — false, затем true
isset возвращает false, если значение равно null. array_key_exists проверяет наличие самого ключа, а не значение под ним. Ключ token существует, хотя в нём хранится null.
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: isset - Manual
Determine if a variable is declared and is different than null
⚡11
PHP 8.4. Что выведет код?
<?php
$value = 10;
$arrow = fn() => $value;
$reference = function () use (&$value) {
return $value;
};
$value = 20;
echo $arrow(), ' ', $reference();
👾 — 10 20
👍 — 20 20
🥰 — 10 10
⚡️ — Ошибка компиляции
Стрелочная функция автоматически захватывает внешнюю переменную по значению: для arrow сохраняется число 10. Замыкание с use (&$value) захватывает переменную по ссылке и при вызове видит уже 20. В задаче используется число, а не объект.
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: Arrow Functions - Manual
👾4
PHP 8.4. Что выведет код?
<?php
class Profile {
public string $name = 'Ann';
}
class User {
public Profile $profile;
}
$original = new User();
$original->profile = new Profile();
$copy = clone $original;
$copy->profile->name = 'Bob';
echo $original->profile->name;
👾 — Ann
👍 — Ошибка: вложенный объект нельзя менять
🥰 — Bob
⚡️ — Ошибка: clone запрещён без __clone
Без дополнительной логики __clone выполняется поверхностное копирование свойств. original и copy — разные объекты User, но их свойства profile указывают на один Profile. Изменение его name видно через оба контейнера. Для независимого Profile его нужно клонировать отдельно.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2⚡1🥰1
В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок.
Например, можно совместить два направления по работе с ИИ:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога.
Акция действует до 31 октября включительно
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱2
PHP 8.4. Что выведет код?
<?php
$value = '1';
$result = match ($value) {
1 => 'integer',
'1' => 'string',
default => 'other',
};
echo $result;
👾 — integer
👍 — string
🥰 — other
⚡️ — UnhandledMatchError
match сравнивает значение с вариантами строго, как оператор ===. Строка '1' не равна целому числу 1 при таком сравнении. Совпадает вторая ветка, поэтому результат — string.
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: match - Manual
👍11
PHP 8.4. Что выведет код?
<?php
class User {
public string $name = 'Ann';
}
class Box {
public function __construct(
public readonly User $user
) {}
}
$box = new Box(new User());
$box->user->name = 'Bob';
echo $box->user->name;
👾 — Ошибка: readonly запрещает любое изменение
👍 — Ann
🥰 — Ошибка: readonly нельзя применять к объектам
⚡️ — Bob
readonly запрещает после инициализации переназначать свойство user, но не делает сам объект User неизменяемым. Изменение его обычного свойства name допустимо. А присваивание $box->user = new User() после инициализации привело бы к Error.
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: Properties - Manual
⚡6👾3
PHP 8.4. Что выведет код?
<?php
$values = [1, 2, 3];
foreach ($values as &$value) {
}
foreach ($values as $value) {
}
echo implode(',', $values);
👾 — 1,2,3
👍 — 1,2,2
🥰 — 3,3,3
⚡️ — Ошибка выполнения
После первого цикла $value остаётся ссылкой на последний элемент массива. Второй цикл присваивает ей очередные значения и тем самым меняет этот элемент. Чтобы убрать связь, после цикла по ссылке нужно вызвать unset($value).
Please open Telegram to view this post
VIEW IN TELEGRAM
www.php.net
PHP: foreach - Manual
👍5