Турбокодер
341 subscribers
69 photos
1 video
9 links
Блог инди-разработчика Болсуна Михаила.

Автор проектов TurboConf, FastCode 1С, Нетленка 1С и т.д.

Админ каналов @FastCodeIM, @TurboConf и других.

Дневник разработчика, идеи, мысли, маркетинг, монетизация, ИИ, GPT, нейросети
1С, C#, Telegaram, Web...
Download Telegram
Столкнулся с интересной проблемой.

При клике на ссылку, обработчик то срабатывает, то нет. В зависимости от текста. Очень стало интересно решить эту задачу.

Бился с ней долго и упорно 🙂

1. Сначала подумал, что какой-то символ кириллицы неправильно кодируется и портит формат RTF.
Пробовал по разному кодировать, но связи не нашел.
2. Потом подумал, что я неправильно формирую RTF формат.
Тоже разные варианты не помогли.
3. Погуглил, понял что проблема популярная. Стал заменять редактор на другие реализации, якобы помогающие формировать ссылки.
Безрезультатно.
4. В результате в гугле нашел информацию, что это оказывается баг в элементе управления RichTextEdit! 😡

В зависимости от длины текста, может не срабатывать клик 😄
И судя по обсуждениям, проблема популярная и затронула многих разработчиков.
Интересно сколько человеко-часов на планете тратится программистами на решение таких вот багов? 😉
😁13
Есть такой антивирус McAfee, его используют некоторые пользователи TurboConf.

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

И вот сегодня пришел ответ, что программу добавили в белый список 🙂

Dear Sir/Madam,

Thank you for contacting us.

We have reviewed your submission for whitelisting of your software and the submitted file named ['TurboConf.zip'] have been Whitelisted.

Regards,
McAfee Data Submission Team


Ну, как говорится, лучше позже чем никогда 😄
🔥61🌭1
Пользователь прислал ошибку.

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

А ну сказано меньше, значит до 259 - тоже нет.

А полное имя, значит с расширением .txt, значит, все таки 260-4=256 и число красивое. Уменьшаю до 256. Не работает.

Пошел гуглить. На сайте Microsoft опять говорится про 260. На StackOverfliow много версий. 259, 257, 255, 256, 240.
Попробовал 240 - работает. Стало интересно, какое все-таки, попробовал 255 - ошибки нет. А при чем тут тогда 260???

Пошел снова читать документацию. Оказывается Windows добавляет к имени файла невидимую сроку <NUL> 🙂 Отсюда и получается 260-5=255.
Ну и все таки даже с учетом этого <NUL>, длина должна быть не "меньше 260", а "не больше 260".

Все таки важно грамотно составлять текст ошибки. Берегите время других разработчиков! 😉
👍7😁3
Столкнулся с очередным детективом в разработке 😱

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

Задача: определить масштабирование для каждого монитора в системе (т.е. 100%, 125% и т.д.)
Это нужно для того, чтобы правильно размещать элементы TurboConf в конфигураторе 1С.

Задача непростая. Как таковой готовой функции в WinApi и .NET нет. В последних версиях .NET появилось что-то похожее, но работает только для Windows 10 и выше, и то не на всех билдах и в определенных условиях.

Для Window 7 свой метод получения, для 8 тоже, для 10 разных версий тоже, ну и для 11 конечно по своему. А еще есть разные флаги, которые тоже влияют на это, в общем как обычно.

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

Но она никак не работала в TurboConf...

В этот раз я решил не сдаваться и довести дело до конца. 🔍

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

Добавил манифест - не заработало.

Я создал тестовое приложение из одной формы и манифестом. Тоже.

Я выяснил, что для моего типа приложений (WinForms) оказывается нужен не манифест, а app.confg. ОК.

Не заработало.

Попробовал на тестовом приложении с app.confg - работает! Интересно.

Я начал сравнивать и менять все настройки приложений на одинаковые. Не помогает.

Я начал удалять из проекта все что можно, все зависимости, библиотеки т.д. Безрезультатно.

Я удалил практически все, оставил одну форму как в тестовом. Результат тот же.

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

Я создал, новую чистую папку для проекта, и заново собрал - не работает. 😥

В чем же дело?! Это были две полностью одинаковые копии, кроме одного различия...

Названия сборки!

Одно называлось TestDpi.exe, а второе TurboConf.Application.exe
Убираю точку из названия и все работает!!! 😅

Что это было??? Из-за точки в названии я никак не мог долгое время заставить работать функцию! Мораль - никогда не сдавайтесь!

В общем хеппи энд, работаем дальше... 😉
🔥16👍9🤯21👾1
Продолжение (окончание??) детектива с поддержкой масштабирования 😱

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

Но через некоторое время все опять перестало правильно отображаться, хотя я ничего не менял 😥

Я уже понял, что точка не причем. Поменял название на TurboConf.Application123 и все заработало. Но через некоторое время опять перестало.
Видимо где-то кэшируется какая-то настройка. Почистил все кэши которые только можно, поискал в реестре ничего.

Первое время работает правильно, потом перестает.

Запустил Process Explorer и добавил колонку DpiAwareness. Тут я заметил интересную вещь, первое время после запуска приложения настройка показывается та которую я задавал (Unaware), но через некоторое время сама меняется на PerMonitorV2.

Я полез в свойства приложения и увидел что флаг в настройках совместимости Dpi установился на "Приложение".

Я снял его и все заработало, через некоторое время флаг опять установился 😓

После некоторых изысканий, я выяснил что в недрах Windows 10 есть такая чудесная настройка "Исправление масштабирования для приложений". Если система считает, что приложение отображается неправильно, она сама начинает пытаться исправлять это. Тем самым мешая мне правильно определять координаты в конфигураторе для вывода элементов. 😡

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

Но это уже отдельная история, заслуживающая отдельного рассказа 😉
🔥20
Вот такая вакансия от 1С подъехала 🙂

🟡 Вакансия: C++ разработчик
Ищем C++ разработчика в команду разработки 1С:Предприятие для работы над улучшением и развитием IDE (Конфигуратора).

🔸Задачи:
Развитие Конфигуратора / IDE для разработчиков 1С
Работая над IDE вы будете облегчать труд большого числа прикладных разработчиков

Ну вот, а я только на днях добавил Избранное в Навигатор по метаданным, а сегодня стал встраивать Избранное в дерево конфигурации. Может тогда не стоит делать и нужно подождать, когда в 1С это реализуют 😉

Как думаете?
😁5🔥4👍2🗿2
Кто не делал свою 1С, тот не программист 😄

Откопал свою старую разработку - фреймворк для создания бизнес приложений. Делал лет 15 назад.

Были реализованы справочники, документы, отчеты. Все это можно было легко конфигурировать в редакторе Visual Studio.

Интерфейс старался делать приближенным к 1С. Т.к. было написано на WPF C#, можно было легко создать стиль элементов такой же как в 1С, но руки не дошли.

На нем создал пару приложений для себя, работают до сих пор 🙂
👍13🔥2
Часто приходится проходить квесты, чтобы добавить какой-то новый удобный функционал в TurboConf 😉

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

Но недавно нашел решение как это реализовать.

Если TurboConf не может отобразить объект в дереве конфигурации он показывает свойства объекта и предлагает открыть сам объект.
Дальше программа открывает окно "Сравнения конфигурации с файлом", подсовывает пустой файл cf или cfe для расширения.
Далее вызывает поиск в этом окне и через окно Результаты поиска активирует объект в дереве сравнения.
И затем через контекстное меню открывает уже сам объект.
После этого закрывает все эти вспомогательные окна.

Весь процесс происходит автоматически и занимает несколько секунд даже на больших конфигурациях 🙂
👍7🫡42
Я вот сегодня первый раз во всем проекте GOTO использовал.

Как теперь в глаза смотреть другим разработчикам? 🙈

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

Кстати посмотрел на гитхабе ради интереса репозитарий Microsoft, там этих goto... Да и в типовых 1С тоже встречаются 😉
👍10🔥31
Вот такое северное сияние возникло ровно через год и 1 месяц пользования монитора MSI 27'' 😢

Гарантия DNS конечно только что закончилась.

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

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

Кстати вспомнил, как WD прислали мне новый NAS, после того как старый превратился в кирпич, даже после окончания гарантийного срока 😉
😢10😱2
Давно не писал, но были уважительные причины - был сильно занят. Добавил наконец ИИ в конфигуратор 1С 🙂
Вчера выпустил тестовую версию TurboConf 6.5 с поддержкой ИИ ассистентов, а сегодня ИИ помощника FastCode AI. 🎆🎆

Начал разработку еще в начале 2024 года, но тогда были большие сложности с ограничениями моделей. Например контекстное окно 8000-16000 символов, да и стоимость была очень существенная. Модели совсем не имели представления о синтаксисе 1С и генерировали почти всегда полную чушь.

На какое-то время приостановил разработку поддержки ИИ , но в последние месяцы ситуация сильно изменилась - стоимость упала в разы, контекстное окно выросло до 1 миллиона. Есть модели которые почти не делают ошибок в синтаксисе 1С. Если обогатить запрос нужными данными, то вероятность правильного ответа сильно вырастает.

Сам я постоянно использую ИИ в разработке, надеюсь что и новый помощник будет полезен программистам 1С.
Но это пока только начало, работы предстоит много 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥53
Мне нравится с какой уверенностью ИИ берется отрефакторить огромную вьюшку, с кучей разных зависимостей, за который я боялся браться 🙂

Да, такой, конечно, сейчас сделаем! 😄
😁5👍2
Компьютер пару дней назад перестал уходить в спящий режим. Т.е. нажимаем Сон, мониторы выключаются, но все продолжает работать. Вентиляторы крутятся и т.д. Очень надоедливо. 😡

Особенно весело с этим разбираться среди ночи, когда уже собирался спать. 🙂

Все советы в интернете были либо не по теме, либо в духе переустановите систему.

И тут натыкаюсь на форуме на тему, где человек пишет что нужно "всего лишь" изменить пару секретных настроек.

В реестре идите по адресу: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\25DFA149-5DD1-4736-B5AB-E8A37B5B8187
Правой кнопкой мыши по "Attributes" и измените значение на "2". Сохраните. Далее идем в дополнительные настройки электропитания - Сон - Политика для режима отсутствия - Ставим значение - "Нет".

Что за режим отсутствия, что за параметр??? 😱 Но это сработало!

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

Господа разработчики, не мучайте пользователей! Неужели сложно было вывести какое-то всплывающее уведомление, что компьютер в режиме отсутствия, а не сна и кнопочку Отключить?? 😉
😁4💯2
Как говорится не делай добра... 🙂

Решил включить новый продукт FastCode AI в текущие редакции TurboConf, а также начислить всем текущим пользователям по 30 кредитов на баланс. Сделал следующее описание акции

FastCode AI Базовый доступен для всех пользователей TurboConf c подпиской TurboConf Ultimate, либо действующей техподдержкой.
В Базовую версию включен баланс 30 кредитов, далее пользователю необходимо использовать свой ключ от сервиса поставщика языковой модели или пополнить баланс.


При покупке же новых подписок будет начисляться по 30 кредитов в месяц или 300 (при оплате за год).

И у пользователей начались вопросы 🙈. Почему там 300 кредитов, а у нас 30, мы же покупали годовую поддержку??

Объясняю. Имелось в виду, что текущим пользователям, с действующей поддержкой будет начислено по 30 кредитов, даже если они приобретали поддержку до выхода FastCode AI. 300 же кредитов начисляется пользователям при покупке новых годовых подписок.

Кредиты мне не достаются бесплатно и я также оплачиваю их поставщикам языковых моделей.

В общем все такие акции нужно десять раз обдумывать и может оказаться, что проще ничего не включать, не добавлять бесплатно, а просто предложить докупить новый функционал. Либо четко прописывать, что кто получает и на каких условиях ☝️

Но, задним умом все крепки... 😉
Надеюсь на понимание, ваш разработчик ❤️
9