Search
Write a publication
Pull to refresh
0
0
Максим Фениксов @Feniksovich

User

Send message

Для архитекторов и аналитиков: шаблон описания архитектуры приложения (34 страницы пользы)

Level of difficultyEasy
Reading time3 min
Views29K

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

Читать далее

Какой ChatGPT выбрать в 2025 году? Подробный разбор всех моделей

Level of difficultyMedium
Reading time22 min
Views83K

Ещё пару лет назад вопрос «Какой ChatGPT лучше?» сводился к простому выбору: что за версию использовать — «тройку» или «четвёрку»? Теперь всё сложнее, и не всегда с ходу понятно, чем одна модель отличается от другой. OpenAI больше не делает ставку на одну универсальную, а предлагает линейки моделей, где каждая специализируется на чём‑то своём: одни лучше рассуждают, другими удобнее писать код, третьи идеально подходят для повседневных задач (генераций и др.).

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

Читать далее

Как я уязвимости в школьном электронном журнале искал

Level of difficultyMedium
Reading time4 min
Views12K

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

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

Читать далее

15 команд Git, которые покрывают 90% повседневной работы разработчика

Level of difficultyMedium
Reading time9 min
Views81K

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

Читать далее

Spring Security и архитектура наследования ролей в не плоской модели

Level of difficultyMedium
Reading time18 min
Views19K

Когда речь заходит об авторизации, роли вступают в игру. Если модель плоская, то все просто. Пользователь обладает определенным набором привелегий и при запросе достаточно лишь проверить, что нужное право доступа присутствует в коллекции. Но как быть, если у пользователя могут быть разные наборы ролей для разных сущностей? Например, я обладаю ролью EDITOR в посте в социальной сети, но имею только VIEWER в другом. Также могут быть определены правила наследования. Если админ выдает дает мне роль EDITOR, то я автоматически приобретаю привилегию VIEWER. При этом, если я EDITOR, роль ADMIN у меня не появляется.

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

1. Как реализовать наследование ролей в Java?

2. Как протестировать полученную иерархию?

3. Как применить решение в рамках Spring Security?

Читать далее

Я 6 лет в IT. Вместо меня повысили коллегу, который гуглил, как проверить API-запрос. Что я сделал

Level of difficultyEasy
Reading time7 min
Views228K

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

Читать далее

Кто сообщает картам, где едет ваш транспорт

Level of difficultyMedium
Reading time8 min
Views25K
Приветствую всех!
Когда-то давно здесь уже был пост про то, как работает отображение движения транспорта на Яндекс-Картах. С тех пор мне не раз предлагали рассказать про то, что происходит на «транспортной» стороне: что вообще за устройства установлены на подвижном составе, в каком формате они передают положение и что с этими данными делают дальше. Самое время восполнить это упущение.



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

«Радикальный» способ собрать команду

Level of difficultyMedium
Reading time6 min
Views8.2K

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

Предыстория

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

— Должен быть лидер-слуга
— Почему слуга? Может, лидер-партнер?
— Не согласен! 100%, это мертвые нерабочие подходы!

Меня долго не отпускала мысль: как вообще могут существовать настолько полярные мнения? Ведь это писали не вчерашние студенты, а состоявшиеся в профессии люди. Казалось бы, это те, кто работал в IT последние 10-15-20 лет, что называется, «смотрели одни и те же мультики», читали похожие книги, наблюдали за преображением бизнес-процессов и кардинальной сменой технологий.

Читать далее

Осторожно: токсики! Или как понять, что пора бежать из компании

Level of difficultyEasy
Reading time5 min
Views9.2K

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

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

Читать про токсиков

Я уволился, потому что с зумерами невозможно работать

Level of difficultyEasy
Reading time16 min
Views240K

Мы изучили, что происходит в компаниях, и выяснили, почему хорошие специалисты не выдерживают и уходят. Разбираем 5 проблем, которые не компенсируют высокая зарплата и интересные задачи.

Читать далее

Может ли Java-приложение использовать больше памяти, чем размер кучи

Reading time11 min
Views27K

Возможно, вы замечали, что Java-приложение может превышать лимит памяти, указанный в параметре -Xmx (максимальный размер кучи). Дело в том, что JVM помимо кучи использует и другие области памяти. 

Давайте начнем со структуры памяти Java-приложения и источников потребления памяти.

Читать далее

Про Rust — просто. Что читать в каком порядке?

Level of difficultyMedium
Reading time20 min
Views25K

Друзья! Многие из вас, возможно, как и я, интересовались изучением и использованием в работе очень эффективного и востребованного языка программирования Rust но, как и я, оставляли свои попытки из-за сложности, запутанности и многослойности доступного материала и книг по этой теме.

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

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

Читать далее

Что не так с OpenStack и почти всеми российскими публичными облаками

Reading time13 min
Views38K
image

Это один из тех адских опенсорсных проектов, которые отлично начинались в 2010-м, но потом с сообществом что-то пошло конкретно не так. Можно сказать, что перед нами — опенсорс, болеющий всеми корпоративными проблемами.

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

Но при этом, если вы строите публичное облако в России, варианты выбора у вас очень богатые: либо на OpenStack с собственной разработкой, либо на OpenStack, но коммерческом.

Просто чтобы вы понимали уровень ситуации:

  • Архитектура — заявленная как микросервисная, по факту — распределённый монолит, причём взаимодействие с компонентами вроде файловых хранилищ разного типа не вынесено в отдельные модули, а затянуто в ядро.
  • 49 команд разработки, которые делят сервисы по зоне ответственности, а не архитектурной задаче. Десятки комитетов, которые добавляют бюрократии.
  • Документация не соответствует реальности.
  • Иногда баг в одном модуле исправляется специальной утилитой, убирающей его последствия от другой команды разработки, а не апдейтом исходного модуля.
  • Код неоптимальный, сервисы работают медленно, есть бутылочные горлышки.
  • Обновляться очень тяжело.
  • ИБ часто делается по остаточному принципу.

В общем, в 2025 году я никак не могу советовать идти в OpenStack, но особого выбора-то и нет.

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

Перестаньте молиться на принципы S.O.L.I.D

Reading time6 min
Views48K

В мире разработки программного обеспечения существует множество "священных коров" — принципов и практик, которые принимаются как данность и редко подвергаются критическому анализу. Особенно показательна ситуация с принципами SOLID на русскоязычных ресурсах: достаточно открыть Хабр, чтобы найти 100500 статей о SOLID, и в каждой из них принципы интерпретируются по-разному.


Само существование такого количества "объяснительных" статей говорит о фундаментальной проблеме: если принципы требуют толкования, значит их названия не являются самодостаточными и интуитивно понятными. А если каждый разработчик понимает принципы по-своему, возникает вопрос — зачем вообще нужны принципы, которые не дают однозначного руководства к действию? Принципы SOLID, предложенные Робертом Мартином, давно стали одной из таких "священных коров". Однако пришло время честно признать: то, как мы используем SOLID сегодня, часто противоречит изначальным идеям и в целом иногда может приносить больше вреда, чем пользы. Зависит от контекста.


SRP не SRP


Самый яркий пример искажения первоначального замысла — это интерпретация принципа единственной ответственности (SRP).

Читать дальше →

Разбираемся с Redis

Reading time19 min
Views403K

Этот материал представляет собой глубокое исследование всего, что связано с Redis. В частности — речь пойдёт о различных способах организации хранилищ Redis, о постоянном хранении данных, о форках процессов.

Читать далее

Безумные и забавные факты о SQLite

Level of difficultyMedium
Reading time5 min
Views32K

  1. SQLite — самая часто разворачиваемая и используемая база данных. На текущий момент активно используется более одного триллиона (1000000000000 или миллиона миллионов) баз данных SQLite.

    Её поддерживают три человека. Они не допускают внешних контрибьюторов.
Читать дальше →

Очередная китай-камера с бэкдором

Level of difficultyMedium
Reading time8 min
Views37K

Как можно догадаться, на этот раз речь пойдёт об очередном поделии китайского IoT-гения, а именно о цифровой камере для третьего "глаза" микроскопа (можно ли назвать камеру для микроскопа IoT-ом?). Не знаю, может у них там сверху наказ такой: в каждую камеру по бэкдору совать (и чем больше, тем лучше), но это в самом деле треш.

За какую камеру ни возьмись: будь она для видеонаблюдения, либо, как в моём случае, для вывода картинки с микроскопа на монитор/смартфон - по факту вы получаете не только девайс, выполняющий свои основные функции, но и как "премиум-фичу" - потенциально следящее (конечно же, за Вами) устройство. Об одном таком девайсе я и хочу рассказать.

Читать далее

Более 14 лет ставлю цели на год: рассказываю, как и почему этот процесс работает у меня

Reading time14 min
Views65K

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

Читать далее

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

Reading time8 min
Views86K

Интерфейс командной строки — это альфа и омега для большинства технарей, особенно для разработчиков и сисадминов. Чем бы вы ни занимались — скриптами, конфигурацией серверов или автоматизацией задач, — команды Linux сэкономят вам часы рабочего времени. Но если только вы умеете грамотно с ними обращаться.

Поначалу Linux многих обескураживает, но как только вы разберётесь с интерфейсом командной строки (CLI), вы поймёте, что это лучший друг программиста. Простые, но эффективные команды Linux могут заметно улучшить любые рабочие процессы — от навигации по каталогам до манипуляции с файлами и даже исправления ошибок.

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

Читать далее

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer
Intern
Git
Nginx
Linux
Docker
Java
High-loaded systems
Redis
MongoDB
RabbitMQ
Java Spring Framework