Посты | OTUS
20 типичных ошибок многопоточности в C++

С___Deep_25-5020-1175ed.09_site.png

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

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

MergeSort + InsertionSort + хитрые эвристики = ?

PythonDeep_16.05_Site.png

Сортировка массива — базовая операция. Каждый программист может написать несколько, а просто назвать алгоритмов сортировки — ещё больше.

«Естественная» необходимость и любовь к красивым решениям дала нам MergeSort, QuickSort, HeapSort и т.д. Самоирония, видимо, породила такие алгоритмы, как StupidSort, SleepSort и мой любимый — TwitterSort.

Несколько слов о Dependency Injection

iOS_Deep_10.10-5020-fa1af2.png

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

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

И здесь на помощь приходит паттерн Dependency Injection, или, сокращенно, DI.

Get ready to run back: ещё одна проблема регулярных выражений

PythonDeep14.05_Site.png

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

Собственно алгоритм, который лежит в её основе схож у многих популярных языков: Python, Perl, Java, Ruby и т.д. И с ним есть проблема: он может жутко «тупить» на некоторых видах регулярок. В частности, это регулярные выражения, где используется backtracking, т.е. возвращение назад в строке при поиске.

Версионирование данных БД в рамках процесса непрерывной поставки. Часть 2

DevOpsDeep11.05_Site.png В первой части мы обсудили проблемы, которые решаются с помощью IaС-инструментов. Определив задачи и результаты их решения, в этой заметке я хотел бы рассказать о том, как можно управлять миграциями с помощью liquibase. Есть два способа: 1. Описывать и запускать их при помощи CLI liquibase в процессе деплоя; 2. Описывать миграции вместе с кодом приложений и запускать их применение во время запуска приложений.

Зачем нужен этот блог?

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

Что здесь можно найти?

-кто за что отвечает в OTUS, к кому бежать по каким-то вопросам

-обновления и инструкции по работе с преподавательской, с элементами сайта, с сервисами

Старый добрый ADO.NET

C#Deep8.05_Site.png

При проектировании корпоративного приложения возникает вопрос:

«Как правильно организовать систему работы с БД?»

В современных учебниках программирования рассматривается зачастую один вариант – ORM (EF, NHibernate и т.д.). И практически совсем не упоминается ADO.NET.

4 в 1: мифическая роль Product Owner

Product_Deep_6.4-5020-c05c5a.png

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

Рендеринг полигональных моделей с помощью Helix Toolkit

C#Deep_4.05_Site.png

Каким образом формируются 3D-модели, отображаемые пользователю?

Всё очень просто! Как нам известно из компьютерной графики, любая 3D-модель, отображаемая компьютером, представляет из себя в упрощённом случае набор из вершин и граней, которые образуют треугольники (Triangle). Таким образом, например, реализован формат ply.

Популярное
Сегодня тут пусто