Search
Write a publication
Pull to refresh
19
0
Vladimir @mvs

Creator, founder, developer

Send message

Blacklight — инспектор конфиденциальности веб-сайтов

Reading time15 min
Views4.9K


Blacklight — это инспектор конфиденциальности веб-сайтов, выполняющий проверку в реальном времени.

Этот инструмент эмулирует способы наблюдения за пользователем, просматривающим веб-страницы. Пользователи вводят в Blacklight нужный URL, инспектор переходит на веб-сайт, сканирует известные типы нарушений конфиденциальности и сразу же возвращает анализ конфиденциальности исследованного сайта.

Принцип работы Blacklight заключается в посещении каждого веб-сайта headless-браузером (браузером без графического интерфейса), в котором запущено специализированное ПО, созданное The Markup. Это ПО отслеживает, какие скрипты на сайте потенциально могут наблюдать за пользователем, выполняя семь тестов, каждый из которых исследует отдельный известный способ наблюдения.
Читать дальше →

Почему для информационных проектов из всех Headless CMS мы часто выбираем Strapi

Reading time4 min
Views39K

Существует большое количество (всего порядка 50) Headless CMS. Это системы управления, в которых реализован новый принцип разделения двух слоев — данных и представления (логика Jamstack).



Читать дальше →

HTTP-клиент на стероидах

Reading time7 min
Views6.5K

В этой статье я хочу поделиться с вами своими наработками для расширения функциональности вашего любимого PSR-18 совместимого HTTP-клиента.

Под катом: смена версии протокола, редиректы, логиривание, куки, кэширование, создание запросов с файлами, фейковый клиент

Читать далее

Оптимизация: Настройка веб-сервера Nginx для улучшения показателей RPS в HTTP API

Reading time6 min
Views17K

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

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

Арабские страны: новый Клондайк для разработчиков

Reading time10 min
Views7K


Рынок Юго-Восточной Азии постепенно становится насыщенным, и крупные компании обратили внимание на страны Ближнего Востока и Северной Африки (регион MENA).

Чем привлекателен рынок арабских стран?

  • Это один из самых быстрорастущих игровых рынков в мире (ежегодный рост 25%);
  • 22 страны с населением свыше 400 млн человек;
  • Оборот игрового рынка в регионе MENA достиг $4.8 млрд и составляет 23% от мирового рынка игр;
  • и, наконец, арабский регион может похвастаться одним из самых высоких показателей ARPU (average revenue per user, средняя прибыль с одного пользователя) в мире — $181 (сравните с $48 в Китае).

Что удивительно, лишь 1% контента в интернете представлен на арабском языке, причем 70% населения Ближнего Востока предпочитают выбирать арабский для интерфейса своего смартфона. Похоже, западные разработчики и маркетологи упускают из вида важный рынок.
Читать дальше →

Анализ корреляций биржевых фондов за первую половину 2020

Reading time7 min
Views36K

UPDATE Анализ устарел минимум на полгода. Более свежий анализ на февраль 2021 здесь.


На Московской Бирже торгуется сейчас 44 ETF и БПИФа. Это биржевые фонды, которые держат в себе готовые специализированные портфельчики и запакованные в stand-alone акцию (будто микросервис в докер-контейнере). Эту акцию можно купить, получив долю в общем портфеле.


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


Корреляционная матрица
Есть интерактивная версия матрицы (осторожно, трафик)


Начнем сразу с результатов анализа биржевых фондов. В матрице выше — корреляции всех ETF и БПИФ, которые появились до января 2020. До 20-го года БПИФов было слишком мало, анализировать там нечего.

Читать дальше →

Сравнение схем двух баз данных

Reading time3 min
Views11K

При разработке приложений иногда возникает потребность в сравнении двух баз данных (например prod и dev).

Существует ряд подходов для решения этого вопроса - от создания dump-файла со структурой db и последующим использованием diff, до использования специализированных платных решений типа dbForge или RedGate.

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

Читать далее

Подсистема событий как способ избавиться от задач по «допилу»

Reading time9 min
Views5.5K

Знаете, как бывает, задачу надо сделать не хорошо, а быстро, т.к. на нее завязаны деньги, партнеры и много всего другого очень важного для бизнеса. В итоге где-то что-то не продумали, где-то упустили, что-то захардкодили, в общем, все ради скорости. И, вроде, все хорошо, все работает, но…


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


Вот и у меня возникла такая ситуация. Когда-то по-быстрому запилили интеграцию с системой e-mail-маркетинга, а потом посыпались задачи по типу «если пользователь сделал это, необходимо вот это записать вот сюда». Из-за отсутствия наглядности бизнес-процессов возникало их пересечение, данные затирали друг друга, записывалось не то.


Event subsystem / Подсистема событий

Хочу рассказать, как вышли из этой ситуации.


Читать дальше →

Проверка сайта на уязвимости своими силами с использованием Wapiti

Reading time6 min
Views33K

image
В прошлой статье мы рассказали о Nemesida WAF Free — бесплатном инструменте для защиты сайтов и API от хакерских атак, а в этой решили сделать обзор популярного сканера уязвимостей Wapiti.


Сканирование сайта на уязвимости — необходимая мера, которая, вкупе с анализом исходного кода, позволяет оценить уровень его защищенности от угроз компрометации. Выполнить сканирование веб-ресурса можно с помощью специализированно инструментария.


Nikto, W3af (написан на Python 2.7, поддержка которого закончилась) или Arachni (с февраля более не поддерживается) — наиболее популярные решения, представленные в бесплатном сегменте. Разумеется, есть и другие, например, Wapiti, на котором мы решили остановимся.

Читать дальше →

Tsunami — масштабируемый сканер безопасности от Google

Reading time3 min
Views12K

image


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

Читать дальше →

Дерево разделов неограниченной вложенности и URL

Reading time8 min
Views23K
В данной статье мы рассмотрим один из возможных подходов к генерации полного пути на раздел, у которого может быть неограниченная вложенность в другие разделы, а также быстрое получение нужного раздела по заданному пути.

Представим, что мы программируем интернет-магазин, в котором должно быть дерево различных разделов, а также должны быть "приятные" ссылки на разделы, которые бы включали все подразделы. Пример: http://example.com/catalog/category/sub-category.
Читать дальше →

Решение проблемы N+1 запроса без увеличения потребления памяти в Laravel

Reading time6 min
Views28K

Одна из основных проблем разработчиков, когда они создают приложение с ORM — это N+1 запрос в их приложениях. Проблема N+1 запроса — это не эффективный способ обращения к базе данных, когда приложение генерирует запрос на каждый вызов объекта. Эта проблема обычно возникает, когда мы получаем список данных из базы данных без использования ленивой или жадной загрузки (lazy load, eager load). К счастью, Laravel с его ORM Eloquent предоставляет инструменты, для удобной работы, но они имеют некоторые недостатки.
В этой статье рассмотрим проблему N+1, способы ее решения и оптимизации потребления памяти.

Читать дальше →

Как получить OpenID/OAuth2 токен для тестирования front-end rest сервисов?

Reading time2 min
Views9.2K
Есть задача нагрузочно потестировать фронтальные веб рест апи. Ресты защищены OAuth с Authorization Code Grant. Значит появляется необходимость наличия валидного токена для Authorization: Bearer TOKEN.
Вопрос — как его взять? И так это сделать красиво и правильно? Вот тут я не знаю.

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

Есть обычная типовая система с веб рест фронтом и типовым Single-Page-Application браузерным клиентом на JS. Аутентификация и авторизация — KeyCloak с Authorization Code Grant + brokering.

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

Как заработать на веб-скрапинге

Reading time5 min
Views34K
А вы знали о том, что то, что вы сейчас читаете, это — данные? Вы видите слова, но на серверах всё это хранится в виде данных. Эти данные можно куда-то скопировать, можно разобраться в их структуре, с ними можно сделать что-то ещё. Собственно говоря, только что мы привели упрощённое описание веб-скрапинга. Скраперы просматривают код, из которого созданы веб-сайты (HTML-код), или работают с базами данных, и вытаскивают отовсюду те данные, которые им нужны. Практически каждый веб-сайт можно подвергнуть скрапингу. На некоторых сайтах применяются особые меры, которые мешают работе веб-скраперов. Но тот, кто достаточно хорошо знает своё дело, способен успешно собрать данные с 99% существующих сайтов.



Если вы не знали о том, что такое веб-скрапер, то теперь вы, в общих чертах, об этом знаете. А это значит, что мы можем заняться тем, ради чего вы, вероятно, начали читать эту статью. Мы сможем приступить к разговору о заработке на скрапинге. Такой заработок, кстати, не так сложен, как может показаться на первый взгляд. На самом деле, все методы и примеры, которые я собираюсь вам показать, укладываются в менее чем 50 строк кода. А изучить всё это можно буквально за несколько часов. Собственно говоря, полагаю, что сейчас вы вполне готовы к тому, чтобы узнать о трёх способах заработка с помощью веб-скрапинга.
Читать дальше →

Управление в стиле Догвилль

Reading time8 min
Views41K
Начальник заставляет работать по ночам или в выходные? Орёт при всех матом? Позволяет себе пошлые шутки? Коллеги постоянно и настоятельно требуют помощи? Премию так и не дают, а зарплату не повышают? Ваше возмущение вызывает, в лучшем случае, смех?

Это Догвилль, и вы стали его жертвой. Я сразу прошу прощения – не знаю, как это явление называется в психологии, поэтому использую название чудесного фильма, который наглядно и жутко проникновенно раскрывает его механику и последствия.

Этот подход в общении и, особенно, управлении используют примерно все, причём – бессознательно. Даже дети и животные. Поглядим, как он работает.
Читать дальше →

AdonisJS 5 — Laravel-подобный фреймворк на nodeJS и с Typescript достойный вашего внимания

Reading time2 min
Views7.9K
Состоялся релиз Adonis JS 5, на данный момент разработчики называют его preview версией, хотя в своем Discord они утверждают что по сути это production-ready версия фреймворка, а названа она preview потому-что еще не все необходимые пакеты были переписаны под версию 5, их скромности стоит позавидовать, от себя скажу что, версия 5 действительно заслуживает широкого внимания, на мой взгляд это один из лучших и простых фреймворков на которых стоит делать backend в 2020+ годах.
AdonisJS это Laravel-подобный фреймворк на NodeJS а теперь еще и на Typescript
Читать дальше →

С чего начать продвижение интернет-магазина

Reading time16 min
Views9K

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

Читать дальше →

Что умеет Dialogflow?

Reading time11 min
Views42K


26 ноября в Москве прошла третья в своей истории Conversations – конференция по разговорному искусственному интеллекту для разработчиков и бизнеса, на которой был представлен новый доклад компании «Аэроклуб ИТ». В прошлый раз речь шла об одном из наших исследовательских проектов, теперь же рассказ был сосредоточен вокруг инструмента, который мы применяем для чат-ботов. Сперва я планировал просто написать статью по мотивам доклада, но получился целый tutorial, так что под катом вас ждёт довольно подробное описание некоторых возможностей Dialogflow, и даже попадутся неочевидные «хаки».
Читать дальше →

Универсальное событие в Google Tag Manager

Reading time2 min
Views6K

Если вы отслеживаете множество событий и то и дело добавляете новые, вам приходится выполнять серию одних и тех же операций:


  1. Повесить событие на сайте.
  2. Создать в GTM триггер.
  3. Создать в GTM тэг отправки события в Google Analytics.
  4. Создать в GTM тэг отправки события в Яндекс Метрику.
  5. Если у вас собираются данные для ретаргетинга в Facebook и VK, то для каждого из них нужно создать в GTM еще по тэгу.

При этом количество сущностей в GTM растет и ориентироваться в них становится всё утомительней. (А еще GTM не резиновый и допустимое количество сущностей ограничено.)


Я придумал и внедрил решение, которое позволяет:


  • сократить рутину, избавляя от шагов 2-5;
  • не плодить тэги;
  • упростить управление событиями.

Нужно только один раз настроить несколько сущностей в GTM и больше вообще его не трогать при добавлении новых событий! Подробности по порядку.

Читать дальше →

Обновление MySQL (Percona Server) с 5.7 до 8.0

Reading time8 min
Views18K


Прогресс не стоит на месте, поэтому причины обновиться на актуальные версии MySQL становятся всё более весомыми. Не так давно в одном из наших проектов настало время обновлять уютные кластеры Percona Server 5.7 до 8-й версии. Всё это происходило на платформе Ubuntu Linux 16.04. Как выполнить подобную операцию с минимальным простоем и с какими проблемами мы столкнулись при обновлении — читайте в этой статье.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity