🔥 Открытое занятие по AgentOps — курс стартовал!
Сегодня в 19:00 по МСК пройдет первое занятие нового потока, на которое может прийти каждый. Оцените пользу нашего подхода на ретрансляции урока в VK!
👨💻 Спикер: Андрей Носов
Тема: Архитектура управления: state machine для AI-агентов
Будем разбираться, как использовать State machine в качестве главного оружия против стохастики (непредсказуемости) LLM.
Что в программе:
● State machine: инварианты и терминальные состояния;
● Паттерны маршрутизации: Supervisor, ReAct, Plan-and-Solve;
● Детекция циклов и настройка аварийных выходов;
● Абстракция от модели: как сделать каркас, который переживет смену LLM/провайдера;
● Адаптация графов под ограничения локальных моделей;
● Версионирование графов и миграции стейта.
Результат занятия: Вы поймете, как спроектировать надежный каркас агента с жестким контролем исполнения и переходов.
👉 Подписывайтесь на нашу группу ВКонтакте, чтобы не пропустить старт трансляции!
Сегодня в 19:00 по МСК пройдет первое занятие нового потока, на которое может прийти каждый. Оцените пользу нашего подхода на ретрансляции урока в VK!
👨💻 Спикер: Андрей Носов
Тема: Архитектура управления: state machine для AI-агентов
Будем разбираться, как использовать State machine в качестве главного оружия против стохастики (непредсказуемости) LLM.
Что в программе:
● State machine: инварианты и терминальные состояния;
● Паттерны маршрутизации: Supervisor, ReAct, Plan-and-Solve;
● Детекция циклов и настройка аварийных выходов;
● Абстракция от модели: как сделать каркас, который переживет смену LLM/провайдера;
● Адаптация графов под ограничения локальных моделей;
● Версионирование графов и миграции стейта.
Результат занятия: Вы поймете, как спроектировать надежный каркас агента с жестким контролем исполнения и переходов.
👉 Подписывайтесь на нашу группу ВКонтакте, чтобы не пропустить старт трансляции!
🥰2
В Wasp объяснили, почему в экосистеме JavaScript нельзя просто установить один пакет, который сразу добавит UI, серверную логику, миграции и API.
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4
Иногда ветку удаляют по ошибке — локально или даже на удалённом репозитории. А потом всплывает, что там был нужный код или незавершённая работа. Поднимать заново неудобно, особенно если не помнишь последний коммит.
Решение:
git reflog
git checkout -b my-branch <commit_hash>
— git reflog покажет историю всех действий, даже удалённых веток,
— можно найти нужный commit_hash,
— checkout -b создаст ветку заново с того же коммита.
#readme #git
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🥰4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
В Safari появилась поддержка display: grid-lanes — нового режима раскладки для Pinterest-подобных сеток.
Теперь карточки разной высоты можно размещать без JavaScript и сторонних библиотек:
.container {
display: grid-lanes;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
Apple подготовила отдельный сайт с примерами, интерактивными демо и подробным гайдом по новой возможности.
⚠️ Пока grid-lanes работает только в Safari.
#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🥰4👍2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Оказывается, для этого уже есть calc-size().
Вместо фиксированной высоты можно написать:
min-block-size: calc-size(fit-content, min(size, 12em));
max-block-size: calc-size(stretch, min(size, 30em));
Такой подход позволяет <select> автоматически подстраиваться под количество элементов, но при этом не занимать весь экран и не становиться слишком маленьким.
Пока calc-size() поддерживается не везде, поэтому автор показывает, как реализовать кроссбраузерный fallback.
#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🥰3
This media is not supported in your browser
VIEW IN TELEGRAM
🎨 Meta открыла исходный код своей дизайн-системы Astryx
Компания выложила в open source Astryx — внутреннюю дизайн-систему, которую использует уже более 8 лет.
Что внутри:
🔹 150+ готовых UI-компонентов;
🔹 7 встроенных тем оформления;
🔹 поддержка кастомизации;
🔹 ориентирована на создание крупных интерфейсов.
🤖 Хотите глубже разобраться, как AI помогает в современной разработке? Посмотрите курс по AI-агентам в Proglib Academy 🔗
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#stack
Компания выложила в open source Astryx — внутреннюю дизайн-систему, которую использует уже более 8 лет.
Что внутри:
🔹 150+ готовых UI-компонентов;
🔹 7 встроенных тем оформления;
🔹 поддержка кастомизации;
🔹 ориентирована на создание крупных интерфейсов.
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥5🥰3
🔥 Каверзный вопрос с собеса
Метод
🔍 Что происходит на самом деле:
➕ radix = 0 означает автоопределение системы счисления:
• если строка начинается с '0x' или '0X' → основание = 16
• во всех остальных случаях → используется основание = 10
Поэтому '1' интерпретируется как десятичная.
➕ системы счисления с основанием 1 не существует => Nan
➕ '11' в двоичной системе — это 3₁₀ => 3
❇️ parseInt('11', 2) парсит всю строку как двоичную, потому что она корректна полностью.
Распространённый миф — будто бы берётся только первый символ; это неверно.
✅ Как исправить:
Или проще:
🐸 Библиотека фронтендера
#career_merge #middle
Метод
.map() передаёт в колбэк три аргумента: текущий элемент, индекс и исходный массив. Функция parseInt принимает: строку и radix — основание системы счисления. Поэтому индекс массива попадает в radix.
parseInt('1', 0)
• если строка начинается с '0x' или '0X' → основание = 16
• во всех остальных случаях → используется основание = 10
Поэтому '1' интерпретируется как десятичная.
parseInt('7', 1)
parseInt('11', 2)
Распространённый миф — будто бы берётся только первый символ; это неверно.
['1', '7', '11'].map(str => parseInt(str))
Или проще:
['1', '7', '11'].map(Number)
#career_merge #middle
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰5👍4🌚2👏1
🔥 ИИ-выходные: Собери своего AI-агента за 2 дня
Хватит просто читать про ИИ, пора собирать автономные системы руками! 1–2 августа пройдет хардкорный онлайн-интенсив для junior-middle разработчиков.
Формат: теория ➡️ сразу практика. Вы будете управлять AI-инструментами.
🛠️ Как всё пройдет:
Для кого: Вы пишете на Python, работаете с Git и терминалом. (С нуля не подойдет, темп очень быстрый!)
Артефакт на выходе: Рабочий репозиторий с вашим агентом, который не стыдно показать команде.
👨💻 Спикер: Алексей Жиряков (Сбер, GenAI).
Места ограничены!
👉 Изучить программу и занять место
Хватит просто читать про ИИ, пора собирать автономные системы руками! 1–2 августа пройдет хардкорный онлайн-интенсив для junior-middle разработчиков.
Формат: теория ➡️ сразу практика. Вы будете управлять AI-инструментами.
🛠️ Как всё пройдет:
День 1 (Суббота): разбираем анатомию агента, подключаем инструменты (shell, GitHub, Postgres) и дебажим трейсы.
День 2 (Воскресенье): собираем собственного агента под вашу задачу, настраиваем Eval + Guardrails (чтобы бот не галлюцинировал) и проводим демо.
Для кого: Вы пишете на Python, работаете с Git и терминалом. (С нуля не подойдет, темп очень быстрый!)
Артефакт на выходе: Рабочий репозиторий с вашим агентом, который не стыдно показать команде.
👨💻 Спикер: Алексей Жиряков (Сбер, GenAI).
Места ограничены!
👉 Изучить программу и занять место
❤3🥰2🙏2
React Tips - Memoization is NOT a Performance Strategy.pdf
300.3 KB
Когда приложение начинает тормозить, многие сразу добавляют useMemo, useCallback или React.memo. На практике главный прирост производительности чаще дает архитектура компонентов.
Что действительно помогает:
🔵 держать состояние как можно ближе к месту использования;🔵 не поднимать state выше, чем это необходимо;🔵 уменьшать количество лишних ререндеров;🔵 использовать мемоизацию только там, где она действительно оправдана.
#under_hood #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍4🥰2
Главное изменение релиза — нативный порт TypeScript на Go. Теперь tsc, language server, автодополнение, диагностика и --watch работают заметно быстрее, особенно на больших кодовых базах.
По данным команды TypeScript, на крупных проектах ускорение сборки обычно составляет 8–12x. Например:
🔵 VS Code: 125.7s → 10.6s🔵 Sentry: 139.8s → 15.7s🔵 Playwright: 12.8s → 1.47s
В TypeScript 7.0 пока нет стабильного программного API, поэтому часть инструментов и фреймворков вроде Vue, Astro, Svelte, MDX и Angular-шаблонов может пока оставаться на TypeScript 6.
#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
👏7🥰3🔥2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15
🤨 Как заставить AI-агента не ломать архитектуру, а нормально писать код?
Мы привыкли общаться с ИИ промптами, но для автономных систем это путь к бесконечным циклам и сливу бюджета. Чтобы убрать хаос, инженеры переходят на Spec-Driven Development (SDD).
Вот как этот подход меняет работу агента на практике:
🔹Контракт вместо текста. Сначала пишется строгая спецификация (JSON-схема/OpenAPI) и автотесты. Агент зажат в рамки интерфейсов, за которые физически не может выйти.
🔹Контроль на шагах. Внутри петли Think-Act-Observe агент сверяет действия со спецификацией.
🔹Саморефлексия. Если ИИ нарушил типы или «додумал» лишнее, тест падает. Агент получает ошибку в контекст и сам правит код, не выходя за рамки ТЗ.
Это лишь база того, как укротить ИИ-разработку. Если вы хотите глубоко внедрить эту методологию, научиться проектировать архитектурные контракты и собирать отказоустойчивые системы — оставляйте заявку на наш новый курс по Spec-Driven Development. Стартуем совсем скоро🙂
Мы привыкли общаться с ИИ промптами, но для автономных систем это путь к бесконечным циклам и сливу бюджета. Чтобы убрать хаос, инженеры переходят на Spec-Driven Development (SDD).
Вот как этот подход меняет работу агента на практике:
🔹Контракт вместо текста. Сначала пишется строгая спецификация (JSON-схема/OpenAPI) и автотесты. Агент зажат в рамки интерфейсов, за которые физически не может выйти.
🔹Контроль на шагах. Внутри петли Think-Act-Observe агент сверяет действия со спецификацией.
🔹Саморефлексия. Если ИИ нарушил типы или «додумал» лишнее, тест падает. Агент получает ошибку в контекст и сам правит код, не выходя за рамки ТЗ.
Это лишь база того, как укротить ИИ-разработку. Если вы хотите глубоко внедрить эту методологию, научиться проектировать архитектурные контракты и собирать отказоустойчивые системы — оставляйте заявку на наш новый курс по Spec-Driven Development. Стартуем совсем скоро🙂
🥰3
В этой подборке мы сосредоточимся на использовании watch и watchEffect в Vue.js для отслеживания изменений в данных и выполнения действий в ответ на эти изменения.
1. Watch и WatchEffect на практике — примеры самых часто используемых компонентов вместе с наблюдателями.
2. Работа с состоянием во Vue и React — отличия, использование, как перекликаются между двумя фреймворками.
3. watch vs watchEffect — когда использовать какой подход
4. Как выбрать библиотеку для управления состоянием — преимущества и недостатки Vuex и Pinia, а также советы по выбору подходящего инструмента для вашего проекта.
5. watchEffect — введение в watchEffect, который автоматически отслеживает все реактивные зависимости внутри своей функции.
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🥰3🙏1🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
Если устали каждый раз искать хорошие библиотеки, сервисы или статьи — сохраните эту подборку.
Внутри:
🈂️ обучающие материалы и документация🈂️ UI-библиотеки и компоненты🈂️ CSS- и JavaScript-инструменты🈂️ API и полезные сервисы🈂️ хостинги и платформы для деплоя🈂️ браузерные расширения🈂️ генераторы, онлайн-инструменты и многое другое
Проект регулярно обновляется, а все материалы доступны как на сайте, так и на GitHub
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🔥2🥰1
В новой версии стандарта появилось сразу несколько полезных возможностей:
Array.fromAsync() — превращает асинхронный итератор в массив без for await.Error.isError() — безопасная проверка, действительно ли объект является ошибкой.Math.sumPrecise() — более точное сложение чисел с плавающей точкой.Iterator.concat() — объединение нескольких итераторов одной строкой.JSON.parse() — доступ к исходному тексту значения, что упрощает работу с BigInt и очень большими числами.Map.getOrInsert() — добавляет значение только при отсутствии ключа, избавляя от привычной связки has() + set().Большинство нововведений небольшие, но они делают код заметно чище и постепенно избавляют от вспомогательных утилит.
#release_digest #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🥰3
Media is too big
VIEW IN TELEGRAM
🔥 Не называйте любого продвинутого чат-бота «ИИ-агентом»!
Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru, наглядно разбирает уровни абстракции ИИ-продуктов и убирает путаницу в понятиях.
Что внутри видео:
- Почему ассистент и агент принципиально разные сущности;
- Как ассистент может быть просто «обёрткой» над LLM, а может скрывать под капотом сложнейшую мультиагентную систему;
- Как понимать архитектуру глубже, чтобы проектировать сильные решения.
Начните создавать агентные системы с нашего бесплатного демо-урока. Всего за 2 часа разберем внутреннее устройство агента, научим его чинить свой собственный код и сохранять контекст после перезапуска.
🔗 Забрать бесплатный демо-урок
Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru, наглядно разбирает уровни абстракции ИИ-продуктов и убирает путаницу в понятиях.
Что внутри видео:
- Почему ассистент и агент принципиально разные сущности;
- Как ассистент может быть просто «обёрткой» над LLM, а может скрывать под капотом сложнейшую мультиагентную систему;
- Как понимать архитектуру глубже, чтобы проектировать сильные решения.
Начните создавать агентные системы с нашего бесплатного демо-урока. Всего за 2 часа разберем внутреннее устройство агента, научим его чинить свой собственный код и сохранять контекст после перезапуска.
🔗 Забрать бесплатный демо-урок
🥰4
Проблема: повторное использование логики состояния формы может привести к дублированию кода и усложнению поддержки.
Решение: в книге «Learn React Hooks, 2nd Edition» автор предлагает создать пользовательский хук useFormStatus для инкапсуляции логики состояния формы, что позволяет повторно использовать её в разных компонентах.
Пример кода:
import { useState } from 'react';
function useFormStatus() {
const [isSubmitting, setIsSubmitting] = useState(false);
const [error, setError] = useState(null);
const submit = async (action) => {
setIsSubmitting(true);
try {
await action();
} catch (err) {
setError(err);
} finally {
setIsSubmitting(false);
}
};
return { isSubmitting, error, submit };
}
function LoginForm() {
const { isSubmitting, error, submit } = useFormStatus();
const handleSubmit = () => {
submit(async () => {
// Асинхронная отправка данных
});
};
return (
<form onSubmit={handleSubmit}>
<button type="submit" disabled={isSubmitting}>
{isSubmitting ? 'Submitting...' : 'Submit'}
</button>
{error && <p>{error.message}</p>}
</form>
);
}
Преимущества:
— Инкапсуляция логики состояния формы.
— Повторное использование кода.
— Упрощение компонентов форм.
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥰2
🤔 Что изменится после того, как пользователь введёт текст в <input>?
❤️ — атрибут value
🔥 — свойство value
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#code_challenge
❤️ — атрибут value
🔥 — свойство value
#code_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤5
В JavaScript одну и ту же функцию можно объявить по-разному — и это влияет на поведение кода.
В карточках разобрали:
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🥰2