Как стать автором
Обновить
2
0

Пользователь

Отправить сообщение

Как сайты определяют ботов? Деобфускация Akamai Bot Manager 2.0

Уровень сложностиСредний
Время на прочтение47 мин
Количество просмотров22K

Akamai Technologies - американская компания, занимающаяся защитой веб-ресурсов от ботов с помощью своего продукта Bot Manager. В её портфолио числятся такие гиганты ритейла, как Nike, Adidas и Asos, для которых особенно важен контроль за ботами, автоматизирующими процесс выкупа редких/лимитированных товаров с целью их перепродажи по завышенной цене. В данной статье мы взглянем на скрипт антибота Akamai и рассмотрим, какие методы обнаружения через JavaScript в нём используются. Не знаете почему обнаруживается ваш selenium? Добро пожаловать!

Читать далее
Всего голосов 106: ↑106 и ↓0+106
Комментарии37

Плохие практики разработки, которые до сих пор встречаю в стартапах

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров53K

Привет, я Виктор. Двенадцать лет назад я пришел в веб-студию в Самаре. Так начался мой путь в разработке. У нас не было гита, CI/CD, тестовых стендов и много чего еще. Я видел, как это мешало развитию команды и бизнеса. Приходилось на ощупь собирать грабли, открывать для себя хорошие практики и внедрять их. С тех пор я поработал старшим разработчиком в российском финансовом холдинге и немецком b2b-стартапе. Был тимлидом в фудтех-проекте, СTO в образовательных стартапах для российского и латиноамериканского рынка — и почти везде поначалу натыкался на похожие проблемы. Недавно переехал в Израиль, стал консультировать стартап. И что бы вы думали…

Читать далее 👉
Всего голосов 92: ↑88 и ↓4+102
Комментарии126

Стрелочные функции и что о них стоит помнить

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров24K

Идея написать статью про стрелочные функции в 2023 году выглядит не самой очевидной, но я постараюсь объяснить свою мотивацию. Я разработчик, который пришел в профессию после того, как в JavaScript появились такие инструменты как классы, async/await, стрелочные функции и т.д.. В результате, я воспринимаю их как данность и не всегда понимаю, какой важный вклад они внесли в современный JS. И из-за этого непонимания в коде появляются ошибки, которых можно избежать, если оглянуться назад и изучить, какие проблемы эта технология была призвана решить в момент выхода. В этой статья я хочу разобраться: зачем появились стрелочные функции, чем они отличаются от обычных, и какие особенности содержат. 

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии11

Тестирование дерева зависимостей

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.3K

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

Эта система имеет свою цену. Например, во время тестирования вам приходится как‑то создавать экземпляры всех принимаемых конструктором параметров, чтобы протестировать ваш класс. Для этого можно использовать что‑то типа Moq. Но в таком случае встаёт проблема изменений класса. Если вы хотите добавить или удалить какой‑нибудь параметр из конструктора, вам приходится менять и тесты, даже если на них данный параметр никак не влияет.

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

Читать далее
Всего голосов 1: ↑0 и ↓1-1
Комментарии2

Сколько стоит содержать виртуальную девушку? Создаем подругу, записывающую кружочки в Telegram, с помощью 4 нейросетей

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров51K

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

Поговорим о технической стороне. Как повторить этот шедевр и можно ли обойтись без сервисов OpenAI, которые сложно оплатить в России? И главное — сколько придется инвестировать в виртуальную подругу.
Читать дальше →
Всего голосов 96: ↑91 и ↓5+111
Комментарии65

Гайд по эвент-сорсингу

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров14K

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

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

Читать
Всего голосов 26: ↑21 и ↓5+19
Комментарии104

C# и обработка медиафайлов средствами FFmpeg, Pandoc и ImageMagick

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров11K

Приветствую читатели, в этой статье я бы хотел рассказать о написанной мной OpenSource библиотеке MediaFileProcessor под платформу .NET (.netstandart 2.0).

Читать далее
Всего голосов 9: ↑8 и ↓1+9
Комментарии10

Делай нейминг как сеньор

Время на прочтение13 мин
Количество просмотров118K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

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

Читать далее
Всего голосов 148: ↑146 и ↓2+182
Комментарии221

Как создать внутреннюю базу знаний для большой IT-компании. Из хаоса в гиперспейсы

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров27K

Когда на вопрос «Что за фича?»‎ сказали: «Посмотри в Confluence!»‎

Привет! Меня зовут Таня Дудо, я менеджер продуктовых знаний в Selectel. В тексте расскажу, как решили создать внутреннюю базу знаний о продуктах и процессах для более 800 человек. Опишу, как к этому пришли, кропотливо выуживали важную доку из массива данных и придумали решение — гиперспейсы.

Мы развиваем базу знаний на Confluence, но подходы и решения, описанные в тексте, могут быть полезны в работе с другими площадками. Мемы и уроки из опыта — под катом.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+69
Комментарии15

Уведомления о деплое Gitlab через Telegram-бота при помощи Yandex Cloud Functions

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров7.4K

Если вы когда-нибудь сталкивались с продажами, то наверняка знаете про такое понятие как "боль клиента". Означает оно, что у каждого клиента есть потребности, определив которые, ему можно продать товар либо услугу для решения его задач.

Данная статья и родилась вследствие того, что на текущем проекте в нашей команде разработки есть боль: когда на беке вливают МР в ветку develop, то стенд падает на время деплоя. Основные участники, испытывающие эту боль — фронтенд разработчики и аналитики, которым чаще всего приходится взаимодействовать с бекендом. И во время недоступности стенда непонятно, деплой идёт или стенд упал из-за ошибки.

Нет, конечно, можно зайти в Gitlab, проверить, идёт ли сейчас деплой или посмотреть логи контейнера. Но для этого нужно быть в курсе, из-за деплоя каких конкретно микросервисов (естественно мы говорим о микросервисной архитектуре) стенд может быть временно недоступен. Ну и плох тот программист, который не хотел бы упростить жизнь себе и коллегам, автоматизировав при этом чаво-нибудь! :)

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии4

Мой опыт взаимодействия с SheetsAPI от Google

Время на прочтение23 мин
Количество просмотров11K

Разбираем интересный кейс использования Google Sheets API и Google Drive API на Python - подписываемся на изменения в Google-таблице и ведем по ним таблицу в СУБД PostgreSQL.

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

Читать далее
Всего голосов 4: ↑2 и ↓2+1
Комментарии0

Мастер-контейнер для Docker сети

Время на прочтение3 мин
Количество просмотров9.1K

Упаковка веб-приложения в Docker - довольно простая задача, если разобраться с базовыми понятиями работы контейнеров. Готовим контейнер для бэкенда, для базы данных, для фронтенд-приложения - и вуаля, приложение полноценно функционирует. В большинстве случае стандартная настройка сети и конфигурация в Docker покрывает все нужды разработчиков.

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

Читать далее
Всего голосов 12: ↑5 и ↓7-2
Комментарии7

Чем различаются Kafka и RabbitMQ: простыми словами

Время на прочтение8 мин
Количество просмотров89K

Программные брокеры сообщения уже стали стандартом при построении больших и сложных систем. Однако до сих пор не все ИТ-специалисты понимают, как работают эти инструменты. Главный системный аналитик «Иннотех» Павел Малыгин помогает разобраться в брокерах сообщениях и их работе.

Читать далее
Всего голосов 56: ↑53 и ↓3+55
Комментарии33

Иллюстрированное руководство по OAuth и OpenID Connect

Время на прочтение7 мин
Количество просмотров83K
Прим. перев.: В этом замечательном материале компании Okta просто и наглядно рассказывается о принципах работы OAuth и OIDC (OpenID Connect). Эти знания будут полезны разработчикам, системным администраторам и даже «обычным пользователям» популярных веб-приложений, которые скорее всего тоже обмениваются конфиденциальными данными с другими сервисами.

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


«Предоставьте свою банковскую учётку». — «Обещаем, что с паролем и деньгами все будет в порядке. Вот прям честно-пречестно!» *хи-хи*

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

Сегодня имеется единый стандарт, позволяющий одному сервису безопасно воспользоваться данными другого. К сожалению, подобные стандарты используют массу жаргонизмов и терминов, что усложняет их понимание. Цель этого материала — с помощью простых иллюстраций объяснить, как они работают (Думаете, что мои рисунки напоминают детскую мазню? Ну и ладно!).

Всего голосов 36: ↑34 и ↓2+38
Комментарии3

OpenID Connect (OIDC): Как получить токен?

Время на прочтение6 мин
Количество просмотров11K

Эта статья повествует о наиболее распространенном методе обмена токенами в потоке OpenID Сonnect: грантах [grants]. Обещаем – путешествие будет увлекательным, так что устраивайтесь поудобнее.

Читать далее
Всего голосов 29: ↑28 и ↓1+34
Комментарии4

Чек-лист: что нужно было делать до того, как запускать микросервисы в prod

Время на прочтение9 мин
Количество просмотров51K

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


К сожалению, некоторые невысокие программисты всерьёз полагают, что Dockerfile с какой-нибудь вообще любой командой внутри — это уже сам по себе микросервис и его можно деплоить хоть сейчас. Докеры крутятся, лавешка мутится. Такой подход оборачивается проблемами начиная с падения производительности, невозможностью отладки и отказами обслуживания и заканчивая кошмарным сном под названием Data Inconsistency.


Если вы ощущаете, что пришло время запустить ещё одну аппку в Kubernetes/ECS/whatever, то мне есть чем вам возразить.


English version is also available.

Читать дальше →
Всего голосов 138: ↑135 и ↓3+132
Комментарии71

Расширенная наcтройка EF Core

Время на прочтение11 мин
Количество просмотров7.4K

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

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии0

Как оплачивать зарубежные сервисы?

Время на прочтение5 мин
Количество просмотров204K

Как известно, 10 марта Visa и Mastercard официально прекратили транзакции в РФ. Наши соотечественники, срочно выехавшие или уже проживающие в других странах попали в ситуацию, когда российские карты перестали работать (с них нельзя снять наличные, ими нельзя расплатиться). Внутри России, будут работать до конца срока действия, благодаря Национальной системе платежных карт, но платить с использованием Apple Pay и Google Pay нельзя. Банки предлагают альтернативу: кобейджинговые карты МИР / UnionPay, но с ними все так просто и оформление таких карт - еще тот бег с препятствиями. Как итог, проблема с оплатой зарубежных сервисов стоит остро, мы уже привыкли к удобным и доступным сервисам и теперь очень не хочется отвыкать...

Как же теперь оплачивать зарубежные сервисы?

Читать далее
Всего голосов 60: ↑48 и ↓12+50
Комментарии215

Безопасное хранение secrets в Kubernetes

Время на прочтение10 мин
Количество просмотров29K

В Kubernetes есть такая сущность, как secrets, или секреты. Из названия понятно, что эти данные не могут быть общедоступными, и их нужно как-то защищать и особым образом доставлять в кластеры Kubernetes. В статье разберём, что такое secrets и в чём особенности их хранения и доставки. А также рассмотрим два популярных инструмента для работы с секретами: Hashicorp Vault и Helm Secrets.

Читать дальше
Всего голосов 29: ↑28 и ↓1+32
Комментарии9

JavaScript редактор диаграмм, который открывает диаграммы из PNG картинок (open source)

Время на прочтение3 мин
Количество просмотров7.9K

dgrm.net | GitHub

dgrm.net - это редактор диаграмм, с прицелом на трансформацию в карту знаний.

Отличительные особенности:
- аскетичность,
- работает на телефонах (одно из немногих web-решений),
- открытый исходный код.

В процессе разработки появляются интересные моменты. Статья про один из таких моментов: чтение данных из PNG.
Исходный код для использования в своих проектах прилагается.

Читать далее
Всего голосов 36: ↑36 и ↓0+36
Комментарии20

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность