и фильмов по промокоду:
Привет! Я программист. Я люблю писать код и хочу рассказать, как подход No-code позволяет мне делать это более качественно и эффективно.
Что такое No-code
Это решение задач, которые обычно решают программисты, без самого программирования. В узком смысле это просто набор сервисов, в широком — это подход к разработке, позволяющий экономить время и деньги, получая при этом результат.
Прелесть нового подхода в том, что он сочетается со старым, их можно легко комбинировать, получая хорошие результаты за короткое время. Это я и хочу продемонстрировать.
Какая у меня была проблема
Я разрабатываю конструктор сайтов Creatium, и у нас есть бесплатный тестовый период, который, к сожалению, привлекает мошенников.
Плохие люди регистрируются, создают сайты и размещают на них вредоносные скрипты, либо выдают себя за других и обманным путем получают данные клиента.
Далее, плохие люди используют ссылку на наш тестовый поддомен (*.creatium.site) с хорошей репутацией и таким образом подставляют нас.
Несколько раз нас блокировали VK и Google, показывая посетителям тестовых сайтов такое сообщение:
На снятие такой блокировки может уйти неделя. К счастью, это не касалось рабочих доменов второго уровня, они продолжали работать нормально.
Как мы решали проблему раньше
Подход к решению проблемы простой — нужно обнаруживать и блокировать зловредные сайты до того, как их обнаружит Google.
Для этого мы составили список подозрительных фраз с сайтов, которые мы блокировали, и каждый раз, когда кто-нибудь публиковал страницу в редакторе, мы искали совпадения. Это делалось автоматически, результаты проверки приходили в специальный канал в Slack.
Примеры фраз: розыгрыш, viagra, location.href, пароль и т.д.
Первая версия системы проверки сайтов разрабатывалась две недели, и у нее были существенные недостатки:
- Отсутствие аналитики. За несколько лет мы собрали около 6 тысяч подозрительных фраз, многие из которых в последствии ни разу не приводили к обнаружению новых зловредных сайтов. У нас не было понимания, какие фразы эффективны, а какие просто тратили наше время впустую.
- Повторные срабатывания. Если спустя сутки повторно опубликовать страницу, в Slack-канал придет еще одно уведомление, хотя эту страницу мы уже проверяли.
- Слабая проверка. Мы отслеживали только фразы, часто пропускали перенаправления на другие сайты и подключение подозрительных скриптов.
В один момент стало понятно, что нужно делать новую систему, исправляющую эти недостатки.
Новый подход к решению задач
Список подозритльных фраз из админки перенесли в «Google Таблицы», добавили колонки для отслеживания эффективности. Сразу стало удобнее работать.
Переделали способ проверки страниц. Теперь они открываются в виртуальном браузере, в котором отслеживаются все внешние скрипты, перенаправления, фреймы и ссылки. Эта часть сделана кодом, поскольку No-code такого еще не умеет. Все, что кажется подозрительным, — отправляется в канал Slack.
Все, что происходит дальше — чистый No-code.
Обе кнопки запускают сценарий в Integromat через обычный вебхук.
Если в Slack нажата кнопка «Ложная тревога», сценарий добавляет в базу данных пометку о том, что этой странице мы доверяем, и не стоит о ней больше сообщать при повторных публикациях.
Кнопка «Заблокировано или исправлено» запускает другую ветку сценария, которая увеличивает счетчик блокировок в «Google Таблицах», чтобы мы отслеживали эффективность.
Помимо этого обе кнопки удаляют уведомление в Slack, чтобы с каналом можно было работать по методу Inbox Zero.
Экономия времени и денег
Если бы мы все это программировали, ушло бы недели 2. А так я в одиночку потратил 3 дня.
Мы сэкономили время на создании интерфейсов — для этого используем Slack-канал и «Google Таблицы». Сэкономили время на написании интеграций между отдельными частями системы — для этого используем Integromat. Правда, теперь мы платим за него 30 долларов в месяц.
Самое ценное, что сэкономленное время я могу потратить на самую важную часть системы — механизм проверки подозрительных сайтов, и сделать ее качественно.
Будущее за No-code?
Разработать что-то силами программистов — долго и дорого, иногда непредсказуемо. Зато можно сделать практически все, что угодно, если позволяет бюджет.
No-code-разработка дешевле, занимает меньше времени, но имеет множество ограничений.
Комбинируя эти подходы, можно добиваться лучших результатов, чем используя каждый подход по отдельности.
Так No-code - и есть программирование.
Другое дело, что большая часть уже написана, а для программирования остального не используется буквально код.
Это вообще бесполезный спор, нужно и то и другое иначе небыло бы ни того ни другого.
Не в том дело, просто базы данных - это не про программирование. Непосредственно программирование там слегка есть, но его на порядки меньше, чем на бэке, и уж тем более на фронте.
Я видел дома, построенные полностью из глины и соломы, но это не значит, что их строили строители.
А потом, когда надоест в слаках и гуглодоксах мышкой тыкать, для No-Code придумают языки программирования: императивный, декларативный, функциональный, а затем еще несколько мультипарадигменных )))
Ну нет, ansible - это не No-code, там, наоборот, "infrastructure as a code" ))
У меня, кстати, возникла мысль, что задача автора, наверное, может быть решена инструментами тестирования и CI/CD. Например, инициация проверки (тот же веб-хук или еще что-то) -> Selenium-тесты -> при непрохождении, допустим, инцидент (issue) в GitLab... Далее обработка инцидента человеком и управляющее войздействие по результатам обработки.
Правда, тоже совсем не No-code получается )
Я с намёком на то, что любой no-code это штука очень ограниченная, так как рано или поздно упрётся в развесистые пайплайны, которые проще и удобнее декларативно описывать ямлами. По сабжу - да, действительно, задачу можно было бы решить при помощи скрипта на Пайтоне, который периодически запускается в том же Gitlab CI, гоняет новые страницы на соответствие стоп-словам из словаря и кидает вебхук в Слак при наличии совпадения. Насколько это было бы проще, чем предложенное решение - трудно сказать. Особенно, без понимания, кто именно будет наполнять словарь со стоп-словами и какими этот кто-то обладает навыками
Это верно. Я тоже имел в виду, что есть два движения: одно - "не хочу программировать, дайте мне кнопку", а второе "ну и как на эту вашу кнопку нажать программно... а через раз... а по условию" ) Они все время сосуществуют.
На мой взгляд No-code - это слишком широкое понятие, под которым непонятно что лежит. Программист, подключающий и использующий библиотеку в отношении нее No-code? Использование подчас сводится всего лишь к одной аннотации (Spring, Lombok etc.)
Впрочем, среди относительно чистых No-code решений на ум сразу приходит 1С. В ней действительно можно соорудить развесистую учетную систему с типовыми или тривиальными процессами практически без программирования. И ее даже можно будет использовать. Но за это ее очень трудно будет развивать и делать удобной ))
Хороший пример no-code решения это система эмуляции виртуальных инструментов LabView от National Instruments. Вот там очень прикольно реализовано, кладёшь блоки на рабочую область, соединяешь проводами и выводишь нужную информацию на виртуальную панель управления инструментом. Но опять же, штука узкоспециализированная и там при желании можно добавить блок кода, соединив его проводами с другими блоками и присвоив имена переменных получившимся вводам и выводам
Парни, я прочитал вашу ветку полностью. Так вот... Вам не надо в No-Code =D
LabView - это не no code точно. Так как там существуют лупы, ивенты, параллелизм и все еще много всего от языков программирования.
Если вы использовали это один раз для автоматизации мультиметра - то это скорей пример простого кода. Хотя на питоне это можно было бы также уместить в пару строк.
"In computing, a visual programming language (VPL) is any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually."
So there is a difference between text & visual programming languages, which you do not understand.
Да они, собственно, уже есть (тут уже упомянули декларативный ansible). Более того, DSL-и можно самому создавать. Но тут наблюдается парадокс. На низкоуровневых языках достаточно знать сам язык, среду его исполнения и соответствующие прикладные библиотеки предметной области. Специфичный же для предметной области DSL может быть очень лаконичным и удобным, но у него "под капотом" неявно сокрыто знание о предметной области, поэтому для его грамотного применения нужно хорошо владеть предметной областью, и знать как она отражена в DSL. Вот довольно часто и получается, что чем сложнее предметная область, тем низкоуровневый язык более универсален, более производителен, и реализовать разработку на нем гораздо дешевле и быстрее.
будет вернее - отношение цены создания новых специализированных компонент к кастомщине на условном фреймворке вероятно будет выше. "Ломаться" будут если изначально ядро и архитектура кривая, а так, судя по картинке, напоминает микросервисы.
ну так экономия не от того, что вы нарисовали это, а не записали буквами, а от готовых интеграций
я даже не знаю что это такое :))
и претензия моя не к тому, как вы решили задачу, а какие выводы из этого сделали. если бы написали, что интегромат - вещь потому, что в ней содержится куча готовых интеграций, я бы лично не смог это оспорить, ибо некомпетентен
но когда вы говорите, что его преимущества - в рисовании вместо программирования, я могу поспорить. no-code средства хороши именно тем, что они позволяют работать непрограммистам, но они не ускоряют работу. за исключением всяких визуальных редакторов внешнего вида, которые используют и профессиональные программисты
Вся эта котовасия с ноу-код напоминает мне время когда вдруг из ниоткуда появились "облачные технологии". То есть до них данные хранились у эльфов в сундучках, а потом вдруг в 2009 году появились облака.
Долю рынка облачных технологий у Ларри с его Oracle Cloud каждый может нагуглить самостоятельно (спойлер: в районе 3%).
до них данные хранились у эльфов в сундучках
В местных дата центрах, которые каждое предприятие строило у себя на месте.
Чето у ПХПшника кажется совсем крышка покатилась.
Профит тут не в том что ты логические ветвления и прочее мышкой натыкал. А в том что где-то кто-то уже написал код для интеграций твоих Гугл таблиц в слак и тп.
И нет, дне недели бы это не заняло. Заняло бы намного меньше. Если писать на каком-нибудь там питоне или ноде.жс
Когда программист через pip или npm ставит библиотеку того же слака, которая в 3 строчки позволяет ему слать сообщение в канал - о чудо да это же no-code (на самом деле нет)1!1!!1!1 Ведь кодить функции передачи данных по сети не пришлось!1!!1
Всякие Zapier уже сто лет на рынке, штука хорошая, но переоценивать возможности таких вещей глупо. Ибо вакансии кодеров как были так и есть... значит никакой революции no code не устроил
А с ноу код, можно ничего не зная в разработке создать ведьмака? Ото я игры создавать хочу
Сельскохозяйственный бокал
специально для вас в Unity есть визуальный редактор кода, чтобы грести с мамкиных-программистов баблишко за темную тему
В unreal уже сто лет шаблоны, и это отвратительно, что-то чуть сложнее базовой логики превращается в кашу
Помню в середине 90х появился Delphi 1.0, который позволял на форму накидывать контролы и компоненты для работы с БД и типа почти не писать код. Не писать код - было большой иллюзией. С тех пор было много самых разных сред, которые позволяли рисовать разные диаграммы и генерировать приложения. Быстро стало ясно, что из неправильных диаграмм получаются неправильные приложения, а аналитик без знания языка больше похож на инвалида.
Не мешай наивному молодняку теребонькать на buzzwords... Bigdata, cloud computing, nosql, а щас вот no code... История повторяется, технологии меняются на самом деле достаточно редко, если вникать в суть - те же яйца, только сбоку
Забавно, как история повторяется из раза в раз. Каждое поколение считает, что вот-вот появится серебряная пуля, которая отправит программистов на свалку истории. По факту подкапотная сложность только нарастает вместе с зарплатами тех, кто что-то в этом понимает. Где DSL, а-ля ЯБУн (язык бухгалтерский универсальный ), которым пророчили большое будущее? Почему предметные специалисты до сих пор сами все не делают?))
Коробочные решения vs нетипичные задачи. Плюс коробочных решений - лёгкое развертывание, быстрый старт. Минус - поддерживаемость, изменяемость, контроль над ситуацией.
Далее, плохие люди используют ссылку на наш тестовый поддомен (*.creatium.site) с хорошей репутацией, и таким образом подставляют нас.
Много людей, которые делали страницы на site, выставляли их в vk, а потом становились клиентами?
Не более ли осмысленно предлагать им сразу домен, который стоит дешевле, чем самый дешёвый тариф у вас, чем заниматься модерацией немодерируемого?
Может дешевле модерации для тарифов без домена поставить сверху плашку "Сделано в Creatium" и тогда задача злоумышленника "выдают себя за других и обманным путем получают данные клиента" невыполнима?
Как вы модерируете "размещают на них вредоносные скрипты"? Минификация же, не повесишь совпадение?
Как решить задачу "выдают себя за других и обманным путем получают данные клиента" списком стоп слов, если другие появляются каждые день? Как юрлица, так и услуги, так и физлица.
Самое ценное, что сэкономленное время я могу потратить на самую важную часть системы — механизм проверки подозрительных сайтов, и сделать ее качественно.
Это правда ценно? Ваш платящий клиент не покупает себе домен и раздаёт адреса вроде pupkin.creatium.site?
Да мы тут постоянно пользуемся no-code, каждый нень. Вообще не адресуем оперативную память - ОС сама делает. Не маршрутизируем интернет-трафик - все пакеты обрабатывает роутер. Архивы не распаковывем вручную - для этого есть WinRAR. Даже сайты не пилим - для этого есть конструкторы. И т.п.
После данной статьи злоумышленники знают, что можно специально сгенерить ложные срабатывания, после которых вы апрувните сайт и уже после ставить вредоноску. Так что порой не всё нужно рассказывать публике.
Если в Slack нажата кнопка «Ложная тревога», сценарий добавляет в базу данных пометку о том, что этой странице мы доверяем, и не стоит о ней больше сообщать при повторных публикациях.
*авторы будущих фишинговых сайтов широко улыбнулись в этом месте текста*
Что помешало добавить в Слак кнопку "Заблокировать страницу", чтобы получить фунционал ChatOps?
@Вячеслав Гримальский ссылка примера не работает, походу у ребят электронная тонировка не поперла
Сейчас это сложно назвать полноценным решением, максимум MVP, но с другой стороны, там 99,9 не будет интересных фич для UI => у любого кто писать что-то сложнее чем "змейка"/калькулятор и тп, есть в личном репозитории заготовки. Интересно что будет писать GPT-3,)))
Итого, реклама Интегромата детектид. Другого логического объяснения данному материалу нет
Задача автора может быть решена, если формы заявки и оформления заявки перенести в платную версию. Тоесть если хочешь отправить данные - велкам 500 рублей в месяц или сколько там подписка стоит. 90% этих добрых ребят уйдут в другие сервисы, потому что львиная их доля использует одностоаничники без домена с тестовым периодом
Или я не прав.
Кажется вы могли просто запретить ссылки *.creatium.ru
Действительно, no code
Новое это хорошо забытое старое. Cherwell, ServiceNow, Salesforce - те самые no/low code платформы для ITSM/CRM. Базовые сценарии делать легко, но что-то более сложное - внезапно нужно месяц курсов проходить, специальный язык учить и пробирается через сотни багов и версий. Программисты бегут с корабля если разработка на таком задерживается надолго.
Комментарии