Обновить

Бэкенд

Сначала показывать
Порог рейтинга
Уровень сложности

Элементарный дебаггинг с binding.irb

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

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

В чем же дело?

Многопоточность для самых маленьких. Виртуальные потоки. Часть 2

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

Всем привет!

Многопоточность в Java развивается очень быстро, а многие всё ещё ограничиваются обычными потоками и ключевым словом synchronized. Сегодня я хочу рассказать именно о виртуальных потоках: как с ними работать, почему они меняют подход к многопоточности и какие задачи решают лучше традиционных механизмов. Буду объяснять просто и понятно, чтобы материал был полезен как новичкам, которые только знакомятся с виртуальными потоками, так и опытным разработчикам, которые хотят понять современные практики и возможности Project Loom.

Читать далее

BBQ в IBS: как мы организовали внутреннюю конференцию по тестированию и при чем тут Шуфутинский

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

«Мы замутим свой SQA Days — с головоломками и спикерами», — подумали мы с коллегами после посещения этой популярной конференции. И замутили!

Привет, Хабр! Я Татьяна Диановская, руководитель отдела ресурсного менеджмента в департаменте тестирования IBS. В этой статье расскажу, как мы в компании организовали свою внутреннюю конференцию для тестировщиков.

Читать далее

Рынок найма в IT-2025: мифы, факты и взросление индустрии. Разбор от HRD МойОфис [SHORT & FULL]

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

Самое время признать: несмотря на шум в СМИ и на Хабре о массовых увольнениях разработчиков и «заморозке» найма, 2025-й год не принёс обвала. Но индустрия вышла из режима лёгких денег и хаотичного роста и перешла к требовательной, измеряемой нормальности. Айтишка стала более осознанной и экономной в вопросах продвижения и маркетинга.

Или нет?

Привет, Хабр! Меня зовут Кирилл Ширяев, я — HRD в МойОфис. Ниже разбор главных мифов о рынке и тех механизмов, по которым реально жили найм, удержание и развитие людей в IT в 2025 году. Я вижу это как по нашей компании, так и в целом по индустрии. Читайте короткую версию и сохраняйте полную — она пригодится.

Читать далее

Удаляем пробелы из строки

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

Недавно мы разбирали популярную задачу — проверяли строку на наличие цифр. Еще одна популярная задача при работе со строками — удалить из них пробельные символы. Можно представить, что нам нужно очистить пользовательский ввод: удалить пробелы вначале и конце строк в имени или удалить пробелы из телефонного номера. .NET предоставляет нам несколько возможностей для решения этой задачи, давайте рассмотрим самые популярные и попробуем найти наиболее эффективные. Заодно проверим, какие изменения произошли в новой версии .NET 10.

Читать далее

Как обрабатывать исключения в Java

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

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

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

Читать далее

Все главные нововведения Python 3.14: от JIT до инструментов отладки

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

Представьте: ваш Python-код работает на 30% быстрее благодаря JIT-компиляции, обработка запросов масштабируется на все ядра процессора без ограничений GIL, а отладка высоконагруженных систем происходит в реальном времени, без остановки продакшена. Это не футуристический сценарий “what-if” — это реальность Python 3.14, релиза, который переосмысливает саму природу разработки с высокой производительностью на Python.

Читать далее

Fizz Buzz на косинусах

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

Fizz Buzz — это игра с числами, которая стала неожиданно популярной в мире компьютерного программирования в качестве простой проверки базовых навыков. Правила игры просты: игроки вслух произносят по порядку числа, начиная с единицы. Если число делится на 3, игрок должен сказать вместо него «Fizz». Если число делится на 5, он должен сказать «Buzz». Если оно делится и на 3, и на 5, игрок говорит «FizzBuzz». Вот типичная программа на Python, выводящая нужную последовательность:

for n in range(1, 101):

if n % 15 == 0:

print('FizzBuzz')

elif n % 3 == 0:

print('Fizz')

elif n % 5 == 0:

print('Buzz')

else:

print(n)

А вот её вывод: fizz-buzz.txt. Можно ли усложнить эту программу? Слова «Fizz», «Buzz» и «FizzBuzz» повторяются в этой последовательности периодически. А что ещё у нас есть периодического? Тригонометрические функции! Возможно, нам удастся при помощи этих функций закодировать все четыре правила последовательности в выражении в аналитическом виде. Именно эту задачу мы и исследуем в статье, получив в конце дискретный ряд Фурье, который может получить любое целочисленное n и выбрать для печати соответствующий текст.

Читать далее

Лучшие нейросети для вайбкодинга на 1С 6 (финал)

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

В этой части добавил Claude Opus 4.5 и GPT 5.1-Codex-Max

Предыдущая часть

Для тех, кто не любит читать, результат сразу тут:

Читать далее

Темпорал для начинающих

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

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

Изучить детальнее..

Claude Code за 4 часа написал AI чатбот (и мы выложили его в open source)

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

Попросили Claude Code CLI сделать AI-чатбот для нашей платформы. Через 4 часа получили рабочее решение: контекстно-зависимый виджет, база знаний на markdown, эскалация в Telegram, автоматический сбор багов. Работает в production, выложили в open source.

GitHub
Лицензия: MIT

Читать далее

Выразительность против разрешимости: почему «мощные» системы тяжело анализировать

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

В программировании мы привыкли торговаться временем против памяти, но есть ещё один, менее очевидный, компромисс — между тем, что система в принципе умеет выражать, и тем, что о ней потом вообще можно строго сказать. Машины Тьюринга, PDA и DFA, Rust и Python, SAT и SMT, системы типов, макросы и метапрограммирование — всё это разные точки в одной и той же решётке «выразительность против разрешимости», просто по разным осям.

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

Читать разбор

Как мы в MWS создали внутренний курс для Java-разработчиков. И что можем посоветовать, если вы тоже хотите

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

Привет, Хабр! На связи команда «МТС Аналитика»: техлид Саша Бобряков и ведущий разработчик Рома Захаров. Со дня на день мы в MWS запустим собственный комплексный курс по Java, который создали в рамках внутренней образовательной платформы МТС Тета. Он предназначен для внутренних разработчиков и поможет вырасти из уровня middle в senior. 

Зачем мы вообще его затеяли? Нам хотелось систематизировать «коллективный опыт» компании, выровнять грейды, чтобы мидл в условной команде X владел теми же навыками, что и мидл в команде Y, а еще — дать коллегам надежную базу, чтобы они росли в своем направлении. Работая над курсом, мы и сами многому научились. Например, выступать перед камерой, беспощадно отсекать избыточное, а еще — находить общий язык с дизайнерами (да, разрабам это не всегда дается легко).

Сейчас мы на финишной прямой, и пока впечатления о процессе работы еще свежи, нам захотелось ими с вами поделиться. Расскажем, в чем вообще польза от таких курсов для компании, как мы строили программу, какие сложности были. И посоветуем, на что стоит обратить внимание, если в вас тоже не умер преподаватель (да и ученик).

Читать далее

Ближайшие события

Хаос, фракталы и голограммы

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

Мои наблюдения окружающего мира навели меня на мысль о том, что имеют место глубокие аналогии в структурах трех вещей: пластинки с записью голограммы изображения, живые многоклеточные организмы и изображения фракталов. Любая часть, раздробленных голографической пластинки, фрактала и живая клетка организма несут в себе содержательную информацию о первичном исходном объекте. Осколок разбитой пластинки с голограммой при прохождении через него лазерного луча восстанавливает полное исходное изображение; отдельная живая клетка, помещенная в соответствующую среду, обеспечивает воссоздание полного организма; выборка даже очень малой части фрактала – самоподобна всему фракталу. Некоторые отличия заключаются в форме представления такой информации.
Здесь, возможно, следует еще упомянуть и структуру Вселенной (мироздания), но это обдумано мной в меньшей степени.
С указанной аналогией я не буду заходить слишком далеко, а остановлюсь лишь на некоторых известных фактах – примерах.

Читать далее

Алгоритмы нужны программистам, или cамая быстрая и простая реализация RMQ

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

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

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

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

Читать далее

Перейти на PostgreSQL и повысить качество системы

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

В интернете есть много статей на тему «как перевести старую систему с Oracle на PostgreSQL». Как мигрировать схему данных, сами данные и логику. Не буду повторять это, просто сравню две СУБД на небольшом вымышленном учебном примере. Я расскажу про то, как организовать процесс написания и проверки кода системы для PostgreSQL, чтобы на выходе получился продукт даже более качественный, чем он мог быть без смены СУБД.

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

Читать далее

Наши первые шаги по миграции в Kubernetes

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

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

Читать далее

Понимание и практические эксперименты с Tablet в StarRocks

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

внутренняя структура, репликации и балансировка, бакетизация и партиционирование, восстановление и MVCC, загрузка данных (Stream Load). Разбираем типичные сценарии и даём рекомендации для Data Engineers и DBAs.

Читать далее

6 лайфхаков при внедрении СУБД: учимся на чужих граблях

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

Привет, Хабр! Меня зовут Кирилл Тарасов, я — инженер данных в K2Tех. Наша команда Big Data & Bi работает с 2006 года, мы активно занимаемся Greenplum, Arenadata Hadoop/Streaming и внедряем собственные наработки, такие как ELT Framework. Также с 2012 года мы создаём аналитические системы и хранилища данных, и за это время моя команда столкнулась с самыми разными ситуациями, которые вызывали различные проблемы для реальной продуктивной эксплуатации СУБД. Некоторые из них были связаны с настройками баз данных, другие — с компонентами защиты, а третьи были настолько необычными, что их причиной оказалось исключительно странное и редкое поведение бизнес-логики, с которым разработчики хранилищ данных почти не сталкиваются. В этой статье вы найдете шесть кейсов, которые могут встретиться на любом проекте. Они помогут избежать попадания «ложки дегтя» в ваше хранилище.  

Читать далее

Файловое хранилище Wildberries: бескомпромиссный HighLoad

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

Привет, меня зовут Иван Волков, я CTO продукта CDN MediaBasket в Wildberries. Это большое распределенное файловое хранилище, используемое различными внутренними продуктами Wildberries. Одним из продуктов, с которым взаимодействуют внешние клиенты, является каталог товаров. Это ставит перед хранилищем высокую планку по оптимизации и готовности к экстремальным нагрузкам. В этой статье я расскажу, какие решения мы использовали в архитектуре продукта и как при миллионном RPS мы доставляем картинки пользователям за считанные миллисекунды.

Читать далее