Обратная связь: @proglibrary_feedback_bot Актуальные мероприятия по разработке: @event_listener_bot По вопросам рекламы @proglib_adv Прайс: @proglib_advertising http://ad.proglib.io/
💡 Универсальная шпаргалка по SQL: на заметку разработчику
🔗 Скачать в PDF-формате
😢 Я хожу на 30 собеседований в месяц. Это перебор или новая стратегия выживания
Мы вместе с Тпрогер разобрались, как разработчики видят найм в 2025 году — и почему многие вообще не доверяют рекрутерам.
➕ почему увольняются
➕ и почему не любят рекрутеров
🔗 Читайте исследование
🔥 Последняя неделя перед стартом курса по AI-агентам
Старт курса уже 5го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место
На курсе:
— разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах
📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями
И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»
👉 Курс здесь
🚴♂️ Бэкенд-разработка би лайк. Непонятно только — почему колеса не квадратные у велосипеда?
🐸 Книги для программистов
🎮 Реализация собственного симулятора квантового состояния (Hume)
Проблема: для понимания внутренней механики квантовых вычислений полезно иметь собственный симулятор. Однако большинство разработчиков используют готовые библиотеки (Qiskit, Cirq), что скрывает фундаментальные детали: как образуются суперпозиции, проводятся операции, как происходит измерение.
Решение: авторы предлагают построить пошаговый симулятор, реализованный на Python. Это не просто упражнение — это шанс "потрогать" основы: векторы состояния, гейты, измерения и крах симуляции при измерении. В репозитории из официального companion‑кода иллюстрируется весь процесс.
Ниже упрощённая версия – ключевые части симулятора из главы о квантовых состояниях:
import numpy as np
class QubitRegister:
def __init__(self, n):
self.n = n
# старт: |0…0⟩
self.state = np.zeros(2**n, dtype=complex)
self.state[0] = 1.0
def apply_gate(self, gate, target):
"""Применяет матричный gate к qubit 'target'"""
full = 1
for i in range(self.n):
full = np.kron(full, gate if i == target else np.eye(2))
self.state = full @ self.state
def measure(self):
probs = np.abs(self.state)**2
outcome = np.random.choice(len(probs), p=probs)
# Проекция на классическое состояние
result = np.zeros_like(self.state)
result[outcome] = 1.0
self.state = result
return bin(outcome)[2:].zfill(self.n)
# Использование:
qr = QubitRegister(2)
H = np.array([[1, 1], [1, -1]]) / np.sqrt(2)
qr.apply_gate(H, target=0) # суперпозиция первого qubit
print("Перед измерением:", qr.state)
print("Измерено:", qr.measure())
🎮 Создание пользовательского хука useFormStatus
Проблема: повторное использование логики состояния формы может привести к дублированию кода и усложнению поддержки.
Решение: в книге «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>
);
}
🎮 Обработка форм с использованием useActionState
Проблема: управление состоянием формы и её отправкой может быть сложным, особенно при наличии валидации и асинхронных операций.
Решение: в книге «Learn React Hooks, 2nd Edition» автор предлагает использовать хук useActionState для управления состоянием формы, включая её отправку и обработку ошибок.
Пример кода:
import React, { useState } from 'react';
function useActionState(initialState) {
const [state, setState] = useState(initialState);
const [isSubmitting, setIsSubmitting] = useState(false);
const [error, setError] = useState(null);
const submit = async (action) => {
setIsSubmitting(true);
try {
await action();
setState(initialState);
} catch (err) {
setError(err);
} finally {
setIsSubmitting(false);
}
};
return { state, isSubmitting, error, submit };
}
function LoginForm() {
const { state, isSubmitting, error, submit } = useActionState({
username: '',
password: '',
});
const handleSubmit = () => {
submit(async () => {
// Асинхронная отправка данных
});
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={state.username}
onChange={(e) => setState({ ...state, username: e.target.value })}
/>
<input
type="password"
value={state.password}
onChange={(e) => setState({ ...state, password: e.target.value })}
/>
<button type="submit" disabled={isSubmitting}>
{isSubmitting ? 'Submitting...' : 'Submit'}
</button>
{error && <p>{error.message}</p>}
</form>
);
}
🎮 Управление состоянием с использованием useReducer
Проблема: управление сложным состоянием в React-приложении может стать трудным и запутанным, особенно при наличии множества состояний и действий.
Решение: в книге «Learn React Hooks, 2nd Edition» автор предлагает использовать хук useReducer для централизованного управления состоянием. Это позволяет более эффективно обрабатывать сложные состояния и действия.
Пример кода:
import React, { useReducer } from 'react';
const initialState = { count: 0 };
function reducer(state, action) {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
throw new Error();
}
}
function Counter() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
<button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
</>
);
}
📖 Обзор книги «Learn React Hooks, 2nd Edition» (2025)
Современное практическое руководство по созданию масштабируемого, производительного и чистого React‑кода с использованием Hooks, Context, Suspense и Form Actions.
🔹 Основные темы книги
— Глубокое погружение в React 19 Hooks.
— Управление состоянием через Hooks и Context API.
— Эффективный fetch и кеширование данных с Suspense и TanStack Query.
— Обработка форм с Form Actions и Hooks, включая оптимистичный UI.
— Маршрутизация через React Router + Hooks.
— Создание собственных Hooks и тестирование.
— Рефакторинг классовых компонентов в функциональные с использованием хук‑подхода.
💬 Что говорят читатели
Эта книга — обязательна к прочтению для современных React-разработчиков, которые хотят писать более чистый, масштабируемый и легко поддерживаемый код с использованием Hooks… Практические проекты — отличная находка.
…от самых простых хуков до самых сложных — вы найдёте отличные примеры, которые помогают легко понять, как они работают.
Хотелось бы увидеть пошаговый подход с одним цельным проектом… Многие файлы отсутствуют в репозитории на GitHub.
‼️ Последний шанс вебинар уже СЕГОДНЯ в 19:00
«AI-агенты: Новый инструмент в арсенале DS-специалиста. Обзор курса»
Прекращаем писать вручную каждый скрипт, прямо сегодня можно узнать, как реализовать все ИИ-хотелки
➡️ Кто будет ведущий:
Никита Зелинский – Chief Data Scientist МТС, руководитель центра компетенций Data Science и head of ML Platforms Big Data МТС
➡️ На вебинаре разберем:
1. Содержание уроков курса:
🔵Что такое AI-агенты и как они работают «под капотом»
🔵Какие фреймворки и инструменты будем осваивать (LangChain, AutoGen, CrewAI и др.)
🔵Практические кейсы курса: от простых автономных скриптов до сложных агентских систем.
🔵Чему конкретно вы научитесь на каждом модуле
2. Применение агентов в мире и в МТС:
🔵Реальные примеры: как агенты уже меняют DS-практику глобально (автоматизация EDA, feature engineering, мониторинг, развертывание).
🔵Особый фокус: Как мы уже применяем и будем применять AI-агенты внутри МТС для решения бизнес-задач
🔵Какие задачи DS в МТС идеально ложатся на плечи агентов
🔵Перспективы: Куда движется это направление и как занять в нем лидирующую позицию
Не упусти свой шанс стать эффективнее уже сейчас!
📅 Дата: СЕГОДНЯ, 23 июня
⏰ Время: 19:00 (МСК)
📍 Формат: Онлайн-вебинар
👨💻 Ведущий: Никита Зелинский
👉 Бронируй свое место прямо сейчас!
P.S. Вебинар стартует через несколько часов — регистрируйся, пока не опоздал!
😱 Уже завтра — вебинар про AI-агентов! Мест почти не осталось
На вебинаре вы получите то, чего нет в открытых источниках — живой разбор, примеры и прямой диалог с экспертом. Но только если придёте.
➡️ Что будет:
— покажем структуру курса и ключевые модули
— обсудим вопросы, которые обычно остаются за кадром
— разберём реальные кейсы: как применять AI-агентов — от чат-ботов до систем поддержки решений
📅 Уже 23 июня в 19:00 МСК
🎙️ Ведёт Никита Зелинский — эксперт в AI и DS
👉 Зарегистрируйтесь заранее, чтобы не забыть:
https://clc.to/_lDV0Q
🫢 Для тех, кто дочитал до конца → промокод lucky, он даст −5.000₽ на курс
🎮 Реализация системы инвентаря в Unity 6 с использованием C#
Проблема: создание эффективной системы инвентаря является ключевым элементом в разработке игр, требующим динамичного управления предметами и их взаимодействиями.
Решение: в книге «Unity 6 Game Development with C# Scripting» автор предлагает подробное руководство по разработке системы инвентаря, используя возможности Unity и C#. Он акцентирует внимание на создании гибкой структуры данных, которая позволяет эффективно управлять предметами, их свойствами и взаимодействиями в игровом процессе.
Пример кода:
public class InventoryItem
{
public string itemName;
public Sprite itemIcon;
public int itemID;
public string itemDescription;
public InventoryItem(string name, Sprite icon, int id, string description)
{
itemName = name;
itemIcon = icon;
itemID = id;
itemDescription = description;
}
}
public class InventorySystem : MonoBehaviour
{
private List<InventoryItem> items = new List<InventoryItem>();
public void AddItem(InventoryItem newItem)
{
items.Add(newItem);
Debug.Log("Item added: " + newItem.itemName);
}
public void RemoveItem(InventoryItem itemToRemove)
{
if (items.Contains(itemToRemove))
{
items.Remove(itemToRemove);
Debug.Log("Item removed: " + itemToRemove.itemName);
}
else
{
Debug.Log("Item not found: " + itemToRemove.itemName);
}
}
public void DisplayInventory()
{
foreach (var item in items)
{
Debug.Log("Item: " + item.itemName + " | ID: " + item.itemID);
}
}
}
❓ Холивар: «Много разработчиков — много проблем?»
В книге «The Mythical Man-Month» Фред Брукс ещё в 70-х провозгласил:
«Добавление людей в отстающий проект только увеличивает сроки.»
🎮 Реализация аутентификации с использованием Spring Security
Проблема: обеспечение безопасности приложения требует надёжной системы аутентификации и авторизации пользователей.
Решение: в книге «Java 17 Backend Development» автор предлагает процесс настройки Spring Security для реализации аутентификации с использованием JWT-токенов.
Пример кода:
public class JwtAuthenticationFilter extends OncePerRequestFilter {
private final JwtTokenProvider tokenProvider;
public JwtAuthenticationFilter(JwtTokenProvider tokenProvider) {
this.tokenProvider = tokenProvider;
}
@Override
protected void doFilterInternal(HttpServletRequest request, FilterChain chain) throws ServletException, IOException {
String token = tokenProvider.resolveToken(request);
if (token != null && tokenProvider.validateToken(token)) {
String username = tokenProvider.getUsernameFromToken(token);
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(username, null, null);
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authentication);
}
chain.doFilter(request, response);
}
}
🧠 «Поиграйся с LLM, почитай про агентов — и сам поймёшь, как это работает»
Это один из самых бесполезных советов, который мы слышали в адрес тех, кто хочет разобраться в AI-агентах.
Поиграйся — это как?
Потыкать пару промптов в ChatGPT и решить, что теперь ты можешь строить мультиагентные системы? 🤡 Ну-ну.
AI-агенты — это не «очередная обёртка над GPT». Это архитектура. Состояния, инструменты, цепочки вызовов, память, оценка качества и адекватность поведения.
➡️ Чтобы разобраться, нужно:
— понимать, как устроен LLM под капотом
— уметь подключать внешние данные (RAG, retrievers, rerankers)
— уметь масштабировать и дебажить поведение агентов
— разбираться в фреймворках вроде AutoGen, CrewAI, LangChain
— знать, как всё это тащится в прод
Если вы реально хотите не «поиграться», а научиться собирать рабочие агентные системы — у нас стартует курс по разработке ИИ-агентов 5го июля
P.S: не упусти свой шанс, промокод: LASTCALL на 10.000₽
📖 Mastering Delphi 5: 2025 Annotated Edition (2025)
🕯 Возвращение легенды! Книга из времен, когда WinForms не было, а Object Pascal был живее всех живых.
Спойлер: код из 1999 до сих пор компилится и запускается на Windows 11. Это не баг. Это Delphi.
Эта книга — подарок сообществу к 30-летию Delphi. Внутри — аннотированное издание классической книги по Delphi с комментариями и информацией об основных изменениях в языке с момента первой публикации книги.
💭 Что люди говорят
I feel like Delphi, along with maybe VB6 and WinForms, have been the pinnacle of easy UI development, and things have gone significantly downhill since then. Especially on the web side, where even a single view sometimes requires having multiple unrelated dependencies (packers, builders, transpilers, etc.), often implicitly-configured to produce output, in head-space. And due to this dependency hell, when porting a project like this to a new platform, or just getting it to run, a slight change in the environment silently breaks the build.
🔢 Как Netflix считает миллиарды действий пользователей — и не сходит с ума?
Когда вы запускаете сериал на Netflix, кто-то считает это событие. И ещё 75k других событий — каждую секунду.
Чтобы справиться с таким объёмом, Netflix построил распределённый счётчик. Вот как он устроен:
❣️API: пользователи отправляют команды типа +1
, -1
, get
и clear
. Это всё проходит через Data Gateway.
❣️Логирование событий: каждое действие попадает в TimeSeries и получает уникальный ID (чтобы не посчитать дважды). Всё хранится в Cassandra.
❣️Агрегация: события собираются в батчи, агрегируются по времени (например, по минутам) и пишутся в другую базу.
❣️Быстрое чтение: счётчики кешируются в EVCache. Всё работает почти мгновенно — если кеш устарел, его тихо обновят в фоне.
📌 Благодаря этой архитектуре, Netflix держит 75k RPS со скоростью отклика в несколько миллисекунд. Красота? Да. Простота? Не совсем. Но работает чётко.
🐸 Книги для программистов
🔫 Манифест каждого продакта за два дня до релиза
🐸 Книги для программистов
📖 Обзор книги «Building Quantum Software in Python: A Developer’s Guide» (2025)
Практическое руководство, ориентированное на разработчиков, стремящихся применять Python для создания решений в области квантовых вычислений на симуляторах и реальных устройствах.
🔹 Основные темы книги
— Основы квантовых состояний, вентилей и схем
— Визуализация и интуитивное объяснение без сложной математики
— Реализация квантовых алгоритмов
— Работа на симуляторах и взаимодействие с реальным квантовым оборудованием
— Решение прикладных задач
— Гибридные квантово-классические архитектуры и когда их применять
💬 Что говорят читатели
Книга отличная – она шаг за шагом проведёт вас через принципы, концепции, теорию и практические приёмы разработки квантового ПО на Python. Всё изложено чётко и логично.
Building Quantum Software предлагает исключительное практическое руководство по созданию квантовых алгоритмов… через подробные объяснения, ясную визуальную подачу и примеры кода. Настоятельно рекомендую как новичкам, так и тем, кто хочет трансформировать своё понимание квантовых вычислений.
Издание фокусируется на визуализации и простых примерах, но иногда материал остаётся слишком абстрактным и не показывает, как это всё применять в реальном коде или с квантовым оборудованием.
🤯 Мы больше года строим мультиагентные системы
Грабли, находки, паттерны, эксперименты — всё это накопилось и в какой-то момент стало жалко держать только у себя.
Никита — рассказывает (и показывает) базу: токенизация, LLM, SFT, PEFT, локальный инференс + RAG и как оценивать его качество.
Диана — как строят мультиагентные системы, какие есть паттерны проектирования и библиотеки.
Макс — про инференс в проде + разберет CoPilot, соберет с вами из кусочков свой копайлот, а затем его сломает через prompt injection. // Макс фанат autogen (а если нет — он вас разубедит в своем классном канале)
Финальным аккордом Дима углубится в MCP и соберет несколько кейсов повзрослее.
Курс тут: https://clc.to/47pgYA
Промокод: datarascals действует до 23:59 29 июня
📖 Обзор книги «Apache Kafka in Action: From basics to production» (2025)
Практическое руководство, ориентированное на разработчиков, операторов и архитекторов, стремящихся эффективно внедрять Apache Kafka в продакшн-решения.
🔹 Основные темы книги
— Основы Apache Kafka
— Обеспечение надёжности и высокой производительности
— Настройка, управление кластером и мониторинг
— Диагностика ошибок, управление отказами и аварийное восстановление
— Шаблоны использования, антишаблоны, кейсы
— Интеграция Kafka с другими сервисами, коннекторы, governance и enterprise best practices
💬 Что говорят читатели
Доступная, практичная, хорошо иллюстрированная и лёгкая для восприятия
Путь от новичка до профессионала в понимании и использовании Kafka!
Книга плохо организована и трудно воспринимается. Она начинается с тривиальных, почти детских примеров, а затем резко переходит к концепциям, которые сильно опережают уровень читателя…
📝 Немного инсайтов из третьего модуля курса
Сейчас большинство представлений об ИИ ограничиваются одним агентом — моделькой, которая что-то предсказывает, генерирует или классифицирует.
Но реальный прорыв начинается, когда этих агентов становится несколько.
Когда они начинают взаимодействовать друг с другом.
Когда появляется координация, распределение ролей, память, планирование — всё это и есть мультиагентные системы (MAS).
➡️ Пока кто-то думает, что это звучит как научная фантастика, индустрия уже переходит к новым уровням сложности:
— Microsoft делает язык DroidSpeak для общения между LLM
— Open Source-фреймворки вроде LangChain, AutoGen, CrewAI, LangGraph — бурно развиваются
— компании, включая МТС, уже применяют MAS в боевых задачах
🎓 На курсе мы подходим к этому практично:
🔵 разбираем, как устроены MAS
🔵 пишем агентов с нуля
🔵 учимся выстраивать взаимодействие: конкуренцию, кооперацию, планирование
Именно на третьем уроке вы впервые собираете не просто «умного бота», а живую систему из агентов, которая работает вместе — как команда.
Причём по-настоящему: врач, SQL-аналитик, travel-планировщик, Python-генератор, поисковик.
🙂 Если хочется не просто использовать ИИ, а проектировать системы, которые думают, планируют и сотрудничают → тогда забирайте курс по ИИ-агентам
🎮 Реализация смарт контракта
Проблема: разработка смарт-контрактов для блокчейн-приложений требует надежного и безопасного кода, который бы эффективно взаимодействовал с различными блокчейн-технологиями.
Решение: в книге «Rust for Blockchain Application Development» автор предлагает подробное руководство по созданию децентрализованных приложений с использованием Rust и популярных блокчейн-технологий. В частности, книга рассказывает, как создать смарт-контракт для управления активами в блокчейне, используя возможности Rust и фреймворк Substrate.
Пример кода:
use frame_support::{decl_module, dispatch::DispatchResult};
use frame_system::ensure_signed;
pub trait Config: frame_system::Config {}
decl_module! {
pub struct Module<T: Config> for enum Call where origin: T::Origin {
#[weight = 10_000]
pub fn transfer(origin, to: T::AccountId, amount: u32) -> DispatchResult {
let sender = ensure_signed(origin)?;
// Логика перевода активов
// Например, обновление баланса отправителя и получателя
Ok(())
}
}
}
📚 Топ-4 книги по тестированию
1️⃣ Принципы юнит-тестирования
Научитесь разрабатывать тесты профессионального уровня, без ошибок автоматизировать процессы тестирования, а также интегрировать тестирование в жизненный цикл приложения.
2️⃣ Шпаргалка начинающего тестировщика
Руководство, которое поможет разобраться в основах тестирования, важных терминах и методологиях, используемых в этой области. Оно содержит множество примеров, иллюстраций и практических советов.
3️⃣ Искусство тестирования на проникновение в сеть
В книге много практики от подбора паролей до обнаружения открытых портов и повышения привилегий доступа до уровня администратора, вы на практике освоите, какие существуют сетевые уязвимости и как ими воспользоваться.
4️⃣ Python. Разработка на основе тестирования
Книга демонстрирует преимущества методологии разработки через тестирование (TDD) на языке Python. Вы научитесь писать и выполнять тесты для создания любого фрагмента вашего приложения и затем разрабатывать минимальный объем программного кода, необходимого для прохождения этих тестов.
🐸 Книги для программистов
😤 «AI-агенты — это всё игрушки, зачем на это курс покупать, когда всё есть в интернете?!»
Ага, конечно. Вот только на YouTube никто не:• Разберет твои вопросы вживую
• Не покажет, как применять AI-агентов на практике
• Не поможет встроить это в реальную работу DS-специалиста
Уже 23 июня в 19:00 по МСК ты можешь сам всё узнать на бесплатном вебинаре с экспертом Никитой Зелинским.
👉 Что будет на вебинаре:
— Разбор структуры курса
— Ответы на частые вопросы студентов
— Примеры из реальных проектов с AI-агентами
— И, конечно, как это всё можно использовать в работе прямо сейчас
А если уже всё понял и хочешь идти учиться — лови промокод lucky на 5.000₽
🔗 Ссылка на курс
P.s. Ждем тебя!
🚨 ИИ уже съел ваше место?
Стоп. Давайте без паники и хайпа.
Пока одни кричат «ИИ всех заменит!», другие спокойно получают оффер за оффером. Пока CEO сокращают команды «из-за ИИ», разработчики с нужными скиллами поднимают зарплаты.
Мы копаем глубже твиттеров «экспертов» и собираем данные от тех, кто каждый день коммитит, деплоит, фиксит баги — но в этом нам нужна ваша помощь.
❓Хотим понять:
— Кого действительно уволили и почему
— Как изменились задачи разработчиков
— Где ИИ помогает, а где только мешает
— Какие роли появились, какие исчезли
— Сколько платят тем, кто «дружит» с ИИ
Без буллшита — только цифры и факты. Результаты будут открыты для всех.
📊 Чем больше участников — тем точнее картина. Поделитесь опытом: https://clc.to/aFntFw
🔥 Бесплатный практикум: AI для разработчиков
📅 24–25 июня
🕐 В 19:00 МСК
💸 Участие бесплатное
Мы проводим двухдневную встречу для тех, кто пишет код и хочет разобраться, как ИИ меняет подход к работе. Наши спикеры — сильные практики.
24 июня — разработка с AI
— Обзор актуальных инструментов
— Эффективная генерация кода
— Покажем, как настраивать стиль кода под себя
— Рефакторинг с помощью AI
— Генерация unit тестов
— Code review
— Тесты и безопасность кода
— Обсудим, куда всё это движется и что с этим делать нам, разработчикам
25 июня — как превратить AI в рост твоей зп
— Что происходит на рынке прямо сейчас — и зачем тебе AI
— Copilot, ChatGPT, Gigachat, Deepseek - обзор каждой, для каких задач пригодятся и как их использовать
— MCP сервера и roo code - краткое описание + реальные примеры
➡ Какой формат встречи:
2 прямых эфира 24 и 25 июня в 19:00
• Рабочие связки — бери и внедряй
• Практические примеры как использовать AI
Это живой эфир, не запись — будет возможность задать вопрос спикерам
👉 Если тема интересна: переходи в канал и подписывайся, ссылку пришлем туда
🌟 Ждем тебя!
Реклама. ООО "СОФТ ОН ТАЙМ", ИНН 7451459689. Erid 2VtzqwgctzJ