Как стать автором
Обновить
1
0.2

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

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

Чем занимается системный аналитик: разбираем на примере

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

Привет! Меня зовут Индира. Я системный аналитик в банке и ревьюер на курсе «Системный аналитик» в Практикуме. В IT я более 10 лет: начинала как бизнес-аналитик, затем перешла в системный анализ и была лидом группы аналитиков, а также владельцем продукта. 

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

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

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

Советы по программированию, которые бы я дал себе 15 лет назад

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


У меня наконец-то появилось ощущение, что я хороший программист, поэтому было бы неплохо записать советы вида «как бы я смог добиться этого быстрее?». Не буду утверждать, что все эти советы отлично подойдут всем, но для меня они были бы хорошими.

▍ Если ты (или твоя команда) постоянно стреляешь себе в ногу, то почини ружьё


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

Когда я занимался разработкой для iOS, то использовал CoreData и подписывался на изменения нескольких view. Обратный вызов подписки поступал в тот же поток, из которого было запущено изменение. Иногда это был основной поток, а иногда — фоновый. В разработке для iOS важно то, что вносить изменения в UI можно только в основном потоке, иначе приложение вылетит. Поэтому подписка могла работать нормально, но потом ломалась, когда кто-то запускал изменение из фонового потока или вы позже добавляли обновление UI.

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

Я решил это исправить. У меня ушло десять минут на внесение изменений в слое подписки, теперь подписчики вызывались в основном потоке, что позволило избавиться от целого класса сбоев и сняло с нас часть умственной нагрузки.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+59
Комментарии15

Виртуальные потоки Java 21 — чувак, где мой lock?

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

Как показывает опыт Netflix, использование виртуальных потоков, представленных в Java 21, может спровоцировать возникновение неожиданных проблем. В новом переводе от команды Spring АйО мы подробно исследуем уникальные трудности, возникшие у команды Netflix при интеграции виртуальных потоков в Spring Boot на Tomcat. 

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

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

Как понять, что твой мидл готов стать сеньором? Гайд для тимлида (и не только)

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров23K
Новый грейд — это не просто лычка IT-спеца. По сути, это кульминация работы над задачами и решений различных кейсов, которыми он занимался на своей позиции. Но на этот новый уровень айтишник переходит не один.



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

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

Читать дальше →
Всего голосов 47: ↑35 и ↓12+27
Комментарии66

Просто выберите Postgres

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

Отчасти это действенный совет, отчасти — вопрос к читателям.

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

Читать далее
Всего голосов 43: ↑38 и ↓5+41
Комментарии84

«От идеи до продакшена»: как разработать веб-приложение и загрузить в VK Mini Apps

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

Привет, Хабр! Меня зовут Егор, я независимый разработчик сервисов VK Mini Apps — открытой платформы мини‑приложений и игр, которые доступны в VK, ОК, Почте Mail.ru, браузере Atom и RuStore. Ими можно пользоваться без установки на устройства, а число уникальных пользователей достигает 45 миллионов в месяц.

На базе VK Mini Apps можно легко создать приложение и поделиться им с друзьями. А если разработка окажется успешной — загрузить в каталог мини-приложений VK. Об этом всем подробнее поговорим в статье. Создадим приложение для мониторинга погоды, задеплоим на сервер и загрузим в VK Mini Apps.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+44
Комментарии2

Сетевые протоколы и модели OSI: как всё устроено

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

Как всё на самом деле работает в этом вашем TCP/IP и зачем ему столько уровней. Разбираем на простых примерах.

Пётр Емельянов — эксперт по информационным технологиям в Skillbox. Для комьюнити Skillbox Code Experts он провёл эфир о сетевых протоколах и моделях OSI или Open Systems Interconnection model. Речь про модель взаимодействия открытых систем, которая описывает, по каким правилам взаимодействуют разные устройства в компьютерных сетях. Основные мысли и объяснения из эфира Пётр рассказал в этой статье. До карьеры в машинном обучении Пётр около 10 лет проработал системным программистом в компании, которая специализировалась на анализе сетевого трафика. Занимался тарификацией и разводил потоки трафика. В статье Пётр рассмотрит, как появилась модель OSI, кому и зачем она нужна, какие у неё уровни и как ей пользоваться.

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

Настройка почтового сервера Yandex spring boot

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

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

Для начала, нам понадобится почта яндекс. После смотрим, какие конфиги нам нужны тут. Яндекс предлагает создать пароль для нашего приложения. Что мы и делаем по ссылке. При создании пароля, копируем его себе, так как виден он только первый раз.

По сути, с яндексом мы закончили.

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

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

Что добавить в портфолио новичку в IT, чтобы получить работу?

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

Если вы — айтишник без опыта коммерческой разработки, попасть сразу в сильную команду, очевидно, непросто. Будучи руководителем направления frontend-разработки, я каждый год с коллегами просматриваю множество портфолио кандидатов, включая джунов, и отобрал типы проектов, которые зацепили нас больше всего.

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

Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana

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

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

Как какой из двух категорий относится эта статья — решать вам.

В этой статье вы увидите пошаговое создание cloud-native микросервиса на Amazon AWS, пригодное для "чтения с листа". Чтобы понять, что здесь происходит, не нужно разворачивать проект - достаточно обладать живым воображением и прочитать текст по диагонали. Если же вы всё-таки захотите повторить шаги, вам будут жизненно нужны знания вида, как создавать классы в IDE и что такое Spring.

Вначале мы напишем пару простых микросервисов на Spring Boot, докеризуем их, зальём в AWS, настроим красивые доменные имена и HTTPS, прикрутим логирование и мониторинг, Prometheus и Grafana. Это небольшое путешествие по всем кругам ада, из которого вы не вернетесь прежним.

Текст написан на основе текстов и демо-проекта microservice-customer за авторством @kamaruzzaman. Если вы потеряли нить повествования, всегда можно зайти на GitHub и найти весь код в пригодном для запуска виде. Если захочется закопаться в тему, то бро Дима Чуйко (@Teapot) написал вам ещё две части статьи "Микросервисы: от CRUD до Native Image" (раз, два).

Последняя важная оговорка. В этом гайде будут использоваться технологии Amazon и обычные дистрибутивы OpenJDK. Автор осознает, что мы живём в России, и возможно, вместо Amazon куда лучше подойдет что-то вроде SberCloud или MTS Cloud, а вместо обычного OpenJDK - Axiom JDK с сертификацией по ФСТЭК. Особенности российских технологий - тема для отдельной статьи. Если вы захотите таковую после чтения этого гайда - отметьтесь в комментариях.

Читать далее
Всего голосов 66: ↑65 и ↓1+83
Комментарии27

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

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

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

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

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

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

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

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

«Скажите, какие основные преимущества микросервисов и почему?». Вероятно, это самых популярный вопрос последних 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 мин
Количество просмотров41K

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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


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

Информация

В рейтинге
2 512-й
Зарегистрирован
Активность