Обновить

Как стать автором

Архитектура фронтенда. Навеяно болью от использования FSD

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

Кто я такой и с какой горы прибыл?

Зовут меня Юра и у меня немногим больше семи лет опыта разработки фронта на vue+typescript. Начал я, что забавно, с Angular 5 в далёком 2018, когда пятёрка ещё была актуальной версией, и работал с ним немногим больше пары месяцев, после чего перекатился во vue2.

Работал я исключительно в B2B и внутренней разработке. Системы документооборота, сервисдески и вот это вот всё. Благодаря этому я повидал разного. От DDD, до "паста-болоньезе-код".

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

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

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

Реализация гео-блокировки на основе eBPF/XDP

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

В 2022 году финансовый сектор, в частности банки, столкнулся с волной продолжительных и достаточно мощных DDoS-атак разных векторов. Среди них были и банальные L7 HTTP-флуды, не представлявшие собой ничего сложного в техническом плане, но для организаций с несколькими сотнями пользовательских сервисов и защитой от L7-атак только критичных из них, это стало серьезным вызовом.

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

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

Технология XDP (eXpress Data Path) идеально подходит для таких сценариев — она позволяет обрабатывать пакеты на самом раннем этапе, еще до того, как они попадут в сетевой стек ядра, что обеспечивает беспрецедентную производительность.

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

Читать далее
Всего голосов 6: ↑5 и ↓1+5
Комментарии3

Grafana + Prometheus для Bitrix: один экран, чтобы видеть и «железо», и продукт

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

Сайт работает, 500-ых нет – но заказы с сайта не поступают. Бизнес теряет деньги, а разработчики даже не подозревают что что-то идет не так. Меня зовут Михаил, я из команды Backend разработки D'Terra. Мы прошли через это и поняли: только system-based метрик недостаточно. Нам нужны бизнес метрики в дашбордах, что бы реагировать на такие инциденты. Поэтому я настроили Prometheus под Bitrix так, чтобы на одном дашборде видеть и «железо», и бизнес-часть сайта.

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

Как мы искали заманивающие категории

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

Однажды в ходе рабочей сессии возник вопрос: а какие позиции в ассортименте дают нам приток новых клиентов? Какие категории, подкатегории, бренды?

Задача пришла ко мне (аналитику), со словами: «что мы можем здесь посчитать?»

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

Что скрывается за «сертификатами безопасности» от Минцифры?

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

Здравствуйте, уважаемые хабровчане.

Я решил провести собственное небольшое расследование о так называемых «сертификатах безопасности» от Минцифры. Цель — собрать полное техническое досье и разобраться, почему их установка может нести потенциальные риски для безопасности данных.

(Оригинал без терпения, все скрипты и файлы, упомянутые в статье, доступны в этом GitHub‑репозитории).

Читать полностью
Всего голосов 207: ↑160 и ↓47+135
Комментарии404

HalChatLocalAI: как я встроил офлайн-ИИ прямо в мессенджер

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

Большинство ИИ-ассистентов работают в облаке. А я сделал локальный — прямо внутри мессенджера HalChat.

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

Апокалипсис контента? Взгляд юриста и разбор LLM

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

На днях наткнулся на статью, опубликованную в телеграм-канале Habr, под названием «Тихий апокалипсис контента: почему все устали от сгенерированных статей». В ней автор выражает озабоченность количеством сгенерированного контента, который набирает просмотры и вытесняет из выдачи авторские статьи. Статья автора натолкнула меня на идею порассуждать на эту тему, провести небольшие исследования, сравнить процесс генерации текста ИИ и человеком и просто поделиться своим «экспертным» мнением.

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

VPN как троянский конь: индустрия продаёт не только приватность, но и ваше доверие. Почему Y2Y-модель самая оптимальная

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

VPN многие воспринимают как магический щит: один клик — и твой трафик зашифрован, IP скрыт, ты полностью анонимен. Знакомая история, правда? Но что если инструмент, которому доверяют миллионы, на самом деле построен так, чтобы собирать данные и продавать ваше доверие?

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

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

Современные OCR для сложных документов: сравниваем 6 open-source моделей на реальном кошмаре инженера

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

Привет, Хабр! Каждый, кто хоть раз пытался вытащить данные из скана акта или старого отчета, знает эту боль. Классические OCR-инструменты, вроде старого доброго Apache Tika, отлично справляются с простым печатным текстом, но пасуют перед реальными вызовами: таблицами со сложной вёрсткой, рукописными пометками, мелким курсивом и разными шрифтами в одном документе.

Чтобы не быть голословными, давайте посмотрим на типичный «сложный» документ и что с ним делает Tika.

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

Литиевые аккумуляторы: одни горят и взрываются, а другие — нет

Время на прочтение6 мин

Давайте разбираться, какие аккумуляторы мы называем литиевыми, почему это иногда вводит в заблуждение и чем Li-Ion отличаются от LiFePo4.

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

«Два стула» для данных: как мы боремся с рассинхроном в Rust-сервисе между Solana и PostgreSQL

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

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

Наш проект использует паттерн двойной записи (Dual-Write):

Solana — гарантирует неизменность и прозрачность данных о выданных дипломах

PostgreSQL (Supabase) — обеспечивает быстрые выборки и сложные запросы

Звучит красиво на архитектурных диаграммах, но в production всё не так радужно. Главная проблема — частичные сбои. Транзакция в Solana прошла успешно, диплом записан в блокчейн навечно, а вот запись в PostgreSQL упала. Пользователь получил подтверждение, но половина системы о его дипломе не знает.

Сегодня я покажу, как мы столкнулись с этой проблемой лицом к лицу и какие паттерны применили для её решения.

Чтобы стулья не разъехались
Всего голосов 2: ↑1 и ↓10
Комментарии15

Калькулятор лотов для MetaTrader 5: как автоматизировать рутину в трейдинге

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

В этой статье обозреваю возможности платформы для трейдинга MetaTrader 5, но глазами программиста. Покажу, как самому написать на MQL5 программы‑советники (по‑трейдерски — индикаторы), которые избавят трейдеров от рутины.

Читать далее
Рейтинг0
Комментарии0

IT Волонтерство. Что это за каша и куда можно пойти волонтёрить?

Время на прочтение4 мин

IT-волонтёрство — это добровольческая деятельность, в рамках которой специалисты в области IT, дизайна, копирайтинга и других цифровых профессий помогают некоммерческим организациям, благотворительным фондам и социальным проектам решать различные технологические задачи по типу: "Сделать сайт фонда", "Разработать логотип для социальных сетей" и т.д..

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

Для многих НКО, социальных проектов и благотворительных инициатив стоимость IT-услуг на рынке оказывается очень неподъёмной или просто нет на это средств, и именно здесь на помощь приходят IT-волонтёры.

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

Автоматизация печати в конструкторском бюро (в двух частях)

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

Часть 1. DWG. Как побочный кейс стал основным

Путешествие в кроличью нору автоматизации процессов может привести к занятным результатам. Казалось бы, тривиальная задача часто оказывается не таким уж и простым в реализации кейсом. Особенно без поддержки со стороны вендора.

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

Как мы превратили цифровое ТВ в радар

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

Как мы превратили цифровое ТВ в радар

Open Source проект по мониторингу воздушного пространства на SDR

Зачем вообще делать радар из телевизора?

Традиционные радиолокационные системы (РЛС) — это огромные антенны, киловатты мощности, разрешения на частоты и бюджеты уровня «военного отдела». Нам же хотелось видеть небо, не нарушая ни законов физики, ни законодательства.

Так родилась идея собрать пассивную когерентную локацию (PCL) — систему, которая ничего не излучает, а просто слушает уже существующие сигналы в эфире.
FM-радио, LTE, цифровое ТВ — всё это мощные «осветители», которые и так покрывают территорию. Почему бы не использовать их?

Мы выбрали сигнал DVB-T2 (546 МГц) — стабильный, мощный, и что особенно приятно — с известной структурой (OFDM).

Результат? Получился радар без передатчика, который можно запустить хоть на балконе. И да, всё это — на полностью open source стеке.

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

Зачем я все еще нанимаю копирайтеров, хотя умею писать с ChatGPT

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

Недавно на Хабре вышел материал с громким заголовком — «Как я генерирую тексты без копирайтеров (и почему поисковики это не замечают)». Признаюсь честно, как специалист по коммуникациям, я прочитала его с удовольствием. Текст автора — искренний, системный и вдохновляющий. Lastman рассказал, как с помощью нейросети создаёт статьи, которые выглядят естественно и даже проходят SEO-проверку.

Автор явно знает, о чём пишет — чувствуется насмотренность, понимание SEO-логики, работа с LSI-запросами, структурами, микро-редактурой. Из чего я делаю логичный вывод, что человек находится внутри ремесла, профессии, контекста. Просто он сам стал для себя и копирайтером, и редактором, и SEO-специалистом одновременно. Это заслуживает уважения.

Но всё же — давайте чуть подискутируем. Не потому что кто-то «за» или «против» копирайтеров, а потому что тема, на мой взгляд, требует дополнения.

Нейросеть — не волшебная палочка. Если вы внутри рынка, я на 1000% уверена, что хоть раз, но вам приходилось слышать от заказчика: «только не нейросеть, пожалуйста». Не потому что они против технологий — а потому что получали и продолжают получать на руки тексты без редактуры, с шаблонными оборотами и фразами «по инструкции». И это действительно проблема: в руки к заказчику попадает не результат работы с нейросетью, а просто её сырой отклик: не отредактированный, с не красивыми оборотами, с не богатым русским языком текст.

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

Читать без нейросетевых иллюзий
Всего голосов 1: ↑1 и ↓0+1
Комментарии9

Без дизассемблера: как предварительный анализ документа GOFFEE раскрыл всю цепочку заражения

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

Всем привет!

Киберугрозы постоянно эволюционируют, и для эффективного противодействия важно понимать тактики и инструменты злоумышленников. Группировка GOFFEE, также известная как Paper Werewolf, представляет собой яркий пример такой угрозы.

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

Перейти к разбору
Всего голосов 5: ↑5 и ↓0+5
Комментарии5

Нечёткий поиск при пересечении множеств, или Как выжать все соки из Хэширования по сигнатуре

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

На просторах интернета легко можно найти материалы по реализации нечёткого поиска, в которых предполагается поиск одной строки в множестве строк M. Но что если возникнет необходимость реализовать нечёткое сравнение множества M₁ с множеством M₂? При классическом подходе нам придется выполнить M₁*M₂ сравнений - при линейном росте этих множеств, сложность задачи будет расти экспоненциально, в плане производительности это решение никуда не годиться!
В этой статье предложен вариант реализации ускоренного алгоритма для решения этой задачи. Теоретической новизны в проекте практически нет. Цели:
1 - Ознакомить с концепцией
2 - Дать конкретный пример интеграции в БД SQL(MSSQL)
3 - Ознакомить с возможностями на базе практической реализации

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

Практичные Python-привычки, которые реально повышают качество кода

Время на прочтение3 мин

Практичные Python-привычки: явное состояние и мемоизация, асинхронность для продакшн, ошибки и raise, типизация и валидация, ленивая загрузка и кеширование

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

Почему простые фичи — самые сложные: история о пет-проекте, Дженге и маржинальной торговле

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

Привет, Хабр! Меня зовут Иван, и сегодня я хочу поделиться историей о своём пет‑проекте A‑Zero. Истории про провалы традиционно интереснее историй об успехах, и моя как раз такая (почти). Довольно бодро начинавшийся проект чуть было не свёл меня с ума из‑за одной единственной фичи, «просочившейся» в MVP, и сейчас я расскажу, как я из этого выкарабкался и чему научился по дороге.

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