All streams
Search
Write a publication
Pull to refresh
44
0
Dmitry @RPG18

Golang Developer

Send message
В отдельной единице трансляции:
#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'а для молодых коллег ожидал четко сформулированных задач, которые должна решать будущая система, и список требований, которым должна удовлетворять будущая система.
А это как посмотреть. Новость- это нечто новое, то, чего не было раньше и этим самым уникальна.
Почему вы считаете, что каждая статья должна быть новостью?

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

Это интуитивно понятно всем, кто писал конкурентные программы. Как вы будете в C/C++ искать deadlock, livelock, race condition таким способом?
Крупные компании вполне себе могут позволить PVS-Studio. CppCat позиционировался как нишевый продукт, т.е. для малых и средних компаний. А в малых компаниях руководство просто не понимает, зачем им нужен статический анализатор или коммерческая IDE.
Почему программирование доставляет удовольствие? Как вознаграждаются все усилия профессионала?

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

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

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

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

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

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

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

Фредерик Брукс, «Мифический человеко-месяц»

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity