Обновить
1063.43

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

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

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

OpenCode vs Droid: тест на реальных проектах

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

OpenCode классно задуман, но сейчас страдает от нестабильности и плохой работой с моделями/контекстом. Droid от Factory заметно стабильнее в типичных задачах и аккуратнее работает с контекстом. Но и у него есть «детские болезни» на отдельных конфигурациях CPU/Windows.

Разбираю в деталях в чем суть. Делюсь личным опытом двух месячного использования.

Читать далее

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

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

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

Читать далее

Как сделать идемпотентные API в Go: Idempotency-Key, дедуп в Redis/БД и защита от гонок

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

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

Представьте: клиент отправил важный POST-запрос (например, создание заказа или списание денег), но из-за сетевого сбоя не получил ответ. Не зная, что на сервере операция уже выполнилась, клиент пробует повторить запрос. Если бэкенд не подготовлен к таким дублям, итог может быть печальным: мы создадим две одинаковые записи вместо одной или, хуже того, спишем деньги с пользователя два раза. Как этого избежать? Правильный ответ — реализовать идемпотентность в API.

Смотреть реализацию

Я решал LeetCode 600 дней подряд и что из этого вышло

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

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

Эта статья — впечатления о моём 600-дневном марафоне на этой платформе, динамике моих скилов и ответе на главный вопрос «надо ли решать там задачи?».

Все было спокойно, пока мы с другом не заключили спор — сможем ли мы решить 100 задач до конца 2023 года? А это было 50 задач всего за 1 месяц — декабрь.

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

Челлендж в 100 задач оказался достаточно легким — Новый год мы встречали уже с круглым числом выполненных задач в профиле. Так быстро мы решили не останавливаться — Покоренная вершина стимулировала покорить новую — 200 задач к началу лета (за 5 месяцев).

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

24 февраля 2024 в течении недели Leetocde предлагал неплохие и не очень сложные задачи на дейли челлендже, и у меня случайно получился стрик в районе 10 дней подряд.

Сбивать стрик было как‑то жалко — это же целых 10 дней. Так и началась долгая история в 600 дней...

Читать далее

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

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

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

Вот, казалось бы, что может быть проще: создать базу треков и исполнителей. Пишем имя артиста/группы, название альбома, список треков и даем возможность по ним искать. Но потом натыкаемся на исполнителя Prince, который изменил своё имя на знак, который не существует и начинаем печалиться, потому что непонятно, как его искать после переименования. Фанаты вроде как нашли выход и предложили использовать 4 спец.символа юникода Ƭ̵̬̊, что тоже похоже на костыль, а задавать старое имя как псевдоним, вроде как концептуально неправильно. Ну или попадаются металлюги Brouillard, у которых каждый альбом называется так же - Brouillard. А каждый трек внутри альбома имеет такое же название.

Но это еще цветочки, потому дальше тесты целостности библиотеки начинают падать, так как в ней попадаются треки длиной либо одну секунду, либо 639 часов. Ну или встречаются треки с нулевым номером, потому что это так называе "секретные" композиции, которые можно было найти включением первого трека и переключением плеера назад. Как вы понимаете, сегодня мы поговорим о музыкальных edge-случаях. Заходите, будет интересно.

Читать далее

ChatGPT: как пользоваться нейросетью в России

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

OpenAI официально ограничила доступ для российских пользователей, но это не значит, что дорога к передовым технологиям искусственного интеллекта для нас закрыта. Напротив, сегодня получить доступ к ChatGPT 5 стало даже проще, чем когда-либо — без необходимости искать стабильный VPN или заводить зарубежные карты.

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

Читать далее

Как влияет ИИ на производительность опытных разработчиков: исследование

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

ИИ давно обещает ускорить работу разработчиков — но что, если в реальных условиях он делает обратное? Команда исследователей провела рандомизированное контролируемое испытание с опытными контрибьюторами крупных open source проектов, чтобы понять, как современные инструменты вроде Cursor и Claude влияют на скорость и качество разработки. Результат оказался неожиданным: при работе с ИИ программисты тратили больше времени, хотя были уверены, что работают быстрее. Разбираемся, почему эффект ускорения может быть иллюзией, и какие факторы превращают помощника в тормоз.

Результаты исследования

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

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

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

Решение — включить продуктовое мышление: задавать неудобные вопросы и не бояться менять ТЗ. В этой статье пример Mindbox, где разработчики проявляют продуктовое мышление, — посмотрим, как и зачем это делать. 

Читать далее

JEP 401: Value классы и объекты

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

Команда проекта Valhalla выпустила early-access сборку JDK с полной реализацией JEP 401 — value-классы и объекты теперь можно попробовать в действии! В новом переводе от команды Spring АйО — примеры использования, объяснение концепции, сравнение производительности с обычными объектами и практические советы для разработчиков.

Читать далее

Книга: «Потоковые базы данных»

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

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

Читать далее

Сравнение Rust и Carbon

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

Тема безопасного и эргономичного взаимодействия между Rust и C/C++ была популярна на конференции RustConf 2025, состоявшейся в Сиэтле, штат Вашингтон. Чендлер Каррут выступил с презентацией, в которой представил различные способы взаимодействия между Rust и Carbon — экспериментальным языком, который можно условно обозначить как «(C++)++». Он резюмировал, что, пусть возможности стыковки Rust с другими языками со временем расширяются, в обозримом будущем не стоит ожидать, что будет полноценно решена проблема его взаимодействия с C++. Поэтому как раз появляется ниша для Carbon, который может предложить иной подход для постепенного совершенствования существующих проектов на C++. Вот слайды к его презентации — для тех, кто хотел бы изучить код его примеров более подробно.

Читать далее

Я вернулся в 2000-й и поймал ILOVEYOU

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

Хочу перенестись в нулевые, чтобы рассказать и показать, как работал ILOVEYOU. Для этого запускаю машину времени и рассказываю:

Что бы случилось с моим компом в нулевые.
Как вирус взломал 45 миллионов компьютеров?
Почему Windows 2000 оказалась особенно уязвимой?
Как автор избежал наказания?

Читать и отправиться в 2000-й

Как и зачем мы делали свое браузерное расширение для мокирования API

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

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

Что тут можно поделать? Можно подождать, пока починят стенд. Можно залезть в код и что-нибудь там нахардкодить, переполнив его ненужной логикой моков. Можно поставить Postman, Insomnia или другие популярные решения. Но у каждого подхода есть подводные камни: простои и сорванные дедлайны, забытые хардкоды в продакшене, необходимость согласований с инфобезом (особенно если вы работаете в банке) и зависимость от внешних серверов.

Мы попробовали существующие решения и поняли: ни одно из них не закрывает наши потребности полностью. Нужно было что-то свое: простое в установке, работающее офлайн, не требующее дополнительных приложений и аккаунтов. Что-то, что можно быстро настроить под себя и не зависеть от внешних решений вендора. Так появился наш велосипед — браузерное расширение Req-Saver. 

Да, представимся. Мы — Александр Битько и Дмитрий Панфилов, фронтенд-разработчики в ПСБ. Сегодня расскажем, как превратили мокирование запросов из головной боли в простую и понятную работу.

Читать далее

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

Создаём MCP‑сервер на практике

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

MCP без воды и шаблонного кода на практике: разбираем протокол, поднимаем сервер, тестируем через Inspector и учим LLM торговать через Finam API. Разберёмся, когда MCP выгоднее «обычных функций», как изолировать интеграции и упростить отладку инструментов.

Читать далее

Rust и приведение типов

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

Присматриваемся к Расту, как возможному кандидату на реализацию задачи Card DOM. Рассматриваем, как он поддерживает полиморфные структуры данных, в частности, приведение типов между трейтами.

Читать далее

Яндекс обновляет процесс найма разработчиков. Рассказываю, почему мы пошли на такой шаг

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

Всем привет! Меня зовут Олег Смоляков, в Яндексе я больше 15 лет занимался разработкой, а теперь отвечаю за улучшение процесса найма разработчиков.

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

TLDR: мы решили обновить процесс найма, вместо порой хаотичных собеседований в каждом отдельном сервисе внедряем единую систему оценки по профессии и уровню (например, «Senior C++ Developer»), кандидат, успешно прошедший оценку навыков, теперь сможет претендовать на аналогичные вакансии в любом из 90+ сервисов компании, а всё это вместе делает процесс найма прозрачным, понятным, без дублирования технических интервью и в целом эффективным для всех участников.

А теперь подробнее о том, почему мы на это пошли и как всё устроено.

Читать далее

Был FSD — стал MSD: как мы допилили методологию FSD, чтобы поудобнее делить монолит на модули

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

Что важно фронтенд-разработчику при создании веб-приложений? Поддержка текущей кодовой базы, удобство внедрения новых фич и возможность повторно использовать компоненты. Создать такие условия помогает популярный подход к проектированию — FSD (Feature Sliced Design). Разбиваем интерфейс на независимые, переиспользуемые модули (виджеты, фичи и т. д.), получаем чёткие правила, единую структуру проекта и ускорение разработки за счёт переиспользования кода и изоляции ответственности.

Подход FSD во многом прекрасен, но всё же нам в нём не хватало некоторых важных аспектов: внятного разделения слоёв бизнес-логики, удобства работы с кастомными хуками (они быстро разрастаются, обрастают связями и становятся сложными для тестирования). Также было неясно, куда выносить сложные общие компоненты из разных частей проекта. И, например, как легко отделять один бизнес-модуль от другого, не ломая всю систему…

Меня зовут Иван Соснович, я тимлид фронтенд-разработки в СберТехе, тружусь в команде Platform V Kintsugi — это графический инструмент для сопровождения, мониторинга и диагностики Postgres-like СУБД. В этой статье я покажу, как мы доработали FSD под себя, и дам ссылку на пример со структурой приложения. Надеюсь, будет полезно фронтенд-разработчикам.

Читать далее

AssemblyLoadContext как архитектурный приём

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

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

Сегодня рассмотрим, как в .NET можно горячо подгружать, обновлять и выгружать сборки на лету. Речь пойдёт о AssemblyLoadContext, специальном механизме, благодаря которому мы можем создавать плагинные системы, изолировать зависимости и освобождать память, выгружая неиспользуемые сборки.

Осваиваем ALC

Как я построил AI-радио без команды и инвестиций: архитектура изнутри

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

Когда я только начинал Tunio, я хотел просто познакомиться с Kubernetes. В итоге получилось построить полноценную платформу для радио с AI-музыкой, новостями, прогнозами погоды, подкастами, гео-кластеризацией и TTS-ведущими - без команды, инвестиций и грантов. Эта статья - о том, как из pet-проекта вырос продакшн-сервис с реальными клиентами, и какие технические фэйлы и открытия случились по дороге.

Читать далее

View Transitions API

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

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

Читать далее

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