Как стать автором
Обновить
1
@artemfisherread⁠-⁠only

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

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

Spring AOP: как работает проксирование

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

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

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

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

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

Микросервисы для тех, кто прикидывается разработчиком. Часть 1

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

«Скажите, какие основные преимущества микросервисов и почему?». Вероятно, это самых популярный вопрос последних 6–10 лет на любом собеседовании для бэкенд разработчика. Каким-то чудом он даже обогнал: «Назовите три принципа ООП» и «Чем отличается класс от объекта».

Читать далее
Всего голосов 21: ↑16 и ↓5+17
Комментарии16

«В карантин нагрузка выросла в 5 раз, но мы были готовы». Как Lingualeo переехал на PostgreSQL с 23 млн юзеров

Время на прочтение7 мин
Количество просмотров72K
image

Проекту Lingualeo уже 10 лет. Более 23 миллионов человек из России, Турции, Испании и стран Латинской Америки учат с помощью нашего сервиса английский.

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

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

Проблемы зрелого продукта


«Я пришёл в Lingualeo в августе 2018 руководить бэкэнд разработкой. Тогда бэком занималась команда из 8 разработчиков и 2 админов, которые обслуживали монолит на 1 миллион строк кода преимущественно на PHP. Чтобы внедрить даже небольшую новую фичу, уходило 2 месяца. А затраты на инфраструктуру на 10 000 активных пользователей превышали 1 000 $ в год.

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

Всего у нас в штате было 20 разработчиков, но развивать продукт было невозможно: если что-то добавить, вылезали неожиданные проблемы. У команды уходило 2–3 недели, чтобы всё починить. Разработчики занимались поддержкой кода из 2013 года, и ресурсов на обновление функциональности не было.
Читать дальше →
Всего голосов 140: ↑67 и ↓73+29
Комментарии797

5 книг, которые стоит почитать начинающему ИТ-архитектору

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

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

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

Использование очередей (Queue/Deque) для решения алгоритмических задач на Java

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

Как всегда, сначала немного базовой теории для понимания того, с чем мы имеем дело. 

Queue - однонаправленная очередь, представляет собой структуру данных, которая строится по принципу FIFO (first-in-first-out). Другими словами, чем раньше элемент был добавлен в коллекцию, тем раньше он оттуда будет удален. 

Выжимка по методам:

Читать далее
Всего голосов 8: ↑4 и ↓40
Комментарии16

Разработка Java-проекта с ChatGPT-4: от идеи до реализации

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

Как Java-методист с 15-летним опытом я решил проверить, как нейросеть ChatGPT-4 придумывает use cases, создает доменную модель и пишет программный код. Давайте посмотрим, способна ли эта большая языковая модель в ее текущей итерации заменить разработчика или, по крайней мере, упростить процесс разработки.

Привет, Хабр! Меня зовут Игорь Судакевич, я преподаватель-практик Учебного центра IBS по программированию на языке Java. В начале 2024 года мой коллега из IBS уже делился собственным опытом создания базовой программы с помощью ChatGPT. В том эксперименте использовалась бесплатная модель 3.5, и мы получили множество комментариев из серии «А вы бы тоже самое провернули на последней версии модели — она всё делает в разы лучше!» Мол, и разработчики скоро будут никому не нужны.

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

Самый простой способ проверить работу веб-приложения под нагрузкой на примере JMeter и Grafana

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

Привет, меня зовут Рамиль, я программист в отделе разработки серверных решений ЮMoney. В этой статье расскажу о своём эксперименте с нагрузочным тестированием с помощью JMeter, Grafana и Prometheus, а также покажу, как тестировал три сценария: с двумя, 10 и 100 запросами в секунду.

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

Как разработать онлайновый компилятор кода при помощи Java и Docker

Время на прочтение12 мин
Количество просмотров3.3K
image


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

Исходный код к этой статье выложен на Github в этом репозитории
Читать дальше →
Всего голосов 3: ↑3 и ↓0+7
Комментарии1

Магия CSS на практике: советы по вёрстке от гика. Часть 2

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

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


Сегодня я расскажу:

  • какие правила у меня есть при именовании CSS-переменных для дизайн-систем;
  • на какие логические свойства вам стоит обратить внимание;
  • зачем нужно делать прозрачные рамки;
  • как я делаю зависимость значения одного свойства от других более явным;
  • про пользу «внутренних» переменных.

Давайте посмотрим, что я вам подготовил.

Читать дальше →
Всего голосов 30: ↑30 и ↓0+42
Комментарии14

Сложно о простом. Канальный уровень (L2) модели OSI

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


Приветствую, коллеги! Меня зовут ProstoKirReal, и сегодня мы продолжим изучение модели OSI, обсудив канальный уровень (L2). Этот уровень играет ключевую роль в обеспечении надежной передачи данных в локальных сетях.
Читать дальше →
Всего голосов 30: ↑24 и ↓6+28
Комментарии10

«Меня увольняют» или манипуляции HR и менеджеров, чтобы вынудить вас уволиться одним днём. На примере Рольфа

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

Вкратце, для тех, кто ещё не слышал о новом скандале на IT рынке: Крупнейший автомобильный дилер «‎Рольф» увольняет айтишников без компенсаций.

В профсоюз обратились несколько сотрудников из компании и описали происходящее: +- 50 человек решили уволить потому что для них нет работы. Сотрудников по одному вызывали в кабинет где сидели 4 коллеги и рассказывали им о жизни, понятиях и отношениях: «ну мы же как семья». Всё ради того, чтобы получить подпись в соглашении о расторжения трудового договора одним днём. Без каких либо выплат. Спойлер — почти все сотрудники повелись на манипуляции и их уже уволили.

И что там дальше?
Всего голосов 171: ↑166 и ↓5+196
Комментарии198

Летнее чтение на английском: список книг по уровням и советы методистов

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

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

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

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

Полное практическое руководство по Docker: с нуля до кластера на AWS

Время на прочтение39 мин
Количество просмотров1.7M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Всего голосов 125: ↑124 и ↓1+123
Комментарии44

Разработчикам, аналитикам и архитекторам: рецензия на книгу «Проектирование архитектуры API»

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

Сегодня представляем на Хабре очень интересную книгу — переводное издание «Проектирование архитектуры API» («Mastering API Architecture») издательства O'REILLY. Это руководство по разработке и реализации API (программных интерфейсов приложений). Разобраны базовые вопросы обмена информацией в микросервисной архитектуре, обработка запросов на сайтах и в веб‑приложениях (парадигма REST). Бонусами к статье — промокод «SSPSOFT» на русское издание и ссылка на оригинальный текст книги (бесплатная копия книги в PDF).

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

Как правильно тестировать конкурентные структуры данных

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

Есть потрясающая библиотека Rust под названием loom, которую можно использовать для тщательного тестирования неблокируемых (lock-free) структур данных. Я давно хотел разобраться, как она работает. И сейчас хочу! Но недавно я случайно реализовал небольшой эксперимент, который, как мне кажется, содержит часть идей loom, поэтому о нём стоит написать. Моя цель — не научить вас тому, что нужно использовать на практике (если вы хотите этого, то почитайте документацию loom), а, скорее, вывести пару идей из фундаментальных принципов.
Читать дальше →
Всего голосов 33: ↑33 и ↓0+46
Комментарии3

Как стать Java-разработчиком бесплатно? Программа обучения с нуля

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

Если вбить «как стать java разработчиком» в поисковую строку, можно найти тысячу курсов по данному направлению. Проблема в том, что все курсы являются платными и, как правило, стоят несколько десятков, если не сотен тысяч рублей. 

Чтобы разбавить засилие платных курсов, мы подготовили для вас программу обучения «Java-разработчик с нуля», которая состоит только из бесплатных материалов.

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

Введение в Docker и Kubernetes: основы контейнерных технологий. Часть 1

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

Docker и Kubernetes — два инструмента, которые прочно вошли в арсенал современных разработчиков. Хотите разобраться в основах контейнеризации и оркестрации? Наша статья поможет вам в этом, раскрывая ключевые концепции и принципы работы этих технологий.

Читать далее
Всего голосов 15: ↑12 и ↓3+10
Комментарии17

Volatile, Lock-free, Immutable, Atomic в Java. Как понять и начать использовать

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

Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut.

Сегодня хочу поговорить об одном из lock-free алгоритмов в Java. Разберём как с ним связано ключевое слово volatile и паттерн immutable.

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

Как подготовиться к собеседованию начинающему сетевому инженеру? Базовые знания

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


Приветствую, коллеги! Меня зовут ProstoKirReal, и я сетевой инженер.

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

Но мир IT обширен и многогранен. Один из его аспектов — сетевые технологии и, в частности, работа сетевиков. Профессия сетевого инженера трудна и шумна, особенно если проводишь время в холодных серверных, не видя солнечного света. Но если вы всё-таки хотите обучиться сетевому ремеслу, первым, с чем вы столкнётесь, будет собеседование.

Как подготовиться к собеседованию


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

На собеседовании на должность сетевого инженера могут задавать различные вопросы, касающиеся как технических знаний, так и личных качеств и опыта работы. Но если у нас нет опыта или он минимальный, то что мы должны в первую очередь знать?
Читать дальше →
Всего голосов 19: ↑19 и ↓0+26
Комментарии7

Собираем docker и деплоим из GitHub Actions

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

Я приведу краткую инструкцию, как быстро собирать проект и деплоить docker. Флоу будет очень простым: одним job мы собираем образ (с указанием тэга или ветки) и кладем в приватный репозиторий образов GitHub, а другим - job деплоим оттуда. Это удобно, когда есть несколько сред и мы один раз собираем и контейнер запускаем из него с разными переменными среды.

Начнем
Всего голосов 8: ↑7 и ↓1+8
Комментарии6

Информация

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