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

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

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

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

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

Нужна органика. Подойдут любые внешние ресурсы, которые имеют органический трафик. Сайт, YouTube и т.д.

Например, у канала FastCode 1C есть сайт, на котором я разместил всплывающую плашку со ссылкой на канал и пару банеров. Это дает постоянные переходы и подписки на канал.
Т.е. после поста за день может быть 5 отписок и 10 подписок. В результате мы всегда в плюсе и канал растет.
А дальше уже на этом основном канале я размещаю ссылки на свои другие каналы и там тоже аудитория прибавляется.
🤔1
Загадочная история произошла с одним из моих каналов.

У меня был канал TurboStore 1C на котором я выкладывал новости магазина, в котором хотел распространять разработки и скрипты. У канала была публичная ссылка @turbostore1c

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

Сам аукцион еще даже не запущен, разместить там ссылку на продажу еще нельзя.
Это получается сам Telegram отобрал ее?

P.S. нашел новость, что Telegram отобрал миллионы каналов. Изучаю этот вопрос.
Как дела у бота с вакансиями? Дела нормально.

Добавил несколько фич:
- уведомления пользователям, в зависимости от настроек их отбора
- очередь на публикацию раз в 15 минут
- автозакрытие вакансии через 30 дней
- возможность продления размещения вакансии одной кнопкой
и некоторые другие улучшения

Первое время, большинство вакансий добавляла моя дочь (10 руб. за вакансию😀) теперь работодатели сами уже публикуют.
Пришла в голову идея. Что если моим ботом для вакансий будут пользоваться админы других каналов?

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

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

Какие трансформации с ним происходят в процессе. Что разработать продукт - это только малая часть. Есть еще продвижение, монетизации и т.д.
Если интересен такого рода контент, обязательно ставьте лайки!

Продолжаем делать партнерскую программу для бота.

Я пообщался, для начала, с тремя админами крупных каналов. Двое готовы участвовать в программе. Один сказал, что партнерка не интересна, но просто разместит ссылку. Что тоже очень хорошо :)

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

Как теперь узнать от кого пришел пользователь? Есть такая штука как deeplink. Можно указать у бота параметр ?start=.., например https://t.iss.one/FastCodeIM_Bot?start=turbocoderblog
И теперь, когда пользователь нажмет Запустить в боте, мне в обработчике придет этот параметр и я привяжу реферала к пользователю.
Дальше создадим рефералов для наших новых партнеров и выдадим им ссылки.
Кстати, 10 лет назад я выпустил 1-ю версию программы TurboConf. И это не шутка 😀
🍾6🔥1
Почему разработчику нужно радоваться когда возникают ошибки в программе?

Ответ простой. Потому, что вы узнали о ней.

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

Внезапно может выяснится, что программа может не работать у сотен пользователей. Когда у программы есть демо-версия, 99% процентов пользователей просто удалят демку, вместо сообщения о проблеме. Хотя в большинстве случаев исправить ошибку можно достаточно быстро и просто.

Поэтому лично я всегда стараюсь сообщить об ошибках разработчикам.

Как раз сегодня выяснилось, что TurboConf может подвешивать 1С на Windows 7 на релизах выше 8.3.21 и проблеме как минимум пол года.
Понятно, что Windows 7 уже не так актуальна и снята с поддержки MS, но еще продолжает использоваться в энтерпрайзе.

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

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

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

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

Но когда я стал разрабатывать и продавать свои собственные продукты, то стал размышлять с точки зрения бизнеса. Что лучше, потратить время на рефакторинг кода или на добавление новых фич и исправление ошибок?

Рефакторинг не принесет денег в моменте. Скорее всего добавит новых ошибок, что приведет к потерям в доходах. За это время не появится новых функций в продукте и т.д.

Да, через какое-то время это возможно окупится. А может и нет. Может продукт вообще устареет и проще написать новую версию или другой проект. В общем затея рискованная.

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

А вы что думаете. Нужен рефакторинг с точки зрения бизнеса или можно обойтись без него? 😉
🔥3👍2
Как, на первый взгляд, простая задача превращается в сложную.

Пришлось поменять сервис SMTP рассылки, которым я пользовался уже долгое время.
Простая задача: создать учетную запись в новом сервисе, подтвердить домен, добавить записи DKIM/SPF/DMARC в DNS и заменить несколько параметров в конфиг-файле (логин, пароль, порт, хост). Все - ну пусть максимум час-два на все.

Но не тут-то было...

После всех вышеуказанных действий все заработало, но письма стали приходить с неправильной кодировкой темы письма, типа ??????? ?????????? или Восстановление пароля

Странно, все вроде работало до этого. Начинаем ковыряться в C# SmtpClient, штатный класс для отправки писем. Пробуем менять кодировки туда-сюда. Ничего не помогает.

Смотрим заголовки письма. Почему-то тема приходит в PlainText:

Subject: Восстановление пароля

а не как должно быть:
Subject: =?utf-8?B?0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtSDQv9Cw0YDQ?=

Гуглим и находим, что это баг в асинхронном методе SendMailAsync. Он известен, но Microsoft почему-то не исправляет его уже долгие годы. Видимо предыдущий сервис как-то исправлял кодировку сам. Пробуем на всякий случай обновить .NET до последней версии, но не помогает.
Пробуем несколько обходных путей, которые предлагаются. Тоже.
В общем, беру синхронный метод Send и оборачиваю его в асинхронный и все работает. Понятно, что костыль но т.к. отправка на сайте нормально не работает, нужно что-то срочно делать.

Итого, задача усложнилась в несколько раз и потребовала почти день, вместо одного часа и то не решена до конца . А у вас часто бывает такое?😉
🔥6👍1
Кто-нибудь вообще читает Помощь в программах?

Мы часто критикуем пользователей, за то что они не читают инструкции и помощь к нашим программам. А сами поступаем точно так же.

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

Но и сам я тоже не могу себя заставить сесть и детально ознакомится со всем инструментарием который я использую. Максимум могу просмотреть какой-нибудь обучающий ролик на YouTube. Если что-то не работает или не знаю как воспользоваться функцией лезу в Гугл.

В древние времена, когда не было интернета - мануал был единственным источником информации. Поэтому да, тогда читал.

Но мне также попадались пользователи, которые внимательно читают Помощь от А до Я. Но сейчас это большая редкость. Видимо времена сейчас такие.

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

Писать и поддерживать документацию в актуальном состоянии достаточно трудозатратная задача. Может ну ее тогда совсем? ))

А вы сами читаете мануалы? 😉
👍1
Решил провести кое-какой рефакторинг на сайтах, обновить версии .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. В тестовой среде все работало, а вот на продакшене уже нет.

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

Но опыт получен 😉
👏2
Начал заполнять на сайте раздел о клиентах. Все руки не доходили, хотя понимал что это очень важно.

Добавил карусель с логотипами на лендинг и в раздел Купить.

Буду постепенно добавлять, список длинный 😏

Это может помочь новым пользователям принять решение о покупке.

Как говорится, лучше позже чем никогда.
👍4🔥1
Решил наконец-то окончательно победить неправильное отображение форм, при использовании масштабирования в системе.

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

Проблема в том, что для WinForms масштабирование в Windows настоящий ад. На разных системах и разных версиях .NET все реализовано по своему. А если еще у вас несколько разных мониторов...
Даже в пределах Windows 10 масштабирование может вести себя по разному, в зависимости от установленного обновления Creators Update и .NET 4.7.2
По тестам, лучше всего программа отображалась на Windows 11, но зная неповоротливость энтерпрайза, рассчитывать на это пока не стоит.

Еще из бонусов. Смену масштаба при переносе с монитора на монитор можно отследить только в последних версиях .NET и ОС.

В общем решил писать свою реализацию.

Разрабатывать формы нужно обязательно на 100% DPI, а тестировать уже при другом. При чем нужно перелогиниваться, что бы было все корректно. Либо проверять на другой машине.

Замерил размер шрифта 8.25 на своей системе, с масштабированием 100%. Затем в программе, при создании формы, добавил вычисление строки с таким шрифтом на текущей форме и поделив эти значения получил точный коэффициент. Далее корректирую размеры элементов формы.

Проверил на разных системах, с разным масштабированием. Работает как часы. 😉
🔥4👏3
Решил преобразовать канал FastTalk 1C в TurboConf 1C

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

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

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

Понятно, сейчас происходят отписки, но и новые пользователи тоже прибавляются. Со временем думаю все устаканится и будет ОК 😉
Как там дела с ботом вакансий?

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

Практически все работодатели пока выбирают бесплатную публикацию.
Но сегодня один работодатель уже купил Премиум размещение за 770 руб. Значит спрос есть и с этим можно уже работать. Из этой суммы часть будет начислена партнерам.

Пока это все еще MVP и нужно как следует над ним поработать. Но тем не менее кое-какие успехи уже есть 😉
🔥1
Какие только баги не встречаются на свете!

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

Например:
C:\Users\s.stepanov\AppData\Roaming\1c\1cv8\1cv8cmn.pfl ))
Программа думает что C:\Users\s.st - это файл шаблона и пытается его загрузить.

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