Настройка плана обслуживания ms sql server для 1с предприятия

Автокликер для 1С

Внешняя обработка, запускаемая в обычном (неуправляемом) режиме для автоматизации действий пользователя (кликер). ActiveX компонента, используемая в обработке, получает события от клавиатуры и мыши по всей области экрана в любом приложении и транслирует их в 1С, получает информацию о процессах, текущем активном приложении, выбранном языке в текущем приложении, умеет сохранять снимки произвольной области экрана, активных окон, буфера обмена, а также, в режиме воспроизведения умеет активировать описанные выше события. Все методы и свойства компоненты доступны при непосредственной интеграции в 1С. Примеры обращения к компоненте представлены в открытом коде обработки.

1 стартмани

03.04.2017   
44312   
87   

slava_1c   

67
   

74

Настройка задания

В ранее созданный нами план обслуживания (статья «Резервное копирование транзакционного лога») добавим еще один субплан «EveryDayActivity» и назначим расписание его выполнения. Поскольку данный план обслуживания должен выполняться ежедневно (а точнее 6 раз в неделю, т.к. в один из дней недели мы будем выполнять другой, «Еженедельный» план), установим выполнение, например, с понедельника по субботу, в период времени когда пользовательская активность минимальна или ее нет (в моем случае 5:00 утра).

Свойства субплана «EveryDayActivity»Свойства расписания субплана «EveryDayActivity»

Далее, из панели инструментов Планов обслуживания перенесем задание «Реорганизация индекса» (Reorganize Index Task) в рабочую область субплана (т.е. добавим задание в наш субплан).

Задача «Реорганизация индекса» в панели инструментов плана обслуживания

И, сразу после этого, двойным щелчком по заданию, откроем его свойства.

Данная задача имеет лишь небольшое количество настроек, тем не менее, рассмотрим их:

  1. «Базы данных» (Databases): в данном свойстве можно выбрать одну/несколько/все базы данных. Здесь выбор зависит от вашего желания, если план обслуживания создается общий для нескольких баз, можно выбрать все необходимые.
  2. «Объект» (Object): ограничивает набор данных в поле «Выбор» для отображения таблиц, представлений или обоих элементов. Для наших целей подходит значение «Таблица» (Table)
  3. «Выбор» (Selection): в данном поле можно выбрать конкретные таблицы, индексы которых, необходимо реорганизовать. Такая возможность может быть полезной, например, если есть таблицы с редко изменяемыми данными, а значит и индексы у них фрагментируются медленно, тогда в целях экономии времени на выполнение задания, можно исключить такие таблицы из ежедневного задания, но включить в еженедельное, например.
  4. «Сжатие больших объектов» (Compact large objects): сжимает большие объекты (LOB), по умолчанию установлено. Смысла отключать не имеет, разве что для сокращения времени выполнения задания.

Свойства задачи «Реорганизация индекса»

Таким образом, сейчас у нас должно быть одно задание в новом субплане:

Субплан «EveryDayActivity»

В следующих статьях будет рассмотрено добавление оставшихся заданий в ежедневный субплан плана обслуживания.

«Стандартные отчеты» в пользовательском интерфейсе Management Studio

SQL Server Management Studio предоставляет минимальный необходимый набор стандартных отчетов для получения информации о размере базы данных/ее файлов/таблиц/индексов в режиме пользовательского интерфейса.

Доступ к этим отчетам может быть выполнен через «Обозреватель объектов» (Object explorer) → Правый клик мыши по базе данных → «Отчеты» (Reports) → «Стандартный отчет» (Standard reports)Стандартные отчеты по использованию дискового пространства

Отчет «Занято места на диске» (Disk Usage)

Отчет содержит общие сведения об использовании места на диске базой данных.

В отчете представлена информация следующего рода:

  • Общий объем, занятый на диске (Total space reserved)
  • Место, занятое файлами данных (Data files space reserved)
  • Место, занятое журналом транзакций (Transaction log space reserved)
  • Отражает графически процент пространств в составе файлов данных: индексов (index), данных (data), не выделенного (unallocated) и не используемого (unused)
  • Отражает графически процент примененного (used) и неиспользуемого (unused) пространства в составе журнала транзакций
  • Выводит записи событий автоматического увеличения (autogrow) и/или сжатия (autoshrink) для базы данных
  • Выводит информацию о месте на диске, используемом файлами данных

Отчет «Занято места на диске» (Disk Usage)

Отчет содержит подробные данные об использовании места на диске таблицами, расположенными в базе данных. Отличие этих двух отчетов заключается лишь в том что в отчете «By Top Tables» вывод происходит только для «верхних» (первых) 1000 таблиц.

В отчете представлена информация:

  • Количество записей в таблице базы данных (Records)
  • Размер зарезервированного пространства на диске (Reserved)
  • Размер данных на диске (Data)
  • Общий размер индексов таблицы на диске (Indexes)
  • Размер не используемого пространства (Unused)

Отчет «Использование дисковой памяти таблицей» (Disk Usage by Table)

Отчет «Использование дисковой памяти секцией» (Disk Usage by Partition)

Отчет содержит подробные данные об использовании места на диске индексом и секциями, расположенными в базе данных.

Хотел бы обратить Ваше внимание что в данном отчете неверно рассчитывается дисковое пространство по кластерному индексу. Для получения реально используемого дискового пространства кластерным индексом можно: из «объема, используемого всеми индексами таблицы» (указанном в отчете «Использование дисковой памяти таблицей») вычесть «объем всех не кластерных индексов» (по отчету «Использование дисковой памяти секцией»)

В отчете представлена информация:

В отчете представлена информация:

  • Число записей в индексе/секции (Records)
  • Зарезервированное пространство на диске (Reserved)
  • Используемое пространство на диске (Used)

Отчет «Использование дисковой памяти секцией» (Disk Usage by Partition)

Как работать на sql server

Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.

What can I do to prevent this in the future?

If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.

If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.

Another way to prevent getting this page in the future is to use Privacy Pass. You may need to download version 2.0 now from the Chrome Web Store.

Cloudflare Ray ID: 6fcc48d94524b6cc • Your IP : 178.175.133.133 • Performance & security by Cloudflare

SQL Server автоматически перестраивает индексы?

Автоматическое перестроение индексов не поддерживается ни в одной версии Microsoft SQL Server — причина в том, что перестроение индексов потенциально может быть очень дорогостоящей операцией и поэтому требует тщательного планирования и планирования.

Сколько длится ВАРЧАР? Размер параметра максимального размера (m) столбца VARCHAR может варьироваться от От 1 до 255 байт. Если вы размещаете индекс в столбце VARCHAR, максимальный размер составляет 254 байта. Вы можете хранить строки символов, которые короче, но не длиннее, чем указанное вами значение.

Что такое длина в phpMyAdmin?

CHAR = символы — используется для хранения значения строки символов фиксированной длины, максимальное количество символов равно 255. VARCHAR = символы переменной длины — используется для хранения буквенно-цифровых данных переменной длины и может хранить до 65,535 XNUMX символов. ТЕКСТ = используется для хранения больших объемов текста. DATE = будут храниться только даты.

Как изучить phpMyAdmin? Как работать с phpMyAdmin? Нажмите «Создать» (1), чтобы создать база данных и введите имя базы данных в поле «Создать базу данных» (2), а затем нажмите кнопку «Создать» (3). Мы можем создать любое количество баз данных. Введите имя таблицы, количество столбцов и нажмите «Перейти».

Как редактировать таблицу в MySQL?

Синтаксис для изменения столбца в таблице в MySQL (с использованием оператора ALTER TABLE): ALTER TABLE имя_таблицы MODIFY имя_столбца определение_столбца ; table_name. Название стола модифицировать.

Как отредактировать запись в MySQL? ОБНОВЛЕНИЕ MySQL

  1. Сначала укажите имя таблицы, данные которой вы хотите обновить, после ключевого слова UPDATE.
  2. Во-вторых, укажите, какой столбец вы хотите обновить, и новое значение в предложении SET. …
  3. В-третьих, укажите, какие строки следует обновить, используя условие в предложении WHERE.

Что означает ключ в MySQL?

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

Как выбрать место работы для Junior DBA

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

Вам очень повезёт, если вы сможете найти достойного наставника, тогда ваш карьерный рост будет стремительным. Если вы устраиваетесь на работу где нет других ДБА, то вам придётся самостоятельно проходить все сложности обучения и очень вероятно что это обучение будет сопровождаться авариями и другими сложностями, в таком случае будет полезно иметь знакомых, опытных администраторов БД, которым можно задать вопросы по телефону.

Чтобы стать Senior DBA вам необходимо постоянно развиваться. Вот несколько вариантов как вы можете это делать:

  1. Посещать курсы
  2. Посещать мероприятия
  3. Читать сайты и форумы
  4. Задавать вопросы на форумах и сайтах
  5. Смотреть обучающее видео
  6. Старайтесь делать на работе больше, чем вас просят (изучать каждую тему глубже)

Пора переходить к нашей теме.

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018   
44043   
35   

informa1555   

30
   

77

Рецепты для хворающих SQL-запросов

За прошедшее время вы уже воспользовались им более 6000 раз, но одна из удобных функций могла остаться незамеченной — это структурные подсказки, которые выглядят примерно так:

Прислушивайтесь к ним, и ваши запросы «станут гладкими и шелковистыми».

А если серьезно, то многие ситуации, которые делают запрос медленным и «прожорливым» по ресурсам, типичны и могут быть распознаны по структуре и данным плана.

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

Давайте чуть подробнее рассмотрим эти кейсы — как они определяются и к каким рекомендациям приводят.

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Что нужно знать начинающим администраторам БД:

  1. Модели восстановления (обязательная тема для любого кто планирует заниматься работой администратора баз данных. Эту тему надо понимать в полном объёме (FULL,LOG) (https://msdn.microsoft.com/ru-ru/library/ms189275.aspx) — FULL https://technet.microsoft.com/ru-ru/library/ms190217(v=sql.105).aspx — LOG https://technet.microsoft.com/ru-ru/library/ms191164.aspx
  2. После изучения моделей восстановления, обязательно проведите самостоятельное тестирование с полным и частичным восстановлением (Restore)
  3. Безопасность уровня БД и сервера
  4. Изучение лога ошибок
  5. Конфигурация и установка
  6. Простые запросы
  7. Базовые понятия производительности сервера (плохо ему или хорошо)
  8. Индексы и статистика
  9. CHECKDB
  10. Варианты отказоустойчивости (Log Shipping, Mirroring, Failover Cluser, AlwaysOn). Отказоустойчивость ни в коем случае не отменяет необходимость делать резервные копии

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия — Simple UI (обновлено 14.11.2019)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019   
74297   
286   

informa1555   

246
   

206

Консоль Внедренца v.3.6.2

Идея данной обработки заключается в создании простого, функционального и универсального инструментария для внедренцев и программистов 1С, который будет работать как в толстом клиенте на обычных и на управляемых формах, так и в тонком клиенте. Интерфейс и логика работы максимально идентичны у обычных форм и управляемых. Инструментарий включает в себя: Консоль кода, Консоль запросов, Консоль отчетов (СКД), Универсальную обработку объектов, Средства для работы с таблицами базы данных 1С, Редактирование регистров сведений базы, Инструмент по работе с табличными документами — загрузка данных из табличного документа.

1 стартмани

27.08.2018   
50796   
514   

evvakra   

42
   

181

Дефрагментация индекса (реорганизация или перестроение).

В процессе работы базы данных 1С Предприятия, в результате постоянной записи и удаления данных, образуются пустые (фрагментированные) области. По этой причине может увеличиваться бесполезный объем БД и замедляться скорость взаимодействия с ней.

Для устранения фрагментированных областей баз данных в MS SQL существует возможность проведения Реорганизации индекса и Перестроение индекса.

В чем разница между реорганизацией и перестроением?

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

При Реорганизации индекска происходит перестроение индексов в соответствии с логическим порядком. Этот способ наименее ресурсозатратный и является более предпочтительным для регулярного обслуживания баз данных.

В каких случаях требуется реорганизация индекса?

  • Уровень фрагментации от 5% до 30%, то проводим реорганизацию.
  • Фрагментация свыше 30% необходимо проводить перестроение индекса

Под выполнение этих задач очень подходит инструкция Transact-SQL со следующим содержимым:

DECLARE @SQL NVARCHAR(MAX)
DECLARE @MIN_IND_SIZE integer = 128
DECLARE @MIN_FRAGMENTATION_LEVEL integer = 10
DECLARE @CRITICAL_FRAGMENTATION_LEVEL integer = 30

DECLARE currentIndex CURSOR LOCAL READ_ONLY FORWARD_ONLY FOR
SELECT ‘ALTER INDEX ON ) + ‘]. ‘ +
CASE WHEN stat.avg_fragmentation_in_percent > @CRITICAL_FRAGMENTATION_LEVEL
THEN ‘REBUILD WITH (SORT_IN_TEMPDB = ON, ONLINE = ON)’
ELSE ‘REORGANIZE’
END + ‘;’
FROM (
SELECT stat., stat.index_id,
avg_fragmentation_in_percent = MAX(stat.avg_fragmentation_in_percent)
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, ‘DETAILED’) stat
WHERE stat.page_count > @MIN_IND_SIZE AND stat.index_id > 0
AND stat.avg_fragmentation_in_percent > @MIN_FRAGMENTATION_LEVEL
GROUP BY stat., stat.index_id
) stat
JOIN sys.indexes ind WITH(NOLOCK) ON stat. = ind.
AND stat.index_id = ind.index_id
JOIN sys.objects obj WITH(NOLOCK) ON obj. = stat.

OPEN currentIndex

FETCH NEXT FROM currentIndex INTO @SQL
WHILE @@FETCH_STATUS = 0 BEGIN
print @sql
EXEC sys.sp_executesql @SQL
FETCH NEXT FROM cur INTO @SQL
END

CLOSE currentIndex
DEALLOCATE currentIndex

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

DECLARE@SQL NVARCHAR(MAX)

DECLARE@MIN_IND_SIZE integer=128

DECLARE@MIN_FRAGMENTATION_LEVEL integer=10

DECLARE@CRITICAL_FRAGMENTATION_LEVEL integer=30

DECLAREcurrentIndex CURSOR LOCAL READ_ONLY FORWARD_ONLY FOR

SELECT’ALTER INDEX ON . ‘+

CASEWHEN stat.avg_fragmentation_in_percent>@CRITICAL_FRAGMENTATION_LEVEL

THEN’REBUILD WITH (SORT_IN_TEMPDB = ON, ONLINE = ON)’

ELSE’REORGANIZE’

END+’;’

FROM(

SELECT stat.object_id,stat.index_id,

avg_fragmentation_in_percent=MAX(stat.avg_fragmentation_in_percent)

FROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,’DETAILED’)stat

WHERE stat.page_count>@MIN_IND_SIZE ANDstat.index_id>

ANDstat.avg_fragmentation_in_percent>@MIN_FRAGMENTATION_LEVEL

GROUP BY stat.object_id,stat.index_id

)stat

JOIN sys.indexes ind WITH(NOLOCK)ON stat.object_id=ind.object_id

ANDstat.index_id=ind.index_id

JOIN sys.objects obj WITH(NOLOCK)ON obj.object_id=stat.object_id

OPEN currentIndex

FETCH NEXT FROM currentIndex INTO@SQL

WHILE@@FETCH_STATUS=BEGIN

print@sql

EXEC sys.sp_executesql@SQL

FETCH NEXT FROM cur INTO@SQL    

END

CLOSE currentIndex

DEALLOCATE currentIndex

Создаем вложенный план с названием “Дефрагментация индекса и обновление статистики” с расписанием раз в день в 4:00 и перетаскиваем в него из Панели элементов Задачу “Выполнение инструкции T-SQL“.

Вставляем в задачу приведенную выше инструкцию T-SQL.

Обновление статистики.

Обновление статистики в базах данных MS SQL, как и дефрагментация индекса, имеет большое значение для повышения производительности работы SQL сервера. Благодаря обновлению статистики SQL Server способен более эффективно выполнять планы запроса.

Выбираем на панели элементов Задача “Обновление статистики” и добавляем ее во вложенный план “Дефрагментация индекса и обновление статистики”.

  • Базы данных: все пользовательские базы данных;
  • Обновить: вся собранная статистика;
  • Тип просмотра: полный просмотр.

При помощи стрелки связываем условием выполнение задачи по обновлению индекса с задачей по дефрагментации. Таким образом в случае успешного выполнения дефрагментации будет проведено обновление статистики.

Не забываем сохранить созданный план обслуживания…

… и убедиться, что запущен Агент SQL Server.

Notes

Если вы подозреваете повреждение индекса в пользовательской таблице, вы можете просто перестроить этот индекс или все индексы в таблице, используя или .

Дела обстоят сложнее, если вам нужно восстановить после повреждения индекса в системной таблице

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

использование индексов для поиска в системном каталоге.

Один из способов сделать это — выключить сервер и запустить однопользовательский сервер PostgreSQL с параметром , включенным в его командную строку. Затем могут быть выданы , , или , в зависимости от того, сколько вы хотите восстановить. В случае сомнений используйте , чтобы выбрать реконструкцию всех системных индексов в базе данных. Затем выйдите из сеанса однопользовательского сервера и перезапустите обычный сервер. См. Справочную страницу postgres для получения дополнительной информации о том, как взаимодействовать с однопользовательским серверным интерфейсом.

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

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

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

Для переиндексации отдельного индекса или таблицы необходимо быть владельцем этого индекса или таблицы. Для переиндексации схемы или базы данных необходимо быть владельцем этой схемы или базы данных

Обратите особое внимание на то, что, таким образом, пользователи, не являющиеся суперпользователями, могут перестраивать индексы таблиц, принадлежащих другим пользователям. Однако в качестве особого исключения, когда , или выдается не суперпользователем, индексы в общих каталогах будут пропущены, если только пользователь не владеет каталогом (что обычно не так)

Конечно, суперпользователи всегда могут переиндексировать что угодно.

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

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

Если , или используются с , системные отношения пропускаются и будет сгенерировано одно . Индексы в таблицах TOAST перестраиваются, но не перемещаются в новое табличное пространство.

PostgreSQL. Добавляем not null constraints в большие таблицы

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

Одной из команд, с которой надо быть осторожным на таблицах с большим количеством записей, является добавление not null constraint на столбец. При добавлении данного constraint PostgreSQL приобретает access exclusive lock на таблицу, в результате чего другие сессии не могут временно даже читать таблицу; затем БД проверяет, что в столбце действительно ни одного null нет, и только после этого вносятся изменения. Под катом я рассмотрю различные варианты, как можно добавить not null constraint , лоча таблицу на минимально возможное время или даже не лоча ее совсем.

Подсистема «Показатели объектов»

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

2 стартмани

06.03.2021   
12843   
7   

pila86   

16
   

29

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Вадлейд
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: