Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 5

Компилятор генерирует мегабайты мусора

05.09.2015, 00:06. Показов 3106. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно скачал компилятор Си. Мне понравилось, что он небольшой и простенький. Давно хотел создавать экзешники. Написал пустое окно. Размер откомпилированного файла был всего 15 килобайт. Из них где-то половина просторанства нули для выравнивания. Через месяц заметил, что файл стал сильно увеличиваться. Теперь он занимает почти 15 мегабайт. Посмотрел в HEX редакторе. Там ужас! Компилятор вместо кода записывает текст. Какие-то константы, которые я даже не писал. Ещё названия ВСЕХ процедур и переменных. Даже цифры записываются каждая по отдельности в конце файла. Это нормально? Может это из-за подключаемых файлов? Не знаю что там написано и это меня смущает. Особенно странный windows.h. В него многократно вложены много других файлов, некоторые из которых мне даже не нужны. Почему нельзя написать вообще без заголовочных файлов? Что я делаю не так? Как можно избежать ненужных включений в исполняемом модуле?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.09.2015, 00:06
Ответы с готовыми решениями:

Какой компилятор с++ генерирует малого размера программы ?
Подскажите, пожалуйста, какой компилятор с++ лучше взять, который на стадии генерации кода в ассемблер не будет добавлять кучу ненужного...

Перевод из бит в мегабайты и обратно
Нужна помощь в написании программы :Перевод из бит в мегабайты и обратно.

Перевод 24ТБ в гигабайты и мегабайты
Здравствуйте, помогите решить задачу ,пожалуйста :( Выполнить перевод 24ТБ в гигабайты и мегабайты, с помощью Microsoft Excel

29
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
05.09.2015, 00:15
Цитата Сообщение от Shimeton Посмотреть сообщение
Через месяц заметил, что файл стал сильно увеличиваться. Теперь он занимает почти 15 мегабайт.
Он что, сам начал расти?
Может быть ты код покажешь хотя бы.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
05.09.2015, 00:15
Shimeton, текст программы выкладывайте.
0
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 5
05.09.2015, 01:05  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Он что, сам начал расти?
Я её писал, и она раздулась. Просто как-то не наблюдал за этми. Странно, что все *.cpp файлы вместе взятые весят 14 кб, а программа несколько мегабайт.

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

Например обычный месседжбокс:
C++
1
  MessageBox(NULL, "index.000 file not found","Loader error!", MB_OK);
Там целых две строки. И они будут храниться не там, где эта функция вызывается, а в конце файла. Ладно строки, но оно хранит так каждую единичку.

Добавлено через 9 минут
Вот. Скопировал из самого EXEшника.
Code
1
CERT_STORE_PROV_READ_CRL_FUNC 5•CERT_STORE_PROV_WRITE_CRL_FUNC 6–CERT_STORE_PROV_DELETE_CRL_FUNC 7—CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC 8?CERT_STORE_PROV_READ_CTL_FUNC 9™CERT_STORE_PROV_WRITE_CTL_FUNC 10љCERT_STORE_PROV_DELETE_CTL_FUNC 11›CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC 12њCERT_STORE_PROV_CONTROL_FUNC 13ќCERT_STORE_PROV_FIND_CERT_FUNC 14ћCERT_STORE_PROV_FREE_FIND_CERT_FUNC 15џCERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 16*CERT_STORE_PROV_FIND_CRL_FUNC 17ЎCERT_STORE_PROV_FREE_FIND_CRL_FUNC 18ўCERT_STORE_PROV_GET_CRL_PROPERTY_FUNC 19ЈCERT_STORE_PROV_FIND_CTL_FUNC 20¤CERT_STORE_PROV_FREE_FIND_CTL_FUNC 21ҐCERT_STORE_PROV_GET_CTL_PROPERTY_FUNC 22ЄCERT_STORE_PROV_WRITE_ADD_FLAG 0x1ОCERT_STORE_SAVE_AS_STORE 1ПCERT_STORE_SAVE_AS_PKCS7 2РCERT_STORE_SAVE_TO_FILE 1СCERT_STORE_SAVE_TO_MEMORY 2ТCERT_STORE_SAVE_TO_FILENAME_A 3УCERT_STORE_SAVE_TO_FILENAME_W 4ФCERT_STORE_SAVE_TO_FILENAME CERT_STORE_SAVE_TO_FILENAME_WШCERT_CLOSE_STORE_FORCE_FLAG 0x1ЩCERT_CLOSE_STORE_CHECK_FLAG 0x2аCERT_COMPARE_MASK 0xFFFFбCERT_COMPARE_SHIFT 16вCERT_COMPARE_ANY 0гCERT_COMPARE_SHA1_HASH 1дCERT_COMPARE_NAME 2еCERT_COMPARE_ATTR 3жCERT_COMPARE_MD5_HASH 4зCERT_COMPARE_PROPERTY 5иCERT_COMPARE_PUBLIC_KEY 6йCERT_COMPARE_HASH CERT_COMPARE_SHA1_HASHкCERT_COMPARE_NAME_STR_A 7лCERT_COMPARE_NAME_STR_W 8мCERT_COMPARE_KEY_SPEC 9нCERT_COMPARE_ENHKEY_USAGE 10оCERT_COMPARE_CTL_USAGE CERT_COMPARE_ENHKEY_USAGEпCERT_COMPARE_SUBJECT_CERT 11рCERT_COMPARE_ISSUER_OF 12сCERT_COMPARE_EXISTING 13тCERT_COMPARE_SIGNATURE_HASH 14уCERT_COMPARE_KEY_IDENTIFIER 15фCERT_COMPARE_CERT_ID 16хCERT_COMPARE_CROSS_CERT_DIST_POINTS 17цCERT_COMPARE_PUBKEY_MD5_HASH 18шCERT_FIND_ANY (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)щCERT_FIND_SHA1_HASH (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)ъCERT_FIND_MD5_HASH (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)ыCERT_FIND_SIGNATURE_HASH (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)ьCERT_FIND_KEY_IDENTIFIER (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)эCERT_FIND_HASH CERT_FIND_SHA1_HASHюCERT_FIND_PROPERTY (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)яCERT_FIND_PUBLIC_KEY (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)ЂCERT_FIND_SUBJECT_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)ЃCERT_FIND_SUBJECT_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)‚CERT_FIND_ISSUER_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)ѓCERT_FIND_ISSUER_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)„CERT_FIND_SUBJECT_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)…CERT_FIND_SUBJECT_STR_W (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)†CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W‡CERT_FIND_ISSUER_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
Чепуха какая-то. Больше половины файла этим забито. Откуда это взялось и зачем это нужно?

Добавлено через 8 минут
Проклятые компиляторы. Когда руками писал, такого не было.
0
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
05.09.2015, 02:09
Там ужас! Компилятор вместо кода записывает текст. Какие-то константы, которые я даже не писал. Ещё названия ВСЕХ процедур и переменных. Даже цифры записываются каждая по отдельности в конце файла. Это нормально?
Для Debug режима это нормально.

Добавлено через 2 минуты
Почему нельзя написать вообще без заголовочных файлов?
Почему нельзя? Можно. Только в таком случае Вам нужно будет вручную писать прототипы всех используемых функций, константы, перечисления, вручную делать необходимые макросы и т.д.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
05.09.2015, 15:11
Цитата Сообщение от Shimeton Посмотреть сообщение
Что я делаю не так?
1.
вкл. режим "релизная сборка"

2.
вкл режим оптимизаций по размеру исполняемого файла.

3.
вкл динамическую линковку с рантаймом с++

4.
вкл "вырезать все отладочные символы".

5.
профит!
1
 Аватар для Praktolock
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
05.09.2015, 15:47
Цитата Сообщение от Shimeton Посмотреть сообщение
Может это из-за подключаемых файлов?
В хедерах нет кода (обычно).
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
05.09.2015, 16:18
Меня другое интерисует может часть библиотек которые в рантайме вовсе ненужны, ибо конечный исполняемый файл программы совершенно не соответствует обьему кода в программе.

Добавлено через 8 минут
У меня такое чувство что в рунтайм он записывает все что не лень, даже то что не используется!

Добавлено через 9 минут
И также возникает вопрос как очистить от лишнего.... пустая форма занимает места порядка 6,5 МЕГАБАЙТ.
Это полностю пустая форма, без единой кнопочки ВООБЩЕ без кода.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
05.09.2015, 21:04
Цитата Сообщение от sfinexer Посмотреть сообщение
И также возникает вопрос как очистить от лишнего.... пустая форма занимает места порядка 6,5 МЕГАБАЙТ.
Это полностю пустая форма, без единой кнопочки ВООБЩЕ без кода.
Ну дык кидай пример кода, не содержащего ничего, кроме создания этой формы. И название компилятора заодно.
0
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
05.09.2015, 21:06
Цитата Сообщение от Renji Посмотреть сообщение
И название компилятора заодно.
и makefile, или другую хрень, где можно посмотреть каким макаром всё компилируется
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
05.09.2015, 21:23
Да выкладывать особо нечего XE8 от эмбаркадеро.
Но сам факт того что раньше программы мало когда были больше 1 мегабайта, причем достаточно сложные, то сейчас как никрути уже 6-7 мегабайт. Опции ничем не помогают.
Интересно другое, Эмбаркадеро содержит в себе компилятор CLANG
C:\Program Files (x86)\Embarcadero\Studio\16.0\bin>clang -v
Embarcadero Technologies Inc. clang version 3.1 (35091.dcc1b50.3081e8f) (based on LLVM 3.1svn)
Target: i686-pc-win32
Thread model: posix
Который должен настраиватся, НО ГДЕ????
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
05.09.2015, 21:59
Что-то я не понимаю, кто здесь ТС?
sfinexer, у компоновщика GCC есть опция -s.
0
2630 / 1642 / 266
Регистрация: 19.02.2010
Сообщений: 4,361
06.09.2015, 21:26
Цитата Сообщение от Shimeton Посмотреть сообщение
Там целых две строки. И они будут храниться не там, где эта функция вызывается, а в конце файла.
И так и должно быть, ибо у исполняемых файлов сегментная структура. Сегмент кода, сегмент инициализированных данных, сегмент неинициализированных данных, сегмент для потоковых данных (TLS).
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
06.09.2015, 21:48
А лет 25 назад исполняему файлы были меньше чем занимал сам код программы!!!
Вот и думается чего там можно было такого наплодить в exe
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 21:52
Цитата Сообщение от sfinexer Посмотреть сообщение
А лет 25 назад исполняему файлы были меньше чем занимал сам код программы!!!
Вот и думается чего там можно было такого наплодить в exe
Заранее скомпилированные библиотеки, которые линкуются целиком, а не по необходимым частям.
Хотя, сравнивая размеры некоторых программ с их функциональностью, возникает ощущение что туда просто добавляют мусора для веса.
1
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
06.09.2015, 21:59
Renji,
Вот автора темы и меня также интерисует как этого можно избежать. Библиотека VCL борланда около 6 мегабйт, что примерно на этот размер прибавляет вес ЛЮБОГО exe файла.
А если как мне - программы надо раздавать по сети, одно дело когда как верно вы заметили функциональность оправдывает "вес" программы, а тут тока мусор приходтся гонять, вместо 300 килобайт которые получаются без статической линковки всякого мусора, но может быть часть "мусора" нужна.
Конечно в свете терабайтных дисоков вся эта "помойка в файле" мало кого наверное сейчас волнует, но всеже.
Я помню 8 лет назад моя система обновления даже не могла файлы скачивать больше 1 метра - небыло необходимости... программы бяли максимум 600 килобайт, с графикой и со всем, а сейчас почти ТОТЖЕ код в 10 раз больше занимает.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
06.09.2015, 22:23
Цитата Сообщение от sfinexer Посмотреть сообщение
Вот автора темы и меня также интерисует как этого можно избежать. Библиотека VCL борланда около 6 мегабйт, что примерно на этот размер прибавляет вес ЛЮБОГО exe файла.
Не пользоваться VCL? Сейчас создал из Qt простейшее гуевое приложение, исполняемый файл занимает 21 килобайт. Правда, под Дебианом, под Виндой не проверял.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
06.09.2015, 22:32
Renji, В том и дело что почемуто GCC генериует отменные программы, правда автор не указал какой компилятор использует, ясно только что он под виндусом, а это совершенно не означает что там именно GCC...

Я для себя в большинстве случаев компилирую консольные программы (или DLL), и там да - именно GCC но вся графика (у меня) на эмбаркадеровском компиляторе.
Qt - да, кросплатформенно, правда я его под темже дебианом и смотрел, в виндусе он пол КДЕ с собой притянет.
0
Неэпический
 Аватар для Croessmah
18145 / 10729 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
06.09.2015, 22:37
Цитата Сообщение от Renji Посмотреть сообщение
исполняемый файл занимает 21 килобайт.
и плюсуем необходимый рантайм компилятора и Qt.
0
-3 / 11 / 5
Регистрация: 22.01.2011
Сообщений: 201
06.09.2015, 22:57
Цитата Сообщение от Croessmah Посмотреть сообщение
и плюсуем необходимый рантайм компилятора и Qt.
Ничего там уже плючовать не надо, уже и так все приплюсовано поэтому такой и большой 21 килобайт.
А самый меленький будет наверное как в примере
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <windows.h>
/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    switch(Message) {
        
        /* Upon destruction, tell the main thread to stop */
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }
        
        /* All other messages (a lot of them) are processed using default procedures */
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}
 
/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASSEX wc; /* A properties struct of our window */
    HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
    MSG msg; /* A temporary location for all messages */
 
    /* zero out the struct and set the stuff we want to modify */
    memset(&wc,0,sizeof(wc));
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.lpfnWndProc   = WndProc; /* This is where we will send messages to */
    wc.hInstance     = hInstance;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    
    /* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = "WindowClass";
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */
 
    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Caption",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* x */
        CW_USEDEFAULT, /* y */
        640, /* width */
        480, /* height */
        NULL,NULL,hInstance,NULL);
 
    if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
    /*
        This is the heart of our program where all input is processed and 
        sent to WndProc. Note that GetMessage blocks code flow until it receives something, so
        this loop will not produce unreasonably high CPU usage
    */
    while(GetMessage(&msg, NULL, 0, 0) > 0) { /* If no error is received... */
        TranslateMessage(&msg); /* Translate key codes to chars if present */
        DispatchMessage(&msg); /* Send it to WndProc */
    }
    return msg.wParam;
}

в 32 бит около 12 килобайт, это для виндуса.
НО!!!! Почему же большие среды для разработки делают от 6+ мегабайт... наверняка можно это обойти...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.09.2015, 22:57
Помогаю со студенческими работами здесь

Как конвертировать байты в мегабайты ( на примере видеокарты)?
ManagementObjectSearcher Vd = new ManagementObjectSearcher(&quot;root\\CIMV2&quot;, &quot;SELECT * FROM Win32_VideoController&quot;); ...

Acer Aspire 5551 потерянные мегабайты ОЗУ?
Добрый день! Вопрос такой: купил ноутбук. Озу поидеи 2гб но показывает 1,74 гб. Я так понял встроенная видеокарта &quot;забирает&quot;...

Написать программу перевода из битов в байты, килобайты, мегабайты и обратно
написать программу перевода из битов в байты, килобайты, мегабайты и обратно!

Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор
Здравствуйте! Я недавно начал заниматься С++, но мой компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7 Посоветуйте какой...

Сборка мусора
Нужна ли в Си ++ «сборка мусора»? Почему возникает такая проблема и как она решается в Си++?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru