Обновить
1058.09

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

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

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

Ты решаешь LeetCode неправильно. Как пройти любое собеседование в BigTech?

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

Привет! Я ex. Разработчик из VK, сейчас принял оффер от Ozon'a, и за последний месяц я прошел собеседования в 4х бигтех компаниях: Ozon, Avito, Wildberries и T-Bank и везде дошел до финалов/офферов. Пообщавшись во многих группах, посвященных Go-разработке, я понял, что много умных ребят готовясь к собесам не имеют четкой системы подготовки, и из-за этого заваливают технические собесы в компании. Не претендуя на истину в последней инстанции, предлагаю свою методику подготовки к собесам, которая помогла мне и моим знакомым подготовиться к техническим собесам во все популярные ру-бигтехи.

Читать далее

Распределённые транзакции в микросервисах: от SAGA до Two‑Phase Commit

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

Переход от монолита к микросервисной архитектуре приносит гибкость и масштабируемость, но и создает новые сложности. Одна из ключевых проблем –согласованность данных и транзакции. В монолите обычно можно обернуть несколько операций одной ACID-транзакцией: либо все операции выполняются успешно, либо при ошибке происходит полный откат. В мире микросервисов такой прямолинейный подход не работает. Каждый сервис автономен, у каждого своя база данных, и общаются они через сеть. Как результат, гарантировать атомарность и целостность процессов, охватывающих несколько сервисов, непросто. Возникает риск частичных обновлений: одна часть системы изменилась, а другая – нет, что приводит к неконсистентным (несогласованным) состояниям данных.

Чтобы решить эту проблему, разработаны специальные паттерны и протоколы управления распределёнными транзакциями. В этой статье детально рассмотрим ограничения классических ACID-транзакций в распределённой архитектуре, а также два подхода к распределённым транзакциям – сага (SAGA) и двухфазный коммит (2PC). Разберём мотивацию, принципы работы, преимущества и недостатки каждого, сравним их по критериям. Кроме того, обсудим альтернативные подходы, такие как TCC (Try-Confirm-Cancel), паттерн Outbox, а также кратко упомянем eventual consistency, транзакционные сообщения, инструменты вроде Atomikos и др. В завершение – практические рекомендации, как выбрать подходящий способ обеспечения согласованности в ваших микросервисах.

Читать далее

Реализация базового метода Стёрмера-Верле

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

Используем силу уравнений Ньютона и численных методов для моделирования динамики простых плоских мешей в реальном времени! В конце вы сможете моделировать падение ножниц ✂️ как на анимации

Читать далее

Такого «Посетителя» вы ещё не видели — Visitor.NET

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


«Посетитель» (visitor) — один из самых сложных паттернов Банды Четырёх.

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

В рамках статьи вы погрузитесь в проблематику мультиметодов и увидите новую реализацию паттерна, лишённую озвученных недостатков и открывающую возможность к написанию по-настоящему гибкого и типобезопасного кода!
Читать дальше →

Как специально написать чрезвычайно медленный код

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

Раз в несколько лет я устраиваю в нашей исследовательской группе челлендж «Напиши медленный код». Цель – написать код с минимально работоспособным количеством инструкций на цикл (IPC) с условием, чтобы этот код выполнялся на заранее подобранном сервере с архитектурой x86.

На первый взгляд, это абсурд В сущности, так и есть. Однако есть в этой безумной задаче и некоторая методическая ценность. Инженеры, проектирующие процессоры, прилагают все усилия ради достижения наивысшего возможного IPC… даже для очень неэффективного кода. Так и задумано, что писать код с очень высоким показателем IPC непросто. Следовательно, челлендж «Напиши медленный код» оказывается заковыристым упражнением, вынуждающим задумываться, как именно работает процессор, и как применить себе на пользу его острые углы.

Читать далее

14 интересных фич Python (возможно, не совсем pythonic)

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

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

Если загуглить лучшие 10 продвинутых хитростей Python, то вы найдёте кучу постов или статей на LinkedIn с обзором тривиальных (но всё же полезных) вещей типа генераторов или кортежей.

Я пишу на Python уже двенадцать лет, и за это время нашёл кучу очень интересных, недооценённых, уникальных или (как может кто-то сказать) «не-pythonic» хитростей, позволяющих по-настоящему расширить границы возможного для Python.

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

Халява приходит в программирование

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

Недавно прогремел пост Артура Думчева (@arturdumchev), как халява якобы уходит из программирования. Можете ознакомиться с ним, чтиво достойное. Особенно комментарии.

У меня сегодня день рождения: 39 лет. С 2003 года я работаю разработчиком, и сейчас делаю кое-что для ИИ. Интуиция подсказывает, что халява только начинается, мои чюваки. Сейчас — лучшее время быть разработчиком.

Давайте начнем с точно того же определения, как было у Артёма: «для меня халява — это гарантированный результат за вложенные усилия. Логика повествования требует такого определения, дальше всё будет ясно».

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

Читать далее!

Релиз диалекта YDB для SQLAlchemy: как мы сделали интеграцию с Apache Superset

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

Меня зовут Олег, и в Яндексе мы с командой занимаемся Python-обвязкой вокруг нашей базы данных YDB. Python знаменит «батарейками в комплекте», широким ассортиментом библиотек на все случаи жизни, включая богатую экосистему для работы с базами данных. Есть свой интерфейс DBAPI (PEP-249), несколько конкурирующих ORM и многочисленные уровни абстракции между софтом и базами. В этой статье — о том, как мы делали полноценную интеграцию нашей базы данных с Apache Superset: чтобы достаточно было выбрать YDB из выпадающего меню и начать визуализировать аналитические данные.

Читать далее

Самоучка против инженера: кто лучше

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

В IT-сообществе не утихают споры о ценности формального образования. Одни считают, что только фундаментальное образование формирует инженерное мышление. Другие уверены, что самоучки не уступают выпускникам вузов благодаря свободному доступу к фреймворкам и онлайн-ресурсам. Мы в Artezio провели круглый стол с экспертами отрасли и собрали аргументы с обеих сторон и разобрались, кого ищут работодатели в эпоху, когда код пишут LLM.

Читать далее

Готовимся к встрече с Python 3.14: разбор суперсил

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

Всем привет! С вами Леша Жиряков, техлид backend-команды витрины онлайн-кинотеатра KION. Сегодня будет обзор Python 3.14 — в общем и целом он построен на официальной документации, которая ежедневно обновляется в преддверии финального релиза. Так что «улыбаемся и читаем» (привет, «Мадагаскару»), но сильно не напрягаемся.

Когда уже релиз? Скоро, коллеги, скоро. Финальная версия должна появиться на свет 7 октября. Багфиксы будут выходить примерно каждые два месяца в течение двух лет, а обновления безопасности — вплоть до 2030 года. Пока можно насладиться новыми фичами 7-ой альфа-версии. Точнее, последней альфа-версией — дальше нас ждет бета. Ну, погнали!

Читать далее

Через тернии к 5 тысячам звёзд на гитхабе – мой путь опенсорсера

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

Пришло, пришло время (экспертов по опенсорсу) моей истории опенсорс-проекта. Было столько всего, что до технических деталей (почти) не дойдёт – они есть и в более древних свитках статьях.

Началось всё в 2010 году. Я только закончил аспирантуру и попал в новый для меня проект в Интеле фулл-тайм разработчиком. Мне нужно было внедрить автоматическое тестирование десктопных GUI приложений для внутреннего пользования. Опыт подобный уже был накоплен с середины 2006-го тоже в Интеле, но подходящий инструмент надо было еще найти или даже создать. Получилось что-то среднее: найти и воскресить!

Читать далее

Халява уходит из программирования

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

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

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

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

Читать далее

Просто пиши код

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

По мотивам статьи: Не пиши простой код и старого манифеста

Эта статья о других, о тех кто случайно просто пишет код, или кому случайно пришлось писать код раньше. Или о тех, кто случайно код не пишет, но очень хочет.

Просто пиши код, пока остальные на митинге спорят, в какую борду переместить эту таску. Потому что ни одна Jira не напишет багфикс.

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

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

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

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

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

Простопиши код, потому что когда ты пытался разделить архитектуру на слои и модули, тебе отвечали: «Это всё теоретизация, у нас бизнес и фичи». А теперь этот бизнес держится на толпе джунов и пачке jsonов.

Просто пиши код, потому что Хабр завален «Как я продаю на маркетах когтеточки» и «Как я уволился ради душевного баланса», а вот статью про memory fences или perf counters — хрен найдёшь.

Пиши код, #$%^&!

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

Markdown презентации по-новому: контроллер Nintendo, интерактивный блокнот и немного магии

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

Как превратить скучные слайды в интерактивную демонстрацию, где код можно запускать прямо на месте? В этой статье попробуем перенести презентацию в браузер, а затем — в «блокнот». Интерактивные среды, такие как Jupyter Notebook, Observable, Mathematica, WLJS Notebook, позволяют создавать живые презентации, лекции и наглядные материалы для коллег или студентов. Они незаменимы и для визуализации моделей, симуляций и любых данных.

Под катом — примеры, пошаговый разбор и демо вживую.

Читать далее

Senders/Receivers в C++26: от теории к практике

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

Каждому C++-разработчику приходится решать задачи асинхронности — от сетевых запросов до фоновых вычислений. В этой статье вы увидите, как P2300-модель Senders/Receivers в C++26 расширяет возможности std::async/std::future и позволяет строить ясные, декларативные конвейеры (then, when_all, upon_error и др.).

Читать далее

Как 20-летний баг GTA San Andreas всплыл в Windows 11 24H2

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

Я занимаюсь разработкой SilentPatch, исправляющего ошибки старых игр серии GTA и других игр. В issue tracker проекта на GitHub я получил недавно очень специфичный отчёт о баге:

Самолёта Skimmer нет в Windows 11 24H2

Когда я обновил Windows до версии 24H2, самолёт Skimmer полностью пропал из игры. Его невозможно создать с помощью трейнера или найти на обычных точках спауна. Я играю и в версию с модами (которая до обновления Windows была абсолютно нормальной), и в «ванильную» с единственным установленным silentpatch (я пробовал версии silentpatch за 2018 год, 2020 год и самую новую). Самолёт всё равно не спаунится в игре.

Если бы я услышал о подобном впервые, то посчитал бы сомнительным и заподозрил, что дело может быть в чём-то другом, а не конкретно в Windows 11 24H2. Однако на GTAForums я получал комментарии точно о такой же проблеме с ноября прошлого года. Некоторые из пользователей винили в ней SilentPatch, однако другие говорили, что то же самое происходит и в игре без модов:

Очевидно, Skimmer не может заспауниться при игре в Windows 11 24h2; надеюсь, этот баг устранят.

Дополнение: кажется, я подтвердил это — создал виртуальную машину с Windows 11 23h2, и этот чёртов самолёт замечательно спаунится; апдейт той же виртуальной машины до 24h2 ломает Skimmer. Остаётся только догадываться, почему небольшое обновление операционной системы в 2024 году ломает какой-то левый самолёт в игре 2005 года.

После нового обновления Silent patch из игры пропадает Skimmer, а когда я пытаюсь создать его с помощью RZL-Trainer или Cheat Menu пользователя Grinch, игра зависает и приходится закрывать её через Диспетчер задач.

[…] Я был вынужден обновиться до 24H2, и после апдейта у меня возникла та же проблема со Skimmer в GTA SA, что и у остальных. Это значит, что проблему вызывают не моды или что-то другое: она возникла после свежего обновления Windows.

Читать далее

Разыскивается живым или мёртвым: легендарная история Себастьяна Рамиреса

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

Себастьян Рамирес. Легенда мира Python-разработки, человек с моржовыми усами, единоличный создатель фреймворка FastAPI и герцог open-source разработки. Он работал на ферме, отчислился из католической школы, заболел раком, женился, изучил Data Science, стал Backend-разработчиком, выступал на конференциях, откликнулся на вакансию, где использовался разработанный им фреймворк, вел твиттер... И где-то между этими важными делами успел стать одним из самых интересных Open Source-разработчиков во всём мире, а также человеком, который на bus-факторе может прокатить половину Интернета (извините). Да, да, речь про того самого Tiangolo. И если вы знали его только как разработчика FastAPI, то сейчас точно удивитесь.

Меня зовут Макс, я TeamLead Backend в компании ИдаПроджект, автор YouTube-канала PyLounge. Не буду затягивать со вступлением, поехали!

Читать далее

Релиз lsFusion 6.0 — открытой и бесплатной альтернативы платформе 1С

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

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

Шестая версия lsFusion делает значительный шаг вперед, окончательно превращая платформу из инструмента для разработки бизнес-приложений в мощную платформу для создания веб-приложений. Основной акцент сделан на улучшение Web UX, что критически важно для современных приложений. Среди ключевых нововведений — интеграция с Bootstrap, использование различных API браузеров и поддержка прогрессивных веб-приложений (PWA).

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

Читать далее

OpenIDE: первая российская среда разработки с поддержкой Java 24

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

Наконец-то состоялся официальный релиз OpenIDE – независимой российской среды разработки, которую совместно создают «Группа Астра», Axiom JDK и Haulmont.

Проект стартовал как open source-инициатива в конце прошлого года и всего за полгода прошёл путь от идеи до стабильной версии. В числе ключевых фич — поддержка Java 24 уже "из коробки", собственный маркетплейс плагинов и "многоязычность".

В статье — ключевые достижения, проблемы, а также планы по развитию OpenIDE и её экосистемы.

Читать далее

Не пиши простой код

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

По мотивам статьи: Пиши простой код / Хабр

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

Читать далее

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