Вы должны войти, чтобы создавать сообщения и темы.

Trinity - Управление частотой процессора

1◄Страница 21 из 27► 27

Дополнительный пример с напоминалкой

Смотри, сегодня воскресенье, планирую пойти на церковную службу в среду к 8 утра
Чтобы оставить напоминание на утро, мне нужно написать:
Среда, иди на утреннюю службу

Напоминание появится при первом включении ПК утром в среду?

Да, всё сработает именно так, как вы планировали.

Если вы напишете:

Среда, иди на утреннюю службу

напоминание появится при первом же включении компьютера утром в среду (примерно через 2 секунды после запуска программы).


Почему это сработает именно так:

  1. Распознавание дня недели:

    Парсер программы (RemindersGetDayOfWeek) ищет совпадение по корню сред (без учета регистра и знаков препинания). В среду программа зафиксирует, что наступил нужный день недели.

  2. Отсутствие времени — идеальный вариант для утреннего включения:

    В коде заложена логика: если дата/день недели совпадают с сегодняшним, но точные часы не указаны (targetH == -1), условие срабатывания считается выполненным сразу (isDueNow = true).

    Это означает, что во сколько бы вы ни включили ПК в среду утром (хоть в 06:30, хоть в 07:15) — окно напоминания отобразится немедленно при запуске.

  3. Почему лучше НЕ писать «к 8 утра»:

    Если бы вы написали Среда к 8 утра..., парсер выставил бы время срабатывания на 08:00. Если бы вы включили ПК раньше (например, в 07:00), напоминание не показалось бы до наступления 8 часов — а к этому моменту вам уже нужно быть в храме. Ваша фраза без жесткой привязки к 8:00 работает гораздо надежнее.


Два важных момента, чтобы всё сработало:

  • Автозапуск «Троицы»: убедитесь, что в трей-меню программы отмечен пункт «🚀 Автозапуск с Windows», чтобы утилита запустилась сама при старте системы.

  • Сохранение: добавьте эту строчку через пункт меню «📝 Напоминалка» (окно автоматически сохраняет изменения в файл при вводе и закрытии).

Когда утром в среду появится диалоговое окно, вы сможете нажать «Удали напоминание» (строка сотрётся из файла) либо «Напомни через 5 минут», если захотите отложить его.

Лайкнули Arman и Сибирь
ArmanСибирь

Пример с напоминалкой
Ты предложил это:

  • Добавить ключевые слова: «по будням», «по выходным», «каждый понедельник и среду», «раз в месяц», «1-го числа каждого месяца».

Но уже есть это:

🔄 Регулярные и повторяющиеся задачи

ежедневно в 14 (или в 14:00, 14:15) выпить витамины — сработает сегодня, а после нажатия кнопки "Удали напоминание" автоматически перепишет строчку на завтрашний день на то же время.

каждую пятницу в 18:30 подвести итоги недели — при подтверждении автоматически сдвинет дату ровно на 7 дней вперёд (на следующую пятницу).

Думаешь, этого недостаточно?

Вы абсолютно правы — с практической точки зрения этого более чем достаточно (на все 95% жизненных сценариев).

Моё предложение было скорее из разряда «идей на вырост», но если взглянуть на архитектуру и философию «Троицы» (минимализм, скорость, отсутствие лишнего кода), текущая реализация уже самодостаточна и очень изящна.

Вот почему текущих двух правил хватает за глаза:

1. Они закрывают две главные оси привычек человека

  • Суточный ритм (ежедневно / +1 день): витамины, ежедневные созвоны, выгул собаки, проверка бэкапов.

  • Недельный ритм (каждую пятницу / +7 дней): отчеты в конце недели, тренировки, поход в храм по воскресеньям или средам, уборка.

2. Любой составной график решается двумя простыми строчками

Если вам нужно напоминание во вторник и четверг (или «по будням»), не обязательно городить сложный парсер. Гораздо проще и прозрачнее написать две строки:

Text
 
Скопированокаждый вторник в 19:00 спортзал
каждый четверг в 19:00 спортзал

И у этого подхода даже есть преимущество: вторничную задачу можно отметить или удалить независимо от четверговой, файл остаётся простым и понятным.

3. Отсутствие «подводных камней» календаря

Чтобы поддержать фразы вроде «каждый месяц 31-го числа» или «по будням», коду пришлось бы:

  • Считать длину месяцев (28, 29, 30, 31 день) и високосные годы.

  • В пятницу сдвигать дату не на +1 день, а сразу на +3 (до понедельника).

  • Это добавило бы десятки строк логики ради редких пограничных случаев.


Резюме:

Для легкой и быстрой утилиты связка «Ежедневно» (+1) и «Каждый [день недели]» (+7) — это идеальный баланс между возможностями и простотой. Усложнять парсер не нужно, он уже отлично справляется со своими задачами.

Лайкнул Arman
Arman

Напоминалка

Добавлена поддержка указания года в форматах "15 декабря 2026" и "15 декабря 26".
Сокращённый год автоматически преобразуется в полный.
Напоминания, запланированные на будущие годы, больше не должны ошибочно срабатывать в текущем году.

Программа распознаёт фразы для регулярных событий, например "каждый год 15 мая", "ежегодно", "каждый месяц" и "ежемесячно".
После срабатывания повторяющегося напоминания его дата автоматически переносится на следующий месяц или год.
Если в следующем месяце нет соответствующего числа, используется последний день этого месяца.

При фразе "каждые выходные" следующий запуск рассчитывается с учётом текущего дня недели: если напоминание срабатывает в субботу (6), дата переносится на воскресенье — через 1 день.
Если оно срабатывает в воскресенье (0), дата переносится на следующую субботу — через 6 дней.

Для фразы "каждые будни" предусмотрен перенос на следующий будний день: в пятницу (5) — на понедельник, со сдвигом на 3 дня; в субботу — на понедельник, со сдвигом на 2 дня; во все остальные дни — на следующий день, со сдвигом на 1 день.

Фразы вида "каждый понедельник" продолжают работать с интервалом в 7 дней (shiftDays = 7).
Аналогичная логика применяется к другим дням недели, например "каждый вторник" или "каждую пятницу".

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнули Arman и Сибирь
ArmanСибирь

Улучшена точность распознавания дат, времени и дней недели
Переработано определение месяцев.
Теперь учитываются только полные корректные формы месяцев: январь / январе / января, февраль / феврале / февраля и так далее.

Зачем
Раньше месяц мог определяться по части слова.
Из-за этого слова вроде "маякни" ошибочно распознавались как месяц "мая", и напоминание могло неправильно считаться датой (например, как 8 мая).

Оптимизированы дни недели.
Оставлены только реально используемые при создании напоминаний формы (понедельник, понедельника, понедельнику, по понедельникам и т. д.) и сокращения (пн, вт, ср, чт, пт, сб, вс).
Все нерелевантные книжные склонения (вроде "понедельниками" или "воскресений") удалены.

Зачем
Исключены ложные срабатывания по похожим частям слов.
Например, слово "встреча" больше не распознаётся как сокращение "вс" и не превращает разовое напоминание в еженедельное воскресное.

Улучшена проверка чисел и времени.
Число теперь считается датой, только если токен целиком состоит из цифр.

Зачем
Раньше время вида 8:24 могло частично считываться как день месяца "8".
Теперь строки вроде "в 8:24" больше не считаются датой, а корректно обрабатываются как время напоминания.

Исправлено распознавание интервалов ("через X минут / часов").
Вместо поиска по первым буквам введены строгие списки форм для минут (мин, минут, минуту, минуты, минутку) и часов (ч, час, часа, часов, часик).

Зачем
Раньше поиск по первым буквам ("мин", "час") цеплял посторонние слова: например, слово "минимум" ошибочно срабатывало как минуты, а слово "части" (во фразе "через 2 части фильма") приводило к ложной установке таймера на 2 часа.
Теперь учитываются исключительно настоящие единицы измерения времени.

Устранены ложные срабатывания на слова "выходной" и "будни".
Заменён неточный поиск по корню слов на конкретные календарные формы (выходные, выходных, выходным, выходной; будни, будням и т. д.).

Зачем
Раньше задачи с техническими или рабочими терминами вроде "проверить выходное напряжение в 14:00" или "оформить выходное пособие" ошибочно помечались как задачи для субботы/воскресенья и не срабатывали в будние дни.

Итог

Парсер напоминаний полностью избавлен от случайных совпадений по фрагментам слов. Фразы срабатывают точно и предсказуемо:

"в 8:24 маякни" — сработает сегодня в 8:24, а не 8 мая;
"в 8 встреча" — сработает сегодня в 8:00, а не каждое воскресенье;
"через 2 части фильма" — больше не создаёт ложное напоминание на 2 часа;
"проверить выходное напряжение в 15:00" — сработает сегодня в 15:00, а не уйдёт на выходные.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Arman
Arman

Интеллектуальный расчет и подсказка даты/времени в реальном времени
В модуль "Напоминалка" добавлена интерактивная панель подсказок и умный парсер естественного языка.
Теперь при наборе текста или перемещении курсора программа на лету анализирует текущую строку и точно рассчитывает, когда именно сработает напоминание.

Как это работает

1. Интерактивная строка подсказки внизу окна:

При перемещении курсора по строкам заметки в нижней панели мгновенно отображается итоговый расчёт:
например, "⏰ Сработает сегодня в 18:30" или "📅 Сработает 15 октября в 12:00".

2. Распознавание относительного времени ("через ..."):

Поддерживаются любые удобные интервалы: "через 10 минут", "через 2 часа", "через 1 час 20 минут", а также разговорные формы: "через полчаса", "через полтора часа", "через час".
При сохранении или смене фокуса такие фразы автоматически конвертируются в точное фиксированное время.

3. Гибкие даты и дни недели:

Поддержка слов: "сегодня", "завтра", "послезавтра".
Дни недели: "в понедельник", "во вторник", "в пятницу в 19:00" (программа сама рассчитает ближайшую нужную дату).
Группы дней: "в выходные", "в будни".
Календарные даты: "25 декабря", "1 сентября в 10:00", "15 мая 2027".

4. Учёт контекста времени суток:

Понимание уточнений: "7 вечера" (распознаётся как 19:00), "8 утра", "днём", "ночью".
Поддержка различных форматов записи: "15:30", "15.30", "15-30" или просто "в 18".

5. Валидация и защита от ошибок (подсветка красным):

Если допущена опечатка во времени (например, "25:00" или "в 30"), строка внизу предупредит об ошибке красным цветом.
Проверка несуществующих календарных дней (например, "30 февраля" или "31 апреля" с указанием максимального числа дней в месяце и учётом високосных годов).
Предупреждение, если после слова "через 15" забыли указать единицы измерения (минуты или часы).

disk.yandex.ru/d/E_vfHfAcbNM6gg

Лайкнул Arman
Arman

Напоминалка

Улучшен и оптимизирован алгоритм обработки повторяющихся задач ("каждый день", "каждые сутки", дни недели, "по будням", "по выходным").
Разбор дат и периодичности стал устойчивее к опечаткам и вариациям форм слов (унифицирована обработка всех форм слова "каждый/каждые").
Исправлена логика переноса завершённых периодических напоминаний на следующий цикл.

Привилегии и права доступа

Повышена надёжность функции "Стать владельцем и получить полный доступ".
Добавлена строгая проверка результата генерации списков управления доступом (DACL) для предотвращения ошибок освобождения памяти и сбоев при работе с повреждёнными системными дескрипторами безопасности.

Системный таймер и стабильность

Оптимизировано распределение приоритетов при удержании высокого разрешения таймера: базовый приоритет процесса снижен с реального времени (Realtime) до высокого (High) для исключения риска зависания системных потоков ввода и звука, а критический приоритет (Time-Critical) изолирован строго внутри рабочего потока таймера.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Гайд по умной «Напоминалке»
В программу встроен удобный планировщик с распознаванием естественной русской речи: он понимает даты, время и интервалы без необходимости нажимать лишние кнопки.


🧠 Главный принцип работы: «Строка со временем = старт задачи»

Программа читает ваш список сверху вниз. Любая строка, в которой парсер находит дату или время, считается началом (заголовком) нового напоминания.

Все последующие строки (где времени нет) прикрепляются к этой задаче как её описание — ровно до тех пор, пока парсер не встретит следующее время.


💡 Лайфхак: пишите время действия, а не самого события

Если событие происходит вне дома, ставьте время выезда или сборов, а не время приёма:

  • Вместо в 13:00 стоматолог (в 13:00 вы уже должны сидеть в кресле)

    👉 пишите в 12:15 выезжать к стоматологу


✅ КАК МОЖНО (И НУЖНО) ПИСАТЬ

1. Однострочные задачи (за ПК или по дому)

  • в 18:40 созвон в Discord / Zoom

  • завтра в 09:30 идти на почту за посылкой

  • 14 октября в 11:45 выезжать к стоматологу

  • в эту пятницу в 18:00 собираться на встречу

  • в 21:00 принять витамины

  • в 17:50 сделать бэкап проекта

2. Задачи с таймером («через ...»)

Программа сама пересчитает относительное время в точные часы и минуты:

  • через 15 минут снять чайник с плиты

  • через полчаса закончить перерыв

  • через 2 часа размять спину и глаза

3. Повторяющиеся задачи (циклы)

При нажатии кнопки «Да» (выполнено) такие задачи не удаляются, а автоматически переносятся на следующий цикл:

  • каждые будни в 17:55 отправить рабочий отчёт

  • ежедневно в 23:00 проветрить комнату

  • каждый вторник в 14:00 планёрка

  • каждые выходные полить цветы

  • каждое 1-е число месяца передать показания счетчиков

4. Многострочные задачи с подробным описанием

Время пишется в первой строке, а детали, списки или ссылки — ниже:

Text
 
Скопированов 11:45
Выезжать к стоматологу.
Взять с собой:
- Полис
- Снимок

❌ ГЛАВНАЯ ЛОВУШКА: «Как делать нельзя»

⚠️ Указывать другое время на новой строке внутри описания

Частая ситуация: вы хотите поставить напоминание на время выезда, но в описании на новой строке упомянуть время самого события.

❌ НЕПРАВИЛЬНО:

Text
 
Скопированов 11:45
Выезжать к стоматологу (приём назначен на 12:30)

Что произойдет:

Парсер прочтет первую строку в 11:45 и начнет задачу. Затем он перейдет на вторую строку, увидит 12:30 и решит: «О, тут указано новое время, значит, первая задача закончилась, а с этой строки начинается следующее напоминание на 12:30». В итоге напоминание на 11:45 выскочит с обрезанным текстом (только в 11:45).


💡 Как правильно обойти эту ситуацию?

Если вам нужно уточнить время события внутри заметки:

Вариант 1 (проще всего): Напишите всё в одну строчку:

в 11:45 выезжать к стоматологу (приём в 12:30)

Вариант 2: На второй строке напишите время словами без цифр через двоеточие или точку:

Text
 
Скопированов 11:45
Выезжать к стоматологу (приём в половине первого)

(Обратите внимание: форматы 12.30 и 12-30 парсер тоже распознает как время, поэтому на вторых строках пишите время словами: в полдень, в час дня, в 12ч).


🔍 Подсказка в реальном времени

Внизу окна редактора всегда есть строка статуса. Когда курсор стоит на задаче, программа сразу показывает, как именно она её поняла (например: 📅 Сработает 14 октября в 11:45). Если внизу отобразилось то, что вы задумали — всё сработает идеально!

Лайкнул Сибирь
Сибирь

Принято решение разделить дату и время по русскому стандарту
Точка между цифрами — всегда дата (12.12 → 12 декабря, раньше читалось как время 12:12).
Время — только двоеточие (12:12) или дефис (12-12).

disk.yandex.ru/d/E_vfHfAcbNM6gg

Напоминалка
Улучшен алгоритм очистки текста после удаления сработавшего напоминания.
Программа больше не оставляет лишние пустые строки (абзацы) в конце списка, текст аккуратно поджимается, а курсор возвращается строго к последнему символу.

disk.yandex.ru/d/E_vfHfAcbNM6gg

Наверное, скоро придётся переезжать на облако Гугл, если сервера Яндекса продолжат утюжить )

Лайкнул Arman
Arman

Переехал на GitHub

Желательно вручную обновить файл Trinity.exe
github.com/evgenyguidesoul/Trinity/blob/main/Trinity.exe

Лайкнул Сибирь
Сибирь

dehote9223, привет.

Переехал на GitHub

Великолепная новость! Молодчина! Давно хотел тебе предложить там сделать зеркало для Trinity или вовсе туда переехать. На github ОЧЕНЬ удобно вести разработку (если разобраться😉). А пользователям будет гораздо удобнее следить за всеми изменениями, а не копаться в ветках форума)). Гитхаб тем более полезен для такой программы как Trinity, которая стремительно развивается и включает в себя всё большое количество всяких функций и тонких настроек.

Конечно-же огромное спасибо Хачатуру за возможность для твоего "старта" на этом сайте ➡️ и благодаря чему многие познакомились с твоей Троицей, но она уже (имхо) очень возмужала и нуждается в настоящей площадке, специализированной под разработку, под тщательное логгирование всех изменений, сбор обратной связи от пользователей и так далее.

Короче, поздравляю тебя от всей души с переездом, dehote9223👍🥳! 

Микро-циклы в напоминалке

Поддержка повторяющихся коротких интервалов: "Каждые 45 минут", "Каждый час", "Каждые полчаса", "Каждые 2 часа" (для питья воды, разминки, отдыха глаз).

Поддержка диапазонов активности вида "с 10:00 до 19:00" — ночью и вне рабочих часов цикл "засыпает" и не беспокоит.

Распознавание фраз "по будням" и "по выходным" для рабочих и домашних привычек.

Если время не указано, программа сама выставит ближайший запуск; если рабочий день или окно активности закончились — напоминание автоматически переносится на утро следующего разрешённого дня (например, с вечера пятницы на утро понедельника в 10:00).

При нажатии кнопки "Выполнено" напоминание не стирается, а автоматически сдвигается на шаг вперёд и перезаписывает файл (разовые задачи при этом завершаются и удаляются как обычно).

Строка статуса в редакторе прямо во время ввода в реальном времени показывает дату, день недели и точное время следующего срабатывания с учётом всех ограничений.

github.com/evgenyguidesoul/Trinity

Сибирь, спасибо и пожалуйста!
Переезд на ГитХаб — это вынужденная мера, потому что не получилось переехать перелететь на облако Гугл )

Напоминалка

Исправлена ошибка в диапазонах времени вида "с 19:00 до 23:00" — время после "до/по" больше не затирает время начала, событие корректно назначается на время старта (19:00).

Устранено ложное немедленное срабатывание для периодических задач ("по будням в 17:00" и т.п.) — если назначенное время сегодня уже прошло, напоминание больше не выскакивает сразу, а ожидает наступления следующего дня цикла.

Добавлен точный расчёт подсказки для фраз "по будням" и "по выходным" (теперь при вводе "по выходным" во вторник подсказка правильно указывает на ближайшую субботу, а не на следующий день).

Исправлена кнопка "Выполнено" для периодических задач без слова "каждый" ("по будням", "по выходным", "по вторникам") — напоминание больше не удаляется из файла, а корректно сдвигает дату на следующий цикл.

github.com/evgenyguidesoul/Trinity

Вайб-кодинг Копипасте-кодинг

Лайкнул Arman
Arman
1◄Страница 21 из 27► 27