From 43c149b4812093c1cd12bfee2702d45c7536f575 Mon Sep 17 00:00:00 2001 From: Andrey Astafyev Date: Mon, 22 Apr 2019 08:13:35 +0300 Subject: [PATCH] Text --- .../System/Сервер NTP в локальной сети.md | 5 +- wiki/Prog/Development/Профилирование кода.md | 18 +- .../CPP/Проверка именования в Clang Tidy.md | 412 +++++++++++++++--- wiki/Prog/Links/Библиотеки C CPP.md | 2 +- 4 files changed, 368 insertions(+), 69 deletions(-) diff --git a/wiki/Linux/System/Сервер NTP в локальной сети.md b/wiki/Linux/System/Сервер NTP в локальной сети.md index e9a522c..8a14f24 100644 --- a/wiki/Linux/System/Сервер NTP в локальной сети.md +++ b/wiki/Linux/System/Сервер NTP в локальной сети.md @@ -8,7 +8,7 @@ summary: Если в локальной сети необходимо синхронизировать время, не имея авторитетного источника времени, то можно использовать локальные часы сервера в качестве базовых. В этом случае файл настройки -`/etc/ntp.conf` на сервере будет выглядеть так: +`/etc/ntp.conf` на сервере `192.168.0.1` будет выглядеть так: ``` driftfile /var/lib/ntp/ntp.drift @@ -21,8 +21,7 @@ restrict 192.168.0.0 mask 255.255.255.0 restrict default nomodify notrap ``` -Файл `/etc/ntp.conf` на клиенте, работающем в подсети `192.168.0.0/24`, -и получающем время от сервера `192.168.0.1`, имеет вид: +Файл `/etc/ntp.conf` на клиенте из подсети `192.168.0.0/24` имеет вид: ``` driftfile /var/lib/ntp/ntp.drift diff --git a/wiki/Prog/Development/Профилирование кода.md b/wiki/Prog/Development/Профилирование кода.md index 39efa0e..cf20daa 100644 --- a/wiki/Prog/Development/Профилирование кода.md +++ b/wiki/Prog/Development/Профилирование кода.md @@ -8,7 +8,7 @@ summary: ## Общее описание Чтобы профилировать приложения, компилируемые [GCC](http://gcc.gnu.org), -необходимо добавлять флаг `-fno-omit-frame-pointer` и желательно `-g`. +необходимо добавлять флаг `-fno-omit-frame-pointer` и, желательно, `-g`. ## quickstack @@ -25,7 +25,7 @@ quickstack -f -p $(pidof application) в каталоге `tools/perf`). ```sh -perf record --call-graph dwarf -- yourapp +perf record --call-graph dwarf -- ./application perf report -g graph --no-children ``` @@ -49,6 +49,20 @@ opcontrol --setup --vmlinux=/boot/vmlinux-`uname -r` ## Valgrind +[Хорошая статья](https://eax.me/valgrind/) об использовании Valgrind для поиска +утечек, а также о взаимодействии с GDB. + +В версии 3.15 добавление инструмент профилирования кучи DHAT (Dynamic +Heap Analysis Tool), позволяющий отследить все запросы на распределения +памяти в куче и выявить утечки ресурсов, места излишне большой активности +при работе с кучей, неиспользованные выделения памяти, краткосрочные +выделения и неэффективное размещение данных в куче. + +```sh +valgrind --tool=dhat ./application +``` + + ## gperftools diff --git a/wiki/Prog/Lang/CPP/Проверка именования в Clang Tidy.md b/wiki/Prog/Lang/CPP/Проверка именования в Clang Tidy.md index ce28bc9..78be0c9 100644 --- a/wiki/Prog/Lang/CPP/Проверка именования в Clang Tidy.md +++ b/wiki/Prog/Lang/CPP/Проверка именования в Clang Tidy.md @@ -1,25 +1,26 @@ --- -title: Проверка именования в Clang Tidy +title: "Проверка именования в Clang Tidy" category: Программирование -tags: C++, программирование, clang, clang-tidy +tags: C++, программирование, clang, clang-tidy, форматирование, summary: CSS: table-100.css toc: yes ... - [TOC] Программа Clang Tidy проверяет стилистику регистра идентификаторов. Возможные варианты стилей: - lower_case - UPPER_CASE - camelBack - CamelCase - camel_Snake_Back - Camel_Snake_Case - aNy_CasE +``` +lower_case +UPPER_CASE +camelBack +CamelCase +camel_Snake_Back +Camel_Snake_Case +aNy_CasE +``` Также существует возможность проверки префиксов и суффиксов идентификаторов. @@ -45,8 +46,6 @@ CheckOptions: и примеры соответствующего кода приведены ниже. - - ## Синтаксис @@ -209,7 +208,7 @@ NamespaceSuffix | `''` ```cpp namespace TEST_ns { -... + } ``` @@ -217,7 +216,7 @@ namespace TEST_ns { ```cpp namespace test_ns { -... + } ``` @@ -235,7 +234,7 @@ InlineNamespaceSuffix | `''` ```cpp namespace test_ns { inline namespace InlineNamespace { -... + } } // namespace test_ns ``` @@ -245,7 +244,7 @@ inline namespace InlineNamespace { ```cpp namespace test_ns { inline namespace inline_namespace { -... + } } // namespace test_ns ``` @@ -295,34 +294,15 @@ typedef int my_int; ## Переменные -### Variable (Переменная) - -Параметр | Значение --------------------------------|---------------- -VariableCase | `lower_case` -VariablePrefix | `''` -VariableSuffix | `''` - -Пример кода до форматирования: - -```cpp -unsigned TestVariable; -``` - -Пример кода после форматирования: - -```cpp -unsigned testvariable; -``` - +### Variable (Переменная) ??? ### GlobalVariable (Глобальная переменная) Параметр | Значение -------------------------------|---------------- -VariableCase | `lower_case` -VariablePrefix | `''` -VariableSuffix | `''` +GlobalVariableCase | `lower_case` +GlobalVariablePrefix | `''` +GlobalVariableSuffix | `''` Пример кода до форматирования: @@ -333,7 +313,7 @@ unsigned GlobalVariable; Пример кода после форматирования: ```cpp -unsigned globalvariable; +unsigned global_variable; ``` @@ -348,13 +328,19 @@ LocalVariableSuffix | `''` Пример кода до форматирования: ```cpp -unsigned Local_Variable; +int function() { + int LocalVariable = 0; + return LocalVariable; +} ``` Пример кода после форматирования: ```cpp -unsigned local_variable; +int function() { + int local_variable = 0; + return local_variable; +} ``` ### StaticVariable (Статическая переменная) @@ -362,7 +348,7 @@ unsigned local_variable; Параметр | Значение -------------------------------|---------------- StaticVariableCase | `lower_case` -StatcVariablePrefix | `''` +StaticVariablePrefix | `''` StatucVariableSuffix | `''` Пример кода до форматирования: @@ -374,32 +360,162 @@ unsigned staticVariable; Пример кода после форматирования: ```cpp -unsigned staticvariable; +unsigned static_variable; ``` ### ConstexptVariable (Переменная constexpr) +Параметр | Значение +-------------------------------|---------------- +ConstexprVariableCase | `lower_case` +ConstexprVariablePrefix | `''` +ConstexprVariableSuffix | `''` + +Пример кода до форматирования: + +```cpp +constexpr int get_five() { + return ( 2 + 3 ); +}; +constexpr int CONST_FIVE = get_five(); +``` + +Пример кода после форматирования: + +```cpp +constexpr int get_five() { + return ( 2 + 3 ); +}; +constexpr int const_five = get_five(); +``` + ### GlobalPointer (Глобальный указатель) +Параметр | Значение +-------------------------------|---------------- +GlobalPointerCase | `lower_case` +GlobalPointerPrefix | `''` +GlobalPointerSuffix | `''` -### LocalPointer(Локальный указатель) +Пример кода до форматирования: + +```cpp +void* globalPointer; +``` + +Пример кода после форматирования: + +```cpp +void* global_pointer; +``` + +### LocalPointer (Локальный указатель) + +Параметр | Значение +-------------------------------|---------------- +LocalPointerCase | `lower_case` +LocalPointerPrefix | `''` +LocalPointerSuffix | `''` + +Пример кода до форматирования: + +```cpp +void* LocalPointer; +``` + +Пример кода после форматирования: + +```cpp +void* localpointer; +``` + +### Member (Член) ??? -### Member (Член) +### ClassMember (Член класса) ??? -### ClassMember (Член класса) +### PrivateMember (Приватный член) + +Параметр | Значение +-------------------------------|---------------- +PrivateMemberCase | `camelBack` +PrivateMemberPrefix | `'m_'` +PrivateMemberSuffix | `''` + +Пример кода до форматирования: + +```cpp +class ClassWithPrivateMember { +private: + int PrivateMember; +}; +``` + +Пример кода после форматирования: + +```cpp +class ClassWithPrivateMember { +private: + int m_privateMember; +}; +``` -### PrivateMember (Приватная переменная) +### ProtectedMember (Защищённый член) + +Параметр | Значение +-------------------------------|---------------- +ProtectedMemberCase | `camelBack` +ProtectedMemberPrefix | `''` +ProtectedMemberSuffix | `''` + +Пример кода до форматирования: + +```cpp +class ClassWithProtectedMember { +protected: + int ProtectedMember; +}; +``` + +Пример кода после форматирования: + +```cpp +class ClassWithProtectedMember { +protected: + int protectedMember; +}; +``` -### ProtectedMember (Защищённая переменная) +### PublicMember (Публичный член) +Параметр | Значение +-------------------------------|---------------- +PublicMemberCase | `camelBack` +PublicMemberPrefix | `''` +PublicMemberSuffix | `''` -### PublicMember (Публичная переменная) +Пример кода до форматирования: + +```cpp +class ClassWithPublicMember { +protected: + int PublicMember; +}; +``` + +Пример кода после форматирования: + +```cpp +class ClassWithPublicMember { +protected: + int publicMember; +}; +``` ## Константы @@ -409,37 +525,218 @@ unsigned staticvariable; ### GlobalConstant (Глобальная константа) +Параметр | Значение +-------------------------------|---------------- +GlobalConstantCase | `UPPER_CASE` +GlobalConstantPrefix | `''` +GlobalConstantSuffix | `''` + +Пример кода до форматирования: + +```cpp +const int theOne = 1; +``` + +Пример кода после форматирования: + +```cpp +const int THE_ONE = 1; +``` + ### LocalConstant (Локальная константа) +Параметр | Значение +-------------------------------|---------------- +LocalConstantCase | `UPPER_CASE` +LocalConstantPrefix | `''` +LocalConstantSuffix | `''` + +Пример кода до форматирования: + +```cpp +int functionWithLocalConstant() { + const int LocalConstant = 0; + return LocalConstant; +} +``` + +Пример кода после форматирования: + +```cpp +int functionWithLocalConstant() { + const int LOCAL_CONSTANT = 0; + return LOCAL_CONSTANT; +} +``` + ### StaticConstant (Статическая контстанта) +Параметр | Значение +-------------------------------|---------------- +StaticConstantCase | `UPPER_CASE` +StaticConstantPrefix | `''` +StaticConstantSuffix | `''` -### ClassConstant (Константа класса) +Пример кода до форматирования: +```cpp +int functionWithStaticConstant() { + const int StaticConstant = 0; + return StaticConstant; +} +``` + +Пример кода после форматирования: + +```cpp +int functionWithStaticConstant() { + const int STATIC_CONSTANT = 0; + return STATIC_CONSTANT; +} +``` + +### ClassConstant (Константный член) + +Параметр | Значение +-------------------------------|---------------- +ClassConstantCase | `UPPER_CASE` +ClassConstantPrefix | `''` +ClassConstantSuffix | `''` + +Пример кода до форматирования: + +```cpp +class ClassWithConstMember { + public: + const int constant_member = 0; +}; +``` + +Пример кода после форматирования: + +```cpp +class ClassWithConstMember { + public: + const int CONSTANT_MEMBER = 0; +}; +``` ### GlobalConstantPointer (Глобальный константный указатель) +Параметр | Значение +-------------------------------|---------------- +GlobalConstantPointerCase | `UPPER_CASE` +GlobalConstantPointerPrefix | `''` +GlobalConstantPointerSuffix | `''` + +Пример кода до форматирования: + +```cpp +void* global_pointer; +void* const GlobalConstPointer = global_pointer; +``` + +Пример кода после форматирования: + +```cpp +void* global_pointer; +void* const GLOBAL_CONST_POINTER = global_pointer; +``` + ### LocalConstantPointer (Локальный константный указатель) +Параметр | Значение +-------------------------------|---------------- +LocalConstantPointerCase | `UPPER_CASE` +LocalConstantPointerPrefix | `''` +LocalConstantPointerSuffix | `''` + +Пример кода до форматирования: + +```cpp +void* functionWithLocalConstPointer() { + void* pointer = nullptr; + void* const LocalConstPointer = pointer; + return LocalConstPointer; +} +``` + +Пример кода после форматирования: + +```cpp +void* functionWithLocalConstPointer() { + void* pointer = nullptr; + void* const LOCAL_CONST_POINTER = pointer; + return LOCAL_CONST_POINTER; +} +``` + ### ConstMember (Константный член) + ## Функции -### Function (Функция) +### Function (Функция) ?? ### GlobalFunction (Глобальная функция) +Параметр | Значение +-------------------------------|---------------- +GlobalFunctionCase | `camelBack` +GlobalFunctionPrefix | `''` +GlobalFunctionSuffix | `''` +{: .testtt} + +Пример кода до форматирования: + +```cpp +int global_function() { + return 0; +} +``` + +Пример кода после форматирования: + +```cpp +int globalFunction() { + return 0; +} +``` + ### ConstexptFunction (Функция constexpr) +Параметр | Значение +-------------------------------|---------------- +ConstexptFunctionCase | `camelBack` +ConstexptFunctionPrefix | `''` +ConstexptFunctionSuffix | `''` + +Пример кода до форматирования: + +```cpp +constexpr int get_five() { + return ( 5 ); +} +``` + +Пример кода после форматирования: + +```cpp +constexpr int getFive() { + return ( 5 ); +} +``` + + ### Method (Метод) @@ -626,17 +923,6 @@ class EasyTest { }; ``` -Лексическая единица: Регистр имени константной переменной, получающей значение из функции -Параметр: readability-identifier-naming.ConstexprVariableCase -Значение: lower_case -Пример: `const_five` -Пример кода: -```cpp -constexpr int get_five() { - return ( 2 + 3 ); -}; -constexpr int const_five = get_five(); -``` Лексическая единица: Регистр имени перечисления Параметр: readability-identifier-naming.EnumCase diff --git a/wiki/Prog/Links/Библиотеки C CPP.md b/wiki/Prog/Links/Библиотеки C CPP.md index 11a3f04..47217b7 100644 --- a/wiki/Prog/Links/Библиотеки C CPP.md +++ b/wiki/Prog/Links/Библиотеки C CPP.md @@ -11,7 +11,7 @@ toc: yes ### C * [nanomsg](http://nanomsg.org): сетевое взаимодействие -* [noping](https://noping.cc): работа с ICMP-пакетами +* [oping](https://noping.cc): работа с ICMP-пакетами * [openblas](https://github.com/xianyi/OpenBLAS): оптимизированная версия [BLAS](https://ru.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms)