что такое скрипты и для чего они нужны

Что такое скрипты и с чем их едят — Lua & C++

Добрый день, Хабрахабр!
Решил написать этот топик на тему скриптов

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Что нужно знать?

Но есть способ, на голову выше — использование скриптов.

Решение проблемы

«Окей, для таких дел хватает обычного файла с описанием характеристиков игрока. Но что делать, если в бурно развивающемся проекте почти каждый день приходится немножко изменять логику главного игрока, и, следовательно, много раз компилировать проект?»
Хороший вопрос. В этом случае нам на помощь приходят скрипты, держащие именно логику игрока со всеми характеристиками либо какой-либо другой части игры.
Естественно, удобнее всего держать, логику игрока в виде кода какого-нибудь языка программирования.
Первая мысль — написать свой интерпретатор своего скриптового языка, выкидывается из мозга через несколько секунд. Логика игрока определенно не стоит таких жутких затрат.
К счастью, есть специальные библиотеки скриптовых языков для С++, которые принимают на вход текстовый файл и выполняют его.

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

Как это работает?

Прежде чем начать, важно понимать, как работает скриптовый язык. Дело в том, что в скриптовых языках есть очень мало функций, при наличии конструкций for, while, if, прочих.
В основном это функции вывода текста в консоль, математические функции и функции для работы с файлами.
Как же тогда можно управлять игроком через скрипты?

Мы в С++-программе делаем какие-либо функции, «регистрируем» их под каким-нибудь именем в скрипте и вызываем в скрипте. То есть если мы зарегистрировали функцию SetPos(x,y) для определения позиции игрока в С++-программе, то, встретив эту функцию в скрипте, «интерпретатор» из библиотеки скриптового языка вызывает эту функцию в С++-программе, естественно, с передачей всех методов.
Удивительно, да? 🙂

UPD: Внимание! Один юзер обратился мне с мейлом, что, когда я заливал код, я не полностью устранил все ошибки — habrahabr.ru/post/196272/#comment_6850016
В коде с позволения хабра проникли жучки
Замените участки кода вроде

И еще вместо lua_CFunction проскакивает lua_cfunction
Спасибо!

Я готов!

Когда вы поняли преимущества скриптовых языков программирования, самое время начать работать!
Скачайте из репозитория на гитхабе (низ топика) lib’у и includ’ы Lua, либо возмите их на официальном сайте.

Создаем консольный проект либо Win32 (это неважно) в Visual Studio (у меня стоит версия 2012)

Заходим в Проект->Свойства->Свойства конфигурации->Каталоги VC++ и в «каталоги включения» и «каталоги библиотек» добавьте папку Include и Lib из репозитория соответственно.

Теперь создаем файл main.cpp, пишем в нем:

Как вы догадались, у меня консольное приложение.

Теперь переходим к кодингу

Обещаю, что буду тщательно объяснять каждый момент

У нас за скрипты будет отвечать класс Script. Я буду объявлять и одновременно реализовывать функции в Script.h/.cpp
Создаем Script.cpp и пишем в нем

Создаем Script.h и пишем в нем

После 2 строчки и перед #endif мы определяем класс скриптов
Этот код пишется для предотвращения взаимного включения файлов. Допустим, что файл Game.h подключает Script.h, а Script.h подключает Game.h — непорядок! А с таким кодом включение выполняется только 1 раз

Теперь пишем внутри этого кода вот это

Первая строчка подключает сам lua.lib из архива.
Для чего нужен extern «C»? Дело в том, что lua написан на С и поэтому такой код необходим для подключения библиотек.

Дальше идет подключение хорошо известных многим файлов для работы с консолью

Теперь приступим к определению класса

Самый главный объект библиотеки Lua для C++ — lua_State, он необходим для выполнения скриптов

Дальше идут публичные функции

Эта функция инициализирует lua_State

Его определение в Script.cpp

Первой строчкой мы инициализируем наш lua_State.
Потом мы объявляем список «подключенных библиотек». Дело в том, что в «чистом» виде в луа есть только функция print(). Для математических и прочих функций требуется подключать специальные библиотеки и потом вызывать их как math.foo, base.foo, io.foo. Для подключения других библиотек добавьте в lualibs, например, <«math», luaopen_math>. Все названия библиотек начинаются с luaopen_. в конце lialibs должен стоять

Просто используем lua_close()

А эта функция выполняет файл. На вход она принимает название файла, например, «C:\\script.lua».
Почему она возвращает int? Просто некоторые скрипты могут содержать return, прерывая работу скрипта и возвращая какое-нибудь значение.

Как вы видите, я выполняю скрипт и возвращаю int. Но возращать функция может не только int, но еще и bool и char*, просто я всегда возвращаю числа (lua_toboolean, lua_tostring)

Теперь мы сделаем функцию, регистрирующую константы (числа, строки, функции)

Мы действуем через шаблоны. Пример вызова функции:
Ее определение

Для каждого возможного значения class T мы определяем свои действия.
*Капитан* последнее определение — регистрация функции
Функции, годные для регистрации, выглядят так:

Где n — количество возвращаемых значений. Если n = 2, то в Луа можно сделать так:

Читайте мануалы по Луа, если были удивлены тем, что одна функция возвращает несколько значений 🙂

Следующая функция создает таблицу для Луа. Если непонятно, что это значит, то тамошная таблица все равно что массив

Следующая функция регистрирует элемент в таблице.

Если вы не знаете Lua, вы, наверное, удивлены тем, что в один массив помещается столько типов? 🙂
На самом деле в элементе таблицы может содержаться еще и таблица, я так никогда не делаю.

Наконец, заполненную таблицу нужно зарегистрировать

Ничего особенного нет

Следующие функции предназначены в основном только для функций типа int foo(lua_State*), которые нужны для регистрации в Луа.

Первая из них — получает количество аргументов

Эта функция нужна, например, для функции Write(), куда можно запихать сколь угодно аргументов, а можно и ни одного
Подобную функцию мы реализуем позже

Следующая функция получает аргумент, переданный функции в скрипте

Можно получить все типы, описывавшиеся ранее, кроме таблиц и функций
index — это номер аргумента. И первый аргумент начинается с 1.

Наконец, последняя функция, которая возвращает значение в скрипт

Боевой код

Пора что-нибудь сделать!
Изменяем main.cpp

Компилируем. Теперь можно приступить к тестированию нашего класса

Помните, я обещал сделать функцию Write? 🙂
Видоизменяем main.cpp

А в папке с проектом создаем файл script.lua

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Компилируем и запускаем проект.

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Теперь изменяем script.lua

Теперь программа будет выводить по 2 строки («\n» — создание новой строки), ждать нажатия Enter и снова выводить строки.

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Экспериментируйте со скриптами!

Вот пример main.cpp с функциями и пример script.lua

Полезные советы
Вопросы и ответы

Источник

Что такое скрипт

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Общее понимание скрипта

С английского языка слово «скрипт» переводится как сценарий, из чего уже можно сделать определенные выводы. Это набор команд, то есть строк кода, которые вкупе выполняют конкретную задачу. Для ее выполнения и создаются скрипты. Они могут быть как очень маленькими по объему и отвечать за запуск каких-то простых служб операционной системы, так и объемными, сравнивая переменные и выводя результат на сайте.

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

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

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

История появления скриптов

Для общего развития предлагаю немного окунуться в историю появления скриптов и взглянуть на то, какими они были раньше. Начали применять их под управлением семейства операционных систем Unix еще 50 лет назад. Одной из первых командных оболочек была sh, в ней использовались shell scripts, которые позволяли выполнять самые разнообразные задачи на компьютере.

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Ниже вы видите небольшой код, предназначенный для конвертирования изображения из JPG в PNG:

Обозначения после знаков # являются комментариями и не относятся к скрипту, они только описывают для пользователя действия. Этот пример был взят из открытой библиотеки и отлично показывает, что всего несколько строк кода позволяют обработать изображение, сменив его формат на другой. Сейчас скрипты могут быть более массивными и выполнять задачи на уровень сложнее.

Сферы использования скриптов

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

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

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

Если говорить о Windows, то в ней вы можете найти встроенный инструмент CMD (PowerShell), который и предназначен для запуска скриптов, хранящихся в формате BAT.

Самостоятельное написание и применение скриптов

Разберем самостоятельное написание и применение скриптов на примере Windows. Допустим, у вас стоит задача проверить стабильность соединения с конкретным сайтом без запуска браузера. Для этого есть одна полезная команда, запускаемая через Командную строку. А если нужно еще сформировать и отчет о результатах проверки, не совсем удобно будет вводить несколько разных команд по очереди, особенно в тех случаях, когда задача выполняется раз в несколько дней или чаще. Тогда создается BAT-файл с таким содержимым:

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

Источник

Что такое скрипты и как ими пользоваться

В этой статье мы рассмотрим такое понятие как скрипт. Что такое скрипты, как ими пользоваться, где применять и, конечно, примеры скриптов javascript для сайта.

Что такое скрипты?

Общее понятие таково: скриптом называется программа или программный файл-сценарий. Ну, а если сказать проще, то скриптом будет называться практически любая исполняемая процедура.

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

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

Бывают скрипты простыми в исполнении, как например «выпадающее меню» или кнопка «назад-вперёд» или «вверх» и сложными, как например «счётчик», «гостевая книга» и другие варианты их использования.

Если говорить об скриптах в рассмотрении интернет-технологий, то понятие «скрипт» можно охарактеризовать, как исполняемую процедуру, которая запускается на выполнение со стороны сервера по запросу, поступившему с конкретно определенной веб-страницы.

Ну да ладно, это всё присказка, нас ждет сказка )

Javascript для сайта — примеры скриптов javascript

Открытие нового окна javascript

Самый простой и часто применяемый скрипт

URL — URL откpываемого pесypса. Может быть ссылкой на любой понимаемый Обозревателем докyмент (в том числе и на локальной машине).

Parameter — паpаметpы нового окна (в виде текстовой стpоки). Записываются без пробелов чеpез запятyю:

Toolbar=[yes|no|1|0] — Присутствие Панели инструментов
Location=[yes|no|1|0] — Присутствие адреса
Directories=[yes|no|1|0] — Присутствие ссылок
Status=[yes|no|1|0] — Присутствие статустной строки
Menubar=[yes|no|1|0] — Присутствие меню
Scrollbars=[yes|no|1|0] — Присутсвие прокрутки
Resizable=[yes|no|1|0] — Изменение размера окна мышью
Width=[pазмеp в пикселях] — Высота окна
Height=[pазмеp в пикселях] — Ширина окна

Источник

Что такое скрипт сайта

13 октября 2020 Опубликовано в разделах: Азбука терминов. 111556

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны
Путешествуя по просторам веб-ресурсов в сети, можно встретить сайты, которые весьма активно реагируют на любые задаваемые действия без продолжительной перезагрузки. Пользоваться такими площадками очень удобно. Всплывающие блоки меню, ссылки, открывающие новые окна, самозаполняющиеся формы, к которым так привыкли современные юзеры, и многое другое — являются функциональной динамикой. Однако реализовать подобные возможности только с помощью HTML и CSS нереально. Поэтому всем, кто хотя бы поверхностно интересуется программированием, важно разобраться, что такое скрипт страницы простыми словами, для чего это нужно и как он работает.

Определение

Наименование script известно веб-пользователям достаточно давно. Впервые о нем услышали еще во время появления известной на тот момент операционной системы Unix, наследным продуктом которой сейчас выступает популярная на хостинг-платформах Linux.

В переводе с английского данный термин означает «сценарий» и подразумевает комплекс разнообразных команд, предназначенных для осуществления определенного действия. Командный набор формируется в виде файла с текстовым содержимым, позволяющим получить допуск к запуску программы. Его активация происходит в автоматическом режиме в установленный период, полностью соответствующий логике и функциональному назначению веб-ресурса. При этом пользователю нет необходимости выполнять какие-либо дополнительные манипуляции.

Проще говоря, script — это четко прописанная последовательность действий. А задают ее с помощью скриптовых веб-языков программирования, создание которых ориентировано на выполнение функциональных задач. Наиболее распространенные из них: JavaScript, Python, Perl, PHP и т. п. Благодаря им можно значительно повысить эффективность работы, к примеру, интернет-сервиса или инструмента на веб-площадке.

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

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

Чтобы сделать сервис активным (позволить посетителю отправить отзыв), предстоит сформировать соответствующую последовательность действий. Только при таких условиях произойдет действие. Интернет-пользователю удастся ввести текст и увидеть результат произведенных манипуляций.

Параллельно можно составить дополнительный script (или расширить возможности предыдущего), с помощью которого юзер будет получать оповещения об отправке-доставке сообщений. Если сделать все без ошибок, пользователь увидит краткий отчет «комментарий отправлен».

Чем отличаются плагины и скрипты

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

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

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

В качестве примера стоит привести один из наиболее распространенных веб-плагинов — Adobe Flash Player. После его установки интернет-браузеры получают возможность демонстрировать нам видеоролики и другой флеш-контент. Без AFP любой браузер сможет только открыть нужную страницу и взаимодействовать с сервисами в режиме основного предназначения. Но тот же просмотр видео с Ютуба пользователю будет недоступен.

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

Что такое script: основные разновидности

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Все сценарии подразделяются на два типа:

Распространенные языки написания

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

JScriptЭто специальный комплекс формальных правил от компании Microsoft, согласно которым составляются веб-программы. Синтаксические принципы построения данного языкового варианта во многом схожи с распространенной версией Ява Скрипт. Однако, кроме добавления клиентских сценариев на интернет-площадки, появились и добавочные функции:

Характеризуется в основном как практичный и надежный, но не слишком красивый язык.

AngelScriptЭто своего рода движок, с помощью которого доступна регистрация функционала приложений, их свойств, видов, подходящих для работы в скриптах. Прекрасно подходит для одновременного взаимодействия дополнения с различными разновидностями сценариев. AS способен обрабатывать любое количество script-контекстов, хотя обычно достаточно одного. Контексты поддерживают процесс исполнения, так что в веб-приложении удается выполнить такие действия, как одновременное проведение веб-алгоритмов и сопрограммы. Плюсом ко всему, предоставляет интерфейс для изъятия данных периода выполнения, требуемых для отладки.

Что такое скрипт и где его применяют

Веб-язык JavaScript активирован во всех распространенных версиях интернет-браузеров. Благодаря этому, каждый из них адаптирован к пониманию данной языковой разновидности в последовательностях. Выполнение кодировки производится в тот момент, когда юзер взаимодействует со страницами ресурса. Кроме того, script не менее успешно применяется для работы на сервере. При условии, что на нем имеется интерпретатор Ява. Таким образом, выполнение сценариев возможно как с клиентской стороны, так и с серверной.

Область применения весьма обширна. Существует целый ряд направлений, по которым их можно использовать:

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Преимущества

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

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Недостатки

Говоря о многочисленных достоинствах, нельзя сбрасывать со счетов и имеющиеся минусы применения технологии. В их числе следует упомянуть:

Нюансы работы скриптов на веб-сайтах

CGI script — это наиболее популярная разновидность программы, предназначенной для выполнения на веб-сервере. Действие активируется в момент поступления клиентского запроса (посетитель, произвел на ресурсе определенные манипуляции). CGI-действие по ряду параметров можно сравнить с такими распространенными интернет-программами, как MS Word или Explorer.

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

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

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

Последовательность использования

Взаимосвязанная цепочка действий при установке выглядит обычно таким образом:

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

Что значит для продвижения

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

что такое скрипты и для чего они нужны. Смотреть фото что такое скрипты и для чего они нужны. Смотреть картинку что такое скрипты и для чего они нужны. Картинка про что такое скрипты и для чего они нужны. Фото что такое скрипты и для чего они нужны

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

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

Подводя итог, отметим важную деталь: скрипт (script) это то, что не оказывает непосредственного влияния на SEO-продвижение веб-ресурса, но при этом в состоянии оказать воздействие на значимые для SEO факторы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *