This commit is contained in:
Andrei Astafev 2019-04-22 08:13:35 +03:00
parent d8e0ffcd66
commit 43c149b481
4 changed files with 368 additions and 69 deletions

View File

@ -8,7 +8,7 @@ summary:
Если в локальной сети необходимо синхронизировать время, не имея Если в локальной сети необходимо синхронизировать время, не имея
авторитетного источника времени, то можно использовать локальные авторитетного источника времени, то можно использовать локальные
часы сервера в качестве базовых. В этом случае файл настройки часы сервера в качестве базовых. В этом случае файл настройки
`/etc/ntp.conf` на сервере будет выглядеть так: `/etc/ntp.conf` на сервере `192.168.0.1` будет выглядеть так:
``` ```
driftfile /var/lib/ntp/ntp.drift driftfile /var/lib/ntp/ntp.drift
@ -21,8 +21,7 @@ restrict 192.168.0.0 mask 255.255.255.0
restrict default nomodify notrap restrict default nomodify notrap
``` ```
Файл `/etc/ntp.conf` на клиенте, работающем в подсети `192.168.0.0/24`, Файл `/etc/ntp.conf` на клиенте из подсети `192.168.0.0/24` имеет вид:
и получающем время от сервера `192.168.0.1`, имеет вид:
``` ```
driftfile /var/lib/ntp/ntp.drift driftfile /var/lib/ntp/ntp.drift

View File

@ -8,7 +8,7 @@ summary:
## Общее описание ## Общее описание
Чтобы профилировать приложения, компилируемые [GCC](http://gcc.gnu.org), Чтобы профилировать приложения, компилируемые [GCC](http://gcc.gnu.org),
необходимо добавлять флаг `-fno-omit-frame-pointer` и желательно `-g`. необходимо добавлять флаг `-fno-omit-frame-pointer` и, желательно, `-g`.
## quickstack ## quickstack
@ -25,7 +25,7 @@ quickstack -f -p $(pidof application)
в каталоге `tools/perf`). в каталоге `tools/perf`).
```sh ```sh
perf record --call-graph dwarf -- yourapp perf record --call-graph dwarf -- ./application
perf report -g graph --no-children perf report -g graph --no-children
``` ```
@ -49,6 +49,20 @@ opcontrol --setup --vmlinux=/boot/vmlinux-`uname -r`
## Valgrind ## Valgrind
[Хорошая статья](https://eax.me/valgrind/) об использовании Valgrind для поиска
утечек, а также о взаимодействии с GDB.
В версии 3.15 добавление инструмент профилирования кучи DHAT (Dynamic
Heap Analysis Tool), позволяющий отследить все запросы на распределения
памяти в куче и выявить утечки ресурсов, места излишне большой активности
при работе с кучей, неиспользованные выделения памяти, краткосрочные
выделения и неэффективное размещение данных в куче.
```sh
valgrind --tool=dhat ./application
```
## gperftools ## gperftools

View File

@ -1,25 +1,26 @@
--- ---
title: Проверка именования в Clang Tidy title: "Проверка именования в Clang Tidy"
category: Программирование category: Программирование
tags: C++, программирование, clang, clang-tidy tags: C++, программирование, clang, clang-tidy, форматирование,
summary: summary:
CSS: table-100.css CSS: table-100.css
toc: yes toc: yes
... ...
[TOC] [TOC]
Программа Clang Tidy проверяет стилистику регистра идентификаторов. Программа Clang Tidy проверяет стилистику регистра идентификаторов.
Возможные варианты стилей: Возможные варианты стилей:
lower_case ```
UPPER_CASE lower_case
camelBack UPPER_CASE
CamelCase camelBack
camel_Snake_Back CamelCase
Camel_Snake_Case camel_Snake_Back
aNy_CasE Camel_Snake_Case
aNy_CasE
```
Также существует возможность проверки префиксов и суффиксов идентификаторов. Также существует возможность проверки префиксов и суффиксов идентификаторов.
@ -45,8 +46,6 @@ CheckOptions:
и примеры соответствующего кода приведены ниже. и примеры соответствующего кода приведены ниже.
## Синтаксис ## Синтаксис
@ -209,7 +208,7 @@ NamespaceSuffix | `''`
```cpp ```cpp
namespace TEST_ns { namespace TEST_ns {
...
} }
``` ```
@ -217,7 +216,7 @@ namespace TEST_ns {
```cpp ```cpp
namespace test_ns { namespace test_ns {
...
} }
``` ```
@ -235,7 +234,7 @@ InlineNamespaceSuffix | `''`
```cpp ```cpp
namespace test_ns { namespace test_ns {
inline namespace InlineNamespace { inline namespace InlineNamespace {
...
} }
} // namespace test_ns } // namespace test_ns
``` ```
@ -245,7 +244,7 @@ inline namespace InlineNamespace {
```cpp ```cpp
namespace test_ns { namespace test_ns {
inline namespace inline_namespace { inline namespace inline_namespace {
...
} }
} // namespace test_ns } // namespace test_ns
``` ```
@ -295,34 +294,15 @@ typedef int my_int;
## Переменные ## Переменные
### Variable (Переменная) ### Variable (Переменная) ???
Параметр | Значение
-------------------------------|----------------
VariableCase | `lower_case`
VariablePrefix | `''`
VariableSuffix | `''`
Пример кода до форматирования:
```cpp
unsigned TestVariable;
```
Пример кода после форматирования:
```cpp
unsigned testvariable;
```
### GlobalVariable (Глобальная переменная) ### GlobalVariable (Глобальная переменная)
Параметр | Значение Параметр | Значение
-------------------------------|---------------- -------------------------------|----------------
VariableCase | `lower_case` GlobalVariableCase | `lower_case`
VariablePrefix | `''` GlobalVariablePrefix | `''`
VariableSuffix | `''` GlobalVariableSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
@ -333,7 +313,7 @@ unsigned GlobalVariable;
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
unsigned globalvariable; unsigned global_variable;
``` ```
@ -348,13 +328,19 @@ LocalVariableSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
```cpp ```cpp
unsigned Local_Variable; int function() {
int LocalVariable = 0;
return LocalVariable;
}
``` ```
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
unsigned local_variable; int function() {
int local_variable = 0;
return local_variable;
}
``` ```
### StaticVariable (Статическая переменная) ### StaticVariable (Статическая переменная)
@ -362,7 +348,7 @@ unsigned local_variable;
Параметр | Значение Параметр | Значение
-------------------------------|---------------- -------------------------------|----------------
StaticVariableCase | `lower_case` StaticVariableCase | `lower_case`
StatcVariablePrefix | `''` StaticVariablePrefix | `''`
StatucVariableSuffix | `''` StatucVariableSuffix | `''`
Пример кода до форматирования: Пример кода до форматирования:
@ -374,32 +360,162 @@ unsigned staticVariable;
Пример кода после форматирования: Пример кода после форматирования:
```cpp ```cpp
unsigned staticvariable; unsigned static_variable;
``` ```
### ConstexptVariable (Переменная constexpr) ### 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 (Глобальный указатель) ### 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 (Глобальная константа) ### GlobalConstant (Глобальная константа)
Параметр | Значение
-------------------------------|----------------
GlobalConstantCase | `UPPER_CASE`
GlobalConstantPrefix | `''`
GlobalConstantSuffix | `''`
Пример кода до форматирования:
```cpp
const int theOne = 1;
```
Пример кода после форматирования:
```cpp
const int THE_ONE = 1;
```
### LocalConstant (Локальная константа) ### 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 (Статическая контстанта) ### 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 (Глобальный константный указатель) ### 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 (Локальный константный указатель) ### 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 (Константный член) ### ConstMember (Константный член)
## Функции ## Функции
### Function (Функция) ### Function (Функция) ??
### GlobalFunction (Глобальная функция) ### GlobalFunction (Глобальная функция)
Параметр | Значение
-------------------------------|----------------
GlobalFunctionCase | `camelBack`
GlobalFunctionPrefix | `''`
GlobalFunctionSuffix | `''`
{: .testtt}
Пример кода до форматирования:
```cpp
int global_function() {
return 0;
}
```
Пример кода после форматирования:
```cpp
int globalFunction() {
return 0;
}
```
### ConstexptFunction (Функция constexpr) ### ConstexptFunction (Функция constexpr)
Параметр | Значение
-------------------------------|----------------
ConstexptFunctionCase | `camelBack`
ConstexptFunctionPrefix | `''`
ConstexptFunctionSuffix | `''`
Пример кода до форматирования:
```cpp
constexpr int get_five() {
return ( 5 );
}
```
Пример кода после форматирования:
```cpp
constexpr int getFive() {
return ( 5 );
}
```
### Method (Метод) ### 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 Параметр: readability-identifier-naming.EnumCase

View File

@ -11,7 +11,7 @@ toc: yes
### C ### C
* [nanomsg](http://nanomsg.org): сетевое взаимодействие * [nanomsg](http://nanomsg.org): сетевое взаимодействие
* [noping](https://noping.cc): работа с ICMP-пакетами * [oping](https://noping.cc): работа с ICMP-пакетами
* [openblas](https://github.com/xianyi/OpenBLAS): оптимизированная версия * [openblas](https://github.com/xianyi/OpenBLAS): оптимизированная версия
[BLAS](https://ru.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms) [BLAS](https://ru.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms)