Путь Bubble-разработчика
158 subscribers
3 photos
1 video
9 links
😎

Фишки и заметки Bubble-разработчика

Автор: t.me/revik

Провожу обучение и консультации

😎
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Автообновление Preview-страницы🔥

Классное ускорение рабочего процесса с плагином Reload on Update от AirDev.

После установки плагина, на странице, которую вы хотите автоматически обновлять при внесении изменений, настройте рабочий процесс When page is loaded и внутрь добавьте действие Auto-Reload page on update из раздела Plugins. Внутри экшена можно включить/отключить отображение баннера с предложением обновить страницу.

Удобно, например, когда правишь дизайн на одном мониторе а окно с превью расположил на втором.

🔥Оставь реакцию, если понравилось!🔥
🔥21👍7
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Создаем переменную внутри workflow и используем её в следующих шагах🔥

Нашел и начал использовать прикольный плагин Variable.
Устанавливаем его, и в workflow в разделе Plugins появляются 2 действия "Store a text variable/Store a number variable". Не нужно создавать скрытые input, заполнять промежуточные кастом-стейты для получения расчетов, достаточно создать новый шаг, рассчитать в нем данные и использовать их в следующих шагах. Похожий функционал предоставляет действие Set WF Vars в плагине Canvas Utilities.

Можно использовать, например, когда в условии шага нужно сравнить два рассчитываемых значения (как показано в GIF). Количество сценариев ограничено только вашим воображением)

Напиши, где бы ты использовал или уже используешь этот плагин.

🔥Оставь реакцию, если понравилось🔥
🔥19👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Избавляемся от лишних шагов в воркфлоу с помощью :formatted as text🔥

Нередки ситуации когда при создании/редактировании записей нам нужно записать в одно поле разные данные при разных условиях.

Решить задачу можно, не создавая дополнительные шаги) Достаточно разместить условие в значение филда и добавить к нему функцию :formatted as text, которое позволяет указать какие значения следуют сообщить полю при выполнении/не выполнении условия.

Пример в GIF достаточно примитивен, но позволяет понять суть данной функции) Очень помогает при формировании JSON тела для отправки по API. Избавляет от лишних повторений, и последующей проверки шагов на соответствие последним изменениям.

Функция на выходе отдает текст. Есть еще :formatted as number (отдает числа).

Напиши в каких еще ситуациях ты использовал эту фишку или планируешь использовать!

🔥Оставь реакцию если понравилось🔥
🔥14👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Немного о безопасности🔥

😁Я немного знаю о вашем сайте: на нем с большой долей вероятности есть страница test
Обычно эта страница собирается "на скорую руку" без настройки правил отображения или редиректа.

Чем это грозит?
Если неравнодушные👋 пользователи знают адрес вашего сайта и решат это проверить, они возможно:
1) получат доступ к новому функционалу, которого еще нет на сайте 😨
2) получат доступ к кнопкам, запускающим бэк, которые многие так любят рисовать на этих страницах. В теории, это может привести к изменениям в БД которые будет невозможно без потерь отменить обычным восстановлением (если хватились не сразу)😭

Как можно обезопасить свой сайт?
1) Задавайте тестовым страницам более сложные названия👨‍💻
2) Используйте продуманные Privacy Rules🤓

Пиши в комментариях, какие меры безопасности помогают тебе 🚗

🔥Оставь реакцию если пост был полезен🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤3🙏2
🔥Привет! 🔥

Есть ещё много чего хотел бы вам рассказать, но пока маленький опрос🙃
Интересно узнать:
1) как попали в канал (кроме случаев когда я сам добавил🤣)
2) какие посты особенно были полезны (может что-то вам реально упростило работу)
3) что хотели бы ещё увидеть на канале) Напишите)

Если писать неохота, можно поставить реакцию🔥: будем считать ее как оценку контента на канале)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍3👌1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥- Я только спросить! - В очередь!🔥

На одном из проектов была задача: дать юзерам возможность присылать API-запросами в приложение на Баббл товары в больших количествах (до 40-50 тыс. шт.). Создать большое количество товаров с помощью Data API не проблема: за 20 с создавалось 250 записей с 12 заполненными полями, но вопрос: что станет с сайтом, если запросы отправят сразу 10, 20 и более пользователей?
Такие запросы будут выполняться параллельно, постепенно расходуя capacity приложения. Что произойдет, когда процессы заполнят всю память? Они встанут в очередь, и начнут выполняться последовательно! Круто?! Не совсем🤪) Представим что некоторые действия пользователя на фронте зависят от процессов на бэке. Что ждет пользователя, если на бэке выстроится очередь? Долгий ответ сайта) В особо тяжелых случаях браузер отобразит вам сообщение "app too busy"😆
Чтобы не дать пользователям положить ваш сайт, используйте очередь.

Спецы советуют переносить сложные процессы с фронта на бэк, и это имеет смысл. Но на бэке они не всегда должны выполняться параллельно🙃
С тяжелыми процессами на бэке можно поступить следующим образом:
1) настройте процесс так, чтобы вместо запуска отдельного API workflow, юзер складывал свое задание в БД (создайте для этого отдельную таблицу "Очередь")
2) запустите цикл, который с определенной частотой (частоту вычисляют отталкиваясь от показаний на вкладке Logs - Capacity) будет запускать обработку очередной записи из таблицы "Очередь" (убедитесь, что цикл не отвалится, если в таблице закончатся записи).

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

Здоровья вашим аппкам)

Напишите, пользуетесь ли вы этим способом, и как бы вы его доработали👍

🔥Ставь реакцию, если понравилось🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤3👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Превращаем список в красиво оформленный текст🔥

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

На помощь приходит знакомая многим функция :format as text. Она работает как РГ, только в тексте: вы объясняете как должна выглядеть строка (формируете шаблон), а Баббл сам формирует все строки и разделяет их указанным разделителем.

Функция очень помогает при формировании API-запросов, например при массивном создании новых записей через Data API.

Поделитесь, каким необычным образом вы используете эту функцию)

🔥Оставь реакцию, если понравилось🔥
🔥17👍6👌2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Превращаем статичные ссылки в кликабельные 🔥

Небольшая подсказка, ускоряющая работу с ссылками в текстовых элементах. Работает с адресами сайтов и почт.
Ставь 🔥 если понравилось)
🔥19👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Меняем юзеру пароль, не зная старого пароля и без отправки письма на его почту🔥

Допустим был создан аккаунт для клиента, а пароль не подходит😱 (такое иногда случается, если не юзается confirm password при регистрации!) и хочется его сменить, не тревожа клиента🙈.

Чтобы попасть на страницу восстановления пароля в обход почты пользователя:
1) Создаем API Workflow(!) с параметром user с типом User. Добавляем первым шагом "Send password reset email" для почты юзера присланного в параметре, внутри шага отмечаем "Just make token, don't send email". На втором шаге складываем результат первого шага к юзеру в филд, назовем его "reset_token".
2) На фронте рисуем РГ с пользователями, в ячейке с юзером располагаем кнопку "Сменить пароль", вешаем на нее первым шагом запуск вышеупомянутого воркфлоу, отправив в параметре user пользователя из текущей ячейки. Вторым шагом делаем паузу, чтобы токен успел сгенериться и прописаться к юзеру в БД (необязательно😊). Третьим шагом - go to page→"reset_pw" добавив в этом шаге параметр reset со значением из филда "reset_token" родительского пользователя. Все - вы уже на странице сброса пароля)

Обратите внимание, что токен генерится только на бэкенде, на фронте получите пустой результат) Вышеописанная последовательность - не каноническая, а всего лишь пример)

🔥Оставь реакцию, если понравилось🔥
🔥19⚡4🏆3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Новая кнопка в интерфейсе) открывает меню блоков, которые можно встроить в проект) Frames не установлен, судя по всему новая фича Баббла)
🔥17👍2
Вот уже как год канал открывает подписчикам полезные Баббл фишки) Признаюсь, рад тому, что благодаря постам мы стали разрабатывать быстрее и правильнее, "как положено", и уверенно двигаемся в правильном направлении) Спасибо за регулярный фидбэк, ваш опыт и мнение очень ценны) Дальше будет только интереснее)
🔥25🎉2
⏺Список тем на канале:

👩‍🎓 Из документации:
• API Workflow on a list лучше...
•
Массовое создание записей без цикла
• Редачим таблицу без тестовой страницы

🤓 Описание функций:
• Координаты превратить в адрес
• Изменение стиля для некликабельных элементов
• Formatted as text: сокращаем кол-во шагов в воркфлоу
• Format as text: cписок записей в виде оформленного текста
• Статичные ссылки в кликабельные
• Смена пароля без почты и старого пароля (+1 способ в комментах)
• Сжимаем фото с помощью imgix

📞 Плагины:
• Автообновление превью
• Мгновенный доступ к значению инпута
• Переменная внутри рабочего процесса
• Global Variable вместо кастом стейт и url-parameter

💪 Lifehacks/крутые практики:
• Называем страницы правильно
• Очередь на бэкенде
• Копирование между приложениями

😎 Мои эксперименты:
• Арканоид на баббл

☺️ Информационная доска
• Книга отзывов и предложений
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍3
На днях неофициальный Telegram бот @donate открыл владельцам каналов возможность публиковать платный контент и настраивать платную подписку для приватных каналов.

🔔 Предупреждаю: платных подписок и постов в моих планах нет и в ближайшее время не предвидится🥳

Но...
для неравнодушных 😉 подписчиков думаю разместить кнопку "Пожертвовать" чтобы  дать возможность выразить благодарность за мой труд ❤️

Есть мысль пустить средства на чай с печеньками, покупку курсов, книг и консультаций, которые потом можно будет конвертировать в полезные посты на канале)

Поделитесь в комментах своими мыслями или оставьте реакцию с оценкой идеи🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4
Какие методы вы используете для переключения групп на странице?
Anonymous Poll
65%
Custom State
25%
Show/Hide element
57%
Get data from page URL
1%
Запись в БД
5%
Global Variable
6%
Другое
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Global Variable🔥

По итогам опроса:
- Самым популярным способом оказался Custom State, но это и не мудрено (не забываем что значение кс при перезагрузке страницы не сохраняется, а значит не получится фиксировать выбранную вкладку)
- Самый очевидный - действие Show/Hide. Когда элементов 1 или 2 - вполне себе удобно)
- 59% отметили параметры в адресной строке и только 6% отметили Global Variable)

Те, кто знаком с JS знают, что глобальные переменные могут использоваться в любой части приложения. У плагина "Global Variable" немного похожая функциональность, но другой принцип действия - данные записываются в local storage и могут быть использованы в любой части страницы, на которой находится юзер минимальным набором действий🥳.

Элемент можно разместить на странице или внутри реюзабл, в настройках нужно указать название переменной. Использовать значение переменой можно ссылаясь на элемент. Затем действием "set a Global Variable" записываем в переменную с конкретным именем (вы можете разместить на странице несколько переменных) необходимое значение. Значение переменой автоматически перезапишется во всех местах на странице, где вы его использовали.

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

Напишите, где вы уже использовали плагин, или планируете использовать.

🔥Оставь реакцию, если понравилось🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍7👏2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Ускоряем разработку копированием🔥

Ниже приведу короткий список того, что можно копировать в одном приложении, и вставлять в другое:

- Reusable element. Заходим в реюзабл, в дереве элементов нажимаем правой клавишей по названию реюзабла, жмём Copy. На любой странице в другом приложении в контекстном меню выбираем Paste - откроется окно добавления нового реюзабла. Вводим имя, и новый реюзабл становится частью вашего приложения)

- Option Set. Допустим вы хотите перенести список стран, городов, штатов, названия feather icons которые уже есть в другом приложении. Например, AirDev предлагает скопировать некоторые готовые OS из своего приложения. Копируем и вставляем через ПКМ)

- Отдельные группы и связанные с ними воркфлоу. Можно копировать внутри приложения между страницами, открытыми в разных вкладках, между разными версиями одного приложения, и между разными приложениями с помощью опции "Copy/Paste with workflow".

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

🤫НЕ РЕКОМЕНДУЮ, но скажу: есть возможность копировать функционал из прошлого - создаем точку восстановления, откатываем приложение в нужное время, копируем интерфейс, возвращаемся на последнюю точку восстановления и вставляем скопированный элемент на страницу:) Почему не рекомендую? При таких телодвижениях в конце может вывалиться куча ошибок, которые уйдут если просто перейти к каждой из них. Не очень удобно, но если готовы к этому и нет другого выхода - you are welcome)

🖊Напишите в комментариях, что еще копируете и переносите между приложениями.

🔥Оставь реакцию, если понравилось🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥7👏2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Здесь должен быть заголовок🔥

В этом посте хочу затронуть тему оборудования)

Да, мы вроде не работаем с кодом(😄кроме некоторых случаев), нам не нужна тяжелая среда разработки и крутой проц чтобы быстро компилировать сложные проекты) Но ... Баббл тоже нельзя назвать "легкой" платформой!

В последнее время на особо-сложных проектах, с сильно нагруженными страницами браузер стабильно пару раз в день выкидывает мне сообщение "Недостаточно памяти")) Ошибка вылетает сразу на всех вкладках с Бабблом, а в диспетчере в момент появления ошибки фиксируется 100-процентная загрузка проца))
Проц у меня не самый мощный, но и не аутсайдер: 6 ядер по 4 ГГц в разгоне и 16 Гб оперативки, плюсом высокоскоростной внутренний накопитель) Вроде неплохие хар-ки, но на сложных проектах ошибки все равно вылетают) Справка Chrome советует отключить в настройках аппаратное ускорение - совет на самом деле шикарный, но мне не помог)

Поэтому стало интересно узнать, а как работают подписчики канала)
Поделитесь, на чем вы работаете, как часто сталкиваетесь с такой проблемой и находили ли какие-нибудь закономерности, какой браузер предпочитаете и почему) Сравнивали ли как работается над одним и тем же проектом с винды и MacOS?)
Пока нахожусь на больничном, будет интересно почитать)

P.S. Скажу честно: если вы спокойно зарабатываете в баббл на стареньком или не шибко мощном компьютере - мое уважение, вы для меня герой (без шуток👌)
Ставь 🔥 если тоже так считаешь)
🔥14👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 🔤🔤🔤🔤🔤 - на лету уменьшаем вес фотографий🔥

Как ускорить загрузку страницы, если на ней присутствует РГ с фотками из внутренней БД?)
Кто-то скажет, что нужно уменьшать кач-во на этапе их загрузки. Но что если в базу
уже загружено много фото? В таком случае выручит :processed with imgix 🥳

Опция добавляется к фото, и похожа она на небольшой фоторедактор: можно включить автоулучшение, эффект блюра или сепии и т.д. Среди прочих фишек, есть опция для сжатия фото (Quality 1 -100).
Фотки из БД прогоняются через сервер imgix, на выходе выдавая более лёгкую картинку. Несмотря на меньший вес, качество , как по мне, остается приемлемым)
❗️Фишка срабатывает только с фотками из базы Баббла. В купе с пагинацией imgix может существенно ускорить загрузку страницу)

Источник: https://manual.bubble.io/core-resources/data/operations-and-comparisons#processed-with-imgix

Напиши, в каких ситуациях тебя выручала эта функция😎
Ставь 🔥 если понравилось
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍2
Апгрейд контекстного меню)💪💪
🔥8👍2