По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Что такое DOM? DOM (Document Object Model) – это объектная модель документа. Это интерфейс между JavaScript и веб-браузером.  С помощью DOM вы можете написать код JavaScript для создания, изменения или удаления элементов HTML, установки стилей, классов и атрибутов, а также для принятия событий и реагирования на них. Дерево DOM формируется из HTML-документа, и с ним уже можно будет взаимодействовать. DOM – это очень сложный API, у которого есть методы и свойства для взаимодействия с деревом DOM. Как работает DOM – за кадром DOM продуманно организован. Родительский элемент называется EventTarget. Приведенная ниже диаграмма поможет вам лучше понять, как это работает: EventTarget – это интерфейс, реализуемый объектами, которые могут принимать события и у которых могут быть обработчики этих событий. Иными словами, любой источник событий реализует три метода, которые связаны с этим интерфейсом. Самыми распространенными генераторами событий являются Element и его дочерние элементы, Document и Window. Другие объекты также могут выступать в качестве источников событий.  Объект Window - это окно браузера. Все глобальные объекты, функции и переменные JavaScript автоматически становятся частью объекта Window. Глобальные переменные – это свойства Window. Глобальные функции – это методы Window. И даже Document (DOM HTML) является свойством Window. window.document.getElementById("header"); // Both are same document.getElementById("header"); В модели дом DOM есть узлы., и все части документа, такие как элементы, атрибуты, текст и т.д., организованы в виде иерархической древовидной структуры, которая состоит из родителей и потомков. Все эти части документа называются узлами (Node). Node на приведенной выше диаграмме представлен как объект JavaScript. В основном мы работаем с document, у которого есть такие распространенные методы, как document.queryselector(), document.getElementBy Id() и т.д. Теперь давайте посмотрим на document.  Как выбирать, создавать и удалять элементы с помощью DOM С помощью DOM мы можем выбирать, удалять и создавать элементы в JavaScript. Как выбирать элементы  Существует несколько способов выбрать HTML-элементы (HTML Elements) в JavaScript. Здесь мы рассмотрим следующие методы:  document.getElementById(); document.getElementByClassName(); document.getElementByTagName(); document.querySelector(); document.querySelectorAll(); Как использовать метод document.getElementById() Метод getElementById() возвращает элемент, идентификатор которого соответствует переданной строке. Идентификаторы элементов HTML должны быть уникальными, поэтому это самый быстрый способ выбрать элемент с идентификатором.  Пример: const ele = document.getElementById("IDName"); console.log(ele); // This will log the whole HTML element Как использовать метод document.getElementByClassName() Метод document.getElementByClassName() возвращает HTMLCollection элементов, которые соответствуют имени переданного класса. Можно искать сразу несколько имен классов, передав их через пробел. Тогда этот метод вернет «живую» HTMLCollection. Что такое «живая» HTMLCollection? Это означает, что как только мы получим HTMLCollection для какого-то имени класса, и если мы добавим элемент с тем же именем класса, то HTMLCollection автоматически обновится.  Пример: const ele = document.getElementByClassName("ClassName"); console.log(ele); // Logs Live HTMLCollection Как использовать метод document.getElementByTagName() Метод document.getElementByTagName() возвращает HTMLCollection элементов, которые соответствуют переданному имени тега. Его можно вызывать для любого элемента HTML. Метод вернет «живую» HTMLCollection. Пример: const paragraph = document.getElementByTagName("p"); const heading = document.getElementByTagName("h1"); console.log(paragraph); // p element HTMLCollection console.log(heading); // h1 element HTMLCollection   Как использовать метод document.querySelector() Метод document.querySelector() возвращает первый элемент, который соответствует переданному селектору. Здесь мы можем передать имя класса, идентификатор и имя тега. Давайте посмотрим на пример ниже: const id = document.querySelector("#idname"); // using id const classname = document.querySelector(".classname"); // using class const tag = document.querySelector("p"); // using tagname Правила выбора: если вы выбираете по имени класса, то используйте (.) в начале. Например, (“.classname”). если вы выбираете по идентификатору, то используйте (#) в начале. Например, (“#id”). если вы выбираете по имени тега, то просто введите тег. Например,  (“p”).  Как использовать метод document.querySelectorAll() Метод document.querySelectorAll() - это расширение метода querySelector. Этот метод возвращает все элементы, которые соответсвуют переданному селектору. Он возвращает «неживую» коллекцию Nodelist.  Пример: const ele = document.querySelectorAll("p"); console.log(ele); // return nodelist collection of p tag   ПРИМЕЧАНИЕ : HTMLCollection – это «живая» коллекция, а коллекция Nodelist – статическая.    Как создавать элементы Вы можете создавать HTML-элементы в JavaScript и динамически добавлять их в HTML. Вы можете создать любой элемент HTML с помощью метода document.createElement(), просто передав имя тега в скобках.    После того, как элемент будет создан, вы сможете добавить к нему имя класса, атрибуты и текст.    Вот пример: const ele = document.createElement("a"); ele.innerText = "Click Me"; ele.classList.add("text-left"); ele.setAttribute("href", "www.google.com"); // update to existing element in HTML document.querySelector(".links").prepend(ele); document.querySelector(".links").append(ele); document.querySelector(".links").befor(ele); document.querySelector(".links").after(ele); // Simalar to below anchor tag // Click Me   В приведенном выше примере мы создали тег привязки (anchor) в JavaScript и добавили атрибуты и имя класса к этому тегу. Там же у нас есть четыре метода для того, чтобы обновить созданный элемент в HTML. prepend(): вставляет данные поверх своего первого дочернего элемента. append(): вставляем данные или содержимое внутрь элемента по последнему индексу. before(): вставляет данные перед выбранным элементом. after(): помещает элемент после указанного элемента. Или можно сказать, что он вставляет данные за пределами элемента (делая это содержимое элементом того же уровня) в набор подходящих элементов. Как удалять элементы Мы знаем, как создавать элементы на JavaScript и помещать их в HTML. Но, что если нам нужно удалить элементы в HTML? Это довольно просто! Нам достаточно воспользоваться методом remove() для нужного элемента.  Вот пример: const ele = document.querySelector("p"); // This will remove ele when clicked on ele.addEventListner('click', function(){ ele.remove(); })   Как управлять CSS из JavaScript Мы знаем, как управлять HTML из JavaScript. А теперь мы узнаем, как управлять CSS из JavaScript. Это может помочь вам динамически менять стиль ваших веб-страниц.  Например, если вы нажимаете на элемент, то его фоновый цвет должен поменяться. Это реально сделать, управляя CSS из JavaScript.    Вот пример синтаксиса: const ele = document.querySelector("desired element"); ele.style.propertyName = value; // E.g - ele.style.color = red;   Когда вы меняете свойства CSS с помощью JavaScript, помните, что всякий раз, когда в CSS печатается «-», в JavaScript там будет стоять заглавная буква. Например, в CSS вы бы написали background-color, а в JavaScript – backgroundColor (с большой буквы C).    Вот пример: const ele = document.querySelector("div"); ele.style.backgroundColor = "red"; Предположим, что вы написали код CSS для своего проекта и хотите добавить классы с помощью JavaScript. Это можно сделать с помощью classList в JavaScript.    Вот еще один пример: const ele = document.querySelector(".link"); ele.classList.add("bg-red"); // add class bg-red to existing class list ele.classList.remove("pb-4");// remove class bg-red from existing class list ele.classList.toggle("bg-green"); // toggle class bg-red to existing class list which means if it already exists then it will be removed, if it doesn't exist it will be added. classList добавляет, удаляет или переключает классы относительно какого-то элемента. Это чем-то похоже на обновление существующих классов.    В отличие от element.className, он удаляет все существующие классы и добавляет указанный класс.  И еще один пример: const ele = document.querySelector(".link"); ele.classList.add("bg-red"); // add class bg-red to existing class list ele.classList.remove("pb-4");// remove class bg-red from existing class list ele.className = "p-10"; // Now this will remove all existing classes and add only "p-10 class to element."   Как использовать обработчики событий Событие (Event) – это изменение состояния объекта. Обработка событий (Event Handling) – процесс реагирования на события.  События происходит всякий раз, когда пользователь щелкает кнопкой мыши, наводит курсор на элемент, нажимает клавишу и т.д. Поэтому, когда происходит событие, и вы хотите выполнить какое-то действие, то вы используете обработчики событий, чтобы это действие произошло.  Мы используем обработчики событий для того, чтобы выполнить определенный код, когда это конкретное событие происходит. В JavaScript есть несколько обработчиков событий, однако процесс их добавления к элементам одинаков.  Вот синтаксис: const ele = document.querySelector("a"); ele.addEventListner("event", function(){ // callback function }); Вот некоторые события, которые вы можете использовать: click mouseover mouseout keypress keydown А вот пример использования события «click» (нажатия на кнопку мыши): const ele = document.querySelector("a"); ele.addEventListner("click", function(){ ele.style.backgroundColor = "pink"; }); Распространение событий: всплывание событий и перехват событий Распространение событий определяет то, в каком порядке элементы будут получать события. Существует два способа обработки порядка распространения событий в DOM: всплывание событий и перехват событий.  Что такое всплывание событий? Когда в каком-то компоненте происходит событие, то он сначала на нем запускается обработчик событий, только потом на его родительском компоненте, а затем уже и на всех остальных компонентах, которых называют предками.  По умолчанию все обработчики событий перемещаются именно в этом порядке - от события центрального компонента к событию компонента, который находится от него дальше всех.    Что такое перехват событий? Этот способ – противоположность предыдущему. Обработчик событий запускается сначала на родительском компоненте, а уже потом на том компоненте, на котором он фактически и должен был сработать.  Проще говоря, это означает, что событие сначала перехватывается самым удаленным элементом, а затем распространяется на внутренние элементы. Также этот способ называют «просачиванием вниз».    Давайте попробуем запустить следующий пример:                Example           
           
    Этот код выдаст нам следующее: Теперь давайте внимательно изучим приведенный выше пример. Я добавил получатель событий к тегу nav и тегу anchor. Когда вы нажимаете на nav, то цвет фона меняется на зеленый. Когда вы нажимаете на тег anchor, то цвет фона меняется на розовый.  Но когда вы нажимаете на тег anchor, то цвет фона меняется как у nav, так и у anchor. Это происходит из-за всплывания событий.    Вот что происходит, когда вы нажимаете только на элемент nav:       А вот что происходит, когда вы нажимаете только на элемент anchor: Для того, чтобы остановить распространение событий, мы можем воспользоваться методом stoppropagation() на получателе событий, из-за которого и происходит распространение события. В таком случае в приведенном выше примере получатель событий элемента nav не сработает.                   Example           
           
    Как перемещаться по модели DOM «Хороший разработчик JavaScript должен знать, как перемещаться по модели DOM. Перемещаться по модели DOM значит выбирать один элемент из другого,» - Зелл Лью. Теперь посмотрим, почему лучше обойти модель DOM, чем использовать метод document.querySelector(), и как это выполнить на профессиональном уровне.  Есть три способа обхода модели DOM: Снизу-вверх Сверху-вниз Продольный Как обойти модель DOM снизу-вверх Существует два метода, которые помогут вам перемещаться по модели DOM снизу-вверх: parentElement closest parentElement – это свойство, которое выбирает родительский элемент, например: const ele = document.querySelector("a"); console.log(ele.parentElement); //
parentElement отлично подходит для того, чтобы выбрать элемент, который находится на один уровень выше. Но closest позволяет найти элемент, который может быть на несколько уровней выше текущего. closest позволяет вам выбрать ближайший элемент-предок, который соответствует селектору.  Вот пример с использованием closest:
   

This is sample

   

This is heading

   

This heading 2

const ele = document.querySelector(".heading"); console.log(ele.closest(".demo")); // This is heading В приведенном выше фрагменте кода мы пытаемся получить ближайший элемент к .heading, который имеет класс .demo. Как обойти модель DOM сверху-вниз Мы можем перемещаться вниз, используя метод селектора children. При таком подходе вы можете выбрать прямого потомка нужного элемента.   Вот пример:
   Link-1    Link-2    Link-3    Link-4
const ele = document.querySelector("div"); const child = ele.children; console.log(child); // gives HTMLCollection // 4 element inside div Как обойти модель DOM продольно Это очень интересный вопрос, как же мы можем продольно обойти DOM. В основном мы можем использовать лишь два метода: previousElementSibling nextElementSibling С помощью метода previousElementSibling мы можем выбрать предшествующие элементы в HTML:
   Link-1    

Heading

const ele = document.querySelector("h1"); console.log(ele.previousElementSibling); // Link-1 А с помощью метода nextElementSibling мы можем выбрать последующие элементы в HTML:
   Link-1    

Heading

const ele = document.querySelector("a"); console.log(ele.nextElementSibling); //

Heading

img
Маршрутизаторы от производителя Mikrotik приобретают все большую популярность благодаря привлекательной цене и богатому функционалу. Пожалуй, в SOHO сегмента Mikrotik является лидером. Сегодня хотим рассказать о полезных опциях настройки, которые помогут укрепить устойчивость к внешним атакам и обеспечить стабильную работу для вашего офисного Mikrotik. Защита Mikrotik 1. Смена логина и пароля администратора Начнем с первичной защиты нашего маршрутизатора – созданию стойкого к взломам логина и пароля администратора. По умолчанию, в Mikrotik используется логин admin и пустой пароль. Давайте исправим это: подключаемся через Winbox к нашему маршрутизатору и переходим в раздел настройки System → Users. Видим пользователя admin, который настроен по умолчанию: Добавим нового пользователя, который будет обладать более строгими к взлому реквизитами (логин/пароль). Для этого, нажмите на значок «+» в левом верхнем углу: Обратите внимание, в поле Group необходимо выбрать full, чтобы предоставить администраторские привилегии для пользователя. После произведенных настроек удаляем пользователя admin и отныне используем только нового пользователя для подключения к интерфейса администрирования. 2. Сервисные порты В маршрутизаторе Микротик «зашиты» некоторые службы, порты которых доступны для доступа из публичной сети интернет. Потенциально, это уязвимость для Вашего сетевого контура. Поэтому, мы предлагаем перейти в раздел настройки IP → Services: Если вы используете доступ к Mikrotik только по Winbox, то мы предлагаем Вам отключить все сервисы, за исключением winbox и ssh (на всякий случай оставить ssh), а именно: api api-ssl ftp www www-ssl Для отключения нажмите красный значок «х». Так как мы оставили SSH доступ к серверу, давайте «засекьюрим» его, сменив порт с 22 на 6022. Для этого, дважды нажмите на сервисный порт SSH и в открывшемся окне укажите настройку: Нажимаем Apply и ОК. 3. Защита от брут – форса (перебора) На официальном сайте Mikrotik существуют рекомендации о том, как защитить свой маршрутизатор от перебора паролей по FTP и SSH доступу. В предыдущем шаге мы закрыли FTP доступ, поэтому, если Вы строго следуете по данной инструкции, то используйте только код для защиты от SSH – атак. В противном случае, скопируйте оба. Итак, открываем терминал управления маршрутизатором. Для этого, в правом меню навигации нажмите New Terminal. Последовательно скопируйте указанный ниже код в консоль роутера: /ip firewall filter #Блокируем атаки по FTP add chain=input protocol=tcp dst-port=21 src-address-list=ftp_blacklist action=drop comment="drop ftp brute forcers" add chain=output action=accept protocol=tcp content="530 Login incorrect" dst-limit=1/1m,9,dst-address/1m add chain=output action=add-dst-to-address-list protocol=tcp content="530 Login incorrect" address-list=ftp_blacklist address-list-timeout=3h #Блокируем атаки по SSH add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment="drop ssh brute forcers" disabled=no add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10d comment="" disabled=no add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m comment="" disabled=no add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m comment="" disabled=no add chain=input protocol=tcp dst-port=22 connection-state=new action=add-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment="" disabled=no Создание резервной копии конфигурации На случай выхода из строя или аварии роутера, необходимо иметь под рукой его конфиг для оперативного восстановления. Сделать его крайне просто: открываем терминал, нажав в меню навигации New Terminal и указываем следующую команду: export file=backup echo date("Y-m-d_H:i:s") Файл можно обнаружить нажав в меню навигации на раздел Files. Скачайте его себе на ПК, нажав правой кнопкой мыши и выбрав Download Блокировка доступа к сайта В рабочее время сотрудники должны работать. Поэтому, давайте заблокируем доступ к развлекательным ресурсам, таким как Youtube, Facebook и Вконтакте. Для этого, перейдите в раздел IP → Firewall. Нажимаем на вкладку Layer 7 Protocol и затем нажимаем на значок «+» в левом верхнем углу: Даем имя нашему правилу, которое будет оперировать на 7 уровне модели OSI, а в разделе Regexp добавляем: ^.+(youtube.com|facebook.com|vk.com).*$ Нажимаем OK и переходим к вкладке Filter Rules и нажимаем значок «+»: В разделе Chain выбираем Forward. Переходим в том же окне во вкладку Advanced и в поле Layer 7 Protocol выбираем созданное нами правило блокировки: Переходим во вкладку Action, и там выбираем Action = Drop: По окончанию настроек нажимаем Apply и OK.
img
Управление дисковым пространством на сервере Linux - важная задача. Например, приложения диспетчера пакетов уведомят вас, сколько места на диске потребуется для установки. Чтобы эта информация была значимой, вы должны знать, сколько места доступно в вашей системе. В этом руководстве вы узнаете, как использовать команду df для проверки дискового пространства в Linux и команду du для отображения использования дискового пространства файловой системы. Проверить дисковое пространство Linux с помощью команды df Вы можете проверить свое дисковое пространство, просто открыв окно терминала и введя следующее: df Команда df означает освобождение диска и показывает количество места, занимаемого различными дисками. По умолчанию df отображает значения в блоках размером 1 килобайт. Отображение использования в мегабайтах и гигабайтах Вы можете отобразить использование диска в более удобочитаемом формате, добавив параметр –h: df –h Здесь отображается размер в килобайтах (K), мегабайтах (M) и гигабайтах (G). Понимание формата вывода Команда df выводит несколько столбцов: Filesystem Size Used Avail Use% Mounted on udev 210M 0 210M 0% /dev tmpfs 49M 1004K 48M 3% /run /dev/sda2 7.9G 4.3G 3.2G 58% / В вашем выводе может быть больше записей. Filesystem - это имя каждого конкретного диска. Сюда входят физические жесткие диски, логические (разделенные) диски, а также виртуальные или временные диски. Size - размер файловой системы. Used - объем пространства, используемого в каждой файловой системе. Avail - количество неиспользуемого (свободного) места в файловой системе. Use% - показывает процент использованного диска. Mounted on - это каталог, в котором расположена файловая система. Это также иногда называют точкой монтирования. Список файловых систем включает ваш физический жесткий диск, а также виртуальные жесткие диски: /dev/sda2 - это ваш физический жесткий диск. Он может быть указан как /sda1, /sda0 или у вас может быть даже несколько. /dev означает устройство. udev - это виртуальный каталог для каталога /dev. Это часть операционной системы Linux. tmpfs - их может быть несколько. Они используются /run и другими процессами Linux в качестве временных файловых систем для запуска операционной системы. Например, tmpfs /run/lock используется для создания файлов блокировки. Это файлы, которые не позволяют нескольким пользователям изменять один и тот же файл одновременно. Отобразить определенную файловую систему Команду df можно использовать для отображения определенной файловой системы: df –h /dev/sda2 Вы также можете использовать обратную косую черту: df –h / Это отображает использование вашего основного жесткого диска. Используйте точку монтирования (в столбце Mounted on), чтобы указать диск, который нужно проверить. Примечание. Команда df предназначена только для полной файловой системы. Даже если вы укажете отдельный каталог, df будет читать пространство всего диска. Отображение файловых систем по типу Чтобы перечислить все файловые системы по типу, используйте команду: df –ht ext4 Здесь перечислены диски с типом ext4 в удобочитаемом формате. Отображение размера в 1000 вместо 1024 Вы можете отображать использование диска в единицах 1000 вместо 1024: df –H Это может устранить путаницу в технологии хранения. Производители жестких дисков продают жесткие диски размером 1000 байт = 1 килобайт. Однако операционные системы делят это пространство так, что 1024 байта = 1 килобайт. Из-за этого на 1000-гигабайтном жестком диске остается примерно 930 гигабайт полезной памяти. Проверить дисковое пространство Linux с помощью команды du Команда du отображает использование диска. Этот инструмент может отображать использование диска для отдельных каталогов в Linux, давая вам более детальное представление об использовании вашего диска. Используйте его для отображения количества места, используемого вашим текущим каталогом: du Подобно команде df, вы можете сделать du удобочитаемым: du –h Он отображает список содержимого текущего каталога и сколько места они используют. Вы можете упростить отображение с помощью опции –s: du –hs Это показывает, сколько места занимает текущий каталог. Чтобы указать каталог или файл, установите флажок, используя следующие параметры: du –hs /etc/kernel-img.conf du –hs /etc При использовании второй команды вы могли заметить сообщение об ошибке «Отказано в разрешении». Это означает, что текущий пользователь не имеет прав доступа к определенным каталогам. Используйте команду sudo для повышения ваших привилегий: sudo du –hs /etc Примечание. Если вы работаете с CentOS Linux, вам может потребоваться использовать команду su, чтобы переключиться на пользователя root для доступа к защищенным каталогам. Итоги Теперь вы должны понимать, как использовать команды df и du для проверки дискового пространства в вашей системе Linux. Помните, что для отображения полного списка параметров используйте df ––help или du ––help.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59