Что такое mps на роутере

Скорее всего, большинство пользователей даже не догадываются, что на их роутерах есть такая технология как WPS (или QSS). Если коротко и на простом языке, то WPS (Wi-Fi Protected Setup) – это технология, которая разработана специально для упрощения подключения устройств к Wi-Fi сети. С помощью WPS можно подключать устройства к Wi-Fi роутеру без необходимости вводить пароль от беспроводной сети. Что очень удобно.

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

Покажу, как подключать разные устройства к Wi-Fi сети без ввода пароля (ноутбуки, мобильные устройства на Android), и как настроить (включить, или отключить) WPS на разных роутерах (TP-LINK, ASUS, D-LINK, ZyXel).

Для чего нужна кнопка WPS на роутере и как ей пользоваться?

Кнопка нужна для активации технологии WPS. Есть такая кнопка практически на всех маршрутизаторах. Подписана она как правило WPS. Выглядит примерно вот так (на роутере ASUS):

Кнопка WPS на роутере ASUS

Не редко, кнопка совмещена с функцией сброса настроек маршрутизатора. Очень часто такое встречается на маршрутизаторах от TP-LINK.

Будьте осторожны, не держите долго нажатой кнопку «WPS/RESET». Подержав ее примерно 5 секунд, настройки вашего роутера будут сброшены к заводским.

Кнопка активации WPS на TP-LINK

А на новых роутерах от компании ZyXel, кнопка включения функции WPS выглядит вот так:

Кнопка Wi-Fi Protected Setup на ZyXEL Keenetic

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

Активируется функция одним нажатием на кнопку. В случае с моим роутером ASUS, нужно кнопку подержать 1 секунду. Когда функция WPS активируется, то на маршрутизаторе скорее всего начнет мигать индикатор. На роутере ASUS мигает индикатор питания. На некоторых маршрутизаторах есть отдельный индикатор, как правило, в виде замка. Функция активируется на некоторое время, затем индикатор перестает мигать. Ее можно активировать повторно, просто нажав на кнопку.

Как подключится к Wi-Fi без ввода пароля по WPS (QSS)?

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

Способы подключения к Wi-Fi сети без ввода пароля (по WPS):

  • Когда кнопка WPS есть на маршрутизаторе, и на устройстве, которое подключаете. Например, внешний USB Wi-Fi приемник, то достаточно нажать кнопку на обоих устройствах, и соединение будет установлено.
  • Если на устройстве, которые вы хотите подключить к Wi-Fi нет механической кнопки, а ее нет на ноутбуках, смартфонах, планшетах и т. д., то WPS активируется кнопкой на роутере, а на компьютере, например, подключение происходит автоматически. На мобильных устройствах, в настройках просто выбираем подключение с помощью WPS. Все зависит от конкретного устройства.
  • Бывают такие модели маршрутизаторов, на которых нет кнопки WPS. Но, это не значит, что технология не поддерживается. В любом случае, активировать эту технологию можно через настройки роутера.
  • Подключение с использование PIN кода. В настройках функции WPS задается специальный PIN код, с помощью которого так же можно подключать устройства. Просто выбрав соответствующий способ подключения, и указав код.

Для подключения к Wi-Fi описанными ниже способами, на вашем маршрутизаторе должна быть включена функция WPS. Она включена по умолчанию, но на моем D-LINK была выключена. Так что, если вы ничего не отключали, то все будет работать. Если же что-то не получается, то нужно проверить настройки. Как это сделать, я напишу ниже в статье.

Подключаем к Wi-Fi компьютер (ноутбук) на Windows 7, 8, 10 по WPS

Обновление: подробная инструкция по подключению к Wi-Fi с помощью WPS в Windows 11.

Здесь все очень просто. Открываем на компьютере список доступных для подключения сетей, выбираем необходимую сеть, и нажимаем на кнопку «Подключение».

Появится окно с вводом пароля. А ниже, должно быть сообщение «Можно так же подключиться, нажав кнопку на маршрутизаторе». Возможно, придется подождать пару секунд, пока это сообщение появится.

Подключение ноутбука на Windows 7 к Wi-Fi без ввода пароля (WPS)

Теперь, нажимаем кнопку WPS на роутере, и компьютер подключится к Wi-Fi без ввода пароля.

Настройка WPS подключения в Windows 7, 8, 10

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

Если у вас адаптер с кнопкой WPS (QSS)

Например, у меня на роутере ASUS есть кнопка WPS, а на USB Wi-Fi адаптере TP-LINK кнопка QSS.

Аппаратное подключение по QSS

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

Подключение по WPS смартфонов и планшетов на Android

Что бы подключится к Wi-Fi без ввода пароля на Android, нужно зайти в настройки Wi-Fi, выбрать расширенные настройки, затем выбрать подключение с использованием WPS, и нажать кнопку на роутере. Смартфон, или планшет автоматически подключится к Wi-Fi сети.

C0HNEEedoRY

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

Даже при подключении к Wi-Fi телевизора Philips (Android TV), можно использовать технологию WPS.

Что касается iOS (iPhone, iPad и т. д.), то насколько я понял, там нет поддержки WPS. Если я ошибаюсь, если вы знаете, то напишите мне в комментариях.

Как включить, отключить и настроить WPS (QSS) на роутере?

Давайте рассмотрим основные настройки технологии Wi-Fi Protected Setup на маршрутизаторах разных производителей. Настроек там практически нет. В основном, это отключение технологии (так как она включена по умолчанию), и смена PIN кода.

На маршрутизаторах TP-LINK

Заходим в настройки маршрутизатора, и переходим на вкладку «WPS». Если не знаете как зайти в панель управления, то смотрите эту инструкцию.

Настройка WPS (QSS) на TP-LINK

Управление WPS на маршрутизаторах ASUS

Если у вас роутер ASUS, то заходим в настройки по адресу 192.168.1.1, переходим на вкладку «Беспроводная сеть» – «WPS».

Управление WPS на ASUS

Быстрая настройка Wi-Fi (WPS) на ZyXEL Keenetic

Достаточно в настройках открыть вкладку «Wi-Fi сеть». Там вы увидите необходимые настройки.

Настройка WPS на ZyXel

Wi-Fi Protected Setup на D-LINK

Заходим в панель управления D-LINK, переходим на вкладку «Wi-Fi» – «WPS». Кстати, как оказалось, на маршрутизаторах D-LINK эта технология по умолчанию отключена. Поэтому, ее нужно включить.

Управление Wi-Fi Protected Setup на D-LINK

Ну и не забывайте сохранять настройки.

Выводы

С помощью WPS (QSS), можно действительно быстро подключить устройство к Wi-Fi без ввода пароля. Технология работает, и очень простая в использовании. Лично я, только несколько раз пользовался этой фишкой. Нет необходимости часто подключать новые устройства, да и пароль ввести не сложно.

Кстати, если вы не пользуетесь функцией WPS, то ее желательно отключить. Честно говоря, не знаю почему, но уже несколько раз встречал информацию, что отключать ее желательно в целях безопасности. Хотя, думаю, что это полная ерунда. Главное, что бы вам было удобно пользоваться беспроводной сетью, подключать новые устройства и т. д.

На чтение 8 мин Просмотров 20.8к.

Андрей Корж

Андрей Корж

Системный администратор, специалист по оптимизации программного обеспечения и сетевых технологий

Большая часть последних моделей маршрутизаторов, которые оснащены Wi-Fi, имеют режим WPS. Для чего нужна кнопка WPS на роутере, как правильно ее применять — об этом поговорим далее.

маршрутизатор

Содержание

  1. Что такое WPS
  2. Преимущество и безопасность
  3. Подключение
  4. На подключаемом устройстве есть кнопка
  5. Подключение компьютера или ноутбука
  6. Подключение смартфона или планшета
  7. Включение и отключение функции на роутере
  8. TP-Link
  9. ASUS
  10. Zyxel Keenetic
  11. D-Link
  12. Почему не стоит оставлять функцию включенной

Что такое WPS

WPS на роутере – это инновация, упрощающая процесс соединения по беспроводной связи. Расшифровывается как Wi-Fi Protected Setup (защищенная настройка Wi-Fi). Функция может называться иначе, например, QSS — Quick Security Setup (быстрая безопасная установка соединения), по сути это то же самое.

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

Беспроводная сеть на адаптере сопровождается следующими настройками:

  • Изменение названия сети и пароля;
  • Задача требуемых настроек через интерфейс маршрутизатора;
  • Раздача паролей каждому пользователю беспроводного пространства и их смена.

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

zyxel

Отмечаем, что сегодня режим wps откорректирован по мере своих возможностей, поэтому корректность работы дополняется нетривиальными настройками девайсов клиентов с «древним» или несовместимым с режимом ПО. Зачастую Wi-Fi настраивается обычным стандартным методом вручную.

Преимущество и безопасность

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

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

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

тп линк

Речь идет о маршрутизаторах, которые имеют возможность аппаратного подключения. При отсутствии режима однозначно разбираемся в настройках, производим подключение через личный кабинет девайса. Для клиентов требуется ввод пароля PIN. Если говорить о скорости передачи данных, то разницы — с WPS или без — практически нет. Если говорить простыми словами, то WPS работает по подобию Wi-Fi, только для установки соединения применяется более короткий путь.

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

Для большинства устройств предусмотрено подключение с использованием ПИН. Этот способ более уязвимый по сравнению с другими  методами предоставить Wi-FI клиенту. Код состоит только из 8 цифр и имеет предел в количестве возможных вариаций пароля. Его взлом осуществляется подбором. Соединение WPS не отличается высокой степенью безопасности. Для качественной обороны сети от взлома пользуемся более надежными методами предоставления доступа к сети.

Подключение

Для запуска технологии WPS требуется всего одно нажатие на кнопку. Практически на каждом современном беспроводном адаптере вай-фай есть такая кнопка, расположенная сверху, спереди или сзади на устройстве.

подключение

Некоторые версии роутеров последних лет совмещают кнопку WPS Reset. Это неудобно, поскольку требуется соблюдать время зажатия (для включения WPS ждем 2-3 секунды, а для сброса настроек роутера – 6-9 секунд). Если передержать клавишу, придется с нуля делать каждую настройку. Для того, чтобы подключить любое устройство к роутеру, используя ВПС, разберем несколько методов.

На подключаемом устройстве есть кнопка

Если у подключаемого устройства есть кнопка WPS, нажимаем на нее и проделываем то же самое на Wi-Fi адаптере. Спустя небольшое время появится подключение. Если кнопки на устройстве нет, на персональных компьютерах или ноутбуках, смартфонах и планшетах сделать такое соединение невозможно.

Подключение компьютера или ноутбука

Рассмотрим ОС Windows. Для установки соединения по WPS открываем сетевые подключения и выбираем сеть. После этого в окне для ввода кода нажимаем на значок WPS рядом с текстом «Также можно подключиться, нажав кнопку на маршрутизаторе». В других случаях соединение настраивается не сразу – ждем некоторое время. Каждая версия Windows отображает свои надписи и настройки, но принцип остается тот же. Нажимаем левой кнопкой мыши на значок WPS и на клавишу на адаптере. Спустя некоторое время девайсы установят соединение самостоятельно.

Для Windows 10 инструкция следующая:

  1. Значок «Сеть» находится в нижней правой части экрана. Открываем его (своеобразный компьютер, а на ноутбуках это значок Wi-Fi).
  2. Подтверждаем визуально, что Wi-Fi включен.
  3. В открывшемся списке доступных сетей отмечаем местную.
  4. Если необходимо после каждого включения подключаться к этой сети автоматически, устанавливаем маркер «Подключаться автоматически».
  5. Нажимаем на «Подключение».
  6. После этого нажимаем на кнопку ВПС на адаптере.

подключение виндовс

Если роутер имеет кнопку, гарантировано быстрое и удобное подключение к сети. В этом случае не требуется указывать каждому новому пользователю пароль от Wi-Fi. Находим нужную сеть и нажимаем на кнопку.

Подключение смартфона или планшета

Для подключения смартфона или планшета используется аналогичный принцип. В настройках Wi-Fi открываем все доступные сети. В этом меню нажимаем на иконку WPS. Для каждой версии Android меню и кнопки выглядят по-разному.

Если используется смартфон Samsaung Galaxy S8, то такая процедура выглядит следующим образом. Открываем настройки и выбираем меню «Подключения». Открываем Wi-Fi и визуально оцениваем его работоспособность. Далее открываем меню в виде трех точек и нажимаем на «Дополнительно».

подключение мобилки

Внизу экрана нажимаем «Еще» для открытия всех возможных пунктов, среди которых выбираем «кнопка WPS».

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

Отмечаем, что смартфоны под управлением iOS не поддерживают функцию WPS.

Некоторые устройства предоставляют доступ к смене назначения этой кнопки. Если рассмотреть производителя Asus, то здесь на маршрутизаторе предусмотрена такая кнопка, но она лишь включает и отключает Wi-Fi. Работа беспроводной сети производится в стандартном режиме.

Включение и отключение функции на роутере

Некоторые роутеры физически не имеют кнопку ВПС, однако сама технология поддерживается такими беспроводными маршрутизаторами. Далее рассмотрим, как произвести подключение устройств к wi-fi сети через WPS, если отсутствует кнопка на роутере.

TP-Link

Если на роутере TP-Link кнопка отсутствует, открываем веб-интерфейс маршрутизатора и нажимаем на вкладку WPS/Функция QSS. Инструкция по заходу в панель управления роутером TP-Link представлена здесь.

тп линк

При новой версии прошивки:

новый интерфейс тплинк

По умолчанию эта технология всегда включена и для ее выключения нажимаем на кнопку «Disable WPS/Отключить». Программное подключение производится по средствам PIN-кода, который указывается в нижней части устройства. Чаще всего это комбинация из 8 цифр. В этих настройках доступен просмотр ПИН-кода, генерация новых значений.

ASUS

Принцип настройки ВПС на Асус аналогичный. Заходим в веб-интерфейс роутера по адресу в строке браузера 192.168.1.1. Открываем вкладку «Беспроводная сеть — WPS» и настраиваем свои параметры.

впс асус

Zyxel Keenetic

Чтобы настроить WPS на роутере Zyxel Keenetic, надо действовать следующим образом. В веб-интерфейсе открываем вкладку «Wi-Fi» включаем нужный режим. Чтобы отключить WPS на роутере, действуем аналогично.

zyxel keenetic

D-Link

Открываем панель управления маршрутизатором, где находим меню «WPS Wi-Fi», чтобы включить WPS. В открывшейся вкладке включаем технологию, поскольку это устройство оставляет ее отключенной по умолчанию.

d link web

Обязательно сохраняем все настройки. Кстати, роутеры Ростелеком также поддерживают такую функцию.

Почему не стоит оставлять функцию включенной

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

MPS – что это такое и как оно работает

На чтение 4 мин Опубликовано Обновлено

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

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

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

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

Содержание

  1. МПС: суть и функции мониторинга периферийного оборудования
  2. Периферийное оборудование: что входит в это понятие
  3. Зачем нужен мониторинг периферийных устройств?

МПС: суть и функции мониторинга периферийного оборудования

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

Основные функции МПС включают:

  1. Онлайн-мониторинг состояния периферийного оборудования. МПС позволяет получать информацию о работе устройств в режиме реального времени, показывать и анализировать такие параметры, как уровень чернил в принтере, температура сканера, состояние картриджей и другие. Это помогает оперативно устранять возникающие проблемы или предотвращать их появление.
  2. Оповещение о неисправностях. МПС мониторит работу устройств, определяет неисправности и предоставляет оператору информацию о возникших проблемах. Например, при низком уровне чернил в принтере, МПС может отправить оповещение на почту или на мобильное устройство оператора, что позволяет быстро реагировать и принимать меры.
  3. Управление процессом обслуживания и ремонта. МПС позволяет отслеживать сроки службы устройств, планировать проведение профилактических работ, контролировать замену расходных материалов. Это позволяет снизить количество непредвиденных поломок и сбоев.
  4. Сбор и анализ данных по работе периферийного оборудования. МПС позволяет собирать информацию о работе устройств и анализировать данные, чтобы оптимизировать использование оборудования, выявить причины проблем и предложить решения для их устранения.

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

Периферийное оборудование: что входит в это понятие

К периферийному оборудованию относятся:

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

Все эти компоненты позволяют пользователям полноценно использовать компьютер и осуществлять различные задачи.

Зачем нужен мониторинг периферийных устройств?

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

Мониторинг периферийных устройств позволяет:

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

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

Что такое маршрутизатор и WPS

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

Роутер (от англ. router) или маршрутизатор — это устройство, которое распределяет сигнал от провайдера по технике с доступом к интернету.

Подробнее о том, как именно он работает, мы уже говорили в статье «Что такое роутер». Там же упоминали и его дополнительную функцию — WPS. Поговорим о ней подробнее.

WPS (Wi-Fi Protected Setup) в переводе с английского означает «Защищённая настройка Wi-Fi». Это особая технология, которая позволяет быстро настроить беспроводную сеть и подключаться к роутеру, не вводя пароль.

Пока звучит небезопасно. Но на самом деле это полезная функция. WPS может пригодиться, когда, например, нет времени искать записанный в блокноте пароль от Wi-Fi. И всё же это не значит, что при активном WPS кто угодно сможет подключиться к вашему роутеру без пароля. Но об этом — чуть дальше.

Стартуй в программировании прямо сейчас

Реши свою первую настоящую задачу на JavaScript и поделись крутым результатом с друзьями

Стартуй в программировании прямо сейчас

Как активировать WPS на роутере

Итак, вы изучили коробку от маршрутизатора и поняли, что у него есть функция WPS. Но не торопитесь скорей её опробовать — она может быть неактивна. Включить её можно в настройках роутера.

Чтобы открыть настройки, зайдите в браузер и введите в поисковую строку IP маршрутизатора. Он указан на задней панели устройства, рядом с блоком портов. Обычно это 192.168.0.1.

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

Страница входа в настройки роутера

Когда вы попадёте в кабинет, найдите слева раздел WPS. Тогда откроются настройки функций — здесь можно установить PIN для подключения и включить либо отключить саму функцию. Установите нужные параметры и готово!

WPS в настройках роутера

Выберите идеального наставника по программированию

15 000+ проверенных преподавателей со средним рейтингом 4,8. Учтём ваш график и цель обучения

Выберите идеального наставника по программированию

Как подключиться к интернету по WPS

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

Если у вас смартфон или планшет:

  1. Заранее найдите подключение по WPS в настройках беспроводных соединений.

  2. Нажмите кнопку WPS на роутере.

  3. Повторите то же самое на смартфоне.

  4. Дождитесь подключения.

Если у вас ПК или ноутбук:

  1. Найдите на экране значок подключения и откройте меню Wi-Fi.

  2. Найдите в списке нужную вам сеть и кликнете на неё, а после — на кнопку Подключиться.

  3. Если у Wi-Fi есть пароль, появится окошко, куда его нужно ввести. А ниже надпись: «Вы также можете подключиться, нажав кнопку на роутере».

  4. Кратко нажмите кнопку WPS на задней панели роутера.

  5. Сразу же кликните по надписи «Вы также можете подключиться, нажав кнопку на роутере» на экране.

  6. Дождитесь подключения.

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

Как устроен интернетЧитать →

WPS и безопасность

Теперь о том, безопасна ли такая технология. Скажем сразу: не думайте, что вы открываете доступ всем и каждому, когда активируете WPS. Если пользователь нажимает эту кнопку, роутер создаёт одно окошко для подключения, и оно активно только 5 секунд. За это время вы должны успеть подключиться на другом устройстве, иначе окошко пропадёт.

При этом 1 нажатие даёт только 1 подключение. Если вы хотите открыть доступ нескольким устройствам, столько же раз придётся нажать и кнопку. Но если вас это не успокоило, вы можете настроить PIN для дополнительной безопасности.

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

Ответы на частые вопросы

Теперь давайте разберёмся в вопросах о роутерах, WPS и беспроводном подключении Wi-Fi, которые волнуют других пользователей.

Какие функции может выполнять маршрутизатор помимо маршрутизации пакетов?

Роутер может не только создавать точку раздачи интернета. Одну из таких дополнительных функций вы уже знаете — это быстрая настройка и подключение к сети через WPS. Также ваш роутер может уметь:

  • защищать себя с помощью встроенного брандмауэра;

  • преобразовывать сотовый сигнал для локальной сети, если это маршрутизатор с функциями модема;

  • менять и совмещать диапазоны частот, чтобы подстраиваться под ваши условия;

  • оптимизировать интернет-трафик, т. к. выбирает устройства и приложения, которым интернет нужнее;

  • ограничивать доступ в интернет детям через родительский контроль;

  • контролировать подключения, в т. ч. ловить неправомерные.

Но важно понимать, что такое могут не все роутеры. Если у вас старенькая модель, в нём может не быть ни одной функции из перечисленных. Также имейте в виду: такие умные роутеры дороже средней планки. Поэтому заранее определитесь, стоят ли эти функции своих денег именно для вас.

Как защитить свою локальную компьютерную сеть с помощью маршрутизатора?

Почти все современные роутеры умеют обороняться. Для этого у них есть встроенный инструмент — брандмауэр, который базово защищает его от угроз и вредоносного ПО. Но если вы хотите дополнительных мер, попробуйте:

  • установить надёжный пароль и регулярно менять его;

  • поменять данные для входа в кабинет настроек;

  • обновить прошивку роутера, но лучше не самостоятельно, а через мастеров от вашего провайдера;

  • задать PIN на подключение по WPS.

Есть и более радикальные меры. Например, вы можете скрыть свой Wi-Fi, и тогда другие устройства не смогут его обнаружить. Но имейте в виду: ваших это тоже касается. Поэтому для подключения придётся вводить не только пароль, но и точное имя сети.

Если вы готовы к этому, то зайдите в настройки роутера способом, который мы описывали в статье выше. А дальше найдите параметры беспроводной сети и её дополнительные настройки. В них нас интересует функция Скрывать SSID — она есть в любом роутере, нужно только поискать. Если хотите скрыть точку доступа, поставьте галочку рядом с этим параметром. Готово!

Отключение SSID в настройках роутера

Как проверить работоспособность маршрутизатора?

Итак, вы заподозрили, что с роутером что-то неладно. Первое, что нужно сделать, — проверить неполадки визуально. Осмотрите корпус и оцените состояние кабеля WAN. Если на вид всё в порядке, переходите к индикаторам. Они находятся на передней панели устройства. Здесь нужно проверить:

  • индикатор питания — если горит, значит, роутер получает электричество;

  • системный индикатор — если он долго мигает или не горит, значит, есть системная ошибка;

  • индикатор работы Wi-Fi — если не горит, значит, нет беспроводного подключения;

  • индикатор подключения — если не горит, значит, нет подключения к сети.

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

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

Сегодня мы разобрались, что это за режим — WPS — и как подключаться к роутеру через эту функцию. Знать это полезно, даже если вы не собираетесь связать себя с техникой, а просто пользуетесь Wi-Fi дома.

Но тем, кто хочет и дальше изучать технологии, мы советуем не останавливаться, а раскрывать свой интерес. В этом помогут занятия для будущих IT-специалистов, например, на курсах программирования в Skysmart Pro. Там вы сможете найти свой путь к профессии и получить первые навыки. А ещё создать первые приложения и сайты для портфолио. До встречи на бесплатном вводном уроке!

Уровень сложности
Средний

Время на прочтение
18 мин

Количество просмотров 1.8K

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

О чём речь

My Programming System (MPS) — Это набор инструментов для обеспечения работы серверов на Linux и Windows, обрабатывающих большое количество разнообразных сетевых подключений. Вот список этих инструментов:

  • Interpretator — Интерпретатор собственного языка программирования, программа на котором будет обрабатывать запросы.

  • Language — Сам язык программирования, на котором будут писаться программы запускаемые интерпретатором.

  • Server — ПО для получения сетевых подключений, то есть просто для работы сервера.

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

Interpretator (часть 1)

Что интересно, данная идея началась с интерпретатора собственного языка программирования для удобного создания Web-сайтов, что-то типа PHP, но работающего всё время и потому не теряющего данные между подключениями, ещё в те времена когда я писал эти самые сайты на заказ… И эта идея сохранилась, но вместо Web-запросов должны обрабатываться локальные. Приведу пример:

Пользователь подключается по вашему адресу (например 123.123.123.123:80)

Любое ПО (например MPSS) принимает его и отправляет запрос к интерпретатору

Интерпретатор вызывает определённую функцию у работающей программы

Программа делает что хочет и возвращает ответ

Как вы надеюсь поняли, интерпретатор и запущенная им программа (на моём языке программирования) работает в фоне, с момента запуска и до остановки вами. Для работы с ним есть консольная команда:

mpsi — Получить базовую информацию о команде
mpsi compilation — Скомпилировать программу и классы в специальный архив
mpsi info — Получить подробную информацию об интерпретаторе и программе
mpsi request <данные запроса> — Выполнить запрос к программе
mpsi start <аргументы для программы> — Запустить программу
mpsi stop — Остановить программу

Окей, с консолью всё понятно, но где же найти код запускаемой программы? Всё просто, загляните в корневой каталог и найдите там папку mps, у неё будет примерно такая структура:

mps/
  interpretator/ — Каталог для файлов интерпретатора
    program/ — Каталог для файлов программы
      *.mpsp — Файл с кодом программы
      *.mpsc — Файлы с кодом классов программы
    modules/ — Каталог для модулей
      *.mpsm — Модули для интерпретатора
    program.log — Файл с логом программы
  server/ — Каталог для файлов сервера
    data/ — Каталог для данных сервера
    config.json — Конфигурационный файл сервера

Ничего не понятно?) Что за классы? Что за сжатые данные? Что за логи? Что за конфиги? Чтобы ответить на эти вопросы, давайте перейдём к самому языку программирования!

Language

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

Давайте по порядку, есть всего 4 препроцессорнных функции, одна из которых недоступна в классах (вы сами поймёте почему):

#define <название> <значение> — Начать заменять все совпадения с "названием" на "значение"
#import <путь к файлу> [имя] — Подключить класс и если указан принудительно установить имя (именно эта функция недоступна в классах)
#setting <название> <значение> — Изменить настройки программы/класса (об этом позже)
#undefine <название> — Прекратить замену совпадений

Сразу скажу, define и undefine я позаимствовал у любимой мною C-шки, так что думаю останавливаться на них нет смысла. По поводу import хочу сказать только что она поддерживает любые пути к файлам с кодами классов, хоть локальные (например «my_super_class.mpsc» либо «/path/to/my_super_class.mpsc»), хоть web (например «https://my-site.ru/my_super_class.mpsc»), хоть ftp (например «ftp://root:my-password@my-ftp.ru/my_super_class.mpsc»). А вот о setting нужно рассказать подробнее, у программы и классов есть некоторые параметры, которые они могут изменять:

(string) NAME — Название программы/класса (по умолчанию название файла с кодом без расширения)
(string) DESCRIPTION — Описание программы/класса (по умолчанию "")
(string) VERSION — Версия программы/класса (по умолчанию "1.0")

Дополнительно для классов:
(boolean) STATIC — Статический ли класс (по умолчанию true)

Зачем они? Во первых они доступны как системные макросы (то есть те которые созданы заранее, но вы можете их переопределить как и любые другие (просто вызвав define снова с тем же названием)):

Доступно везде (и в программе, и в классах):
MODULES -> Массив подключённых модулей (это массив массивов, содержащих название, описание и версию каждого модуля)
PROGRAM_NAME -> Название программы
PROGRAM_DESCRIPTION -> Описание программы
PROGRAM_VERSION -> Версия программы
SYSTEM_VERSION -> Версия интерпретатора

Доступно лишь в программе:
CLASSES -> Массив подключённых классов (это массив массивов, содержащих название, описание и версию каждого класса)

Доступно лишь в классах:
CLASS_NAME -> Название класса (того в котором замена)
CLASS_DESCRIPTION -> Описание класса (того в котором замена)
CLASS_VERSION -> Версия класса (того в котором замена)
CLASS_STATIC -> Статичный ли класс (тот в котором замена)

Во вторых, это просто прикольно и можно где-нибудь использовать :) Теперь, прежде чем перейти к синтаксису языка, давайте разберём какие вообще есть типы данных и как с ними работать:

array — Массив данных ([...])
boolean — Логическое значение (true | false)
char — Одиночный символ ('?')
class — Экземпляр динамического класса (того у которого параметр STATIC равен false)
double — Десятичное число (?.?)
empty — Ничего (null)
integer — Целое число (?)
string — Строка ("...")

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

variable @example = [
  "строковой ключ" : "значение",
  65456 : "← цифровой ключ, значение"
]; // array
@example = ExampleClass(); // class
@example = null; // empty

Но вас наверняка интересует, динамическая или статическая типизация? Ответ, динамическая.

Таблица «превращений»

array -> boolean: если нет элементов, то false, иначе true
array -> char: 'a'
array -> class: класс Array
array -> double: если нет элементов, то -1.0, иначе 1.0
array -> empty: null
array -> integer: если нет элементов, то -1, иначе 1
array -> string: "array(<элементы массива через запятую>)"
boolean -> array: [<значение>]
boolean -> char: 'b'
boolean -> class: класс Boolean
boolean -> double: если false, то -1.0, иначе 1.0
boolean -> empty: null
boolean -> integer: если false, то -1, иначе 1
boolean -> string: "boolean(<значение>)"
char -> array: [<значение>]
char -> boolean: true
char -> class: класс Char
char -> double: 1.0
char -> empty: null
char -> integer: 1
char -> string: "char(<значение>)"
class -> array: [<значение>]
class -> boolean: true
class -> char: 'c'
class -> double: 1.0
class -> empty: null
class -> integer: 1
class -> string: "class(<название класса>)"
double -> array: [<значение>]
double -> boolean: если меньше 0.0, то false, иначе true
double -> char: 'd'
double -> class: класс Double
double -> empty: null
double -> integer: <целая часть значения>
double -> string: "double(<значение>)"
empty -> array: []
empty -> boolean: false
empty -> char: 'e'
empty -> class: класс Empty
empty -> double: 0.0
empty -> integer: 0
empty -> string: "null"
integer -> array: [<значение>]
integer -> boolean: если меньше 0, то false, иначе true
integer -> char: 'i'
integer -> class: класс Integer
integer -> double: <значение>.0
integer -> empty: null
integer -> string: "integer(<значение>)"
string -> array: [<символы строки отдельными элементами>]
string -> boolean: если нет символов, то false, иначе true
string -> char: 's'
string -> class: класс String
string -> double: если нет символов, то -1.0, иначе 1.0
string -> empty: null
string -> integer: если нет символов, то -1, иначе 1

Ну и наконец, можно переходить к синтаксису!

#<строка>; — Вызов препроцессорной функции
<строка>([аргументы]); ЛИБО <строка>.<строка>([аргументы]); ЛИБО @<строка>.<строка>([аргументы]); — Вызов метода
//<строка>\n — Однострочный комментарий
/*<строка>*/ — Многострочный комментарий
variable @<строка>; ЛИБО variable @<строка> = <значение>; — Объявление переменной
method <строка>([аргументы]) {[тело]}; — Объявление метода
if (<условие>) <тело> ЛИБО if (<условие>) {[тело]}; — Выполнить тело при условии
elseif (<условие>) <тело> ЛИБО elseif (<условие>) {[тело]}; — Выполнить тело при условии и если предыдущий if не выполнился
else <тело> ЛИБО else {[тело]}; — Выполнить тело при условии и если все предыдущие if и elseif не выполнились
loop (<условие>) {[тело]}; ЛИБО loop (<условие>) <тело> ЛИБО {[тело]} loop (<условие>); ЛИБО <тело> loop (<условие>);— Выполнять код повторно пока условие верно
return <строка>; ЛИБО return; — Вернуть значение либо null
continue; — Пропустить выполнение оставшегося тела в цикле
break; — Прекратить работу цикла
static <строка>; — Сделать переменную либо метод статической (в программе: сохранить при остановке и загрузить при запуске, в классе: сделать доступной всем экземплярам)
dynamic <строка>; — Сделать переменную либо метод динамической (в программе: ничего, в классе (недоступно в статическом классе): сделать индивидуальной для каждого экземпляра)
public <строка>; — Сделать переменную либо метод доступным из вне
protected <строка>; — Сделать переменную либо метод недоступным из вне, но доступным для системы
private <строка>; — Сделать переменную либо метод недоступным из вне
@<строка> = <строка>; — Присвоение значения переменной
@<строка> += <строка>; — Прибавление числа к значению переменной и присвоение результата
@<строка> -= <строка>; — Вычитание числа из значения переменной и присвоение результата
@<строка> *= <строка>; — Умножение числа на значение переменной и присвоение результата
@<строка> **= <строка>; — Возведение значения переменной в степень число и присвоение результата
@<строка> /= <строка>; — Деление значения переменной на число и присвоение результата
@<строка> \= <строка>; — Деление значения переменной на число и присвоение остатка
(<строка> == <строка>) — Если объекты равны
(<строка> === <строка>) — Если типы объектов равны
(<строка> != <строка>) — Если объекты не равны
(<строка> !== <строка>) — Если типы объектов не равны
(<строка> > <строка>) — Если первое число больше второго
(<строка> >= <строка>) — Если первое число больше либо равно второму
(<строка> < <строка>) — Если первое число меньше второго
(<строка> <= <строка>) — Если первое число меньше либо равно второму
<условие> && <условие> — Условие верно если оба условия верны
<условие> ^^ <условие> — Условие верно если верно либо первое условие, либо второе (но не оба)
<условие> || <условие> — Условие верно если хоть одно из условий верно
<число> + <число> — Сложение двух чисел
<число> - <число> — Вычитание второго числа из первого
<число> * <число> — Умножение чисел
<число> ** <число> — Возведение первого числа в степень второе число
<число> / <число> — Деление первого числа на второе
<число> \ <число> — Деление первого числа на второй и получение остатка
-<число> — Смена знака числа
!<строка> — Поменять на противоположное логическое значение
method <строка>([аргументы, ]array @<строка>...) — Все аргументы после объявленых аргументов поместить в массив @<строка>
method <строка>([аргументы, ]<строка> @<строка> = <строка>[, аргументы]) — Если не указан аргумент то присвоить ему значение
method <строка>([аргументы, ]@<строка>[, аргументы]) — Разрешить передавать аргумент любого типа
method <строка>([аргументы, ]<строка> @<строка>[, аргументы]) — Разрешить передовать аргумент только определённого типа
method <строка>([аргументы, ]<строка>|<строка> @<строка>[, аргументы]) — Разрешить передовать аргумент одного из нескольких типов

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

Список системных классов

Array — Класс для работы с массивами {
    exist(array @array, string | integer @key) — Проверить есть ли значение с ключём key в массиве array
    key(array @array, @value) — Получить ключ по значению value из массива array
    merge(array @arrays...) — Объеденить неограниченное количество массивов
    search(array @array, @value) — Проверить есть ли ключ со значением value в массиве array
    size(array @array) — Получить количество значений в массиве array
    sort(array @array, integer @type) — Отсортировать массив array
}
Char — Класс для работы с одиночными символами {
    convert(integer @type, char @char) — Конвертировать в другую кодировку символ
    get(integer @number) — Получить символ по номеру
    toLower(char @char) — Перевести символ в нижний регистр
    toUpper(char @char) — Перевести символ в верхний регистр
}
Class — Класс для работы с экземплярами классов {
    clone(class @class) — Создать новый экземпляр того же класса что и class
    destroy(class @class) — Уничтожить экземпляр класса class
}
Double — Класс для работы с десятичными числами {
    getDecimal(double @double) — Получить целую часть десятичного числа double
    getWhole(double @double) — Получить десятичную часть десятичного числа double
    max(double @double1, double @double2) — Получить наибольшее число из двух десятичных
    maxValue() — Получить максимальное возможное десятичное число
    min(double @double1, double @double2) — Получить наименьшее число из двух десятичных
    minValue() — Получить минимальное возможное десятичное число
    round(double @double) — Округлить десятичное число
}
Integer — Класс для работы с челыми числами {
    max(integer @integer1, integer @integer2) — Получить наибольшее число из двух целых
    maxValue() — Получить максимальное возможное целое число
    min(integer @integer1, integer @integer2) — Получить наименьшее число из двух целых
    minValue() — Получить минимальное возможное целое число
}
Language — Класс для работы с кодом на других языках программирования {
    execute(string @language, string @code) — Выполнить код на другом языке программирования
    exist(string @language) — Проверить можно ли выполнить код на таком языке программирования
}
Log — Класс для работы с логом {
    read(integer @lines) — Получить lines строк из лога, считая с низу
    size() — Получить количество строк в логе
    write(string @line) — Записать строку в лог
}
Network — Класс для работы с сетью {
    connect(integer @type, string @address) — Подключиться к серверу address
    createServer(integer @type, string @address, array @settings) — Создать сервер по адресу address с настройками settings (какие методы будут вызываться и когда, время ожидания ответа и т.д.) типа type
    destroyServer(integer @id) — Уничтожить сервер id
    disconnect(integer @id) — Отключиться от сервера id
    read(integer @id) — Получить входящие данные от сервера id
    write(integer @id, string @packet) — Отправить данные серверу id
}
Random — Класс для работы со случайными данными {
    boolean() — Получить случайное значение типа boolean
    char(string @chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,@#$_&-+()/*\"':;!?~|^={}\\%[]<>") — Получить случайное значение типа char
    double(double @min = Double.minValue(), double @max = Double.maxValue()) — Получить случайное значение типа double
    integer(integer @min = Integer.minValue(), integer @max = Integer.maxValue()) — Получить случайное значение типа integer
    string(integer @length, string @chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,@#$_&-+()/*\"':;!?~|^={}\\%[]<>") — Получить случайное значение типа string
    time(string @format = "d.m.y s:M:h", string @min = Time.minValue(@format), string @max = Time.maxValue(@format)) — Получить случайное значение типа time
}
Security — Класс для обеспечения безопасности чего-либо {
    decrypt(integer @type, string @string, string @key) — Дешифровать строку string с помощью ключа key алгоритмом type
    encrypt(integer @type, string @string, string @key) — Зашифровать строку string с помощью ключа key алгоритмом type
    hash(integer @type, string @string) — Хешировать строку string алгоритмом type
}
Storage — Класс для работы с хранилищами {
    copy(string @old_path, string @new_path) — Копировать каталог/файл в другое место
    createDir(string @path, integer @permissions) — Создать новый каталог
    createFile(string @path, integer @permissions) — Создать новый файл
    exist(string @path) — Проверить существует ли каталог/файл
    info(string @path) — Получить информацию о каталоге/файле
    isDir(string @path) — Проверить является ли каталогом
    isFile(string @path) — Проверить является ли файлом
    list(string @path) — Получить список файлов в каталоге
    lock(string @path) — Заблокировать для чтения и записи файл
    read(string @path) — Получить содержимое файла
    remove(string @path) — Удалить каталог/файл
    rename(string @path, string @name) — Переименовать каталог/файл
    unlock(string @path) — Разблокировать для чтения и записи файл
    write(string @path, string @content) — Записать строку в файл
}
String — Класс для работы со строками {
    convert(integer @type, string @string) — Конвертировать в другую кодировку строку
    toLower(string @string) — Перевести все символы в строке в нижний регистр
    toUpper(string @string) — Перевести все символы в строке в верхний регистр
    length(string @string) — Получить количество символов в строке
    search(string @string, string | char @search) — Проверить присутствует ли в строке текст
    size(string @string) — Получить количество байт в строке
    substring(string @string, integer @start_position = 0, integer @end_position = String.length(@string) - 1) — Получить содержимое строки со start_position до end_position
    replace(string @string, string @search, string @value) — Заменить все совпадения в строке
}
System — Класс для работы с интерпретатором, программой и классами {
    consoleExecute(string @command) — Выполнить команду в консоли
    getLocale() — Получить системный язык
    getOS() — Получить название и версию текущей ОС
    import(string @path) — Подключить класс
    loadModule(string @path) — Загрузить модуль
    stop() — Остановить работу программы
}
Thread — Класс для работы с потоками {
    create(string @method) — Создать отдельный поток, который выполнит метод method
    destroy(integer @id) — Уничтожить поток id
    join(integer @id) — Дождаться выполнения потока id
    list() — Получить список существующих потоков и их id
    start(integer @id) — Запустить поток id
}
Time — Класс для работы с датами и временем {
    get(string @format = "d.m.y s:M:h") — Получить текущее время в определённом формате
    getTimeZone() — Получить текущую временную зону
    convert(string @old_format, string @new_format, string @time) — конвертировать дату из одного формата в другой
    max(string @format, string @time1, string @time2) — Получить наибольшее время из двух предоставленных в одном формате
    maxValue(string @format = "d.m.y s:M:h") — Получить максимальное возможное время в определённом формате
    min(string @format, string @time1, string @time2) — Получить наименьшее время из двух предоставленных в одном формате
    minValue(string @format = "d.m.y s:M:h") — Получить минимальное возможное время в определённом формате
}

Ну а системные методы, это четыре для программы и два для классов метода, которые обязательно должны присутствовать и которые СОВЕТУЕТСЯ НЕ ВЫЗЫВАТЬ ГДЕ-ЛИБО В КОДЕ:

Для программы:
protected dynamic method Error(integer @code, array @arguments) — Вызывается при ошибке во время работы программы (code- код ошибки, arguments- аргументы ошибки (строка, символ, сообщения и т.д.))
protected dynamic method Request(integer @type, array @arguments) — Вызывается при запросе к программе (type- тип запроса (внешний/системный), arguments- аргументы запроса))
protected dynamic method Start(array @arguments) — Вызывается при запуске программы (arguments- аргументы переданные при запуске)
protected dynamic method Stop() — Вызывается при остановке программы

Для классов:
protected dynamic method Constructor(array @arguments = []) — Вызывается если статический класс, то при запуске программы, иначе при создании экземпляра (arguments- аргументы запуска/переданные при создании экземпляра)
protected dynamic method Destructor() — Вызывается если статический класс, то при остановке программы, иначе при уничтожении экземпляр

Interpretator (часть 2)

Прежде чем начать читать

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

Раз вы теперь знаете как работают программа и классы на моём языке программирования, то можно узнать что происходит во время запуска, то есть, во время интерпретации. Как ни странно, всё начинается с… запуска интерпретатора! Он обрабатывает введённые аргументы и если ему сказано запустить программу проверяет не запущена ли уже она, если да, то выдаёт ошибку, если нет, то «заглядывает» в каталог /mps/interpretator/program/ и ищет там файл с расширением .mpsp, если находит несколько, то выдаёт ошибку, если не находит вообще, то начинает искать файл .mpsa, о котором мы поговорим позже, ну и если всё ок, то получает содержимое (если не получилось либо в нём ничего нет, то выдаёт ошибку :) и передаёт его препроцессору, начиная тем самым интерпретацию:

Препроцессор получил данные и начинает их обработку, которая делится на два этапа:

  1. Удаляются все комментарии и выполняются все препроцессорные функции ПОЛНОСТЬЮ ИГНОРИРУЯ КОД.

  2. Код дополняется где нужно, приводя его в единый вид (например «if (…) …;» будет заменено на «if (…) {…};»), но уже ничего не игнорируя.

Что на что меняется

Для программы:
variable...; -> public dynamic variable...;
method...; -> public dynamic method...;
static variable...; -> public static variable...;
static method...; -> public static method...;
dynamic variable...; -> public dynamic variable...;
dynamic method...; -> public dynamic method...;
public variable...; -> public dynamic variable...;
public method...; -> public dynamic method...;
protected variable...; -> protected dynamic variable...;
protected method...; -> protected dynamic method...;
private variable...; -> private dynamic variable...;
private method...; -> private dynamic method...;
return; -> return null;
else if... -> elseif...
if (...) ...; -> if (...) {...};
elseif (...) ...; -> elseif (...) {...};
else ...; -> else {...};
loop (...) ...; -> loop (...) {...};
... loop (...); -> {...} loop (...);

Для классов:
variable...; -> public static variable...;
method...; -> public static method...;
static variable...; -> public static variable...;
static method...; -> public static method...;
dynamic variable...; -> public dynamic variable...;
dynamic method...; -> public dynamic method...;
public variable...; -> public static variable...;
public method...; -> public static method...;
protected variable...; -> protected static variable...;
protected method...; -> protected static method...;
private variable...; -> private static variable...;
private method...; -> private static method...;
return; -> return null;
else if... -> elseif...
if (...) ...; -> if (...) {...};
elseif (...) ...; -> elseif (...) {...};
else ...; -> else {...};
loop (...) ...; -> loop (...) {...};
... loop (...); -> {...} loop (...);

Тажке вставляются пробелы где нужно, удаляются переносы строк, линие табы и лишние пробелы, добавляются return; в методы где они отсутствуют.

Дальше в дело вступает анализатор, он проверяет весь код и если где-то что-то не так (например не хватает точки с запятой) выдаёт ошибку. Потом, отформатированные и проверенный код передаётся лексеру, который разбивает его на токены и передаёт оптимизатору, который как понятно из названия оптимизирует их как может. Потом, уже оптимизированные токены получает парсер, он составляет из них специальные структуры (или если хотите таблицы) и передаёт их воркеру, который в свою очередь сохраняет их где нужно и вызывает метод Start с полученными в самом начале аргументами, а, и не подумайте что классы не интерпретируются, они проходят такую же цепочку. Помните я упоминал какие-то файлы с расширением .mpsa? Это архивы, в которые можно сохранить специальные структуры, создаваемые парсером. Если указать аргументом compilation вместо start, произойдёт то же самое (без поиска файлов .mpsa), но парсер не отдаст сгенерированные структуры воркеру, а сохранит их в файл, чтобы можно было при частом запуске экономить время.

Server

Заранее говорю, не обязательно использовать MPSS для получения запросов из сети (вы можете использовать любое другое ПО, которое сможет это сделать, либо просто создавать сервер прямо в программе, используя системный класс Network), просто так будет удобнее, проще и надёжнее. Давайте начнём с конфигурационного файла, вот его примерная структура:

{
  "<название сервера>": {
    "address": "<адрес этого сервера>",
    "port": <порт этого сервера>,
    "type": "<тип этого сервера (пока что поддерживаются: web, ftp, ssh)>",
    "settings": { // Этот объект имеет ещё индивидуальные значения для каждого типа серверов
      "mpsi": true
    }
  }
}

Вопросов стало только больше? Это хорошо, в «самом верхнем» объекте хранятся объекты с информацией о серверах, которые должен создавать MPSS. Например такой конфиг:

{
  "my_web_server": {
    "address": "127.0.0.1",
    "port": 80,
    "type": "web",
    "settings": {
      "mpsi": false,
      "php": true,
      "perl": true
    }
  },
  "my_ssh_server": {
    "address": "127.0.0.1",
    "port": 1234,
    "type": "ssh",
    "settings": {
      "mpsi": true
    }
  }
}

Создаст web-сервер на порту 80, поддерживающий PHP и Perl скрипты, и ssh-сервер запросы к которому будет обрабатывать MPSI. Вы спросите, где же данные для web-сервера? А они хранятся в каталоге /mps/server/data/<название сервера>/ или же в нашем случае в /mps/server/data/my_web_server/. Но если с ним всё вроде бы понятно, со вторым есть пара интересных моментов, и чтобы их объяснить давайте попробуем подключиться к нему (для этого я буду использовать обычный SSH-клиент на Linux из консоли). Что по вашему произойдёт на «стороне сервера» после ввода этих команд:

ssh root@127.0.0.1 -p 1234

Думаете MPSS запросит пароль? Или вообще не будет запрашивать? Нет, он отправит запрос MPSI, что будет идентично такому коду на MPSL:

Request(1, [
  "header" : "MPSS SSH-SERVER",
  "type" : 0, // Тип: авторизация
  "data" : "root:localhost" // Имя пользователя, от кого
]);

Если он вернёт false либо -1, то клиента пошлют нафиг клиенту просто откажут в доступе, если true либо 0, то ему скажут что всё окей, а если 1, то запросят пароль. Предположим что в нашем случае программа вернула 0 и я (как клиент) получил это:

root@127.0.0.1's password:

И я введу например «my-super-mega-password», то MPSS опять сделает запрос к MPSI:

Request(1, [
  "header" : "MPSS SSH-SERVER",
  "type" : 1, // Тип: подтверждение пароля
  "data" : "my-super-mega-password" // Полученный от клиента пароль
]);

Теперь, если вернут false либо -1, то мне скажут что пароль неверный, а если true либо 1, то скажут что всё окей. И давайте предположим что программа вернула 1 и мне «пустили на сервер», а потому сразу введём какую-нибудь команду (:

rm -rf /

Думаете MPSS её выполнит? Или сделает запрос к нашей программе? Если вы подумали второе, то вы уже начинаете понимать, ведь это правда и будет выглядеть вот так:

Request(1, [
  "header" : "MPSS SSH-SERVER",
  "type" : 2, // Тип: выполнение команды
  "data" : "rm -rf /" // Сама команда
]);

В этот раз возврат должен быть немного другим, если false либо -1, то нас просто отключат, если же строка, то её вернут как ответ. Только для примера давайте нам вернут это:

Дорогой ssh-клиент, иди ка отсюда с такими командами! С уважением, программа на MPSL.

Надеюсь с этим всё понятно, так что давайте посмотрим на команду:

mpss — Получить базовую информацию о команде
mpss info <название сервера> — Получить подробную информацию о сервере
mpss start <название сервера> — Запустить сервер
mpss stop <название сервера> — Остановить сервер

Ну что-ж, думаю пояснять смысл аргументов команды не стоит, да и про файловое устройство рассказывать не надо (ведь в разделе «Interpretator (часть 1)» я уже сказал про него всё важное), а так как статья и так получилась слишком большая, будем уже закругляться.

Дополнительно

Расширения файлов и их значение:

.mpsp — Код программы на MPSL
.mpsc — Код класса на MPSL
.mpsa — Архив со специальными структурами программы и классов на MPSL
.mpsm — Код модуля для MPSI

Подробная документация по всему этому когда-нибудь появится.

Заключение

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

Другие наши интересноые статьи:

  • Что такое media server в роутере
  • Что такое mtu при настройке роутера
  • Что такое mer в роутере
  • Что такое mcs15 в роутере
  • Что такое mcast в роутере

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии