ХаритоновСофт
56 subscribers
38 photos
1 video
11 files
118 links
Download Telegram
У меня отпуск, ура! Перед выездом на полный пансионат (в село к родителям), удалось поковыряться в Индикаторе.

Было два багрепорта с очень странным поведением форм-подложек, которые дают цвет панелям задач, в сочетании с их прозрачностью.
Цветные куски оставались в разных частях экрана. Эта багуля всё никак не воспроизводилась, но сегодня мне удалось получить похожий эффект при изменении размеров экрана, в эмуляции на VirtualBox с несколькими мониторами. Помогло принудительное скрытие формы перед перемещением. Надеюсь, природа этой ошибки на виртуалке такая же как на реальных машинах.

Там же выяснилось, что после добавления кода получения уникального слепка компьютера, всё перестало работать на VirtualBox. Это исправление, конечно, большое для меня, вряд ли кто-то ещё столько времени гоняет Индикатор на виртуалках.

Дальше получилось заняться параметрами командной строки — это команды которые можно передать при запуске программы.
Сначала пошла хотелка от @Denis_e_87. Он написал, что не желает видеть иконку программы в систрее. На мой вопрос: «почему бы не переместить в её в скрытые?», получил внезапный ответ: «Но я то знаю, что она там есть» 🔥.
Я, как человек, который тоже регулярно хочет странного, не смог проигнорировать такой запрос, тем более, что добавить и поддерживать эту фичу — не сложно. Теперь, если вы выведёте команду «LayoutIndicator.exe -notrayicon», значка программы не будет в трее. Человек, сделавший такой финт, берёт на себя обязательство убивать процесс самостоятельно, т.к. меню с пунктом «Выход» у него не будет.

И чтобы два раза не вставать добавил там же команду «-withlog», она просто принудительно включает запись логов. Как-то нужна была такая функция, когда программа завершала работу сразу после запуска, отказываясь говорить, где у неё болит.

В расширенных настройках появился новый пункт, по просьбе @TutEvgen1984. Теперь можно сбрасывать настройки до заводских, если вы вдруг слишком их перекрутили.

После релиза, оказалось, что ссылка на сайт, с формы оповещения о новой версии, перестала работать. Я был так расстроен, что нужно вернуть полностью готовое автоматическое обновление, из-за паники антивирусов, что не проверил хорошо ли всё работает после возврата. Исправил.

Желаю всем хорошо отдохнуть. Спасибо за багрепорты и поддержку!

Список изменений:
✅ Добавлен параметр запуска «-notrayicon». Если программа будет запущена с ним, в системном трее не будет иконки приложения индикатора. В таком режиме, закрыть программу можно будет только через диспетчер задач
✅ Добавлен параметр запуска «-withlog», который принудительно включает запись в лог
✅ В расширенные настройки добавлен пункт для сброса всех настроек в изначальное состояние
🛠 (исправление) Не работала ссылка на форме оповещения о выходе новой версии программы
🛠 (исправление) Программа не работала на виртуальных машинах VirtualBox
🛠 (исправление) После перемещения форм-подложек, меняющих цвет панели задач, оставались следы

https://khsoft.ru/download/test/LayoutIndicator.v2.8.7.test.zip
👍8
Парочка изменений в Индикаторе раскладки

Недавно разбирал несколько ошибок: не подхватывался файл настроек, не работала автозагрузка. Оказалось, человек запускал программу прямо из архива. Архиватор каждый раз создавал временную директорию. Естественно, никакого файла настроек там не было, а путь, прописанный для автозапуска, был неверный.

Всё это натолкнуло меня на идею, сделать инсталлятор. Это решение даёт сразу несколько плюсов:
✔️ Запуск из архива невозможен, инсталлятор положит файл сразу в распакованном виде.
✔️ Для Индикатора автоматически создастся директория с известным мне именем и путём. Это облегчит поддержку, редко кто меняет это значение при установке.
✔️ Есть шанс, что Виндовс, из-за распространённости такой поставки софта, перестанет ругаться на вирусы и разводить прочую панику.
✔️ На рабочем столе автоматически создаётся ярлык для запуска.
✔️ Стало удобней удалять программу через стандартную процедуру Виндовс.

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

За одно исправил две надоедливых багули:
1. Формы подсветки панелей задач опять начали сворачиваться по win+d. Не помню уже, который раз я это правлю, баг просто рекордсмен по возвращению. Вылазит на свет только на особенных версия Виндовс. Надеюсь, попрощались навсегда.
2. При смене цвета панели задач, форма подсветки становилась на некоторое время бледной и только потом перекрашивалась. Меня это давно раздражало, только сейчас дошли руки поправить.

Параллельно провожу рефакторинг для реализации поддержки бесконечного количества раскладок. Дело оказалось более фундаментальным т.к. назрела переработка интерфейса. Хочу сделать настройки более зависимыми от языка. Чтобы можно было включать, выключить и настраивать индикацию для конкретной его раскладки.

А между делом пилю свою вторую программку от ХаритоновСофт. Там я упоролся в современное написание интерфейсов под Виндовс, изучаю и пробую WPF. Делают на нём, конечно, красивое. Нужно сделать на таком же уровне. Программа уже много месяцев работает у меня в виде MVP, сразу намертво вписалась в рабочий процесс, как будто всегда там и была. Очень хочется выпустить её в свет, но работы ещё очень много.

Индикатор раскладки 2.9.0 - тестовая версия

Список изменений:
✅ У программы появился инсталлятор. Теперь это основной способ установки
🛠 (исправление) В очередной раз, исправлено исчезновение форм подсветки панели задач, по нажатию win+d, на некоторых версиях Виндовс
🛠 (исправление) Форма подсветки панели задач становились бледными на некоторое время, перед тем как поменять цвет
👍4
Немного процесса разработки

Добавил таблицу, в которую попадают все, установленные в системе раскладки.
И черновик формы для их настройки.
👍4
Бесконечные раскладки

Появление на свет Индикатора было спонтанным и стремительным. Чисто тулза для себя, проверить, какого это — иметь вменяемую индикацию языка. Данное обстоятельство, плюс многолетний перерыв в написании кода под десктоп, заложили кривой кирпич в фундамент программы — я решил, что поддержки трёх раскладок будет достаточно.

На первой картинке Индикатор 1.0

Долгое время это было так. Только спустя много месяцев подтянулись лингвисты с шестью языками и просто люди с множественными раскладками в одном языке. Они изредка писали мне письма о невозможности индикации старо-монгольского, даже пришлось пилить костыль, чтобы такая конфигурация не приводила к краху.

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

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

Теперь есть куда добавлять настройки звука, когда он будет готов. 😀

Всем тестирующим, советую поставить в отдельную директорию, изменений очень много, большой риск что-то упустить, так что лучше оставить себе путь к отступлению.

Ещё раз большое спасибо всем, кто тестирует и поддерживает! 💪

Список изменений:
✅ Поддержка бесконечного количества раскладок
✅ Новая форма редактирования настроек для конкретной раскладки
✅ Новый формат файла хранения настроек для раскладок
✅ Поддержка файлов настроек от предыдущих версий
✅ Новые цвета раскладок по умолчанию
✅ Появилась возможность отдельно задать альтернативный цвет и альтернативный текст для плавающих индикаторов (мышь + каретка)

Индикатор раскладки 2.9.1 - тестовая версия

#li291
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Индикация звуком

Не думал об озвучивании нажатий клавиш для разных раскладок. Давно печатаю в слепую на обоих языках и сразу вижу, если начал не на том, плюс цвет панели и флажки помогают.

Когда Владимир написал эту идею, просто добавил в список, где лежат все задумки. Потом вспомнил как один коллега, которому я посоветовал поставить Индикатор, сказал, что он при печати не смотрит на экран, поэтому моё приложение не поможет. И вообще, стали часто попадаться на глаза люди, печатающие не на том языке, уткнувшись в клавиатуру. Так, потихоньку, эта идея становилась всё более привлекательной. Да и если бы я добавлял в программу только то, что нужно лично мне, она бы замерла примерно на версии 1.1 😊

К пожеланиям Владимира присоединился Oleg, с тезисом, что озвучивать каждое нажатие — это перебор, нужно отключать звук после какого-то времени с момента переключения либо после определённого количества символов.

Такое ТЗ легло в основу доработки. Благо теперь настройки для каждой раскладки на отдельной форме, просто добавил вкладку «🎶 Звуки». Сообразил, что в названия можно добавлять иконки юникода и добавил их, между делом, для всех вкладок.

У раскладки есть два события которые можно озвучить:
1. Переключение на неё
2. Нажатие клавиши, когда она активна

Встроил небольшую библиотеку звуков для обоих случаев. Рядом с выпадающем списком можно настроить громкость и послушать как они будут звучать.

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

Моё погружение в мир работы со звуком в .Net это история, заслуживающая отдельного поста. Там был весь спектр эмоций. 😊

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

Спасибо всем причастным!

Список изменений:
✅ Перевод новой части интерфейса на английский и арабский
✅ Добавлена возможность индикации звуком при переключении раскладок и наборе текста
✅ У вкладок настроек появились иконки
🛠 (исправление) Опечатки в английском переводе

Индикатор раскладки 2.9.3 - тестовая версия
👍4❤1
ХаритоновСофт
Индикация звуком Не думал об озвучивании нажатий клавиш для разных раскладок. Давно печатаю в слепую на обоих языках и сразу вижу, если начал не на том, плюс цвет панели и флажки помогают. Когда Владимир написал эту идею, просто добавил в список, где лежат…
Небольшие изменения перед релизом

Было неприятно, когда, при озвучивании, зажатая клавиша выдавала бесконечный звук. Терялось ощущение, что это звук именно нажатия. Теперь его будет слышно непосредственно при нажатии, один раз — пока клавиша не отпущена и нажата снова, звука по ней не будет.

Так же добавил перевод закладки с настройками звука.

Какое-то время поживу с этой версией, если полёт будет нормальным, отправлю в релиз.

Список изменений:
✅ Перевод новой части интерфейса на английский и арабский
🛠 (исправление) Озвучивание нажатия происходит один раз, при нажатии. При удерживании клавиши, звук не воспроизводится.

Индикатор раскладки 2.9.4 - тестовая версия
Релиз Индикатор раскладки. Версия 3.0

Новая версия показала себя как стабильная.
Выложил все наработки на официальный сайт и повысил версию до 3.0

Не обошлось без ошибок, нашлась багуля при загрузке настроек от предыдущих версий. Пока отправляю всем, кто с этим столкнулся новую версию с багфиксом.

Изменил схему монетизации программы:
1. Увеличил цену на 200₽, теперь Индикатор стоит 500₽.
2. Написал на сайте, что все обновления, после покупки, будут бесплатными в течении года. Пока это только анонс, в программе ничего для этого не сделано. Сразу скажу, что все поддержавшие разработку деньгами и тестированием, так же будут получать обновления бесплатно, бессрочно. Когда проверка придёт в код, пока не знаю.

Подсмотрел эту схему на чужих продуктах, считаю вполне справедливой. Это увеличит мизерные шансы вывода программы на самоокупаемость.

Так же решил, что если, по какой-то причине, не смогу продолжать разработку, выложу исходники в свободный доступ.

Идеи для дальнейшего улучшения Индикатора:
* Менять цвет активного окна в зависимости раскладки. Будет работать не со всеми приложениями, лютый кастом не реагирует на системные вызовы смены цвета.
* Заменять системный курсор мыши. Программно это все делают через замену файла курсора. Не знаю, получится ли делать это быстро, без лагов. Нужно тестировать. Это позволит менять цвет самого указателя и снизит нагрузку на процессор, который кушает перемещение формы вслед за курсором.
* Улучшение формы назначения команд при переключении. Тут можно добавить встроенные операции, например, изменение состояний CapsLock и ScrollLock. Вывод уведомлений и т.п. Будет удобно выбирать готовые шаблоны и править их под себя.
* Отдельная закладка настроек для Undead раскладки. Это редкая экзотика, для тех кто работает с билингвальной раскладкой. Думаю, у этой фичи очень маленькая аудитория, но я один из них.)
* Продвинутый экранный индикатор. Чтобы можно было добавить несколько цветовых областей в разных частях экрана, а не только надпись и прямоугольник как сейчас.
* Добавить сбор статистики по настройкам с которыми работает программа. Это поможет понять, чем чаще люди пользуются, а чем не пользуются вообще. Плюс поможет с разбором багов.

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

Сайт программы

Список изменений
✅ У программы появился инсталлятор. Теперь это основной способ установки
✅ Поддержка бесконечного количества раскладок
✅ Новая форма редактирования настроек для конкретной раскладки
✅ Новый формат файла хранения настроек для раскладок
✅ Поддержка файлов настроек от предыдущих версий
✅ Новые цвета раскладок по умолчанию
✅ Появилась возможность отдельно задать альтернативный цвет и альтернативный текст для плавающих индикаторов (мышь + каретка)
✅ Перевод новой части интерфейса на английский и арабский
✅ Добавлена возможность индикации звуком при переключении раскладок и наборе текста
✅ У вкладок настроек появились иконки
✅ Перевод новой части интерфейса на арабский и английский
🛠 (исправление) Форма подсветки панели задач становились бледными на некоторое время, перед тем как поменять цвет
🛠 (исправление) Опечатки в английском переводе
🛠 (исправление) Озвучивание нажатия происходит один раз, при нажатии. При удерживании клавиши, звук не воспроизводится.
🛠 (исправление) В очередной раз, исправлено исчезновение форм подсветки панели задач, по нажатию win+d, на некоторых версиях Виндовс
👍4🔥1
Статистика и проникновение Индикатор в мир

У меня, возле монитора, висит планшет, как у дальнобойщиков. Там время, пробки, погода, количество дней до ближайших событий, остатки банковских счетов и прочая статистика.

Там же, выводится гистограмма по Индикатору. Каждый день представлен четырьмя столбиками: сколько раз приложение было скачано, сколько раз триальные копии вышли на связь, аналогичная цифра по зарегистрированным и количество покупок.

Недавно проснулся, а у меня за день 500+ скачиваний, это аномалия, обычно меньше 20ти. Пошёл смотреть, оказалось какой-то умелец с немецкого хостинга поставил скачивание файла или проверку его даты создания (это один и тот же запрос), на _каждую_ минуту. Я привык к тому, что боты некоторых софтверных порталов ставят чекеры на случай обновления, чтобы побыстрей скачать новую версию, начинить её троянами и выложить бесплатно. Но чтобы каждую минуту, это он явно погорячился, я с таким рвением новые релизы не делаю. 😊

Смотреть статистику — это отдельный вид удовольствия. Можно узнать из какой страны кулхацкер ломает программку, это видно по изменённому содержимому исполняемого файла. Видел запросы из Тайланда и Алжира. Но самая активная, ломанная версия, приходит с Родины, в зарегистрированном на IP адресе, стоит Верхняя Пышма, Ленина, 1 😂

Там же, иногда, видно откуда перешли на ссылку для скачивания. После недавнего обновления, меня, похоже обнаружил владелец нескольких иностранных софт-порталов. Статья про индикатор появилась сразу в паре мест. С забавным описанием, написанным, вероятно, нейронкой.

Вот такие образчики маркетинговой мысли там можно прочесть:
«В постоянно развивающемся мире инструментов повышения производительности «Индикатор раскладки» от Kharitonov Soft выделяется как выдающаяся утилита, предназначенная для оптимизации процесса набора текста.» 🔥🔥

Запишу себе в резюме, что являюсь автором выдающейся утилиты для повышения производительности. 💪
👍8😁1
Первый! Ниша занята 💪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3
This media is not supported in your browser
VIEW IN TELEGRAM
В далёком, 2021, я выкатываю фичу, позволяющую выполнять любую команду, при переключении на каждую раскладку.

В 2025, находится человек, её применивший. 💪

https://www.youtube.com/watch?v=26XHb_cpiAA — инструкция для желающих повторить.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1😁1
3.0.3 — тестовая

Накопилась кучка неприятных багуль по Индикатору.
Были безжалостно повержены.

Так же сделал дополнительную вкладку на форме настроек «Dev».
Там будет собираться всякая краткая диагностика с удобной кнопкой для копирования в буфер.
Даже подумал сделать автоматическую отправку в телегу, но побоялся дудоса)

В арихве, по старинке, один exe-файл. Для желающих потестировать, просто заменить.

Напоминаю, что нужно сделать, чтобы не пришлось регистрировать программу заново:

1. Переходим в «Расширенные настройки» (правый клик на иконке программы в систрее).
2. Ставим напротив пункта «Сохранять регистрационные данные в файл настроек» значение «True».
3. Сохраняем настройки в файл LayoutIndicator.json, в каталог где лежит программа.

Список изменений

✅ Добавлена вкладка с информацией о текущем состоянии программы для удобной диагностики ошибок
🛠 (исправление) При загрузке команд, запускающихся при переключении языка, из файла настроек, пути обрабатывались неверно
🛠 (исправление) Некорректное отображение некоторых элементов UI при масштабировании
🛠 (исправление) Не работала сортировка раскладок в последней версии Win 11
🛠 (исправление) Опечатки в английской версии перевода

https://khsoft.ru/download/test/LayoutIndicator.v3.0.3.test.zip
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
3.0.4 — тестовая

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


Список изменений

✅ Индикатор каретки теперь можно перемещать мышкой
✅ Добавлена информация об экранах на вкладке диагностики
🛠 (исправление) Кнопки выбора цвета не красились в выбранный цвет

https://khsoft.ru/download/test/LayoutIndicator.v3.0.4.test.zip
👍3🔥1
Добрался до Индикатора — давно чесались руки. Несколько лет назад, практически пропала возможность отладки проекта. Из-за сложности общения потоков между собой, дебагер вылетал, заявляя, что лезть к объекту из треда, в котором он не был создан — моветон. Когда совсем прижимало, находил обходные пути, но хотелось простого, человеческого дебага с которым можно двигаться в разы быстрее.

Глядя на корутины и прочие зелёные файберы, понимал, что это то, что нужно. Мне не надо многопоточности, мне нужна параллельность, если она будет ненастоящая, но при этом такая же быстрая и без тредовский головняков, то просто заткнитесь и заберите мои деньги.

Разводить глубокий ресёрч настроения не было, попробовал примерно три решения от GPT, остановился на реализации через таймер, работающий в главном UI-потоке. Довольно быстро отрефачил костяк приложения. Конечно же, появились лютые багули: созданные в родном потоке окна, внезапно начали перехватывать фокус при показе, всё это вгоняло поток в рекурсивную петлю, когда появлялся тестовый индикатор каретки. Но теперь у меня есть отладка! Огромная экономия времени.

И всё это ещё в Ридере, IDE для дотнета от брейнсов. На работе пишу js и groovy в IDEA, пхп и js пэты ковыряю на phpStorm, иногда захожу в DataGrip, короче я плотно сижу на идэехах от брейнсов. Каждый раз когда писал на VS, испытывал подгаралити. А тут как рыба в воде. Придётся теперь и на виртуалку его ставить, назад не вернусь, точно.

На радостях заредизайнил UI вкладки. С особым удовольствием прибрал вкладку мышиных индикаторов — там был свальных грех, стало почище. Тестовую версию не делал, пока всё очень сыро.
👍8
Утонул в проекте. Добрался до 30го уровня сумрака, но вынырнул и собрал тестовую версию.

Изменений в коде много, наверняка что-то отвалилось. Уже давно не в состоянии пройти все тест-кейсы. Это, как минимум, штук 7 разных версий Windows и пару часов работы. Так что тем, кто поставит потестить — больше спасибо. Очень мне поможете. Только сделайте резервную копию, от греха подальше.

Ниже, кратко, что получилось, а в следующим постом — полноценный девлог.


Изменения

✅ Алгоритм поиска раскладки по системному индикатору стал эффективней и стабильнее
✅ Упростилось и ускорилось создание диагностической информации, для случаев когда не был найден системный индикатор Windows
✅ Прекратилась поддержка нескольких раскладок для одного языка, при определении по системному индикатору, в некоторых версиях Windows 10
✅ Переработан UI
✅ Экранные индикаторы стали меньше мигать при переключениях
🛠 (исправление) При стандартном способе определения раскладки не распознавались разные раскладки одного языка
🛠 (исправления) При отключении отображения флагов, программа переставала работать до перезагрузки.

https://khsoft.ru/download/test/LayoutIndicatorSetup.v3.0.6.test.zip
🔥2👍1