Как научится программировать (и не только)
Я совру, если скажу, что часто кто-то меня спрашивал об этом. Но такие эпизоды время от времени происходят. Очередной такой эпизод случился на днях и вопрос прилетел мне в личку в ВК (чему я был знатно удивлен)
Вопрос в целом классический: а какой ЯП выбрать? А как какой фреймворк? А какую среду? А какой подход и/или курс по программированию выбрать?
Обсуждать языки программирования мне не охота, их много. Каждый решает свои задачи, во многом между собой пересекаются и в целом тема холиварная.
А вот подход, это история совсем другая. К слову я уже лет 10-12 что-то разрабатываю. И почти под все, что под руку попадется. От бэкенда на JS и Python до ассемблера для микроконтроллеров.
Так вот…
Я самоучка. Не заканчивал никаких курсов, нигде не обучался этому в ВУЗах (ну кроме базы а-ля hello world или расчета математических формул в которых я нихрена не понимал, да и не понимаю).
Первый мой курс по программированию, это цикл видосиков какого-то автора, который залил свои видео на один из пиринговых обменников. Товарищ из видео не особо зацикливался на прояснении той самой базы: массивов, циклов и т.п Просто было так:
«А давайте сейчас захреначим окошко которое будет сваливать от курсора мыши по всему экрану», а когда он уставал, он включал сериал Доктор Хаус.
Одно его видео — 3-4 часа времени, за которые не только что-то узнаешь о программировании на Delphi, но против своей воли посмотришь пару очередных серий сериала.
Но в чем суть-то? А вот в чем. Лично для себя я определил путь обучения через решение прикладных задач. Я просто придумывал задачу, а потом всеми правдами и не очень, пытался эту задачу решать.
Прелесть этого подхода в том, что ты занимаешься тем, что конкретно тебе интересно и нужно. У тебя есть реальная задача и ты ищешь решение в рамках своей зоны интересов. Мне совершенно доразбитой лампочки были все эти алгебры и матаны. И за все время, что я пишу софт — я это нигде не применял.
А раз есть интерес к чему бы то не было, то и мотивация будет и сложности в обучении будут восприниматься не так остро. Зато результат, когда твоя программка заработает, это превзойдет все ожидания и даст отличный стимул для новых свершений.
Конечно, я не истина в последней инстанции, но возможно кто-то из вас и сейчас смотрит в сторону разработки как на путь в Хогвартс. Но на самом деле все не так страшно и сложно. И математика не нужна (во всяком случае, если тебе не надо обрабатывать графику/звук/сигналы и писать свою СУБД или нейросеть)
Все, что нужно, это интересная для тебя задача, которую с помощью кода, гугла и какой-то матери ты обязательно решишь.
К тому же в целом сейчас стало проще. При всем моем скептицизме в отношении нейросетей, они все же не плохо справляются с типичными задачами (а на старте едва ли будут другие) и вполне можно пойти в GPT и позадавать вопросы на которые можно получить ответ. А это роскошь, господа и дамы.
Когда я делал первые шаги, вместо ответа можно было сразу получить целую дорожну карту. Куда-нибудь на три советских назаборных художества.
Так что все в твоих руках и влезать в разработку никогда не поздно (хоть лучше и не оттягивать резинку, особенно в области чувствительных органов)
Я совру, если скажу, что часто кто-то меня спрашивал об этом. Но такие эпизоды время от времени происходят. Очередной такой эпизод случился на днях и вопрос прилетел мне в личку в ВК (чему я был знатно удивлен)
Вопрос в целом классический: а какой ЯП выбрать? А как какой фреймворк? А какую среду? А какой подход и/или курс по программированию выбрать?
Обсуждать языки программирования мне не охота, их много. Каждый решает свои задачи, во многом между собой пересекаются и в целом тема холиварная.
А вот подход, это история совсем другая. К слову я уже лет 10-12 что-то разрабатываю. И почти под все, что под руку попадется. От бэкенда на JS и Python до ассемблера для микроконтроллеров.
Так вот…
Я самоучка. Не заканчивал никаких курсов, нигде не обучался этому в ВУЗах (ну кроме базы а-ля hello world или расчета математических формул в которых я нихрена не понимал, да и не понимаю).
Первый мой курс по программированию, это цикл видосиков какого-то автора, который залил свои видео на один из пиринговых обменников. Товарищ из видео не особо зацикливался на прояснении той самой базы: массивов, циклов и т.п Просто было так:
«А давайте сейчас захреначим окошко которое будет сваливать от курсора мыши по всему экрану», а когда он уставал, он включал сериал Доктор Хаус.
Одно его видео — 3-4 часа времени, за которые не только что-то узнаешь о программировании на Delphi, но против своей воли посмотришь пару очередных серий сериала.
Но в чем суть-то? А вот в чем. Лично для себя я определил путь обучения через решение прикладных задач. Я просто придумывал задачу, а потом всеми правдами и не очень, пытался эту задачу решать.
Прелесть этого подхода в том, что ты занимаешься тем, что конкретно тебе интересно и нужно. У тебя есть реальная задача и ты ищешь решение в рамках своей зоны интересов. Мне совершенно до
А раз есть интерес к чему бы то не было, то и мотивация будет и сложности в обучении будут восприниматься не так остро. Зато результат, когда твоя программка заработает, это превзойдет все ожидания и даст отличный стимул для новых свершений.
Конечно, я не истина в последней инстанции, но возможно кто-то из вас и сейчас смотрит в сторону разработки как на путь в Хогвартс. Но на самом деле все не так страшно и сложно. И математика не нужна (
Все, что нужно, это интересная для тебя задача, которую с помощью кода, гугла и какой-то матери ты обязательно решишь.
К тому же в целом сейчас стало проще. При всем моем скептицизме в отношении нейросетей, они все же не плохо справляются с типичными задачами (а на старте едва ли будут другие) и вполне можно пойти в GPT и позадавать вопросы на которые можно получить ответ. А это роскошь, господа и дамы.
Когда я делал первые шаги, вместо ответа можно было сразу получить целую дорожну карту. Куда-нибудь на три советских назаборных художества.
Так что все в твоих руках и влезать в разработку никогда не поздно (хоть лучше и не оттягивать резинку, особенно в области чувствительных органов)
🔥13
Железная рубрика
Для тех, кто ещё не знает… Я технический специалист прям совсем технический. И с разного рода железками работаю лет с 6и.
В основном конструирую либо что-то на микроконтроллерах (программируемые микросхемы) либо усилители звука. Самые разные от микросхемных до радиоламп.
В прошлой «железной» рубрике я писал о подключении монитора и сенсорной панели от старого терминала к одноплатному компьютеру.
Это одно из ответвлений в «железном хобби»: найти где-то какую-то херовину и попробовать её запустить в штатном (или не очень) режиме.
А сегодня в принципе случился долгожданный финал эпопеи длиной в 3 с лишним месяца. Наконец-то подсобрал целиком и полностью усилитель на германиевых транзисторах.
Хоть это и планировалось как развлечение и покупался комплектом на поиграться на пару тройку вечеров, но все это по ряду причин вылилось в длительные ожидания железок, комплектухи. Трансформатор изготавливался на заводе под ключ. Много сил и времени ушло на схему к которой с первых минут я отнесся с заметной долей скептицизма.
Но к счастью все мои опасения пошли прахом после первых включений. Хоть и потрепало мне немного нервишки.
Но в итоге получился великолепный усилитель, который прекрасно подружился с моей акустикой и теперь можно послушать музыку с кайфом.
Отличная глубина сцены, объемный звук и великолепная проработка звука, до мельчайших деталей. Это один из немногих усилителей который не перестал меня удивлять и открывать новые оттенки в музыке даже спустя почти полторы недели.
Так вот и проходят зачастую мои вечера, когда все эти чат боты, воронки и интеграции порядком поднадоедают. Когда неохота возится ни с сервером, ни с кодом, да и вообще лишний раз подходить к компу.
Очень надеюсь, что в ближайшее время я все таки выделю время просто посидеть под хорошую музыку. Без дерготни. Без сообщений в мессенджерах и правок.
А там гляди и дойдут руки начать сборку нового лампового усилителя, который я вынашиваю в планах уже больше года.
Но это будет уже совсем другая история.
Для тех, кто ещё не знает… Я технический специалист прям совсем технический. И с разного рода железками работаю лет с 6и.
В основном конструирую либо что-то на микроконтроллерах (программируемые микросхемы) либо усилители звука. Самые разные от микросхемных до радиоламп.
В прошлой «железной» рубрике я писал о подключении монитора и сенсорной панели от старого терминала к одноплатному компьютеру.
Это одно из ответвлений в «железном хобби»: найти где-то какую-то херовину и попробовать её запустить в штатном (или не очень) режиме.
А сегодня в принципе случился долгожданный финал эпопеи длиной в 3 с лишним месяца. Наконец-то подсобрал целиком и полностью усилитель на германиевых транзисторах.
Хоть это и планировалось как развлечение и покупался комплектом на поиграться на пару тройку вечеров, но все это по ряду причин вылилось в длительные ожидания железок, комплектухи. Трансформатор изготавливался на заводе под ключ. Много сил и времени ушло на схему к которой с первых минут я отнесся с заметной долей скептицизма.
Но к счастью все мои опасения пошли прахом после первых включений. Хоть и потрепало мне немного нервишки.
Но в итоге получился великолепный усилитель, который прекрасно подружился с моей акустикой и теперь можно послушать музыку с кайфом.
Отличная глубина сцены, объемный звук и великолепная проработка звука, до мельчайших деталей. Это один из немногих усилителей который не перестал меня удивлять и открывать новые оттенки в музыке даже спустя почти полторы недели.
Так вот и проходят зачастую мои вечера, когда все эти чат боты, воронки и интеграции порядком поднадоедают. Когда неохота возится ни с сервером, ни с кодом, да и вообще лишний раз подходить к компу.
Очень надеюсь, что в ближайшее время я все таки выделю время просто посидеть под хорошую музыку. Без дерготни. Без сообщений в мессенджерах и правок.
А там гляди и дойдут руки начать сборку нового лампового усилителя, который я вынашиваю в планах уже больше года.
Но это будет уже совсем другая история.
🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
Давно не было столько жизы в одном видео 😂🥲
🤣9
This media is not supported in your browser
VIEW IN TELEGRAM
С Наступающим Новым Годом! 🎄 🥂
Что ж друзья и коллеги, по правде говоря не хочу подводить никаких итогов 😁 Это был тяжелый год 🫠
По своему контрастный но и интересный. Много новых знакомств, интересных задач, не обошлось и без приключений. Но в целом я доволен тем, как в итоге все обернулось 👍🏻
Простите, что выпадаю временами, декабрь выбрался тем ещё и надеюсь в новом году мы будем встречаться с вами чаще, хотя бы в комментариях этого канала, а может и в живую, кто знает :)
А уже в новом году я вернусь к вам с рассказом о сравнительно новом направлении в котором я попробовал свои силы и даже получилось 🔥
Каждому из вас хочу пожелать крепкого здоровья в первую очередь ☝🏻Пусть сбываются ваши мечты и реализуются ваши самые амбициозные идеи и замыслы🥂
Желаю по больше интересных мероприятий, крутых знакомств и новых классных проектов 😎 и что бы никакие внешние факторы не влияли на вас)
С Наступающим!🎄 🥂
Что ж друзья и коллеги, по правде говоря не хочу подводить никаких итогов 😁 Это был тяжелый год 🫠
По своему контрастный но и интересный. Много новых знакомств, интересных задач, не обошлось и без приключений. Но в целом я доволен тем, как в итоге все обернулось 👍🏻
Простите, что выпадаю временами, декабрь выбрался тем ещё и надеюсь в новом году мы будем встречаться с вами чаще, хотя бы в комментариях этого канала, а может и в живую, кто знает :)
А уже в новом году я вернусь к вам с рассказом о сравнительно новом направлении в котором я попробовал свои силы и даже получилось 🔥
Каждому из вас хочу пожелать крепкого здоровья в первую очередь ☝🏻Пусть сбываются ваши мечты и реализуются ваши самые амбициозные идеи и замыслы
Желаю по больше интересных мероприятий, крутых знакомств и новых классных проектов 😎 и что бы никакие внешние факторы не влияли на вас)
С Наступающим!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9🎉6🎄5❤1
С возвращением меня 🥂😁
Исторически так сложилось, что декабрь (как думаю и у многих у вас) был крайне загружен.
Помимо загруженности, оказалось ещё и довольно напряженным, а 31 декабря я и вовсе узнал, что проект, ребята с которыми я проработал чуть более трех лет — распускает команду.
В общем я предпринял несколько попыток поработать в январе, но все это были мелочи. Даже рассказывать как будете бы особо и нечего.
Потом и вовсе внезапно потеплело, чем собственно я и наслаждался))
А вообще в январе я хотел прям залететь с ноги… Так-то принял решение уходить в сравнительно новую сферу для себя — в разработку полноценных миниапов под ключ.
Хотел сделать какой-то интересный анонс, но не всем планам суждено сбыться. Впрочем я сейчас активно работаю над вариантами решения ключевой проблемы: верстки.
Кто меня знает, тому известно, что с бэкендом я на «ты». Все ясно, понятно и прозрачно. Однако познания в верстке у меня далеко не айс, это при том, что я вполне спокойно работаю с React.
И эти все вещи сейчас занимают очень много времени и сил на самом деле. И по большей части именно из-за этих тектонических изменений я и выпал с инфопространства.
Так что такие дела, друзья.
Думаю, у меня ещё будут интересные новости и анонсы 👍🏻
Постараюсь сильно на долго не выпадать.
Не теряемся)
Исторически так сложилось, что декабрь (как думаю и у многих у вас) был крайне загружен.
Помимо загруженности, оказалось ещё и довольно напряженным, а 31 декабря я и вовсе узнал, что проект, ребята с которыми я проработал чуть более трех лет — распускает команду.
В общем я предпринял несколько попыток поработать в январе, но все это были мелочи. Даже рассказывать как будете бы особо и нечего.
Потом и вовсе внезапно потеплело, чем собственно я и наслаждался))
А вообще в январе я хотел прям залететь с ноги… Так-то принял решение уходить в сравнительно новую сферу для себя — в разработку полноценных миниапов под ключ.
Хотел сделать какой-то интересный анонс, но не всем планам суждено сбыться. Впрочем я сейчас активно работаю над вариантами решения ключевой проблемы: верстки.
Кто меня знает, тому известно, что с бэкендом я на «ты». Все ясно, понятно и прозрачно. Однако познания в верстке у меня далеко не айс, это при том, что я вполне спокойно работаю с React.
И эти все вещи сейчас занимают очень много времени и сил на самом деле. И по большей части именно из-за этих тектонических изменений я и выпал с инфопространства.
Так что такие дела, друзья.
Думаю, у меня ещё будут интересные новости и анонсы 👍🏻
Постараюсь сильно на долго не выпадать.
Не теряемся)
❤8🔥6💋4
This media is not supported in your browser
VIEW IN TELEGRAM
Ну вы уже поняли, от меня либо нихрена нет контента, либо сразу и всё 😁
В общем… История с тем проектом в котором я был не закончилась.
Ребята наши решили, что надо бы реорганизацию сделать. Команду распустить, но не всю и оставили нас троих, кто в общем-то с самого начала и был.
Ну и готовьте ребята запуск 🚀
Что бы масштаб бедствия был понятен, у нас обучение-игра. Нужно собрать всех учеников. Раскидать каждого в свой клан (набор каналов и чатов) и потом просто гора различных активностей у них. И вот за это все дело отвечал у нас бот. Пилили долго, дорого. Но в итоге от этого бота было принято решение отказаться.
В последствии ребята конечно порезали большую часть активностей. Много чего убрали. Но даже в этом, урезанном варианте, все равно много активностей. И ручками как-то и не очень хочется и не очень то и получится делать 🙃
Ситуацию надо как-то разруливать, а иначе в игру сыграет остаток команды и игра эта на выживание.
В общем я задумал сделать панель управления. Одну такую систему которая возьмет на себя большую часть рутинных задач и хоть как-то облегчит нашу участь. Да и ввязаться в разработку всяко по интереснее будет, нежели ручками все ковырять 😁
После череды созвонов появилось понимание как это все вытворить.
Концепт на видео)
А вот что будет дальше(а это прост горение жоп и покусывания стула) я расскажу позже 😁
В общем… История с тем проектом в котором я был не закончилась.
Ребята наши решили, что надо бы реорганизацию сделать. Команду распустить, но не всю и оставили нас троих, кто в общем-то с самого начала и был.
Ну и готовьте ребята запуск 🚀
Что бы масштаб бедствия был понятен, у нас обучение-игра. Нужно собрать всех учеников. Раскидать каждого в свой клан (набор каналов и чатов) и потом просто гора различных активностей у них. И вот за это все дело отвечал у нас бот. Пилили долго, дорого. Но в итоге от этого бота было принято решение отказаться.
В последствии ребята конечно порезали большую часть активностей. Много чего убрали. Но даже в этом, урезанном варианте, все равно много активностей. И ручками как-то и не очень хочется и не очень то и получится делать 🙃
Ситуацию надо как-то разруливать, а иначе в игру сыграет остаток команды и игра эта на выживание.
В общем я задумал сделать панель управления. Одну такую систему которая возьмет на себя большую часть рутинных задач и хоть как-то облегчит нашу участь. Да и ввязаться в разработку всяко по интереснее будет, нежели ручками все ковырять 😁
После череды созвонов появилось понимание как это все вытворить.
Концепт на видео)
А вот что будет дальше
🔥12💯3❤2
Почему иногда не выходит следовать срокам которые сам же и озвучил?
Я вот нашел интересную статью на Хабре. Что интересно, статья отлично описывает нашу реальность и без разницы, разработчик ты или тех.спец или совмещаешь 🙃
Как по мне, всегда так происходит и будет происходить пока ты имеешь дело с той или иной техникой)
https://habr.com/ru/companies/ruvds/articles/885258/
Я вот нашел интересную статью на Хабре. Что интересно, статья отлично описывает нашу реальность и без разницы, разработчик ты или тех.спец или совмещаешь 🙃
Как по мне, всегда так происходит и будет происходить пока ты имеешь дело с той или иной техникой)
https://habr.com/ru/companies/ruvds/articles/885258/
Хабр
Стиральная машина позволила мне иначе взглянуть на сроки разработки ПО
Моя недавняя эпопея со стиральной машиной напомнила мне, почему одна из самых страшных и ненавидимых задач в разработке ПО начинается с вопроса: «Сколько времени вам на это потребуется?» Привычность...
🔥9❤2
Железная рубрика
Если кто помнит, то есть у нас тут и такое. Время от времени нахожу всякие интересные железные штуки и пытаюсь их приручить.
Прошлую серию можно глянуть по ссылке ниже:
https://t.me/techspecpro/148
А вот и сегодня, с работой у меня не задалось. Зато весьма продуктивный вечер выдался в плане приручения атоловского дисплея покупателя.
Теперь будет работать у меня в качестве термометра 😁
А может ещё чего в итоге прикручу)
Занятно, что получилось и извне к нему подключится и родной кабель от него работает тоже.
Если кто помнит, то есть у нас тут и такое. Время от времени нахожу всякие интересные железные штуки и пытаюсь их приручить.
Прошлую серию можно глянуть по ссылке ниже:
https://t.me/techspecpro/148
А вот и сегодня, с работой у меня не задалось. Зато весьма продуктивный вечер выдался в плане приручения атоловского дисплея покупателя.
Теперь будет работать у меня в качестве термометра 😁
А может ещё чего в итоге прикручу)
Занятно, что получилось и извне к нему подключится и родной кабель от него работает тоже.
🔥8💋2❤1👍1🆒1
Расширение chrome для администраторов школ
Ну что, вот я и докатился до публикации своего первого браузерного расширения в Chrome Web Store.
Я опубликовал расширение Загрузка уроков с GetCourse, это расширение для администраторов (!) онлайн школ на GetCourse которое позволяет быстро переходить к исходнику видео в файловом хранилище.
У меня уже даже порядка 40 установок и я даже благополучно получил одну звезду и гневный отзыв так как забыл указать, что расширение для администраторов, а не для учеников 😁
Описание уже поправил, но через сколько пройдет модерация я пока не знаю))
Так что если кто-то как и я страдает от необходимости поиска исходников видео с уроков то welcome))
Расширение отображает кнопку "Скачать" на фрейме с видео прямо в уроках. По нажатию вас сразу пробросить к нужному файлу в файловом хранилище.
В целом получилось просто и удобно, если кому нужно забирайте
Ну что, вот я и докатился до публикации своего первого браузерного расширения в Chrome Web Store.
Я опубликовал расширение Загрузка уроков с GetCourse, это расширение для администраторов (!) онлайн школ на GetCourse которое позволяет быстро переходить к исходнику видео в файловом хранилище.
У меня уже даже порядка 40 установок и я даже благополучно получил одну звезду и гневный отзыв так как забыл указать, что расширение для администраторов, а не для учеников 😁
Описание уже поправил, но через сколько пройдет модерация я пока не знаю))
Так что если кто-то как и я страдает от необходимости поиска исходников видео с уроков то welcome))
Расширение отображает кнопку "Скачать" на фрейме с видео прямо в уроках. По нажатию вас сразу пробросить к нужному файлу в файловом хранилище.
В целом получилось просто и удобно, если кому нужно забирайте
🔥31👏4👍3❤1⚡1
Как я данные замедлял
Есть у нас на проекте одна задача: нужно собрать всех пользователей с определенным заказом с двух GetCourse в единую таблицу Google.
Затем, после того как они подключат бот на SaleBot нужно обновить данные этих пользователей в таблице и дописать им никнеймы.
В целом избитая тема о которой достаточно много информации в сети. Но есть нюанс. И даже несколько.
Честно говоря однажды я устал бегать за учениками с рассылками в духе «Ну подключите бота пожалуйста» и выстроил нестандартную интеграцию GetCourse и SaleBot. И попросту запретил доступ к тренингам до тех пор пока человек не подключит бот, а можно было и прикрывать доступ к урокам если бота остановили 😁 (нопока я этого делать не стал)
Эта же интеграция передаёт все данные с GC в Sale, а если быть точнее, то SaleBot забирает всё, что необходимо сам через Chatium API и выставляет на GC все нужное тоже сам. После подключения бота.
И в целом все шло хорошо. Но у нас возникло новое приключение, которое называется «угадай никнейм пользователя». Для нашего проекта критично, что бы у пользователя был никнейм и мы не пускаем дальше геймификацию, пока ник не установят.
Но нашлись ребята, которые ники ещё и повадились менять…
А SaleBot фиксирует никнейм разово и не актуализирует эти данные не во время работы воронки не во время рассылок. В общем никак, только если ручками в калькуляторе чего-то не прописать и отправить. Да вот только ручками обновлять данные нужно не только в сейле, но и в таблице, а это делать мне лень. Как и не охота было писать AppScript или оставлять таблицу с доступом редактора по ссылке…
В итоге я пришел к интеграции которая автоматически передает данные с GC в таблицу, затем дожидается подключения бота,дописывает все данные и перед обновлением записи пользователя через API телеги ещё и актуализирует никнейм.
Но проблема подкралась откуда не ждали. Что делать, если у тебя уже есть таблица в которой сотня-две записей? Сделать рассылку с хуком на интеграцию дело паршивое. Так как сейл (да и геткурс тоже) высылают хуки весьма бодро. Особенно сейл (но его еще можно замедлить, а вот геткурс уж никак), а скорость обработки в таблицах существенно ниже из-за чего получались пропуски и прочая вакханалия.
Я даже походил по чатам да по задавал вопросы, но полученные ответы меня не устроили. Либо не охота было на ночь глядя с новыми приблудами возится, да и ставить 3ю СУБД на сервер мне тоже не хотелось. Плюс идея обновлять по таймеру сразу все как-то тоже не улыбалась.
В своей голове я уже придумал команду для бота, по которой можно точечно актуализировать одного или нескольких пользователей. По запросу, а не раз в N-времени…
В итоге не придумал ничего лучше, как поставить прокси-буфер. Просто по быстрому накидал код который принимает данные по Webhook с той скоростью, с которой шлют. А вот отдает на n8n уже медленно и внятно, ровно с комфортной для работы Google-таблиц скоростью. В качестве диспетчера очередей взял RabbitMQ. Все остальное — NodeJS приложение.
И все наконец-то встало на свои места. Честно говоря, дольше по чатам ходил да сокрушался, что более простого решения не нашлось 😁
Как итог все работает как следует. Я сразу запустил все процессы, рассылку в SaleBot с запросами на обновление данных и спокойно ушел поужинать. Вернулся, глянул на таблицу и все там в полном порядке, все как по полочкам без пропусков и вакханалий. Вышло безопасно и стабильно, а все сервисы работают на тех скоростях, на которых им удобно.
Есть у нас на проекте одна задача: нужно собрать всех пользователей с определенным заказом с двух GetCourse в единую таблицу Google.
Затем, после того как они подключат бот на SaleBot нужно обновить данные этих пользователей в таблице и дописать им никнеймы.
В целом избитая тема о которой достаточно много информации в сети. Но есть нюанс. И даже несколько.
Честно говоря однажды я устал бегать за учениками с рассылками в духе «Ну подключите бота пожалуйста» и выстроил нестандартную интеграцию GetCourse и SaleBot. И попросту запретил доступ к тренингам до тех пор пока человек не подключит бот, а можно было и прикрывать доступ к урокам если бота остановили 😁 (но
Эта же интеграция передаёт все данные с GC в Sale, а если быть точнее, то SaleBot забирает всё, что необходимо сам через Chatium API и выставляет на GC все нужное тоже сам. После подключения бота.
И в целом все шло хорошо. Но у нас возникло новое приключение, которое называется «угадай никнейм пользователя». Для нашего проекта критично, что бы у пользователя был никнейм и мы не пускаем дальше геймификацию, пока ник не установят.
Но нашлись ребята, которые ники ещё и повадились менять…
А SaleBot фиксирует никнейм разово и не актуализирует эти данные не во время работы воронки не во время рассылок. В общем никак, только если ручками в калькуляторе чего-то не прописать и отправить. Да вот только ручками обновлять данные нужно не только в сейле, но и в таблице, а это делать мне лень. Как и не охота было писать AppScript или оставлять таблицу с доступом редактора по ссылке…
В итоге я пришел к интеграции которая автоматически передает данные с GC в таблицу, затем дожидается подключения бота,дописывает все данные и перед обновлением записи пользователя через API телеги ещё и актуализирует никнейм.
Но проблема подкралась откуда не ждали. Что делать, если у тебя уже есть таблица в которой сотня-две записей? Сделать рассылку с хуком на интеграцию дело паршивое. Так как сейл (да и геткурс тоже) высылают хуки весьма бодро. Особенно сейл (но его еще можно замедлить, а вот геткурс уж никак), а скорость обработки в таблицах существенно ниже из-за чего получались пропуски и прочая вакханалия.
Я даже походил по чатам да по задавал вопросы, но полученные ответы меня не устроили. Либо не охота было на ночь глядя с новыми приблудами возится, да и ставить 3ю СУБД на сервер мне тоже не хотелось. Плюс идея обновлять по таймеру сразу все как-то тоже не улыбалась.
В своей голове я уже придумал команду для бота, по которой можно точечно актуализировать одного или нескольких пользователей. По запросу, а не раз в N-времени…
В итоге не придумал ничего лучше, как поставить прокси-буфер. Просто по быстрому накидал код который принимает данные по Webhook с той скоростью, с которой шлют. А вот отдает на n8n уже медленно и внятно, ровно с комфортной для работы Google-таблиц скоростью. В качестве диспетчера очередей взял RabbitMQ. Все остальное — NodeJS приложение.
И все наконец-то встало на свои места. Честно говоря, дольше по чатам ходил да сокрушался, что более простого решения не нашлось 😁
Как итог все работает как следует. Я сразу запустил все процессы, рассылку в SaleBot с запросами на обновление данных и спокойно ушел поужинать. Вернулся, глянул на таблицу и все там в полном порядке, все как по полочкам без пропусков и вакханалий. Вышло безопасно и стабильно, а все сервисы работают на тех скоростях, на которых им удобно.
🔥17👏2❤1😱1