Все потоки
Поиск
Написать публикацию
Обновить
989.66

Программирование *

Искусство создания компьютерных программ

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

MVP vs MLP: почему минимально жизнеспособного продукта уже недостаточно в 2025 году

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

Вмире стартапов назревает сдвиг: классический подход Minimum Viable Product (MVP) больше не гарантирует успеха. Если раньше пользователи были готовы мириться с сырыми прототипами, которые «просто работали», то в 2025 году планка качества поднялась так высоко, что одной лишь функциональности уже недостаточно. Современные пользователи ожидают продуманный и приятный UX с первого касания — продукт должен не только работать, но и вызывать восторг. Здесь на сцену выходит концепция Minimum Lovable Product (MLP): стратегия запуска, ориентированная на создание любимого продукта с первого дня. Разберёмся, почему MVP теряет актуальность, чем отличается MLP и как компаниям адаптироваться, чтобы завоёвывать сердца пользователей в 2025 году.

Читать далее

Вычисляем коэффициент популярности крейтов Rust для работы и для хобби-проектов

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

Твит, который подтолкнул меня к реализации описанного в статье мини-проекта.

Взявшись за эту задачу, я около двух часов ваял небольшой скрипт, который будет скрейпить данные из базы крейтов Rust crates.io и анализировать их для выяснения, какие пакеты чаще скачиваются для работы (то есть в будние дни), а какие для развлечения (то есть в выходные).

Читать далее

ORM на три звена. В 120 раз быстрее SQL?

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

Нет, речь не про кэш в памяти. Так было бы слишком просто. У нас сегодня будет препарирован ORM, который честно запрашивает данные у реляционной СУБД, маппит в объекты, подключает связи и отдаёт в логику приложения в виде объектов. И всё на порядки быстрее, чем прямой запрос из кода приложения.

Да, здесь есть нюанс. Об этом нюансе, а также о том, зачем я написал в пятый раз кастомный ORM и будет эта статья. Эта разработка тесно переплетена с моей личной историей, когда я переходил с одной работы на другую, а затем был уволен. Я не хочу оставлять сухой технический текст, поэтому эта статья будет скорее рассказом моей работе в этой компании.

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

Читать далее

В айти не войти или о бедном стажёре замолвите слово…

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

Когда-то всё было проще. В достопамятные двухтысячные годы джунов и в самом деле нанимали. Не спрашивали о «релевантном опыте», не требовали ссылки на боевые проекты и не строили сложных лабиринтов из HR-интервью, технических сессий, тестовых заданий и многоступенчатых собеседований. Но прошло 15–20 лет — и всё изменилось до неузнаваемости. Новички (стажёры и джуны) теперь бесправны и даже подозрительны.

Читать далее

Плохие JOIN’ы: приемы, которые (нечаянно) кладут прод

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

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

В этой статье разбираем один из самых коварных способов убить базу — плохие JOIN'ы. Казалось бы, простое дело: связать пару таблиц — и вперёд. Но если в ON засунуть LOWER(email), забыть про индексы или перепутать LEFT JOIN с INNER — сервер мигом начнет дышать на ладан.

Читать далее

Самый быстрый способ нахождения гласной в строке

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

Недавно меня заинтересовала такая задача: как лучше всего определить, что в строке есть гласная?

Казалось бы, тривиальный вопрос, правда?

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

В этом посте я рассмотрю 11 способов обнаружения гласных, алгоритмический анализ, дизассемблирование байт-кода Python, реализацию CPython и даже исследую опкоды скомпилированного регулярного выражения. Поехали!

Читать далее

Математика бэкдора в Dual EC DRBG

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

Dual EC DRBG - нашумевшая схема генератора псевдослучайных чисел, который был стандартизован, несмотря на потенциальный бэкдор. Математическая часть данного бэкдора интересна и сама по себе, но особенно - как важная веха в истории современной криптографии. Статья посвящена математической части бэкдора и в деталях объясняет то, почему он работает. Для понимания потребуется хотя бы минимальное знакомство с основными понятиями алгебры и криптографии.

Читать далее

Как Cursor устроен изнутри. Часть 1

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

Вторая часть статьи здесь

Всего за год нагрузка на Cursor выросла в 100 раз: более 1 млн запросов в секунду и миллиарды автодополнений кода каждый день. Подробный разбор архитектуры — вместе с сооснователем Суалехом Асифом.

Cursor — это IDE с кодогенерацией на AI-агентах, которая сейчас пользуется наибольшей популярностью среди разработчиков. В прошлогоднем опросе, Cursor был самым частым ответом на вопрос «Назовите вашу любимую IDE с генеративными функциями, помогающими в работе».

Стартап, стоящий за Cursor — Anysphere, был основан в 2022 году, а в марте 2023 года запустил Cursor. Недавно Anysphere сообщила, что привлекла $900 млн, при оценке компании в $9.9B. Годовой доход (автор имеет в виду годовой повторяющийся доход, Annual Recurring Revenue, ARR. Прим. пер.) уже превысил $500M. Ни одна другая компания в сфере инструментов для разработчиков, которую я знаю, не достигала этого рубежа в течение первых 2 лет после запуска первого продукта. Поспособствовало этому и то, что Cursor используется более чем половиной из 500 крупнейших технологических компаний из списка Fortune 500.

Я встретился с сооснователем Cursor, Суалехом Асифом, чтобы узнать, как работает Cursor и как команда этот инструмент создает. Обсудили следующие темы:

Технологический стек. TypeScript, Rust и куча облачных провайдеров — Turbopuffer, Datadog, PagerDuty и другие.

Как работает автодополнение. Устройство low-latency движка для передачи зашифрованного контекста на сервер для инференса.

Читать далее

Зажигаем миллиард цветов миллионом строк

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

Надругательство над C#, C++ и HLSL, игрища с булками и буферами, тройная полиглотность, SIMD, пепекторы, DirectX, экономия 800 Тб ОЗУ, новая парадигма программирования, многопроцессностьбыстрая степень и многое другое.

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

Осторожно, трафик!

Найм в IT всё-таки мёртв

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

Или почему найти работу в 2025 году стало практически невозможно.

Раньше мне казалось, что найти работу — это вопрос желания. Ну правда: обнови резюме, откликнись X раз, получи пару приглашений на собеседования, пройди их — и вот, оффер. Вся проблема решалась увеличением воронки: больше откликов — больше офферов.

Но сейчас всё по-другому

Читать далее

Очередной эмулятор Nes. Продолжаем

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

Всем привет! С вами на связи снова Сергей, и я продолжаю творить «чудо».

В прошлой статье я немного задел тему эмуляции процессора. Советую почитать, кто не читал (ну, опять же, на ваше усмотрение — если решили сделать эмулятор сами, то лучше прочитать). Кстати, я обновил ту статью и немного пробежался по прерываниям. В этой статье, видимо, будет ещё больше технической информации — по правильной реализации памяти и работе с ней. И, наконец, доберёмся до видеоадаптера (PPU).
Читать дальше →

КАША в голове, КАША в коде — первые шаги к порядку

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

7 советов для начинающих программистов

Заметил? Многие, кто только начал изучать программирование, сразу ныряют в сложные штуки и пытаются прыгнуть выше головы.

Я через это проходил.

И чтобы не сгореть на старте, не чувствовать себя потерянным и не бросить все на середине, я собрал 7 советов, которые действительно помогают.

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

Читать далее

Почему Exceptions в Java не взлетели — и что с этим делать в 2025 году

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

Всем привет!

Меня зовут Илья, я работаю в Райффайзен Банке. Мы пишем свои бэкенд-сервисы на Java и Kotlin, поэтому зачастую приходится переключаться с одного языка на другой. Из-за этого невольно начинаешь сравнивать подходы и механизмы одного языка с его JVM-собратом. Сегодня я бы хотел поговорить об одном из таких механизмов — пропагации ошибок и исключений.

Используете ли вы в своем коде исключения? Ответ кажется странным, так как исключения являются неотъемлемой частью Java. Но что, если я спрошу, используете ли вы исключения для управления логикой своей программы?

Читать далее

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

Делаем сразу множество игр, или Как создать эмулятор

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

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

Если вы не хотите его проходить, то:

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

Но если это не ваш путь, то милости просим в статью.
Читать дальше →

Не стоит пугаться машинного кода

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

Моим первым языком программирования был ActionScript. Написание кода для Macromedia Flash максимально далеко от голого железа, и эта специфика работы глубоко засела в моём сознании. В результате меня интересовали преимущественно высокоуровневые языки для веб-программирования. Низкоуровневые же казались непостижимыми. Со временем я постепенно из разных источников узнавал о них всё больше, но это моё убеждение оставалось прежним. Низкоуровневые языки пугают, и машинный код подтверждал это наглядно. Когда я обращался к Google с запросом «понятный машинный код», то результат выдачи чаще представлял нечто пугающее и отталкивающее, нежели полезное для обучения.

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

Машинный код вовсе не страшен. Если вы можете обеспечить, чтобы документ JSON соответствовал схеме JSON, то без проблем сможете писать машинный код.

Читать далее

SOSAL: От теории к практике

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

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

Читать далее

Метапрограммирование 2.0: макросы и генерация кода в современном мире

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

Забудьте про скучные «Hello, World». Макросы и шаблоны давно стали полноценными инструментами архитектора кода: от хитрых C++-шаблонов до процедурных макросов Rust и Java-аннотаций, автоматически генерирующих целые фреймворки. 

В этой статье мы рассмотрим примеры, где metaprogramming избавляет от рутины и экономит часы работы над проектом. Детали как всегда под катом.
Читать дальше →

Гайд по совмещению 5 работ: инструкция по самоуничтожению

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

Недавно наткнулся на гайд по двум работам в IT. Я сразу же подумал, а почему только 2 работы? Это же какое-то раздолбайство. Где гайд по 3–4–5 работам? Совсем не хотят работать блогеры. Поэтому я решил написать свой гайд на Хабр.

Читать далее

Меховой Интернет: как появляются ваши любимые книжные обложки

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

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

В предпоследние выходные мая мне традиционно довелось работать на книжном салоне, проходившем в Санкт-Петербурге на Дворцовой площади. Как многие знают, я представляю компьютерную редакцию издательства «БХВ», но внимательные читатели, которые любят рассматривать служебные страницы в хороших книгах, до сих пор могут найти мою фамилию и в нетленке издательства «Питер», в котором я провёл сложный, но незабываемый и формообразующий отрезок жизни.  Мне нравится работать на стендах, так как я вижу моего читателя, а также не без удовольствия наблюдаю за вашими муками выбора, в особенности – выбором книг в подарок. Что касается последней моей вахты, состоявшейся в полуштормовую погоду по ту сторону тента, очень порадовало, что на наш стенд заглянула уважаемая Юлия Воротникова, имя которой очень громко звучит для заядлых участников интеллектуальных игр. И она, и некоторые другие посетители, и в особенности две-три (не помню) милейшие девушки в субботу залюбовались нашим стендом, уставленным книгами, оригиналы которых вышли в издательстве «O’Reilly». Мне не раз пришлось объяснять, каким образом возникла столь необычная идея — иллюстрировать обложки компьютерных книг роскошными изображениями животных. Поэтому я решил вновь пересказать на Хабре эту историю, которую более 12 лет назад уже затрагивал уважаемый @miga. В статье будет много картинок, которые для меня все до единой укладываются во фразу, прочитанную на странице крайне харизматичного человека – уважаемого Виктора Жукова, lead-гитариста выдающейся симфо-метал группы Nimea из Санкт-Петербурга: «... и когда говорят — плагиат, я говорю — традиция!»

Читать далее

Как мы автоматизировали и ускорили выкатки релизов API Почты Mail в 20 раз

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

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

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

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

Читать далее

Вклад авторов