<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Подписка и отписка SetUpdateCallback]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Подписка и отписка SetUpdateCallback форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 07 Apr 2026 05:58:55 +0300</pubDate>
		<item>
			<title>Подписка и отписка SetUpdateCallback</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78503/topic9119/">Подписка и отписка SetUpdateCallback</a></b> <i>Подписка и отписка SetUpdateCallback</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_dIqbbYiI" href="/user/16011/" bx-tooltip-user-id="16011">paluke</a> написал:<br />Поддержка вместо 1. #### и 2.#### предлагала SetEmptyCallback() перед Close().<br />=============<br /> &nbsp; &nbsp;Да. Это работает. Но в документе: функция SetEmptyCallback <I>позволяет получать данные с сервера</I>. &nbsp;И нет описания, что Close не закрывает источник без предварительного вызова SetEmptyCallback. <br />
			<i>15.04.2025 15:02:42, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78503/topic9119/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78503/topic9119/</guid>
			<pubDate>Tue, 15 Apr 2025 15:02:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Подписка и отписка SetUpdateCallback</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78502/topic9119/">Подписка и отписка SetUpdateCallback</a></b> <i>Подписка и отписка SetUpdateCallback</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Поддержка вместо 1. #### и 2.#### предлагала SetEmptyCallback() перед Close(). <br />
			<i>15.04.2025 13:10:35, paluke.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78502/topic9119/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78502/topic9119/</guid>
			<pubDate>Tue, 15 Apr 2025 13:10:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Подписка и отписка SetUpdateCallback</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78500/topic9119/">Подписка и отписка SetUpdateCallback</a></b> <i>Подписка и отписка SetUpdateCallback</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			1. <br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_pevxj2HS" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />На самом деле проблема стара как этот мир (в нашем случае квик)<br />=============<br /> &nbsp; Скрипты в QUIKе это программы реального времени, в которых существенен фактор времени.<br /> &nbsp; В коде, выложенном ниже, определена функция CreateDS, которая дожидается появления данных DS.<br /><br />
====code====
<pre>

stopped = false

function main()
&nbsp;&nbsp; -------------------------------------------------------
&nbsp;&nbsp; -- Создание параметризированной функции-замыкания коллбека (с дополнительными (кроме index)&nbsp;&nbsp;
&nbsp;&nbsp; -- параметрами ds и par, задаваемыми в момент создания). 
&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;Использование&nbsp;&nbsp;ds:SetUpdateCallback(CreateUpdateCallbackDS(func, ds, par))
&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;параметр par необязателен, но если он fаlse, то тело функции не выполняется.
&nbsp;&nbsp; --&nbsp;&nbsp;! Исключения в функции коллбека перехватываются. Коллбек при этом отключается с выдачей сообщения об исключении.
&nbsp;&nbsp; --&nbsp;&nbsp;Параметры: 
&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp; func(index, ds, par) - функция&nbsp;&nbsp;обработки коллбеков (вызываемых по изменениям свечи) --
&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp; ds - открытый источник;
&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp; par - параметр&nbsp;&nbsp;(может отсутствовать) --
&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp; index - индекс свечи при выполнении коллбека; 
&nbsp;&nbsp; --&nbsp;&nbsp;Результат: параметризированная функция-замыкание - параметр для функции ds:SetUpdateCallback ---
&nbsp;&nbsp; local CreateUpdateCallbackDS = function(func, ds, par)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function(index)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Обертка для func&nbsp;&nbsp;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if par ~= false then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local kod, mes = pcall(func, index, ds, par) -- в защищенном режиме --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if mes then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message('Исключение в коллбеке (он отключен, его 3-й параметр : '.. tostring(par) .. '). Текст исключения: ' .. mes, 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;par = false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
&nbsp;&nbsp; end
&nbsp;&nbsp; --------------------------------------------------
&nbsp;&nbsp; ---&nbsp;&nbsp;Cl - класс, Sec - код бумаги, Int - таймфрейм.
&nbsp;&nbsp; ---&nbsp;&nbsp;T - ожидание поступления данных источника в сек. (по умолчанию 15 сек.)
&nbsp;&nbsp; local CreateDS = function(Cl, Sec, Int, T)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T = (T or 15) * 10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ds, Error = CreateDataSource(Cl, Sec, Int)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, T do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not ((Error == "" or Error == nil) and ds:Size() == 0) then break end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if i == T then error('Не дождались DS: ' .. Sec .. '. Ошибка: ' .. tostring(Error)) end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(100)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ds
&nbsp;&nbsp; end
&nbsp;&nbsp; ---------------------------------------------------
&nbsp;&nbsp; -- Вариант многократно используемой параметризированной заготовки для создания коллбеков в CreateUpdateCallbackDS --
&nbsp;&nbsp; local function cb_p(index, ds, sec_code)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local t = ds:T(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local _str = string.format("#%d of %d&#92;t%.4f&#92;t%.4f&#92;t%.4f&#92;t%.4f&#92;t%.4f %02d.%02d.%04d %02d:%02d:%02d.%04d&#92;n",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index, ds:Size(),ds:O(index), ds:H(index), ds:L(index), 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds:C(index), ds:V(index),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.day, t.month, t.year, t.hour, t.min, t.sec, t.ms)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(sec_code .. ': ' .. _str)
&nbsp;&nbsp; end
&nbsp;&nbsp; ---------
&nbsp;&nbsp; local ds
&nbsp;&nbsp; local function cb(index)&nbsp;&nbsp;-- одноразовая функция коллбека -
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local t = ds:T(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local _str = string.format("#%d of %d&#92;t%.4f&#92;t%.4f&#92;t%.4f&#92;t%.4f&#92;t%.4f %02d.%02d.%04d %02d:%02d:%02d.%04d&#92;n",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index, ds:Size(),ds:O(index), ds:H(index), ds:L(index), 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds:C(index), ds:V(index),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.day, t.month, t.year, t.hour, t.min, t.sec, t.ms)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(_str)
&nbsp;&nbsp; end
&nbsp;&nbsp; ds = CreateDS("QJSIM", "GAZP", INTERVAL_M1)
message('Size = ' .. ds:Size())
&nbsp;&nbsp; -- Вариант с созданием функции-замыкания, выдающей сообщение об исключениях во время ее выполнения ---
&nbsp;&nbsp; ds:SetUpdateCallback(CreateUpdateCallbackDS(cb)) 
&nbsp;&nbsp; 
&nbsp;&nbsp; -- ds:SetUpdateCallback()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 1. #### это не помогает
&nbsp;&nbsp; -- ds:SetUpdateCallback(function() end)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 2. #### и это не помогает
&nbsp;&nbsp; ds:Close() -- ?? После Close повторно установленные один раз коллбеки не срабатывают (
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- хотя источник открывается)

&nbsp;&nbsp; ds = CreateDS("QJSIM", "GAZP", INTERVAL_M1)
 
&nbsp;&nbsp; -- ds:SetUpdateCallback(function() end) -- 3. #### это тоже помогает вместо последующего ds:SetUpdateCallback(cb)
&nbsp;&nbsp; ds:SetUpdateCallback(cb) -- Обычный вариант (если в функции коллбека cb возникает исключение, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- то коллбек перестает выполняться, но сообщения об этом нет)
&nbsp;&nbsp; ds:SetUpdateCallback(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateUpdateCallbackDS(cb_p, ds, "GAZP")) -- 4. #### Повторная установка параметризированного 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;&nbsp;коллбека. Если это закомментировать, то коллбек не запускается
&nbsp;&nbsp; -- ds:SetUpdateCallback(cb)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 5. #### Это , вместо пункта 4, тоже проходит
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; 
&nbsp;&nbsp; while not stopped do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(3000)
-- message('while Size = ' .. ds:Size())
&nbsp;&nbsp; end 
end&nbsp;&nbsp;

function OnStop(row)
&nbsp;&nbsp;&nbsp;&nbsp;stopped = true
end
---
--&nbsp;&nbsp;Резюме (смотрите комментарии, выделенные строкой ####).
--- После ds:Close(), ds = CreateDataSource(...) повторно установленный коллбек cb не срабатывает 
--&nbsp;&nbsp;(хотя источник открывается и свечи приходят).
--&nbsp;&nbsp;Но если устанавливать два раза: ds:SetUpdateCallback(cb)&nbsp;&nbsp; ds:SetUpdateCallback(cb),то cb срабатывает --
</pre>
=============
<br /><br />2. &nbsp;В том же коде определена функция &nbsp;CreateUpdateCallbackDS - создание параметризированных замыканий-коллбеков на основе функций заготовок (в коде примера: функция cb_p). Функцию-заготовку можно использовать, создавая коллбеки для многих разных источников DS. При этом обеспечивается выдача сообщений об исключениях времени выполнения колбека (что не делается штатными средствами).<br /><br />3. В коде комментариями, помеченными строкой ####, описываются &quot;танцы с бубном&quot; с тем, чтобы повторно подключить коллбек к повторно открытому DS. <br /> &nbsp; Вопрос к поддержке: что еще надо показать, чтобы стало ясно, что в ds:Close() есть ошибка? <br />
			<i>15.04.2025 07:36:22, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78500/topic9119/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78500/topic9119/</guid>
			<pubDate>Tue, 15 Apr 2025 07:36:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Подписка и отписка SetUpdateCallback</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78447/topic9119/">Подписка и отписка SetUpdateCallback</a></b> <i>Подписка и отписка SetUpdateCallback</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			На самом деле проблема стара как этот мир (в нашем случае квик), сейчас продемонстрирую на небольшом примере. <br />1) Вариант просто создаю таблицу с методами.<br />2) &quot;Танцы с бубнами&quot; - Моя древняя функция боюсь ее уже даже руками трогать.<br />
====code====
<pre>function main() 
&nbsp;&nbsp;&nbsp;&nbsp;message('Стратегия 3ТФ запущена: ' ..&nbsp;&nbsp;CLASS_CODE ..'; '..SEC_CODE )

&nbsp;&nbsp;&nbsp;&nbsp;DS = {}
&nbsp;&nbsp;&nbsp;&nbsp;DS.D1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_D1)
&nbsp;&nbsp;&nbsp;&nbsp;DS.H1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_H1)
&nbsp;&nbsp;&nbsp;&nbsp;DS.M1 = CreateDataSource(CLASS_CODE, SEC_CODE, INTERVAL_M1)
&nbsp;&nbsp;&nbsp;&nbsp;message( 1)..' '.. type(DS.D1) .. ' DS.D1:Size() ' .. tostring(DS.D1:Size()) .. ' DS.H1:Size() ' .. tostring(DS.H1:Size()) .. ' DS.M1:Size() ' .. tostring(DS.M1:Size()) )

&nbsp;&nbsp;&nbsp;&nbsp;DS.D1 = Source(CLASS_CODE, SEC_CODE, INTERVAL_D1)
&nbsp;&nbsp;&nbsp;&nbsp;DS.H1 = Source(CLASS_CODE, SEC_CODE, INTERVAL_H1)
&nbsp;&nbsp;&nbsp;&nbsp;DS.M1 = Source(CLASS_CODE, SEC_CODE, INTERVAL_M1)
&nbsp;&nbsp;&nbsp;&nbsp;message(2)..' '..&nbsp;&nbsp;type(DS.D1) .. ' DS.D1:Size() ' .. tostring(DS.D1:Size()) .. ' DS.H1:Size() ' .. tostring(DS.H1:Size()) .. ' DS.M1:Size() ' .. tostring(DS.M1:Size()) )</pre>
=============
 &nbsp; &nbsp;while is_run do<br />А вот ответы <br />Стратегия 3ТФ запущена: SPBFUT; MXM5<br />1) table DS.D1:Size() 0 DS.H1:Size() 0 DS.M1:Size() 0<br />2) table DS.D1:Size() 162 DS.H1:Size() 1485 DS.M1:Size() 11247 <br />
			<i>10.04.2025 16:23:53, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78447/topic9119/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78447/topic9119/</guid>
			<pubDate>Thu, 10 Apr 2025 16:23:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Подписка и отписка SetUpdateCallback</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78434/topic9119/">Подписка и отписка SetUpdateCallback</a></b> <i>Подписка и отписка SetUpdateCallback</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_FuL8aqIz" href="/user/16011/" bx-tooltip-user-id="16011">paluke</a> написал:<br /> <noindex><a href="https://forum.quik.ru/messages/forum10/message68511/topic7641/#message68511" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message68501/topic7641/#message68501</a></noindex> <br />=============<br />Благодарствую, сработало. <br />
			<i>10.04.2025 11:17:48, Saturn.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78434/topic9119/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78434/topic9119/</guid>
			<pubDate>Thu, 10 Apr 2025 11:17:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Подписка и отписка SetUpdateCallback</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78433/topic9119/">Подписка и отписка SetUpdateCallback</a></b> <i>Подписка и отписка SetUpdateCallback</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/messages/forum10/message68511/topic7641/#message68511" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message68501/topic7641/#message68501</a></noindex> <br />
			<i>10.04.2025 09:24:27, paluke.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78433/topic9119/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78433/topic9119/</guid>
			<pubDate>Thu, 10 Apr 2025 09:24:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Подписка и отписка SetUpdateCallback</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message78427/topic9119/">Подписка и отписка SetUpdateCallback</a></b> <i>Подписка и отписка SetUpdateCallback</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Привет,<br /><br />Я делаю подписку CreateDataSource и SetUpdateCallback условно по TQBR GAZP по дневному интервалу. Пока что все OK - данные начинают приходить.<br />Потом я делаю отписку от CreateDataSource и SetUpdateCallback вызывая &quot;Close&quot;. &nbsp;На удивление пока что все тоже хорошо, данные больше не обновляются и не приходят.<br /><br />ТЕПЕРЬ я опять подписываюсь на TQBR GAZP по дневному интервалу. И вот хрен - никаких данных уже не приходит.<br /><br />Разработчики - прошу подтвердить или не подтвердить - что это ожидаемое поведение или баг. <br />
			<i>09.04.2025 20:26:00, Saturn.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message78427/topic9119/</link>
			<guid>http://forum.quik.ru/messages/forum10/message78427/topic9119/</guid>
			<pubDate>Wed, 09 Apr 2025 20:26:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
