<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[точно настоящий сайт]]></title><description><![CDATA[Obsidian digital garden]]></description><link>http://github.com/dylang/node-rss</link><image><url>site-lib/media/favicon.png</url><title>точно настоящий сайт</title><link/></image><generator>Webpage HTML Export plugin for Obsidian</generator><lastBuildDate>Tue, 12 May 2026 09:32:07 GMT</lastBuildDate><atom:link href="site-lib/rss.xml" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 May 2026 09:32:03 GMT</pubDate><ttl>60</ttl><dc:creator/><item><title><![CDATA[бд6]]></title><description><![CDATA[Если предполагается уникальность названия отдела:
dept_id — первичный ключ dept_name — потенциальный кандидатный ключ (если уникален) Полная FD: dept_id → dept_name Частичных зависимостей нет (ключ простой) Транзитивных зависимостей нет Если имя агента уникально:Также через связь с departments существует транзитивность:Следовательно:(транзитивная зависимость, но dept_name физически не хранится в таблице)
agent_id возможно agent_name Полные: agent_id → agent_name, dept_id Частичных нет Транзитивные: agent_id → dept_name Если название оборудования уникально:
equip_id возможно equip_name Полные: equip_id → equip_name, price Частичных нет Транзитивных нет Поскольку sale_id — уникальный идентификатор:Дополнительно из предметной области:и фактически:(если сумма продажи всегда равна цене товара)Тогда возникает транзитивная зависимость:
sale_id Возможный альтернативный ключ:
(equip_id, agent_id, sale_date) — только если бизнес-правило запрещает одинаковые продажи Полная: sale_id → equip_id, agent_id, sale_date, total_amount Транзитивная: sale_id → equip_id → total_amount Частичных нет (ключ простой) Все атрибуты атомарны → да.Ключ простой (dept_id), частичных зависимостей нет → да.Нет транзитивных зависимостей → да.Любой детерминант является ключом: dept_id — ключ → BCNF выполнена.departments находится в BCNF.Да.Ключ простой → частичных зависимостей нет.Все неключевые атрибуты зависят только от ключа.Транзитивная зависимость через departments физически не хранится, поэтому нарушения нет.Детерминант — ключ.agents находится в BCNF.Да.Да.Да.Детерминант — ключ.equipment находится в BCNF.Да.Ключ простой (sale_id) → частичных зависимостей нет.Проблема:Следовательно:через транзитивную зависимость.total_amount зависит не от продажи как факта, а от товара.Это нарушение 3NF.Также нарушена, потому что:где equip_id не является суперключом таблицы sales.sales находится только во 2NF.В таблице:sales( sale_id, equip_id, agent_id, sale_date, total_amount
)
атрибут total_amount функционально зависит от equip_id.sales( sale_id, equip_id, agent_id, sale_date
)
equipment( equip_id, equip_name, price
)
Стоимость продажи вычисляется через:total_amount = equipment.price
или может быть получена JOIN-запросом.Исходные FD:сохраняется в sales.сохраняется в equipment.Следовательно, все FD сохранены.Общее пересечение таблиц:Причём:то есть общий атрибут является ключом одной из декомпозированных таблиц (equipment).Следовательно, декомпозиция является без потерь.(dept_id, dept_name)
(agent_id, agent_name, dept_id)
(equip_id, equip_name, price)
(sale_id, equip_id, agent_id, sale_date)
]]></description><link>сборник-паст/бд6.html</link><guid isPermaLink="false">сборник паст/бд6.md</guid><pubDate>Tue, 12 May 2026 09:24:56 GMT</pubDate></item><item><title><![CDATA[бд7 ответы]]></title><description><![CDATA[Ниже - полный разбор и готовое решение для PL/SQL в entity["software","Oracle Database","Oracle relational database"].Обозначения: - баланс после k-го месяца - месячная ставка - проценты за месяц - комиссия за период
Месячная ставка:Баланс на каждом шаге:Начисленные проценты:Условие остановки:Тогда:
баланс фиксируется как 0
комиссия за этот период полностью не списывается
дальнейшие периоды не рассчитываются
DECLARE ---------------------------------------------------------------- -- Явный курсор ---------------------------------------------------------------- CURSOR cur_accounts IS SELECT account_id, client_name, initial_balance, annual_rate, commission_per_period, num_periods FROM accounts; ---------------------------------------------------------------- -- Переменные для FETCH ---------------------------------------------------------------- v_account_id accounts.account_id%TYPE; v_client_name accounts.client_name%TYPE; v_balance accounts.initial_balance%TYPE; v_annual_rate accounts.annual_rate%TYPE; v_commission accounts.commission_per_period%TYPE; v_num_periods accounts.num_periods%TYPE; ---------------------------------------------------------------- -- Рабочие переменные ---------------------------------------------------------------- v_month_rate NUMBER(10,8); v_current_balance NUMBER(12,2); v_interest NUMBER(12,2); v_total_interest NUMBER(12,2); v_total_commission NUMBER(12,2); v_zeroed_accounts NUMBER := 0; BEGIN ---------------------------------------------------------------- -- Открытие курсора ---------------------------------------------------------------- OPEN cur_accounts; LOOP ------------------------------------------------------------ -- Получение строки ------------------------------------------------------------ FETCH cur_accounts INTO v_account_id, v_client_name, v_balance, v_annual_rate, v_commission, v_num_periods; ------------------------------------------------------------ -- Проверка конца данных ------------------------------------------------------------ EXIT WHEN cur_accounts%NOTFOUND; ------------------------------------------------------------ -- Инициализация ------------------------------------------------------------ v_month_rate := v_annual_rate / 12; v_current_balance := v_balance; v_total_interest := 0; v_total_commission := 0; ------------------------------------------------------------ -- Помесячный расчёт ------------------------------------------------------------ FOR i IN 1 .. v_num_periods LOOP -------------------------------------------------------- -- Проценты за месяц -------------------------------------------------------- v_interest := v_current_balance * v_month_rate; -------------------------------------------------------- -- Новый баланс -------------------------------------------------------- IF (v_current_balance + v_interest - v_commission) &lt;= 0 THEN DBMS_OUTPUT.PUT_LINE( 'Счёт ' || v_account_id || ' (' || v_client_name || ') обнулился на периоде ' || i ); v_current_balance := 0; v_zeroed_accounts := v_zeroed_accounts + 1; EXIT; END IF; -------------------------------------------------------- -- Обновление баланса -------------------------------------------------------- v_current_balance := v_current_balance + v_interest - v_commission; -------------------------------------------------------- -- Накопление итогов -------------------------------------------------------- v_total_interest := v_total_interest + v_interest; v_total_commission := v_total_commission + v_commission; END LOOP; ------------------------------------------------------------ -- Сохранение результата ------------------------------------------------------------ INSERT INTO account_results ( account_id, client_name, final_balance, total_interest, total_commission ) VALUES ( v_account_id, v_client_name, ROUND(v_current_balance, 2), ROUND(v_total_interest, 2), ROUND(v_total_commission, 2) ); END LOOP; ---------------------------------------------------------------- -- Информация по курсору ---------------------------------------------------------------- DBMS_OUTPUT.PUT_LINE( 'Обработано строк: ' || cur_accounts%ROWCOUNT ); DBMS_OUTPUT.PUT_LINE( 'Обнулённых счетов: ' || v_zeroed_accounts ); ---------------------------------------------------------------- -- Закрытие курсора ---------------------------------------------------------------- CLOSE cur_accounts; ---------------------------------------------------------------- -- Фиксация транзакции ---------------------------------------------------------------- COMMIT; EXCEPTION WHEN OTHERS THEN IF cur_accounts%ISOPEN THEN CLOSE cur_accounts; END IF; ROLLBACK; DBMS_OUTPUT.PUT_LINE( 'Ошибка: ' || SQLERRM ); END;
/
EXIT WHEN cur_accounts%NOTFOUND;
Останавливает цикл, когда строки закончились.cur_accounts%ROWCOUNT
Показывает:
сколько строк было FETCH-нуто курсором
IF cur_accounts%ISOPEN THEN
Проверяет:
открыт ли курсор
обычно используется в EXCEPTION.Для каждого счёта:
Берёт начальный баланс
Делит ставку на 12
Каждый месяц: начисляет проценты
списывает комиссию Считает: итоговый баланс
сумму процентов
сумму комиссий Если баланс ушёл в ноль: прекращает расчёт
выводит предупреждение Записывает результат в account_results
Это более «oracle-way».DECLARE v_month_rate NUMBER(10,8); v_current_balance NUMBER(12,2); v_interest NUMBER(12,2); v_total_interest NUMBER(12,2); v_total_commission NUMBER(12,2); v_zeroed_accounts NUMBER := 0; v_processed NUMBER := 0; BEGIN FOR rec IN ( SELECT * FROM accounts ) LOOP v_processed := v_processed + 1; v_month_rate := rec.annual_rate / 12; v_current_balance := rec.initial_balance; v_total_interest := 0; v_total_commission := 0; FOR i IN 1 .. rec.num_periods LOOP v_interest := v_current_balance * v_month_rate; IF (v_current_balance + v_interest - rec.commission_per_period) &lt;= 0 THEN DBMS_OUTPUT.PUT_LINE( 'Счёт ' || rec.account_id || ' обнулился на периоде ' || i ); v_current_balance := 0; v_zeroed_accounts := v_zeroed_accounts + 1; EXIT; END IF; v_current_balance := v_current_balance + v_interest - rec.commission_per_period; v_total_interest := v_total_interest + v_interest; v_total_commission := v_total_commission + rec.commission_per_period; END LOOP; INSERT INTO account_results ( account_id, client_name, final_balance, total_interest, total_commission ) VALUES ( rec.account_id, rec.client_name, ROUND(v_current_balance, 2), ROUND(v_total_interest, 2), ROUND(v_total_commission, 2) ); END LOOP; DBMS_OUTPUT.PUT_LINE( 'Обработано строк: ' || v_processed ); DBMS_OUTPUT.PUT_LINE( 'Обнулённых счетов: ' || v_zeroed_accounts ); COMMIT; END;
/
Потому что курсор остаётся открыт до CLOSE.Oracle сам делает:
OPEN
FETCH
EXIT WHEN NOTFOUND
CLOSE
Типы автоматически синхронизируются с таблицей.Особенно интересен:(3, 'Сидоров К.В.', 5000, 0.10, 500, 6)
Там большая комиссия относительно баланса, поэтому счёт может быстро обнулиться.А:(4, 'Козлова М.Д.', 150000, 0.05, 0, 36)
будет только расти, так как комиссия нулевая.]]></description><link>сборник-паст/бд7-ответы.html</link><guid isPermaLink="false">сборник паст/бд7 ответы.md</guid><pubDate>Tue, 12 May 2026 09:23:10 GMT</pubDate></item><item><title><![CDATA[бд7]]></title><description><![CDATA[Эти примеры написаны на PL/SQL для Oracle Database, а не для PostgreSQL.
В PostgreSQL курсоры есть, но синтаксис и PL/pgSQL отличаются.Разберём по частям.%TYPE — это специальный атрибут PL/SQL.Он означает:
«Возьми тип данных у существующей колонки или переменной».
Пример:v_name employees.last_name%TYPE;
означает:v_name VARCHAR2(...);
но размер и тип берутся автоматически из колонки:employees.last_name
Чтобы не дублировать типы вручную.Если тип колонки изменится:last_name VARCHAR2(50)
→
last_name VARCHAR2(100)
то переменная автоматически будет нового типа.Это уменьшает количество ошибок.price products.price%TYPE;
≈
"сделай переменную price такого же типа, как колонка products.price"
% в PL/SQL — это не оператор остатка, как в математике.В контексте курсоров и переменных % используется как:
доступ к атрибуту объекта
Например:employees.salary%TYPE
означает:
взять объект employees.salary получить его атрибут %TYPE Тип одной колонки/переменной.v_sal employees.salary%TYPE;
Тип всей строки таблицы или курсора.Пример:v_emp employees%ROWTYPE;
Теперь v_emp содержит ВСЕ поля строки:v_emp.last_name
v_emp.salary
v_emp.department_id
После работы курсора доступны:FETCH cur INTO v_name; IF cur%FOUND THEN ...
END IF;
или:EXIT WHEN cur%NOTFOUND;
Вот курсор:CURSOR cur_dept(p_dept_id NUMBER, p_min_sal NUMBER) IS
SELECT last_name, salary
FROM employees
WHERE department_id = p_dept_id
AND salary &gt; p_min_sal;
Здесь:
p_dept_id p_min_sal — параметры курсора.Можно представить так:cur_dept(50, 3000)
как:SELECT ...
WHERE department_id = 50
AND salary &gt; 3000
Во время OPENOPEN cur_dept(50, 3000);
Здесь:Практически любые PL/SQL типы:
NUMBER VARCHAR2 DATE BOOLEAN (в PL/SQL) RECORD пользовательские типы CURSOR c(p_name VARCHAR2) IS
SELECT *
FROM employees
WHERE last_name = p_name;
CURSOR c(p_date DATE) IS
SELECT *
FROM orders
WHERE created_at &gt; p_date;
Вот этот блок:OPEN cur_dept(50, 3000); LOOP FETCH cur_dept INTO v_name, v_sal; EXIT WHEN cur_dept%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_name || ' - ' || v_sal);
END LOOP; CLOSE cur_dept;
работает так:OPEN cur_dept(50, 3000);
Oracle выполняет запрос и создаёт набор строк.FETCH cur_dept INTO v_name, v_sal;
Берёт ОДНУ следующую строку.Например:становится:v_name = 'Smith'
v_sal = 4000
Когда строки закончились:cur_dept%NOTFOUND = TRUE
цикл завершается.Вот этот вариант:FOR rec IN ( SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80
)
LOOP
— это неявный курсор.Oracle автоматически делает:
OPEN FETCH CLOSE за тебя.У неё есть поля:rec.employee_id
rec.last_name
rec.salary
Этот код:FOR rec IN (...) LOOP
примерно равен:OPEN c; LOOP FETCH c INTO ...; EXIT WHEN c%NOTFOUND;
END LOOP; CLOSE c;
В PostgreSQL:
нет DBMS_OUTPUT.PUT_LINE нет VARCHAR2 курсоры объявляются иначе PL/pgSQL ближе к обычному SQL Но концепция:
OPEN FETCH CLOSE cursor attributes — очень похожа.table.column%TYPE
= взять тип колонки.table%ROWTYPE
= структура всей строки.атрибуты курсора.Передаются в OPEN.OPEN cur(10, 5000);
и используются внутри SELECT.Это автоматический курсор без ручного OPEN/FETCH/CLOSE.]]></description><link>сборник-паст/бд7.html</link><guid isPermaLink="false">сборник паст/бд7.md</guid><pubDate>Tue, 12 May 2026 09:14:51 GMT</pubDate></item><item><title><![CDATA[Вархаммер]]></title><description><![CDATA[ЧТО БЫЛО ДО ЕРЕСИ И ЧТО МЫ ПОТЕРЯЛИ.
ДОМА В ГОРОДАХ-УЛЬЯХ СТРОИЛИ ИЗ МОЛОЧНОЙ ПЕНЫ. МОЖНО БЫЛО ДЕТЕЙ КОРМИТЬ.
ИСТИНЫ СВЕТ ЗАПОЛНЯЛ ВЕСЬ ВАРП. КОРАБЛИ БЕЗ АСТРОНОМИКОНА В ДРУГОЙ КОНЕЦ ГАЛАКТИКИ ЗАПРЫГИВАЛИ.
ЧЕЛОВЕК ЖИЛ В СРЕДНЕМ 10000 ЛЕТ. БОЛЕЗНЕЙ НЕ СУЩЕСТВОВАЛО КРОМЕ МОЗОЛЕЙ ОТ ПИЛОМЕЧА.
ЕСЛИ НА УЛИЦЕ СПОТКНЕШЬСЯ И УПАДЕШЬ - ЛЮДИ ПОДБЕГАЛИ, ПАТРОНЫ ДЛЯ БОЛТЕРА В КАРМАН ЗАСОВЫВАЛИ,ЗНАМЕНИЕ АКВИЛЫ СОТВОРЯЛИ, ПРЕДЛАГАЛИ ВЫПИТЬ, ПОРОДНИТЬСЯ.
КСЕНОСЫ И МУТАНТЫ СРАЗУ ПОД ОГНЕМЁТ ЛОЖИЛИСЬ. ЛАЗГАН ПОКУПАЕШЬ - ТЕБЕ ЕЩЕ ДОПЛАЧИВАЮТ. К ХАОС-ДЕМОНАМ СТРАШНО ПОДОЙТИ БЫЛО: САМИ НА ПИЛОМЕЧ ПРЫГАЛИ.
КОМИССАР РАССКАЗЫВАЛ: ЛЮДИ НОЧЬЮ ПРОСЫПАЛИСЬ ОТ СЧАСТЛИВОГО ДОБРОГО СМЕХА. УТРОМ ВСЕМ МИРОМ ИМПЕРАТОРА ВОСХВАЛЯЛИ.
СРОК БЕРЕМЕННОСТИ СОСТАВЛЯЛ 4.5 МЕСЯЦА. ДЕТИ РОЖДАЛИСЬ ПО 12-15 КИЛОГРАММ С БЕЛОКУРЫМИ ВОЛОСАМИ И ЯСНЫМИ ГОЛУБЫМИ ГЛАЗАМИ И ВОЛЕВЫМИ УМНЫМИ ЛИЦАМИ - СРАЗУ В АСТАРТЕС ПРОСИЛИСЬ.
ПРОМЕТИЙ БЫЛ СЛАДКИЙ КАК ПАТОКА. А ВАРП СОСТОЯЛ ИЗ ТЁМНОГО ПИВА.
КАДИЯ БЫЛА ПЛАНЕТОЙ-РАЕМ, ВСЕ ТУДА КАК НА КУРОРТ ЛЕТАЛИ.
ГРОКСЫ НА ФЕРМАХ БЫЛИ РАЗМЕРОМ С ДРЕДНОУТ. ДРЕДНОУТ С ТИТАНА, ТИТАНЫ С ЛИНКОР, А НА ЛИНКОРЕ ГВАРДЕЙЦЫ В РЕГИЦИД ИГРАЛИ ПО МЕТОДИКЕ ЖИЛЛИМАНА - ПРОТИВНИКУ МАТ СТАВИЛИ С ПЕРВОГО ХОДА!
]]></description><link>сборник-паст/вариации-пасты-что-было-при-сталине/вархаммер.html</link><guid isPermaLink="false">сборник паст/Вариации пасты что было при Сталине/Вархаммер.md</guid><pubDate>Fri, 07 Nov 2025 09:30:44 GMT</pubDate></item><item><title><![CDATA[Оригинал]]></title><description><![CDATA[ЧТО БЫЛО ПРИ СТАЛИНЕ. ЧТО МЫ ПОТЕРЯЛИ.
ПЕНОПЛАСТ ДЕЛАЛИ ИЗ МОЛОЧНОЙ ПЕНЫ. МОЖНО БЫЛО ДЕТЕЙ КОРМИТЬ.
СИЛА ГРАВИТАЦИИ БЫЛА СЛАБЕЕ ПРОЦЕНТОВ НА 80. ЛЮДИ НА ДОМ ЗАПРЫГИВАЛИ С РАЗБЕГУ.
ЧЕЛОВЕК ЖИЛ В СРЕДНЕМ 150-190 ЛЕТ. БОЛЕЗНЕЙ НЕ СУЩЕСТВОВАЛО КРОМЕ ТРУДОВЫХ МОЗОЛЕЙ.
ЕСЛИ НА УЛИЦЕ СПОТКНЕШЬСЯ И УПАДЕШЬ - ЛЮДИ ПОДБЕГАЛИ, ДЕНЬГИ В КАРМАН ЗАСОВЫВАЛИ, В ГУБЫ ЦЕЛОВАЛИ, ПРЕДЛАГАЛИ ВЫПИТЬ, ПОРОДНИТЬСЯ.
ЗАЙЦЫ И КУРОПАТКИ СРАЗУ НА СКОВОРОДУ ЗАЛЕТАЛИ. ХЛЕБ ПОКУПАЕШЬ - ТЕБЕ ЕЩЕ ДОПЛАЧИВАЮТ. К РЕКЕ СТРАШНО ПОДОЙТИ БЫЛО: НАЛИМЫ В КОТЕЛОК ПРЫГАЛИ.
ДЕД РАССКАЗЫВАЛ: ЛЮДИ НОЧЬЮ ПРОСЫПАЛИСЬ ОТ СЧАСТЛИВОГО ДОБРОГО СМЕХА. УТРОМ ВСЕ ОБЛИВАЛИСЬ ЛЕДЯНОЙ ВОДОЙ ИЗ ВЕДРА.
СРОК БЕРЕМЕННОСТИ СОСТАВЛЯЛ 4.5 МЕСЯЦА. ДЕТИ РОЖДАЛИСЬ ПО 12-15 КИЛОГРАММ С БЕЛОКУРЫМИ ВОЛОСАМИ И ЯСНЫМИ ГОЛУБЫМИ ГЛАЗАМИ И ВОЛЕВЫМИ УМНЫМИ ЛИЦАМИ - СРАЗУ НА ПРОИЗВОДСТВО ПРОСИЛИСЬ.
ВОДА В ВОЛГЕ БЫЛА СЛАДКАЯ КАК ПАТОКА. А ЕНИСЕЙ СОСТОЯЛ ИЗ ТЁМНОГО ПИВА.
ЗИМОЮ БЫЛО МИНУС ТРИСТА, ВСЕ РУМЯНЫЕ ХОДИЛИ.
ЯГОДЫ РОСЛИ НА ОПУШКЕ С КОТА РАЗМЕРОМ. КОТЫ БЫЛИ С СОБАКУ, СОБАКА С КОРОВУ, А КОРОВА КАК ЦЕХ, А В ЦЕХУ МУЖИКИ В ШАХМАТЫ ИГРАЛИ ПО МЕТОДИКЕ БОТВИННИКА - КОНЁМ МАТ СТАВИЛИ С ПЕРВОГО ХОДА!
]]></description><link>сборник-паст/вариации-пасты-что-было-при-сталине/оригинал.html</link><guid isPermaLink="false">сборник паст/Вариации пасты что было при Сталине/Оригинал.md</guid><pubDate>Fri, 07 Nov 2025 09:29:58 GMT</pubDate></item><item><title><![CDATA[Паста про балалайки]]></title><description><![CDATA[Я регулярно захожу в магазин музыкальных инструментов на Тульской, и каждый раз спрашиваю, есть ли в продаже балалайки. Каждый раз мне отвечают, нет. Я спрашивал уже раз 150 и 150 раз мне ответили нет. Смысл в том, что отвечает мне один и тот же продавец, отвечает с неизменной интонацией. А я каждый раз с неизменной интонацией спрашиваю:
- Балалайки есть?
- Балалаек нет.- Есть балалайки в продаже?
- Балалайками не торгуем.- Балалайки можно посмотреть, какие есть?
- Нет, балалаек в продаже нет.- Я бы хотел купить балалайку, почем они вообще?
- Извините, у нас нет в продаже балалаек.- Народные инструменты есть? Мне балалайка нужна.
- Мы их никогда не заказываем и не продаём.И ведь этот продавец, зараза, знает меня идеально в лицо, знает, что я спрошу и знает, что он мне ответит. Но ещё ни разу ни один из нас ни жестом, ни словом не показал, что каждый из нас знает сценарий. Бывает продавец курит у входа, когдя я захожу в магазин, тогда я подсматриваю за ним сквозь стеклянные двери, он равнодушно докуривает, выбрасывает бычок и возвращается за прилавок:
- Что вы хотели?
- Мне нужна балалайка.
- У нас нет.
- Жаль.Иногда он общается с другим клиентом, тогда, стоя рядом, я терпеливо жду, когда они закончат:
- А балалайки в продаже есть?
- Нет, мы ими не торгуем.Иногда он просто скучает за прилавком, когда в магазине никого нет, и только я расхаживаю по залу. Конечно, он знает, что будет дальше, но не подаёт виду и равнодушно берёт журнал.
- Что-то я балалайки найти не могу, они вообще в продаже бывают?
- Нет, не бывают, мы ими не торгуем.Это очень суровое, по-настоящему мужское противостояние, исход которого не ясен. Очевидно, что каждая сторона рассчитывает на победу. Впрочем, я уже согласен на ничью.]]></description><link>сборник-паст/паста-про-балалайки.html</link><guid isPermaLink="false">сборник паст/Паста про балалайки.md</guid><pubDate>Fri, 07 Nov 2025 09:28:22 GMT</pubDate></item><item><title><![CDATA[No title]]></title><link>универ/itlab/стадии-1.1-1.8-анализа-бенчмарка.html</link><guid isPermaLink="false">Универ/ITLab/Стадии 1.1 - 1.8 анализа бенчмарка.md</guid></item></channel></rss>