Обновить
1
Йцукенберг@itsukenbergread⁠-⁠only

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

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

Внедрение зависимостей (Dependency Injection DI), SOLID, ошибки выделения абстракций и чуть-чуть психологии

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели8.2K

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

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

В предыдущей статье мы выяснили как создать два класса (Хост и Енкодер, класс А и класс В) один из которых (А) не может работать без использования функций другого класса (В, а может, и без данных из этого класса В не может работать), но при этом совершенно не зависит от этого класса В! То есть класс А может запросто работать с любым другим классом (C, D, … ) вместо класса В, при некотором условии изложенном в предыдущей статье. По моему, та статья может быть хорошей разминкой для понимания концепции Внедрения Зависимостей. И, определенно, эта статья может считаться продолжением темы практической архитектуры ПО.

Читать далее

Они зарегистрировали на себя наше название, а потом потребовали с нас 4 000 000 рублей, угрожая судом и полицией

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

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

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

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

Правда, что так можно получить деньги? Сможет ли интернет-магазин защитить себя?

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

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

Я юрист по интеллектуальным правам. Товарные знаки, патенты, авторские права — это моя профессия.

Заваривайте чай, присаживайтесь поудобнее. Это дело закрыто, поэтому могу про него рассказать.

Читать далее

Как за один слайд увидеть, кого в команду нанимать, кого учить, а что перестать делать

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

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

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

Читать кейс

Поиск на RxJS и Taiga UI

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

Привет, Хабр! Я Антон Марченко, разработчик в Т-Банке. Поделюсь интересной задачей по работе с потоками на RxJS, которую мы однажды решали. Представьте платформу внутренних продуктов и сервисов, на которой реализован поиск по статьям и постам. Нам предстояло внедрить на сайт несколько внешних поисков: по пользователям, ссылкам и исходникам. А еще предусмотреть скелетоны и обработку ошибок и заложить возможность добавлять новые внешние источники поиска динамически, не дорабатывая каждый раз пользовательский интерфейс.

Читать далее

Гайд по использованию Spring GraphQL. Часть 2

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

Привет, Хабр!

Меня зовут Дмитрий, я бэкенд-разработчик в SENSE и последние 10 лет пишу серверную часть на Java. Эта статья — продолжение первой части гайда по Spring GraphQL, где мы с нуля подняли проект и подключили GraphQL к Spring Boot.

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

Поехали!

Читать далее

8 мелочей при строительстве крыши, за которые заплатишь 2,4 млн ₽

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

Стою на плоской кровле трехэтажного дома и осматриваю повреждения. Рядом нервно 🚬 хозяин — мужчина лет сорока пяти.

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

А после первой зимы на потолках появились коричневые пятна. До той бригады уже не дозвониться. Вызвали меня.

Читать далее

Код, не боящийся изменений

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели8.1K

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

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

Читать далее

anton@gmail.com, anton+habr@gmail.com, an.ton@gmail.com — почему всё это один и тот же имейл

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

Однажды у нас в CRM появились 3 загадочных клиента. С каждым вёл переговоры отдельный продавец. А потом выяснилось, что эти клиенты — один и тот же человек с одним и тем же имейлом.

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

Спойлер: это не связано с европейским регламентом по защите данных (GDPR) и правом клиента быть забытым (потребовать от компании удаления всей информации о себе).

Читать далее

Как запаковать простое приложение в Docker: на пальцах

Время на прочтение3 мин
Охват и читатели11K

Привет, я Дмитрий Желудков, архитектор по эксплуатации, и сегодня я покажу, как собрать приложение в docker на вот этих вот 4 левых пальцах (а как же иначе, у нас же серьёзное исследование).

Читать далее

Я беру джойстик, лечу в поле и зарабатываю 3,6 млн чистой прибыли за сезон

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели165K

В статье расскажу, сколько денег может налетать агродрон, и как быстро можно окупить подобное предприятие.

Читать далее

CSS Anchor Positioning API

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели3.5K

Большой обзор нового API для позиционирования элементов в CSS.

В статье вы узнаете как теперь без использования библиотек можно создавать tooltip'ы, контекстные меню, индикаторы и другие элементы UI, которым необходима якорная связка.

Читать далее

Пособие по промпт-инжинирингу для программистов

Уровень сложностиПростой
Время на прочтение38 мин
Охват и читатели20K

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

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

Автор приводит параллельные сравнения хороших и плохих промптов, фактические ответы ИИ, а также комментарии: чтобы понять, почему один запрос успешен, а другой терпит неудачу.

Читать далее

Spring AI: Model Context Protocol

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

Model Context Protocol (MCP) — это унифицированный протокол взаимодействия между большими языковыми моделями (LLM) и внешними источниками данных и инструментами. Spring AI предоставляет очень простой декларативный подход для добавления любых инструментов в контекст LLM с помощью MCP. Мы рассмотрим несколько простых примеров по созданию MCP-клиента и MCP-сервера.

Читать далее

Почему n8n важен в автоматизации бизнеса: примеры успешной автоматизации

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

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

И именно на стыке этих задач возник интерес к универсальным low-code решениям, которые позволяли бы настаивать автоматизированные потоки данных быстро, а главное — без обязательного привлечения разработчика к каждой задаче. Одним из наиболее ярких представителей этого класса инструментов стал n8n — гибкая платформа для интеграции и автоматизации, получившая признание как среди энтузиастов и стартапов, так и в крупных предприятиях.

Впрочем, обо всем по порядку.

Читать далее

n8n – всё, что нужно знать о сервисе

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

Привет! Если вы ищете способ автоматизировать рутину, интегрировать любимые сервисы и работать с ИИ без сложной настройки — вам в особенности подойдёт n8n.

n8n.io — платформа для автоматизации рабочих процессов (workflow automation) с открытым исходным кодом. Платформа. позволяет не зная программирования и, не написав ни одной строчки кода, создавать различные инструменты для вашей работы.

В неё встроено более 400 готовых узлов (nodes) для популярных сервисов и множество AI агентов, поддержка RAG.

Ранее мы уже разбирали эту платформу в нашей предыдущей статье и, прочитав её, вы уже сможете самостоятельно развернуть ТГ чат-бота с ChatGPT.

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

Читать далее

Pro-code, Low-code, и роль Camunda

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели2.1K

Pro-code — наше сердце и душа, но люди и процессы бывают разными. Наши необязательные low-code-функции расширяют спектр применений, не мешая разработчикам.
 
Разработчики часто спрашивают меня о стратегии развития продуктов Camunda. Особенно во время запуска Camunda 8 они выражали обеспокоенность тем, что мы якобы «забыли свои корни» или «отказались от удобства для разработчиков» — именно те качества, за которые нас любят. Появилось мнение, что мы «прыгнули в поезд low-code», потому что у нас теперь есть финансирование и мы хотим «гнаться за большими деньгами». Как разработчик в душе, я могу вас уверить — это совсем не так. Позвольте объяснить нашу стратегию в этом посте.
 
TL;DR: Мы остаёмся на 100% дружелюбными к разработчикам, и pro-code — это наше всё (можно сказать, наш хлеб с маслом). Но люди, создающие процессные решения, бывают разными — как и сами процессы, которые нужно автоматизировать. Для некоторых сценариев low-code действительно имеет смысл, и здорово, что мы можем их поддерживать. Но low-code-функции в Camunda являются необязательными и никак не мешают pro-code-разработке.

Читать далее

GRASP: почему настоящая архитектура начинается не с SOLID

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

Хочу начать с личной предыстории. Давным‑давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие.

Также не обошли меня и классические принципы проектирования — SOLID, KISS, DRY — и, думаю, каждый читатель добавит сюда свои.

Безусловно, это всё важные и фундаментальные вещи.

Но однажды на горизонте появилось DDD — предметно‑ориентированное проектирование в изложении Эрика Эванса. Именно его «синяя книга» стала культовой и задала язык для архитектурного мышления.

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

Читая Эванса, рассматривая его диаграммы классов и примеры кода, я всё думал: как он это делает?

Самым большим открытием для меня стало то, что книга DDD хоть и показывает стратегические и тактические приёмы — агрегаты, объекты‑значения, спецификации, фабрики и т. д. — но не учит проектировать саму предметную область.

Складывалось ощущение, что мы это уже откуда‑то должны были знать. А откуда — остаётся загадкой.

Читать далее

15 мс на ответ: как мы добились высокой скорости работы API Gateway

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

Меня зовут Николай Кокоулин, я бэкенд-разработчик в Ви.Tech — это IT-дочка ВсеИнструменты.ру. В этой статье поделюсь нашим опытом о том, как мы в ходе разделения монолитного приложения на микросервисы столкнулись с вызовом: как сохранить производительность и масштабируемость системы при росте нагрузки.

Читать далее

Вебаппки Телеграма пишутся проще ботов, показываю (20 минут на развёртывание)

Время на прочтение11 мин
Охват и читатели16K
image

Как только мы позвали вас, хабраюзеров, в бету ковырять наши контейнеры, выяснилось, что вам они очень часто нужны для телеграм-ботов и телеграмных же вебаппов. Потому что контейнер — идеальное размещение для такого: не надо много ресурсов, а нужно, чтобы бот висел и иногда отвечал на запросы, но при этом был готов выдерживать очень большое число запросов, если нам повезёт и он завирусится. Сам бэк тарифицируется по фактическому потреблению, то есть вполне спокойно это могут быть и 100 рублей в месяц за сервер с 2 vCPU и 4 Gb оперативки.

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

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

Начну с того, что в Телеграме можно сделать webapp-приложение. По сути, это вебвьюха встроенная в мессенджер. Весь интерфейс можно делать точно так же, как на веб-фронте, на любом фреймворке (react, angular, vue…), то есть не ограничиваясь возможностями клиента. А главное, можно юзать API телефона и использовать авторизацию Телеграма.
Читать дальше →

Мама, у меня RAG: пути к улучшению, когда он «наивный»

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели5.3K

В последние пару лет RAG (retrieval-augmented generation) стал одной из самых обсуждаемых технологий в области обработки текстов и поисковых систем. Его идея проста: объединить поиск (retrieval) и генерацию (generation), чтобы быстрее находить нужную информацию и создавать более точные тексты.

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

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

Читать далее
1

Информация

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

Специализация

Фулстек разработчик
Старший