<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" >
<channel>
<title>Блог ПерСа</title>
<category>news</category>
<link>http://blog.kislenko.net/</link>
<copyright>© PerS</copyright>
<description>Блог ПерСа. Заметки программиста обо всём на свете</description>
<lastBuildDate>Tue, 27 Oct 2026 17:24:00 +0300</lastBuildDate>
<language>ru</language>
<pubDate>Tue, 27 Oct 2026 17:24:00 +0300</pubDate>
<docs>http://blogs.law.harvard.edu/tech/rss/</docs>
<managingEditor>pers@mail.ru (Admin)</managingEditor>
<rss2lj:owner xmlns:rss2lj="http://rss2lj.net/NS">pers_narod_ru</rss2lj:owner>
<webMaster>pers@mail.ru (Admin)</webMaster>
<item>
<title>Как заставить ИИ сделать справку по классу QString :)</title>
<link>http://blog.kislenko.net/show.php?id=3263</link>
<description>&lt;p&gt;Задачка-то простая и делается, в общем, автопереводом документации. Но хочется же могучий ИИ применить. :)
&lt;blockquote&gt;&lt;p&gt;Человек: Нужна компактная справка по основным возможностям класса QString из Qt6. Формат - таблица HTML в 3 столбца с названиями &quot;Метод&quot;, &quot;Описание&quot; и &quot;Пример&quot;, например, в столбце &quot;Метод&quot; написано
&lt;pre&gt;QString &amp;append(const QString &amp;str)&lt;/pre&gt;
&lt;p&gt;а в столбце &quot;Описание&quot;
&lt;p&gt;&lt;code&gt;Группа перегружаемых методов, позволяющих добавлять новую строку str к концу исходной строки.&lt;/code&gt;
&lt;p&gt;В столбце &quot;Пример&quot; при этом
&lt;pre&gt; QString str = &quot;Hello, &quot;;
 str.append(&quot;world!&quot;);&lt;/pre&gt;
&lt;p&gt;И т.д. по алфавиту в первом столбце.&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;ИИ: (пишет фигню)&lt;/blockquote&gt;</description>
<pubDate>Tue, 27 Oct 2026 17:24:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3263</guid>
</item>
<item>
<title>2027 년 위대한 업적 달력</title>
<link>http://blog.kislenko.net/show.php?id=3262</link>
<description>&lt;p&gt;По &lt;a href=&quot;https://www.consultant.ru/legalnews/32580/&quot; target=&quot;_blank&quot;&gt;постановлению&lt;/a&gt; родного правительства мы ежегодно узнаём, что трудами его в Ойкумене продолжается отсчёт времени, хотя по-прежнему и не понимаем, куда он нас ведёт.
&lt;p&gt;Языком года логично сделать наречие Важнейшего Союзника и Всеобъемлющего Стратегического Партнёра, ведь разницу между &lt;i&gt;лучшими друзьями&lt;/i&gt; увидеть всё сложнее.
&lt;p&gt;2026-й год с утра &lt;a href=&quot;http://blog.kislenko.net/show.php?id=3180&quot;&gt;был здесь&lt;/a&gt;, тотальное празденство 2027-го ничем ему не уступит:
&lt;ul&gt;
&lt;li&gt;новогодние праздники - с четверга 31 декабря 2026 года по воскресенье 10 января 2026 года (11 дней);
&lt;li&gt;отечезащитные праздники - с воскресенья 21 февраля по вторник 23 февраля;
&lt;li&gt;Клары и Карла праздники - с субботы 6 марта по понедельник 8 марта;
&lt;li&gt;картофельно-трудовые праздники - с субботы 1 мая по понедельник 3 мая;
&lt;li&gt;победоносные праздники - с субботы 8 мая по понедельник 10 мая;
&lt;li&gt;коднюроссийские праздники - с субботы 12 июня по понедельник 14 июня;
&lt;li&gt;единонародные праздники - с четверга 4 ноября по воскресенье 7 ноября;
&lt;li&gt;предновогодние праздники - пятница 31 декабря. 
&lt;/ul&gt;
&lt;p&gt;В этом списке учтены следующие переносы выходных:</description>
<pubDate>Sun, 25 Oct 2026 09:03:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3262</guid>
</item>
<item>
<title>Картинка года - 2027</title>
<link>http://blog.kislenko.net/show.php?id=3261</link>
<description>&lt;p&gt;Традиционная рубрика после воцарения ИИ не удивит ничем, но картинку и календарик с &quot;символом года&quot; мне лично  по-прежнему удобно иметь на рабочем столе десктопа.
&lt;ul&gt;
&lt;li&gt;2027 - год &lt;a href=&quot;http://nickolay.info/jscript/ChinaLunarCalendar/index.html&quot; target=&quot;_blank&quot;&gt;красной огненной овцы&lt;/a&gt; (козы) по &lt;a href=&quot;http://nickolay.info/jscript/chinalunarcalendar.html&quot; target=&quot;_blank&quot;&gt;всё тому же&lt;/a&gt; календарю;
&lt;li&gt;китайский новый год &lt;a href=&quot;http://blog.kislenko.net/show.php?id=2008&quot;&gt;начнётся в этот раз&lt;/a&gt; 6 февраля;
&lt;li&gt;картинка года - 2026 &lt;a href=&quot;http://blog.kislenko.net/show.php?id=3202&quot;&gt;была здесь&lt;/a&gt;.
&lt;/ul&gt;</description>
<pubDate>Sun, 25 Oct 2026 08:55:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3261</guid>
</item>
<item>
<title>Qt6: числа хаоса</title>
<link>http://blog.kislenko.net/show.php?id=3260</link>
<description>&lt;p&gt;Изначально код писался для иллюстрации включения и выключения (изменения доступности) набора кнопок &lt;code&gt;QPushButton&lt;/code&gt;, автоматически найденных в коллекции виджетов, примерно так:

&lt;pre&gt;void Widget::setButtonsEnabled(bool enabled) { // --- вкл/выкл кнопок ---
 for (int i = 0; i &amp;lt; children().count(); ++i) {
  if (children().value(i)-&amp;gt;inherits(&quot;QPushButton&quot;)) {
   QPushButton *Btn = qobject_cast&amp;lt;QPushButton*&amp;gt;(children().value(i));
   if (Btn) Btn-&amp;gt;setEnabled(enabled);
  }
 }
}&lt;/pre&gt;

&lt;p&gt;Но, как часто бывает, эта-то функция и оказалась не нужна, а пример остался, пусть будет здесь.
&lt;p&gt;Суть задачи в следующем. Есть начальное значение &lt;code&gt;chaos = 50&lt;/code&gt; и четыре кнопки &lt;code&gt;A&lt;/code&gt;, &lt;code&gt;B&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt;, &lt;code&gt;D&lt;/code&gt;. По нажатиям кнопок значение &lt;code&gt;chaos&lt;/code&gt; меняется некоторым закономерным и видимым для пользователя образом, например, так:</description>
<pubDate>Thu, 15 Oct 2026 06:29:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3260</guid>
</item>
<item>
<title>Qt6: квадратное окно аналоговых часов</title>
<link>http://blog.kislenko.net/show.php?id=3259</link>
<description>&lt;p&gt;Речь шла о том, чтобы мы могли изменять размеры окна виджета каким-либо способом (например, перетаскивая за сторону или уголок), но его клиентская часть оставалась при этом квадратной. Должны иметь значение и физические ограничения разрешения экрана, на котором всё происходит.
&lt;p&gt;Чтобы виджет не был пустым, выводим в нём аналоговые часики, а размеры можно менять от 200x200 до 1000x1000 пикселей (см. конструктор виджета и метод &lt;code&gt;resizeEvent&lt;/code&gt;).
&lt;p&gt;Следует учитывать, что разработчики предостерегают от чрезмерного использования &lt;code&gt;resizeEvent&lt;/code&gt;, которое при большой загруженности сцены и неакуратности программиста может вызвать как &quot;дёргание&quot; при перерисовке, так и зависания, например, если метод &lt;code&gt;resize&lt;/code&gt; бесконтрольно вызывается внутри обработчика &lt;code&gt;resizeEvent&lt;/code&gt;.
&lt;p&gt;Не усложняя особо код, мы этот момент постарались учесть.</description>
<pubDate>Thu, 01 Oct 2026 07:53:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3259</guid>
</item>
<item>
<title>Мини-виджет для определения компилятора и версии Qt</title>
<link>http://blog.kislenko.net/show.php?id=3258</link>
<description>&lt;p&gt;Засомневался, где что лежит и чем компилируется, проще сделать виджет-определялку, чем каждый раз копаться в окнах.
&lt;p&gt;Код просто проверяет макросы, объявленные в &lt;code&gt;&amp;lt;QtGlobal&amp;gt;&lt;/code&gt; и выводит информацию в &lt;code&gt;&amp;lt;QPlainTextEdit&amp;gt;&lt;/code&gt;. 
&lt;p&gt;По идее, это должно компилироваться и в Qt5 для сборок 5.12 и выше (из-за &lt;code&gt;CONFIG += c++17&lt;/code&gt;), а вот для MSVC может потребоваться добавить директиву &lt;code&gt;/Zc:__cplusplus&lt;/code&gt; в проект (что я и сделал).</description>
<pubDate>Thu, 01 Oct 2026 06:35:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3258</guid>
</item>
<item>
<title>Октябрь-2026: специальная лунная</title>
<link>http://blog.kislenko.net/show.php?id=3257</link>
<description>&lt;p&gt;Начало октября принесло правильные цитаты для &lt;a href=&quot;https://titlingur.livejournal.com/248057.html&quot; target=&quot;_blank&quot;&gt;задушевных&lt;/a&gt; бесед и заучивания наизусть, так что мы, по мере скромных сил своих, продолжим знакомить себя с ранее неизвестной миру высотой политической культуры.
&lt;p&gt;Минувший месяц был &lt;a href=&quot;http://blog.kislenko.net/show.php?id=3247&quot;&gt;здесь&lt;/a&gt;.</description>
<pubDate>Thu, 01 Oct 2026 05:35:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3257</guid>
</item>
<item>
<title>C++: строку в число и обратно</title>
<link>http://blog.kislenko.net/show.php?id=3256</link>
<description>&lt;p&gt;Для этой типовой задачи в C++ на самом деле существует способов не меньше, чем в &lt;a href=&quot;http://blog.kislenko.net/show.php?id=2640#13632&quot;&gt;том же C#&lt;/a&gt;, попробуем по просьбам трудящихся в этой заметке перечислить основные из них и привести по примеру на каждое (консоль Visual Studio 2019 или выше).
&lt;p&gt;&lt;b&gt;Из строки в число (String to Number)&lt;/b&gt;
&lt;p&gt;1. Стандартные функции &lt;code&gt;std::stoi&lt;/code&gt;, &lt;code&gt;std::stof&lt;/code&gt;, &lt;code&gt;std::stod&lt;/code&gt; (начиная с стандарта C++11).
&lt;p&gt;Подключаем заголовочный файл &lt;code&gt;&amp;lt;string&amp;gt;&lt;/code&gt;. Функции преобразуют &lt;code&gt;std::string&lt;/code&gt; в типы &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;float&lt;/code&gt;, &lt;code&gt;double&lt;/code&gt; и другие.
&lt;p&gt;Плюсы: Простота использования, поддержка исключений (&lt;code&gt;std::out_of_range&lt;/code&gt;, &lt;code&gt;std::invalid_argument&lt;/code&gt;).</description>
<pubDate>Tue, 29 Sep 2026 16:01:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3256</guid>
</item>
<item>
<title>Shotcut: как легко вырезать и склеить видео</title>
<link>http://blog.kislenko.net/show.php?id=3255</link>
<description>&lt;p&gt;Наследие &lt;a href=&quot;http://nickolay.info/video/mpeg-vcr.html&quot; target=&quot;_blank&quot;&gt;MPEG-VCR&lt;/a&gt; живо - в последние годы для несложных операций по монтажу видео я пользуюсь &lt;a href=&quot;https://www.shotcut.org/&quot; target=&quot;_blank&quot;&gt;Shotcut&lt;/a&gt;, открытым и бесплатным русифицированным приложением, написанным на Qt.
&lt;p&gt;Shotcut откроет почти любые популярные видео- (и не только) форматы, а процесс &quot;вырезания&quot; нужного фрагмента в отдельный файл .mp4 (или другой) предельно прост:
&lt;ul&gt;
&lt;li&gt;открыть исходный файл, в плеере пролистать до начала нужного фрагмента. Стрелки влево и вправо позволяют уточнить кадр с точностью до сотых долей секунды. Жмём горячую клавишу &lt;b&gt;I&lt;/b&gt; или меню Проигрыватель - Обрезать клип в точке, начало фрагмента помечено;
&lt;li&gt;крутим на конец фрагмента, жмём &lt;b&gt;O&lt;/b&gt; или меню Проигрыватель - Обрезать клип вне точки;
&lt;li&gt;жмём &lt;b&gt;Ctrl+E&lt;/b&gt; или меню Файл - Экспорт - Видео, сохраняем новый файл. Прогресс виден в окне &quot;Задания&quot; справа вверху.
&lt;/ul&gt;
Более гибко процессом можно управлять, нажав в панели инструментов кнопку Свойства. Меню-гамбургер в левом нижнем углу этого окна также содержит дополнительные команды, например, &quot;Извлечь субклип&quot; сделает тот же экспорт фрагмента, но без необходимости вводить имя файла.
&lt;p&gt;Склеить два видео нисколько не сложнее:</description>
<pubDate>Tue, 29 Sep 2026 14:23:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3255</guid>
</item>
<item>
<title>Основные единицы измерения Mathcad Prime</title>
<link>http://blog.kislenko.net/show.php?id=3254</link>
<description>&lt;p&gt;Памятка по просьбам трудящихся. Линейка продуктов Mathcad Prime использует три базовые системы единиц: SI, USCS и CGS. По умолчанию активна &lt;a href=&quot;https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%86&quot; target=&quot;_blank&quot;&gt;SI&lt;/a&gt;. Единицы измерения доступны через панель инструментов Math - Units (Математика - Ед.изм.) и вводятся после числа непосредственно в виде своего обозначения (с соблюдением регистра символов) или через инструменты. Mathcad отделяет единицу измерения от числа специальным разделителем-маркером в виде кружочка (unit placeholder, см. скрин ниже). Он становится виден при выделении формулы и внешне похож на знак неявного умножения scaling operator, который Mathcad Prime автоматически подставляет между числом и следующим за ним элементом.
&lt;p&gt;Актуальные версии Mathcad Prime (от 7.0 и выше) работают с физическими размерностями и конвертируют их достаточно корректно, а коллизии обычно легко разрешаются с помощью круглых скобок, в которые берётся величина, предназначенная  для применения размерности (может помочь и ввод обычного умножения &quot;*&quot;, а затем размерной величины):</description>
<pubDate>Sun, 20 Sep 2026 06:26:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3254</guid>
</item>
<item>
<title>С# WPF: рисуем на Chart графики по таймеру</title>
<link>http://blog.kislenko.net/show.php?id=3253</link>
<description>&lt;p&gt;Исходная задача: на форме можно выбрать из списка целочисленное значение lim (предел), порядок выполнения циклов из значений abc, acb, bac, bca, cab, cba, а также шаг по таймеру (от 0,05 до 0,3 сек.). Основную часть окна занимает графическая область Chart. Соблюдая выбранный порядок циклов, меняем коэффициенты a, b, c в пределах от -lim до lim с шагом 1, по событию таймера каждый раз строим в Chart новую параболу &lt;code&gt;a*x&lt;sup&gt;2&lt;/sup&gt;+b*x+c&lt;/code&gt;.
&lt;p&gt;Приложение должно было работать, в том числе, с Visual Studio 2019 (и выше), версией .NET Framework 4.7.2 и выше.
&lt;p&gt;Проблема возникла с интеграцией компоненты Chart в разметку XAML, решил так:</description>
<pubDate>Sun, 13 Sep 2026 06:47:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3253</guid>
</item>
<item>
<title>Если в Excel перестали растягиваться формулы :)</title>
<link>http://blog.kislenko.net/show.php?id=3252</link>
<description>&lt;p&gt;Просто не работает ни копирование, ни автозаполнение, ни комбинация клавиш Ctrl+C / Ctrl+V.
&lt;p&gt;Что смотрел и не помогло:
&lt;ul&gt;
&lt;li&gt;Перезагрузить компьютер и попробовать снова;
&lt;li&gt;Проверить документ(ы) Excel антивирусом;
&lt;li&gt;Формулы - «Вычисление» - «Параметры вычислений» - включено «Автоматически»;
&lt;li&gt;Параметры - Дополнительно - «Параметры правки» - вкл. «Разрешить маркеры заполнения и перетаскивание ячеек»;
&lt;li&gt;Нет ли фильтра во вкладке Данные - Фильтр;
&lt;li&gt;Файл - Параметры - Надстройки - «Надстройки COM» - Нажать Перейти, нет ли подозрительных;
&lt;li&gt;Файл - Параметры - Дополнительно - отметить «Отключить аппаратное ускорение обработки изображений» (если комп слабоват или перегружен);
&lt;li&gt;Нет ли защиты листа;
&lt;li&gt;Нет ли перехватчика буфера обмена, типа Punto Switcher;
&lt;li&gt;В безопасном режиме (Win+R, выполнить команду &lt;code&gt;excel /safe&lt;/code&gt; ) тоже не работает.
&lt;/ul&gt;
&lt;p&gt;И т.д. Что надо было смотреть:</description>
<pubDate>Fri, 11 Sep 2026 19:19:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3252</guid>
</item>
<item>
<title>Не пригодившиеся задачи-2026, второе полугодие</title>
<link>http://blog.kislenko.net/show.php?id=3251</link>
<description>&lt;p&gt;&lt;b&gt;&lt;sup&gt;&lt;span style=&quot;color: red;&quot;&gt;Сейчас в статье: 4 задачи&lt;/span&gt;&lt;/sup&gt;&lt;/b&gt; 

Открываем традиционный цикл учебных задач на C++, написанных в процессе работы и не вошедших в публикации или учебные материалы. Коллекция за предыдущие полгода доступна &lt;a href=&quot;http://blog.kislenko.net/show.php?id=3209&quot;&gt;здесь&lt;/a&gt;.

&lt;blockquote&gt;&lt;p&gt;Задачи добавляются по мере написания, логический порядок в них отсутствует. Для поиска на странице нужного слова нажимайте комбинацию клавиш &lt;code&gt;Ctrl+F&lt;/code&gt; в своём браузере.
&lt;p&gt;Основной язык - C++, если не оговорено иного. Все программы выполнялись в консоли актуальных сборок Visual Studio 2019 / 2022 / 2026 из пустого проекта с единственным добавленным файлом типа &lt;code&gt;.cpp&lt;/code&gt;. В логе могут быть Windows-специфичные задачи, тогда к программе подключен заголовок &lt;code&gt;&amp;lt;windows.h&amp;gt;&lt;/code&gt;.
&lt;p&gt;Предполагается, что используется стандарт C++ не ниже 14. Если для программы требуется более высокая версия стандарта, в начале листнга указан соответствующий комментарий.
&lt;/blockquote&gt;</description>
<pubDate>Thu, 10 Sep 2026 06:07:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3251</guid>
</item>
<item>
<title>Сервис для заметок по дням на первую и вторую недели периода</title>
<link>http://blog.kislenko.net/show.php?id=3250</link>
<description>&lt;p&gt;Понадобилось повесить на стенку листочек с короткими заметками, привязанными к двухнедельному циклу с нечётной и чётной неделями, такому как семестр. Ну и для дальнейшего применения чтобы был скрипт. Хорошо, что в эпоху ИИ сделать всё, включая размещение, можно за 15 минут, 10 из которых понадобятся, чтобы подчистить за ботом мелкие глюки.
&lt;p&gt;Постановка задачи такая:

&lt;blockquote&gt;&lt;p&gt;PHP-скрипт. Пусть недели семестра делятся на чётные и нечётные, начиная с первой (нечётной). К некоторым дням недели имеются текстовые заметки до 40 символов длиной, мы можем ввести в форму до 12 таких заметок (для воскресенья заметок нет). 
&lt;p&gt;В форму также вводится начальная дата ДДММГГГГ (нужно будет выбрать ближайший понедельник началом периода) и количество недель семестра (элемент с выбором значения от 2 до 20). Формируем список дат и дней недели с заметками в пределах указанного диапазона. Заметки будут повторяться с периодом в 2 недели.
&lt;p&gt;Все ранее введённые данные сохраняются в хранилище браузера, базу или текстовый файл не применяем. Есть кнопки для очистки данных и формирования HTML-отчёта для печати.&lt;/blockquote&gt;

&lt;p&gt;В Firefox для сохранения HTML-файла с отчётом достаточно нажать в окне отчёта комбинацию клавиш Ctrl+S.
&lt;p&gt;Chrome и подобные ему браузеры могут потребовать больше телодвижений:</description>
<pubDate>Wed, 09 Sep 2026 05:32:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3250</guid>
</item>
<item>
<title>Stockfish 19 только что вышел :)</title>
<link>http://blog.kislenko.net/show.php?id=3249</link>
<description>&lt;p&gt;5 сентября 2026 года приложение движка &lt;a href=&quot;https://stockfishchess.org/&quot; target=&quot;_blank&quot;&gt;Stockfish&lt;/a&gt; 19 стало доступно для скачивания в базовой конфигурации x86-x64 и в сборке ARM64, рассчитанной на Mac-устройства и современные смартфоны. После выхода &lt;a href=&quot;http://blog.kislenko.net/show.php?id=3213&quot;&gt;предыдущей&lt;/a&gt; версии на этот раз прошло 8 месяцев.
&lt;p&gt;Установив сборку x86-x64, обнаруживаем, что она снабжена суффиксом universal, то есть, сама должна учитывать конфигурацию компьютера, без чего выбор &quot;правильной&quot; конфигурации для себя - отдельная непростая задача, классификация же сборок (не только для Стокфиша, но и для другого софта) обычно такова:</description>
<pubDate>Sun, 06 Sep 2026 08:06:00 +0300</pubDate>
<guid>http://blog.kislenko.net/show.php?id=3249</guid>
</item>
</channel></rss>