Как стать автором
Обновить
43
0
Dmitry @RPG18

Golang Developer

Отправить сообщение
Если код был разработан с учетом использования исключений, то описанная вами ситуация не может быть. А если иначе, то это некорректный код.
В С++ есть принцып: не платим за то, что не используем. На этом принципе основаны различные проверки во время компиляции, примеры можно почитать у того же Александреску.

Если мы объявляем функцию
OCINumber* extractOCINumber(oracle::occi::Number& );

а реализацию изолируем в отдельной еденице трансляции extractOCINumber.cpp
#define private public
// подключаем необходимый заголовочный файл
OCINumber* extractOCINumber(oracle::occi::Number& foo)
{
  return &foo.data;
}
//и ничего более

то ничего не сломаем. Зато получаем проверку есть ли член-данное, имеет ли оно нужный нам тип, верное смещение данного в классе.
Можно поподробней, почему сломается?
В отдельной единице трансляции:
#define private public
Транзакция и репликация это две отдельные темы, т.к. репликация может быть синхронной или асинхронной.
В случае асинхронной утверждение
первый коммит должен пройти, второй должен упасть:
ложно.
Это вы описываете синхронную репликацию.
А причем тут транзакции? Как понимаю на картинке master-slave репликация, и изменения тупо еще не поступили на Folower 2.
очередь разумеется не знает

А вот тут вы лукавите. Кое что разработчик API сделать может. Например разработчики libpqxx сделали такой метод, для извлечения результата:
template<typename T > bool pqxx::field::to (T & Obj) const

Отсюда имеем ситуацию:
  • я как пользователь знаю какие типы должен возвращать запрос;
  • разработчики API ввели ограничения и сказали явно указывайте тип;
  • во время выполнения библиотека знает какие типы пришли в запросе, какие типы указал пользователь и делает преобразование типов проверив на возможность такого действия.

и все это без таких сложностей, какие привели вы.
У базы данных есть схема, в которой четко прописаны типы. Я привел пример с работой PostgreSQL, там в протоколе содержится информация о типах. Я разрабатываю базу в терминах предметной области и мне удобно опрерировать простым набором объектов, которые соответствуют таблицам.

В случае RPC должна быть некая конвенция о формате и типах данных. Например в случае с JSON-RPC я использую JSON схему для валидации.

SQL-конструкторы появляются в разработке своей ORM, или разработка всяческих конструкторов схем данных. Там действительно схема данных определяется пользователем, а не программистом.
А это как вы системы запроектируете. Я проектирую слой работы с БД так, что бы таких случаев не было, у меня всегда типы известны.
Глава «Новый выстрел „Серебряной пули нет“» Брукса из его Мифический-человека месяц начинается с гениальной цитаты Александра Поупа:
Кто хочет увидеть образец совершенства,
Тот мечтает о том, чего никогда не было, нет и не будет.

Я не понимаю зачем это делать для SQL.
Вот пример использования libpqxx
            const std::string query = "SELECT id, type_id, measurement_id FROM qoscfg.kpi";

            pqxx::work work(*m_connection, "GetKpii");
            const auto res = work.exec(query);

            for (auto i = res.begin(), r_end =res.end(); i != r_end; ++i)
            {
                size_t id = 0;
                (*i)[0].to(id);

                std::string type;
                (*i)[1].to(type);

                size_t mid = 0;
                (*i)[2].to(mid);

                const auto kpi = std::make_shared<Kpi>(id, type, m_measurement[mid]);
                list.push_back(kpi);
            }

Там да же подсказка есть
поощряется использование OpenCV
Распознавание дорожных знаков (OpenCV)

Как понимаю все сводится к копипасту примеров по OpenCV.
А что тут собственно такого? В задание не сказано использовать NGINX, а простой рабочий прототип можно сварганить за пару часов. Окценты были сразу расставлены:
Верстка не важна, уделяйте основное внимание бэкенду, оформлению кода, мелочам.
lair правильно понимает. Нужно определить круг задач, которые будет решать будущая система. А без требований к системе, не понятно, откуда появились:
  • две базы;
  • мобильное приложение;
  • система справочной информации;
  • информационная система Департамента образования;
  • отказоустойчивый кластер.

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

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

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

Без уникального контента статья скучная, неинтересная, бесперспективная.
Долго они будут наращивать производство, что бы конкурировать с протеиновыми батончиками из традиционных продуктов.

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность