C++ дайджест #29: С++20, Client/Server, microservices
Привіт, мої любі сішники! В цьому випуску пропоную згадати фічі С++20 та поговорити про клієнт-серверну архітектуру. Почнімо? :)
Розминка
C++20? Тест от Tproger и «Лаборатории Касперского»;
І найскладніше: скільки С++ на зображенні? :)
Фонове зображення узято з freepik
C++20
Доки кипить робота над новим С++23, згадаємо деякі нові фічі С++20:
- Designated initializers and named arguments: Marius Bancila’s Blog — описано, як користуватися designated initializers, зазначена підтримка компіляторами, proposal;
- std::atomic_ref: Marius Bancila’s Blog — описано, навіщо та де використовувати std::atomic_ref, вказана підтримка компіляторами; Rainer Grimm’s blog, документація;
- Range-based for statements with initializer: Range-based for statements with initializerдокументація;
- std::ssize — proposal;
- Ranges: Rainer Grimm’s blog, A little bit of code, документація;
- додано математика: математичні константи, середнє значення та лінійна інтерполяція.
- нові можливості строкового форматування — Guide to C++20 Text Formatting, документація;
- додано часові зони та «календар» — можливість працювати з днями, місяцями тощо: Proposal, C++20 calendars and time zones, cppreference, ppreference — month;
- структуру source_location, що спрощує логування;
- оператор spaceship;
- нові атрибути: expects, ensures, assert, likely, unlikely та no_unique_address;
- розширенні можливості для lambda;
- ключові слова consteval та constinit;
- можливості синхронізації;
- constraints and concepts;
- coroutines: Coroutines на реальном примере, First overview, Coroutines introduction, Your first coroutine;
- memory allocation;
- span;
- modules.
Про нові фічі можна прочитати в статтях:
- C++ compiler support;
- «C++20 утверждён! Чего ждать и к чему готовиться разработчикам в C++23»;
- libc++ C++2a Status;
- C++20 is feature complete; here’s what changes are coming;
- Top 20 C++ multithreading mistakes and how to avoid them;
- A new thread in C++20 (jthread);
- C++20: The unspoken features.
Client/Server
Розглянемо організацію проєктів Client/Server.
Sockets — server & client — 2020 — пояснення, що таке сервер, як налагодити комунікацію між клієнтом і сервером через сокети.
Веб-сервер на C++ и сокетах — створення серверу на сокетах, що отримує запит, парсить його та відправляє відповідь у HTML-форматі.
What is web socket and how it is different from the HTTP? — ідеальний опис різниці між ws:// та http://.
Catalog of Patterns of Enterprise Application Architecture — як і для будь-якої прикладної ніші, маємо каталог готових патернів.
Сервери, своєю чергою, можуть також архітектурно бути реалізованими як мікросервіси або SOA. Про різницю читайте у Microservices vs SOA. Про те, чим відрізняються мікросервіси від звичайного API: API vs. microservices.
Про SOA:
- Service-Oriented Architecture — коротенький опис, що таке SOA, переваги та недоліки.
- Сервис-ориентированная архитектура (SOA) — розлогий опис, що таке SOA, основні компоненти та принцип роботи.
- SOA Patterns.
- Service-Oriented Architectures for Embedded Systems.
Про мікросервіси:
- Moving to microservices: top 5 languages to choose from — короткий опис, що таке мікросервіси, і список найпопулярніших мов;
- Decoding microservice architecture — гарний та розлогий огляд: що таке мікросервіси, на чому частіше всього розробляються, приклади знайомих нам enterprise’ів, що побудовані на базі мікросервісів;
- Modern C++ micro-service implementation + REST API — реалізація мікросервісу на базі REST SDK;
- C++ micro-service sample(REST SDK-based) — реалізація мікросервісу на базі REST SDK;
- CppMicroServices project — CppMicroServices open source бібліотека для створення мікросервісів (OSGi);
- C++ Micro Services- MITK — MITK має власну бібліотеку для створення мікросервісів (OSGi); Design Patterns for Microservices — також маємо свої патерни.
Бібліотеки:
Пошук роботи
Якщо криза не пройшла повз, готуємося до співбесід: C++ дайджест #19: підготовка до співбесід. І вперед на пошук до ресурсів:
Щасти!
Modern C++
- Initial Support For C++20 Ranges;
- Two new Keywords in C++20: consteval and constinit;
- Designated Initializers;
- An iterator_facade in C++20;
Корисні посилання
QStringView Diaries: Zero-Allocation String Splitting;
Mundane std::tuple tricks: Creating interesting index sequences, part 2
Deconstructing function pointers in a C++ template, vexing variadics
Versioning and other C++ Boilerplate
Fixing a common antipattern when loading translations in Qt
std::ref and std::reference_wrapper: common use cases
Wrapping C++ Member Function Calls
Avoiding compile-time recursion
Ask Me Anything with Bjarne Stroustrup
The Next Steps for Single Ownership and RAII
CppCast: LLVM Hacking and CPU Instruction Sets
Інструменти
Improving code generation time with C++ Build Insights
PVS-Studio is now in Compiler Explorer
Announcing CUDA on Windows Subsystem for Linux 2
Conan Docker Tools — Official docker images for creating C++ packages for ConanCenter
Docker as builder system for C++
Оновлення
Цього місяця маємо такі оновлення:
Windows Package Manager Preview
Qt Creator 4.13, Qt Visual Studio Tools 2.5.2
Хвилиночка флуду
The New iOS 14 Is Already Unmasking Serious Privacy Concerns.
C++ Is Faster and Safer Than Rust: Benchmarked by Yandex.
Best Programming Language to Learn in 2020 (for Job & Future).
Why do we need to learn C++ in 2020?
When you use a library without reading the documentation (fun video).
15 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів