ch
Feedback
Турбокодер

Турбокодер

前往频道在 Telegram

Блог инди-разработчика Болсуна Михаила. Автор проектов TurboConf, FastCode 1С, Нетленка 1С и т.д. Админ канала @FastCodeIM и других. Дневник разработчика, идеи, мысли, маркетинг, монетизация. 1С, C#, JS, Telegaram, Web, Mobile...

显示更多
258
订阅者
无数据24 小时
无数据7 天
无数据30 天
帖子存档
32 гигабайта ОЗУ стало маловато на десктопе. Сходил прикупил еще 32 гига 🙂 Надеюсь 64ГБ теперь будет достаточно для одноврем
32 гигабайта ОЗУ стало маловато на десктопе. Сходил прикупил еще 32 гига 🙂 Надеюсь 64ГБ теперь будет достаточно для одновременной работы в нескольких IDE, парочке 1С, Chrome и проигрывателя музыки P.S. установил. Rider на радостях сожрал 30Гб оперативки 😧 Но потом опомнился и упал до 6 Гб, сейчас в рабочей среде потребление памяти в районе 50% 😀

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

Всем хорошо известно, релиз в пятницу часто приводит к незабываемым выходным. Но меня вот как обычно что-то тянет нажать заве
Всем хорошо известно, релиз в пятницу часто приводит к незабываемым выходным. Но меня вот как обычно что-то тянет нажать заветную кнопку именно в пятницу вечером 😀 Может таким образом хочется закрыть гештальт? 😉 А у вас часто бывают релизы по пятницам?

Никогда не думал, что буду номинироваться на звание Легенды 1С 😀 Оказывается тут голосовалка и за меня даже голосует часть сообщества, что конечно приятно. Значит усилия потрачены не зря 🙂 https://t.me/JuniorOneS/579

Когда я работал наемным программистом, мне всегда нравился вопрос от руководства, "Сколько точно нужно времени чтобы добавить
Когда я работал наемным программистом, мне всегда нравился вопрос от руководства, "Сколько точно нужно времени чтобы добавить такой-то функционал"? Как по мне для алгоритма расчета времени на выполнение новой задачи лучше всего подходит этот отрывок из Р. Шекли. Вальдец удрученно вздохнул, извлек из пояса клочок бумаги и огрызок карандаша и спросил: – Сколько монет у вас в кармане? Порывшись в кармане, Марвин сказал: – Восемь. Вальдец записал эту цифру, потом выяснил год и день рождения Марвина, номер его удостоверения личности, размер обуви и рост в сантиметрах. Над этими данными он произвел какие-то математические выкладки. Затем попросил Марвина назвать наудачу любое число от 1 до 14. К названному числу он прибавил несколько своих, после чего несколько минут выводил какие-то каракули и что-то подсчитывал. – Ну? – поторопил его Марвин. – Помните, результат представляет собой всего-навсего статистическую вероятность, – сказал Вальдец, – и заслуживает доверия лишь как таковой. Марвин кивнул. Вальдец продолжал: – В вашем конкретном случае период раскрытия системы истекает ровно через одну минуту сорок восемь секунд плюс-минус пять минимикросекунд.

Пользователи стали жаловаться что залипают клавиши в текущем релизе TurboConf. Начал разбираться и нашел изменение, которое в
Пользователи стали жаловаться что залипают клавиши в текущем релизе TurboConf. Начал разбираться и нашел изменение, которое все сломало. И там был такой комментарий, к чему бы это? 😀

Что-то почтовые рассылки совсем перестали работать. Делал прошлую рассылку 3 месяца назад, отклика почти не было, зря потратил 1000 руб. Сегодня еще раз попробовал рассылку о новом большом релизе. Опять бесполезно. 1% переходов. В предыдущей было 4%. До этого было 8% и выше. Просмотров 12% вместо 33% у прошлой. Видимо от рассылок на почту придется отказаться. ВК тоже глухо. 41 просмотр из 270 подписчиков. 1 лайк и то мой 😀 Зачем я веду эту группу 🤔 Но зато Телеграм радует. Видимо все окончательно перешли в Телеграм и почту уже не смотрят.

Хотел перейти на более короткий цикл выпуска релизов. Т.е. одна большая фича - новый релиз. Но опять сделал монстра. И новый API, и поднятие версии .NET и OneScript, куча нового функционала и улучшенные механизмы взаимодействия. В общем уже почти тянет на новую мажорную версию TurboConf 6, а не TurboConf 5.18 🙂

Добавить новую фичу не сложно, сложно довести ее до рабочего состояния. В точности по правилу Парето, 20% времени занимает со
Добавить новую фичу не сложно, сложно довести ее до рабочего состояния. В точности по правилу Парето, 20% времени занимает создать прототип который работает у самого разработчика. А потом начинается 80% доведения до ума, чтобы фича работала везде (самая скучная часть). Начинают всплывать нюансы, в других функциях появились баги (да, далеко не все можно выявить Юнит тестами). А руки чешутся добавить еще новый функционал, а не копаться в исправлениях и доработках. Но что делать, таков Путь разработчика 😉

Бывает у вас такое? Исправил небольшую ошибку, надо выпускать в релиз и решаешь сразу закрыть еще одну. А тут тоже можно улучшить, тут подправить, тут добавить... В результате 3 дня разработки и релиз на 20 изменений 😉

Какие только баги не встречаются на свете! Случайно обнаружил, что если имя пользователя TurboConf содержит .st, то возникает ошибка загрузки штатных шаблонов *.st конфигуратора. Например: C:\Users\s.stepanov\AppData\Roaming\1c\1cv8\1cv8cmn.pfl )) Программа думает что C:\Users\s.st - это файл шаблона и пытается его загрузить. Обнаружил случайно при анализе лога пользователя, на предмет другой ошибки. Чего только не бывает 😀

Как там дела с ботом вакансий? Подключил несколько партнеров - админов крупных телеграм каналов по 1С. Они разместили у себя ссылку на бота и будут получать комиссию, если будет прибыль 🙂. Копится база пользователей и работодателей. Пользователей бота уже более 800. Начал тестировать монетизацию. Ввел два типа размещения Бесплатное и Премиум. Бесплатное - размещение в боте без уведомлений и публикация в телеграм канале. Премиум - рассылка пользователям бота с уведомлением, публикация в канале, закрепление в топе в боте и канала. Стоимость тестирую от 1р. за отправку одному пользователю и выше. Стоимость рассчитывается перед публикацией, с учетом оборов пользователей. Практически все работодатели пока выбирают бесплатную публикацию. Но сегодня один работодатель уже купил Премиум размещение за 770 руб. Значит спрос есть и с этим можно уже работать. Из этой суммы часть будет начислена партнерам. Пока это все еще MVP и нужно как следует над ним поработать. Но тем не менее кое-какие успехи уже есть 😉

Решил преобразовать канал FastTalk 1C в TurboConf 1C Решение было не просто принять, но взвесив все за и против я это сделал. Преимуществ несколько: 1. Канал FastTalk 1C не особо взлетел. Предполагалось что в нем будут публиковаться разные авторы, в различных рубриках. Как думаете сколько за год авторов, кроме меня, добавило статьи? Правильно, 0. 2. Создавать с нуля еще один канал, процедура не простая. А т.к. аудитория на канале уже была и большинство публикаций в последнее время были как раз посвящены ТурбоКонф, то решение логичное. 3. У меня и так много каналов и вести еще один просто нет возможности. Отдельный канал TurboConf я давно хотел сделать. Группа была, но не все любят участвовать в чатах. Да и информации там слишком много, нужные новости можно случайно пропустить. Планирую публиковать не только информацию посвященную TurboConf, но и о других инструментах, продуктивной разработке и администрировании. Понятно, сейчас происходят отписки, но и новые пользователи тоже прибавляются. Со временем думаю все устаканится и будет ОК 😉

Решил наконец-то окончательно победить неправильное отображение форм, при использовании масштабирования в системе. Сейчас все
Решил наконец-то окончательно победить неправильное отображение форм, при использовании масштабирования в системе. Сейчас все больше мониторов с высоким разрешением, поэтому обращений по этому поводу поступают все чаще и чаще. Проблема в том, что для WinForms масштабирование в Windows настоящий ад. На разных системах и разных версиях .NET все реализовано по своему. А если еще у вас несколько разных мониторов... Даже в пределах Windows 10 масштабирование может вести себя по разному, в зависимости от установленного обновления Creators Update и .NET 4.7.2 По тестам, лучше всего программа отображалась на Windows 11, но зная неповоротливость энтерпрайза, рассчитывать на это пока не стоит. Еще из бонусов. Смену масштаба при переносе с монитора на монитор можно отследить только в последних версиях .NET и ОС. В общем решил писать свою реализацию. Разрабатывать формы нужно обязательно на 100% DPI, а тестировать уже при другом. При чем нужно перелогиниваться, что бы было все корректно. Либо проверять на другой машине. Замерил размер шрифта 8.25 на своей системе, с масштабированием 100%. Затем в программе, при создании формы, добавил вычисление строки с таким шрифтом на текущей форме и поделив эти значения получил точный коэффициент. Далее корректирую размеры элементов формы. Проверил на разных системах, с разным масштабированием. Работает как часы. 😉

Начал заполнять на сайте раздел о клиентах. Все руки не доходили, хотя понимал что это очень важно. Добавил карусель с логоти
Начал заполнять на сайте раздел о клиентах. Все руки не доходили, хотя понимал что это очень важно. Добавил карусель с логотипами на лендинг и в раздел Купить. Буду постепенно добавлять, список длинный 😏 Это может помочь новым пользователям принять решение о покупке. Как говорится, лучше позже чем никогда.

Решил провести кое-какой рефакторинг на сайтах, обновить версии .NET Framework, перевести методы на асинхронные где еще не бы
Решил провести кое-какой рефакторинг на сайтах, обновить версии .NET Framework, перевести методы на асинхронные где еще не было сделано до этого. В результате потом три дня разбирался с исключениями и периодическими падениями IIS. Зато разобрался как определять причину падения w3wp.exe. Если коротко, то нужно снять дамп во время падения и проанализировать его. Для снятия дампа нужно: 1. установить на сервер Debug Diagnostic Tool от Microsoft. 2. запустить DebugDiag Connection и настроить к какому процессу сайту цеплять отладчик и какой дамп снимать. Я выбрал полный. Все это занимает буквально несколько кликов. 3. Ждать падения, в окне будет увеличиваться счетчик ошибок. Для анализа: 1. Запустить DebugDiag Analysis 2. Загрузить дампы, которые насобирал DebugDiag 3. Выбрать нужный отчет, в моем случае Default (Crash report) и нажать Анализ 4. В отчете ищем текст исключения и трассировку. В общем в падениях была виновата одна библиотека, которая использовалась при синхронизации сайта с ВКонтакте. Для нее после обновления .NET почему-то в конфиге сайте не прописался нужный binding. В тестовой среде все работало, а вот на продакшене уже нет. Ошибку исправил, а заодно еще исправил несколько проблемных мест. Сейчас бы это все заняло, конечно, гораздо меньше времени. Но опыт получен 😉

Кто-нибудь вообще читает Помощь в программах? Мы часто критикуем пользователей, за то что они не читают инструкции и помощь к
Кто-нибудь вообще читает Помощь в программах? Мы часто критикуем пользователей, за то что они не читают инструкции и помощь к нашим программам. А сами поступаем точно так же. Например, для TurboConf я создал большой раздел на сайте, где подробно с картинками и гифками расписаны все функции программы. Но читают его достаточно редко. Хотя в самой программе есть куча ссылок на него. Даже в ТурбоПоиск (поле которое всегда на виду) интегрирована помощь по всем скриптам и функциям. Но и сам я тоже не могу себя заставить сесть и детально ознакомится со всем инструментарием который я использую. Максимум могу просмотреть какой-нибудь обучающий ролик на YouTube. Если что-то не работает или не знаю как воспользоваться функцией лезу в Гугл. В древние времена, когда не было интернета - мануал был единственным источником информации. Поэтому да, тогда читал. Но мне также попадались пользователи, которые внимательно читают Помощь от А до Я. Но сейчас это большая редкость. Видимо времена сейчас такие. Как по мне, лучше всего работают какие-то подсказки, которые доступны прямо в процессе использования функции программы. А еще лучше когда все понятно без всяких подсказок, но так не всегда можно сделать. Писать и поддерживать документацию в актуальном состоянии достаточно трудозатратная задача. Может ну ее тогда совсем? )) А вы сами читаете мануалы? 😉

Как, на первый взгляд, простая задача превращается в сложную. Пришлось поменять сервис SMTP рассылки, которым я пользовался у
Как, на первый взгляд, простая задача превращается в сложную. Пришлось поменять сервис SMTP рассылки, которым я пользовался уже долгое время. Простая задача: создать учетную запись в новом сервисе, подтвердить домен, добавить записи DKIM/SPF/DMARC в DNS и заменить несколько параметров в конфиг-файле (логин, пароль, порт, хост). Все - ну пусть максимум час-два на все. Но не тут-то было... После всех вышеуказанных действий все заработало, но письма стали приходить с неправильной кодировкой темы письма, типа ??????? ?????????? или Восстановление пароля Странно, все вроде работало до этого. Начинаем ковыряться в C# SmtpClient, штатный класс для отправки писем. Пробуем менять кодировки туда-сюда. Ничего не помогает. Смотрим заголовки письма. Почему-то тема приходит в PlainText: Subject: Восстановление пароля а не как должно быть: Subject: =?utf-8?B?0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtSDQv9Cw0YDQ?= Гуглим и находим, что это баг в асинхронном методе SendMailAsync. Он известен, но Microsoft почему-то не исправляет его уже долгие годы. Видимо предыдущий сервис как-то исправлял кодировку сам. Пробуем на всякий случай обновить .NET до последней версии, но не помогает. Пробуем несколько обходных путей, которые предлагаются. Тоже. В общем, беру синхронный метод Send и оборачиваю его в асинхронный и все работает. Понятно, что костыль но т.к. отправка на сайте нормально не работает, нужно что-то срочно делать. Итого, задача усложнилась в несколько раз и потребовала почти день, вместо одного часа и то не решена до конца . А у вас часто бывает такое?😉

Нужен ли рефакторинг бизнесу? Если это не преждевременный рефакторинг, то для разработчика это скорее всего польза. Когда я б
Нужен ли рефакторинг бизнесу? Если это не преждевременный рефакторинг, то для разработчика это скорее всего польза. Когда я был наемным программистом, я бы с удовольствием потратил время на приведение кода в порядок. Но когда я стал разрабатывать и продавать свои собственные продукты, то стал размышлять с точки зрения бизнеса. Что лучше, потратить время на рефакторинг кода или на добавление новых фич и исправление ошибок? Рефакторинг не принесет денег в моменте. Скорее всего добавит новых ошибок, что приведет к потерям в доходах. За это время не появится новых функций в продукте и т.д. Да, через какое-то время это возможно окупится. А может и нет. Может продукт вообще устареет и проще написать новую версию или другой проект. В общем затея рискованная. Поэтому для себя выбрал такую стратегию. Изначально писать код достаточно приемлемого качества. Придерживаться определенного стандарта, который я установил для себя (писать самодокументирующийся код с отражающими суть названиями и т.д.). Делать минимальный рефакторинг в процессе разработки (типа выносить повторяющийся код и т.д.) и не доводить до того чтобы код вышел из под контроля. Рефакторинг делать не глобально, а только в случаях, если это действительно необходимо. Например для оптимизации быстродействия в критичных участках или если логика какого-то метода стала слишком сложной. А вы что думаете. Нужен рефакторинг с точки зрения бизнеса или можно обойтись без него? 😉

После нескольких лет бесперебойной работы, внезапно решил упасть хостинг. Все мои сайты и сервисы стали недоступны. Но благо это произошло в пятницу вечером, когда активных пользователей было не так много :) Надо отдать должное RuVDS быстро ответили на запрос в техподдержку, провели работы и решили проблему за несколько часов. Не пришлось прибегать к плану Б (запускать сервисы на резервной машине). Главное в такой ситуации не отмалчиваться, сообщить о проблеме, отвечать на письма пользователей и держать их в курсе проводимых мероприятий. Всем хороших выходных ))