Обновить
1349.02

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

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

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

Создаёте списки в C#? Ну тогда у вас могут быть проблемы

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

Мы все привыкли писать new List<int> { 1, 2, 3, 4 } или new int[] { 1, 2, 3, 4}, чтобы инициализировать коллекции какими-то значениями. Синтаксически это выглядит похоже, но поведение отличается, и вам следует быть осторожными, если вы заботитесь о производительности.

Читать далее

Книга: «Весь Python. Самое актуальное и исчерпывающее руководство»

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

Привет, Хаброжители!

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

К концу книги вы будете готовы применить полученные знания и создать несколько реальных проектов. Вы научитесь эффективно использовать Python в анализе данных, веб-разработке и автоматизации задач. Книга включает описание новейших возможностей, появившихся в версиях Python 3.9–3.12, в том числе главы об аннотациях типов и консольных приложениях, а также примеры, демонстрирующие современные практики веб-разработки на Python.

Читать далее

Превращаем сайт в мобильное приложение за пару шагов. Часть 1

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

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

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

Читать далее

Почему в Rust всё правильно

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

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

За свой почти 14-летний путь в ИТ я успел профессионально поработать на нескольких языках программирования: PHP, Ruby, JS/TS, также мне доводилось «потрогать» Python, Go, даже Clojure и Haskell. Каждый имеет свои недостатки: у PHP — кривая архитектура, у Ruby — медленная работа, у функциональных языков — недостаток библиотек и обучающих материалов. При разработке на них каждый раз приходится идти на уступки и выбирать между изящным синтаксисом, скоростью работы и написанием «велосипедов» на каждый чих. В Rust всё обстоит совсем иначе и вот почему.

Читать далее

Почему Я выбираю Spring Data JDBC

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

Реляционные базы данных по-прежнему остаются главным хранилищем наших данных. А значит, вопрос выбора инструмента отображения данных из БД на уровне приложения - всё так же актуален.

Долгое время я выбирал: Spring Data JPA. Уверен, что большинства из вас — тоже. Но времена меняются, и в 2025 для своих новых проектов я использую — Spring Data JDBC.

Почему? Если вам стало любопытно — добро пожаловать под кат.

Читать далее

Как Temporal без боли решает привычную проблему распределённой бизнес-логики

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

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

Раньше для такого требовались: стейт‑машина с полудюжиной состояний, очереди и воркеры, обработчики на каждое событие и блокировки от race conditions. Теперь всё это описано в одной функции, которая вообще выглядит как псевдокод. 

Магия? Нет, Temporal. 

С тех пор как мы перенесли процессинг на Temporal, разработка существенно упростилась. Пользователь оплачивает заказ, ресторан его подтверждает и готовит, курьер забирает и привозит — ровно это и отражено в коде. Ну разве не прелесть?

Читать далее

ClickHouse и внешние словари: как это работает и зачем нужно

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

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

В этой статье разберем ее подробнее.

ClickHouse на практике

Эксплуатация уязвимости race condition CVE-2025-29824 в Windows

Уровень сложностиСложный
Время на прочтение29 мин
Охват и читатели7.3K

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

Эксплуатация уязвимости типа use after free в ядре Windows и без того непростая задача, но когда к этому добавляется состояние гонки (race condition), сложность возрастает на порядок. CVE-2025-29824 — наглядное тому подтверждение, однако, как будет продемонстрировано ниже, создание рабочего эксплойта для нее — достижимая цель.

Читать далее

LLM-клиент с MCP – дорогой и неэффективный подход в разработке

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

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

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

Давайте кратко разберем схему работы какого-то нашего приложения с официальным LLM-клиентом (например, OpenAI) + MCP:

Читать далее

Джедайские техники Kotlin: inline-функции и reified-типы

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

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

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

Прокачать Kotlin

Делаю своего ИИ-помощника для экосистемы HalNet

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

Локальный ИИ-ассистент прямо в мессенджере HalChat: без серверов, без рисков, только приватность и RAG.

Читать далее

Не паникуй, ты просто попал в AA+ игрострой

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

Эту статью я написал лет десять назад, когда только попал в большую студию EA SpB. И забыл бы про нее, но недавно проводил ревизию заметок и набросков на старом HDD и решил, что она до сих пор актуальна, разве что цифры выросли. Тогда проекты под миллион LoC казались гигантами, наверное это и сейчас очень много, но теперь это это просто код движка. Но суть не изменилась, просто цифры выросли.

Помню тот день, когда я впервые сел за рабочий стол в офисе, а до этого делал другие проекты и кодовая база размеров 100к строк вместе с либами, движком и логикой казалась - ну очень немаленькой. А тут скачал репозиторий, открыл идеешку, и она минут на пятнадцать подвисла на индексировании файлов. Я смотрел на всё это безобразие и думал: «Это нормально? Мне дали самый отстойный джунский комп? Я что-то сломал уже на онбординге? Мы все умрем?» Нет, всё было нормально, просто я впервые столкнулся с промышленной кодовой базой большого проекта.

Команда в тот момент выкатывала мажор Sims Mobile, который зафейлили почти на месяц и, честно говоря, на нормальный онбординг ресурсов просто не было. ПМ выдал мне простую задачу на разгон, так сказать, чтобы стулья в редакторе дома сохраняли свое положение и размер между запусками, потому что они, как вы наверное догадались - этого не делали и оказывались в дефолтных точках спавна. Звучит элементарно, правда? Сохранил координаты в конфиг, прочитал при старте и таска готова. Вот только я понятия не имел, где искать код этого сохранения конфига, объектов, как называется класс, где лежит конфиг и сами стулья, и есть ли вообще система для таких вещей или надо писать с нуля. Небольшой спойлер, системы не было, все объекты в доме всегда спавнились в тех точках, где их поставил дизайнер, т.е. для редактора дома сейва не было, а для игры был.

Добро пожаловать в семью

Дифференциальная приватность в ML

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

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

Сегодня поговорим в коротком формате о защите данных при обучении моделей, а именно в процессе обучения. Никому не понравится, если ваша нейросеть вдруг выдаст чужие паспортные данные или медицинские записи, правда? А ведь модели машинного обучения иногда склонны запоминать кусочки обучающего набора. Бывали случчаи, где из языковой модели вытаскивали строки с номерами телефонов и email тех людей, чьи данные были в тренировочном датасете.

Стоит ли нам вообще кормить модель конфиденциальной информацией, если она потом болтает лишнее? К счастью, есть крутая техника — дифференциальная приватность. Она позволяет обучать ML-модели на реальных данных, но с гарантией, что никакой отдельный пользователь не будет опознан моделью.

Разобраться в DP

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

Дроби, проценты, степени, логарифмы + python

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

Дроби, проценты, степени и логарифмы на примерах в математике и в python. Что это такое, все их свойства, особенности и как решать примеры.

В моем конспекте объясняется фундамент, который понадобится в дальнейшем: Самое начало для изучения python, математики в целом и машинного обучения, если математику совсем не знал. Все написано простым языком и не на 100 страниц.

Читать далее

Что было бы, если BASIC развивался вместо C и Python

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

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

Читать

Последний романтик

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

Привет народ!

Вот и настала моя очередь исповедоваться перед тобой.

У меня есть, не самая оригинальная, гипотеза о том, что большинство из множества статей жанра "Исповедь Разработчика" - это попытка авторов добавить веса своему персональному бренду, в специфических условиях, сложившихся на рынке труда, когда люди с опытом и, казалось бы, правильным майндсетом, вынуждены стоять в одной очереди с теми, кто вкатился в АйТи только ради денег и удаленки.

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

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

Что там у тебя...

Как подружить Bitrix24 с CI/CD

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

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

Сегодня рассмотрим, как подружить, казалось бы, несовместимое: динамичный мир CI/CD с его автоматизацией и бешеной скоростью и консервативный, бизнес-ориентированный Bitrix24.

Читать далее

Я хотел бы знать это раньше. Очереди в Symfony

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

Привет! Меня зовут Никита Титков, я бэкенд-разработчик в Банки.ру. 

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

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

Давайте разбираться!

Читать далее

ORM это Вьетнамcкая Война Компьютерных Наук

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

Данная публикация является переводом статьи Jeff-a Atwood-а почти 20-ти летней давности. Jeff Atwood, один из фаундеров StackOverFlow, написал эту статью как некоторое резюме того, как человечество боролось с проблемой O/R Impedance Mismatch.

Я частично принимаю участие в написании разных ORM решений, например, Spring Data JDBC / R2DBC, и скоро мы вместе с Amplicode проведем online событие (оно бесплатное) по Spring Data JDBC. Будем обсуждать Spring Data JDBC, что в ней хорошо а что в ней плохо. Какие trade-off-ы она имеет.

Я решил выпустить данный перевод с целью того, чтобы напомнить людям - silver bullet-а Spring Data JDBC не придумала. Она лишь заняла конкретную позицию по ряду вопросов, из чего следуют определённые ограничения и преимущества. Их мы и обсудим.

Читать далее

Развернем n8n и postgres под проекты на серваке, подключим свой домен и настроим бекапы в s3

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

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

Погнали

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