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

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

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

Дневник разработчика, идеи, мысли, маркетинг, монетизация, ИИ, GPT, нейросети
1С, C#, Telegaram, Web...
Download Telegram
Когда выложил тестировщикам самую первую технологическую версию нового TurboConf 🙂
😁7
Мне написали из Яндекса, что хотели бы опубликовать мой пост про капчу в своем канале Yandex Security
и опубликовали https://t.iss.one/YandexCloudSecurity/3415/4799

Вот так дела, выходит я теперь знаменитость 😎

P.S. значит кто-то среди нас агент Яндекса, хм... 🤔
🔥8👍2🍾1
5 лет работал дома. Теперь пришлось снять небольшой офис-кабинет за 18 тысяч в месяц. И тут я осознал какие все таки расходы у организаций с сотрудниками и офисом. Даже если их пара-тройка: один разработчик, бухгалтер и еще кто-нибудь. Не говоря уже об фирмах побольше и крупных организациях.

И что удивительно, мне часто пишут, что руководство не согласовывает продление или покупку TurboConf и разработчики покупают его за свои деньги. Парадокс 🙂
👍11🤷‍♂1💯1
Пытался нарисовать картинку с помощью ИИ, на которой изображен старый монитор с кареткой в виде символа нижнее подчеркивание "_ "
Но никак не получается, все время он что-то добавляет от себя или понимает не так.
Картинка должна была символизировать художников и работников творческих профессий в будущем.
Видимо я не настоящий художник 😄
😁3
Как не нужно делать интерфейс

Там где заказывал еду "улучшили" интерфейс и пару раз я уже оставался без соуса 🙂

При добавлении позиции через пару секунд кнопки сдвигаются и следующее нажатие уже выполняет отмену.

Написал в поддержку 😉
😁7🔥2
Как вам идея такого бота для поддержки🙂
😁12🔥4
Понадобился мне алгоритм для объединения пересекающихся интервалов на C#. Погуглил, не нашел ничего толкового. Пришлось писать самому. Час писал, получилось так себе. 🙂

Вспомнил, что у меня есть же подписка на ChatGPT 4! Задал вопрос и он мне за 20 секунд написал код, пример и объяснение как действует алгоритм.
Затем сам подкорректировал, под мой конкретный класс и это все работает!

Блин, почему я сразу не спросил у него 😄
🔥7👾2
Вспомнил забавный случай.
Когда я работал в ИТ отделе одной компании, у секретаря сломался компьютер и она попросила его починить водителя-экспедитора.
Мимо проходил директор и спросил, почему водитель чинит комп и звонила ли она в поддержку.
Секретарь сказала, я не звонила, т.к. они все равно скажут перезагрузить компьютер, а это не поможет, ведь компьютер, то не включается 😄
True story.
😁9
Разрабатываю ИИ для программистов 1С.
Изначально решил делать все на .NET, т.к. хорошо знаю это стек.
Пришлось использовать порт питоновской библиотеки для ИИ LangChain.
Уже вроде многое написал на С# и кое-что работает, но все таки решил переписать API на Python.
Во первых Python - это стандарт для работы с нейросетями. Во вторых порт совсем не поспевает за быстрыми изменениями библиотек.

Язык был знаком, но совсем немного. Уже два дня, прямо чувствую как новые нейронные связи образуются в мозгу 😄
Много вопросов, как сделать то или это. Постоянно возникают ошибки из-за устаревшей документации по библиотекам.
То, что я бы сделал на C# за 5 минут, занимает пару часов, пока разберешься.
Очень помогает ChatGPT и "помощь друга" ))

Но в целом что-то заработало, на портирование первой части кода с .NET ушло 2 дня, надеюсь дальше пойдет быстрее 🙂
🔥19
Когда решили готовить версию к релизу 😄
😁12
Столкнулся с интересной проблемой.

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

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

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👍91🤯1👾1
Продолжение (окончание??) детектива с поддержкой масштабирования 😱

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кстати вспомнил, как WD прислали мне новый NAS, после того как старый превратился в кирпич, даже после окончания гарантийного срока 😉
😢9😱2