Ваши Вопросы

Какие есть cервисы для тестирования веб- и почтовых серверов

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

Почта
MX Toolbox. Сервис проверки почтового сервера и, немножко, веб-сервера. Множество самых различных тестов. Имхо, один из самых лучших сервисов.

ESMTP email. Проверка настройки MTA-STS. Это функция, призывающая удаленные серверы обмениваться почтовыми сообщениями, используя защищенное соединение.

MTA-STS validator. Еще один сервер проверки MTA-STS. Выдает краткий отчет по основным настройкам и краткую инструкцию что надо настроить.

Сканеры открытых портов
Сканер IPv6. Сканирует на выбор либо только указанный порт, либо все часто используемые. В первом случае можно указать использовать TCP или UDP протокол.

Jabber
Тест jabber-сервера. Проверка jabber-сервера на наличие часто используемых функций.

IPv6
((http://test-ipv6.com/ Тест IPv6). Тест доступности сервера по IPv6. Краткий, но доступный для понимания проблем отчет.

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

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

Тест то Cloudflare. Не менее известный сервис проверки скорости соединения.

Общее
SSL Labs. Один из самых популярных сервисов тестирования веб-серверов. Проверяет сертификаты, используемые шифры, протоколы (HTTP, HTTP/2), совместимость с популярными браузерами, наличие уязвимостей и некоторых настроек (HSTS, OCSP, HPKP и другие). К сожалению, почту проверять не умеет.

NetTools. Сборник самых различных тестов: почта, веб-сервер, сканер открытых портов, скорости соединения, NTP-сервера, DNS, FTP..

HSTS Preload. Сервис проверки на включение вашего сервера в список HSTS Preload. Это список серверов, при обращении к которым будет сразу использоваться HTTPS-соединение, минуя HTTP. На мой взгляд, сейчас не сильно актуально, потому все поголовно переходят на HTTPS. Там же находятся рекомендации по настройке сервера для последующего включения его в список. Если проверка прошла успешно, фон страницы станет зеленым. Эта настройка отображается в отчете SSL Labs.

Hardenize. Проверяет веб- и почтовый серверы. Выдает информацию по зоне, DNS-записям и настройкам. Среди проверяемых функций такие как: DNSSEC, CAA, MTA-STS, TLSRPT, SPF, DMARC, DANE, заголовки ответов и прочее. Выдает достаточно информативный отчет.

ZoneMaster. Проводит полную проверку вашего доменного имени.

internet.nl. Позволяет проверить настройки веб- и почтового серверов. Тестирует DNSSEC, IPv6, DANE, заголовки ответов и RPKI. Для меня лично новинкой стала проверка файла security.txt.

Verisign анализатор. Быстрая проверка DNSSEC. Не могли что ли сделать шрифт покрупнее в отчете?

Ппроверка STUN и TURN. Собственно весь функционал описан в названии. В случае корректной настройки STUN должен вернуть «srflx» в списке. В случае с TURN — «relay».

Security Headers. Проверяет заголовки ответов веб-сервера. Пройдя по ссылкам, можно попасть на блог Scott Helme и узнать как настроить тот или иной заголовок. Вообще в блоге много полезной информации. Единственный «минус» — всё на английском.

Immuniweb. Есть два неплохих теста: SSL и безопасности сайта. В первом проверяет настройки сервера на соответствие стандартам PCI DSS, HIPAA and NIST и Industry Best Practices. Второй проверяет GDPR Compliance, PCI DSS и заголовки ответов (куда же без них?).

Источник: https://kini24.ru/all/servisy-dlya-testirovaniya-veb-i-pochtovyh-serverov/

Как работать с Google Таблицами через Python?

Google Таблицы и Python — подробное руководство с примерами.

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

Настройка подключения в Google Api Console.

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

  1. Зайдите в Google API Console.

2. Создайте новый проект.


Нажмите на список проектов, затем NEW PROJECT

Введите имя проекта.


После ввода имени нажмите «Create»

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


Для выбор кликните на названия проектов и из списка выберите нужный.

В меню слева выберите «Marketplace»


В поле поиска введите «Google Drive api» и нажмите на Enter.


Кликните на Google Drive API


На открывшейся странице нажмите «Enable».


Повторите эти же шаги (начиная с момента, когда вы заходите в marketplace) но в поиске введите Google Sheets API, перейдите в него и нажмите Enable.

Затем зайдите в пункт меню «APIs & Services».


Слева в меню перейдите в «Credentials». Нажмите на «Create Credentials», в открывшемся меню выберите пункт Service account.


Откроется страница создания аккаунта. Введите имя и нажмите «Create»


В поле «Select Role» выберите «Editor». Затем нажмите Continue.


Нажмите Done.


Кликаем на только что созданный аккаунт.


Переходим во вкладку KEYS. Жмем на ADD KEY. В появившемся меню выбираем Create new key.


Выбираем JSON и жмем CREATE.


Скачиваем json файл на свой компьютер.

Переходим во вкладку Details, копируем Email.


Переходим в таблицу, к которой у вас будет доступ. Жмем «Настройки доступа», вводим скопированный Email и жмем «Готово».


После этого вам будет предложено выбрать роль, выберите «Редактор».

Файл json вы можете загрузить в любую папку, доступ к нему можно будет прописать в коде.

Подключение gspread в Python

Сначала вам нужно установить gspread. Это можно сделать командой:

pip install gspread

Импортируем библиотеку, получим и выведем ячейку из «Тестовой таблицы».

import gspread # Указываем путь к JSON gc = gspread.service_account(filename='my-test-project-314413-dd942cf9cb7a.json') #Открываем тестовую таблицу sh = gc.open("Тестовая таблица") #Выводим значение ячейки A1 print(sh.sheet1.get('A1'))

Code language: PHP (php)

Результат:

[['1']]

Code language: JSON / JSON with Comments (json)

Далее рассмотрим методы для работы с таблицами.

Методы работы с google таблицами в Python с использованием gspread

Открытие электронной таблицы

Вы можете открыть электронную таблицу по ее названию, как она отображается в Документах Google:

sh = gc.open('Моя таблица')

Code language: JavaScript (javascript)

Если вы хотите точно определить, используйте ключ (который можно извлечь из url электронной таблицы):

sht1 = gc.open_by_key('1KJkl7crYR1Xmmdha7kj3aUE6oDG4XXADK-Sl4QO2DGI')

Code language: JavaScript (javascript)

Или, если вам лень извлекать этот ключ, вставьте url всей электронной таблицы

sht2 = gc.open_by_url('https://docs.google.com/spreadsheet/ccc?key=1KJ...O2DGI')

Code language: JavaScript (javascript)

Создание электронной таблицы

Используйте create() для создания новой пустой таблицы:

sh = gc.create('Новая таблица')

Code language: JavaScript (javascript)

Если вы используете служебный аккаунт, новая электронная таблица будет видна только этому аккаунту. Чтобы получить доступ к только что созданной электронной таблице из Google Sheets с помощью собственного аккаунта Google, вы должны поделиться ею со своей электронной почтой.

Совместное использование электронной таблицы

Если ваша электронная почта ivan@site.com, вы можете поделиться созданной электронной таблицей с самим собой:

sh.share('ivan@site.com', perm_type='user', role='writer')

Code language: JavaScript (javascript)

Выбор рабочего листа

Выбор рабочего листа по индексу. Индексы рабочих листов начинаются с нуля:

worksheet = sh.get_worksheet(0)

Или по названию:

worksheet = sh.worksheet("Январь")

Code language: JavaScript (javascript)

Или самый распространенный случай: Sheet1:

worksheet = sh.sheet1

Чтобы получить список всех рабочих листов:

worksheet_list = sh.worksheets()

Создание рабочего листа

worksheet = sh.add_worksheet(title="Январь", rows="100", cols="20")

Code language: JavaScript (javascript)

Удаление рабочего листа

sh.del_worksheet(worksheet)

Code language: CSS (css)

Получение значения ячейки

Используя формат A1:

val = worksheet.acell('C3').value

Code language: JavaScript (javascript)

Или координаты строк и столбцов:

val = worksheet.cell(1, 2).value

Если вы хотите получить формулу ячейки:

cell = worksheet.acell('B1', value_render_option='FORMULA').value # или cell = worksheet.cell(1, 2, value_render_option='FORMULA').value

Code language: PHP (php)

Получение всех значений из строки или столбца

Получить все значения из первой строки:

values_list = worksheet.row_values(1)

Получить все значения из первого столбца:

values_list = worksheet.col_values(1)

Получение всех значений из рабочего листа в виде списка списков

list_of_lists = worksheet.get_all_values()

Получение всех значений из рабочего листа в виде списка словарей

list_of_dicts = worksheet.get_all_records()

Поиск ячейки

Найти ячейку, соответствующую строке:

cell = worksheet.find("Картошка") print("Найдено в ячейке R%sC%s" % (cell.row, cell.col))

Code language: PHP (php)

Найти ячейку, соответствующую регулярному выражению

amount_re = re.compile(r'(Красная|Белая) картошка') cell = worksheet.find(amount_re)

Code language: JavaScript (javascript)

Поиск всех совпадающих ячеек

Найти все ячейки, соответствующие строке:

cell_list = worksheet.findall("Красная картошка")

Code language: JavaScript (javascript)

Найдите все я

Найти все ячейки, соответствующие регулярному выражению:

criteria_re = re.compile(r'(Красная|Белая) картошка') cell_list = worksheet.findall(criteria_re)

Code language: JavaScript (javascript)

Объект ячейки

Каждая ячейка имеет значение и свойства координат:

value = cell.value row_number = cell.row column_number = cell.col

Обновление ячеек

Используя формат A1:

worksheet.update('B1', 'Свекла')

Code language: JavaScript (javascript)

Или координаты строк и столбцов:

worksheet.update_cell(1, 2, 'Свекла')

Code language: JavaScript (javascript)

Обновить диапазон

worksheet.update('A1:B2', [[1, 2], [3, 4]])

Code language: JavaScript (javascript)

Форматирование

Вот пример базового форматирования.

Установим для текста A1:B1 полужирный формат:

worksheet.format('A1:B1', {'textFormat': {'bold': True}})

Code language: PHP (php)

Окрасим фон диапазона ячеек A2:B2 в черный цвет, изменим горизонтальное выравнивание, цвет текста и размер шрифта:

worksheet.format("A2:B2", { "backgroundColor": { "red": 0.0, "green": 0.0, "blue": 0.0 }, "horizontalAlignment": "CENTER", "textFormat": { "foregroundColor": { "red": 1.0, "green": 1.0, "blue": 1.0 }, "fontSize": 12, "bold": True } })

Code language: PHP (php)

Второй аргумент format() — это словарь, содержащий поля для обновления.

Источник: https://dvsemenov.ru/google-tablicy-i-python-podrobnoe-rukovodstvo-s-pri...

Как вставить картинку в комментарии в Экселе?

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

Вставьте картинку в комментарий в Excel

Щелкните правой кнопкой мыши в ячейке и выберите «Вставить комментарий»:

Введите текст, который вы хотите отобразить в комментарии.

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

Перейдите на вкладку «Цвета и линии», раскройте раскрывающийся список «Цвет» и выберите «Эффекты заливки».

В открывшемся окне выберите вкладку «Изображение» и нажмите «Выбрать изображение».

Найдите файл изображения по вашему выбору и нажмите кнопку ОК.

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

Когда на листе выбрано вставленное изображение, Excel добавляет контекстную вкладку «Инструменты для рисунков» на ленту с единственной вкладкой «Формат». Вкладка «Формат» разделена на следующие 4 группы:

1. Настройте
2. Стили изображения
3. Организовать
4. Размер.

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

Источник: https://techarks.ru/office/excel/kak-vstavit-kartinku-v-kommentarij-v-ex...

Почему эксель перестал считать формулы автоматически?

У меня эксель перестал считать формулы. То есть меняешь значения а ничего не происходит, формулы не считаются, что делать?

Формулы Microsoft Excel не обновляются автоматически

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

 

Формулы Excel не обновляются автоматически

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

  1. Расчет настроен на «Ручной»
  2. Ячейка отформатирована как текст
  3. Кнопка Показать формулы включена
  4. Пробел введен перед знаком равенства.

Давайте рассмотрим каждый из них в деталях.

1. Расчет настроен на «Ручной»

Это одна из самых распространенных причин и первая проверка, которую нужно выполнить. Иногда параметр расчета настраивается на «ручной», и это основной сбой, заставляющий ячейки не обновлять формулы в Microsoft Excel. Вы можете решить эту проблему.

Запустите Excel, нажмите « Вкладка формул », а затем кнопку « Параметры расчета ». Теперь установите для параметра расчета значение Автоматический .

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

2. Ячейка отформатирована как текст .

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

Нажмите на ячейку и проверьте группу номеров на вкладке «Главная». Если отображается « Текст », измените его на « Общие », используя раскрывающееся меню.

Теперь пересчитайте формулу в ячейке, дважды щелкнув по ячейке и нажав « Ввод» .

3. Показать кнопку “Формулы” включено

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

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

4. Пробел введен перед знаком равенства

Последняя причина может заключаться в том, что при вводе формулы, если вы ошибочно вводите пробел перед «Равным (=)», следовательно, формула не будет рассчитываться. Эту ошибку очень трудно заметить, поэтому очень часто она остается незамеченной.

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

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

Источник: https://techarks.ru/office/excel/formuly-microsoft-excel-ne-obnovlyayuts...

Как использовать XPath

Язык разметки XML с самого первого стандарта окружает пользователей компьютеров. Таблицы в Excel, выгрузки из интернет-магазинов, RSS-ленты с новостями — все это основано на XML. Хоть визуальное отображение отличается на устройствах и в программах, но в основе всегда лежит единый формат.

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

язык запросов XPath.

В этой статье разберем:

  • для кого может быть полезен

    XPath

  • базовые конструкции языка для поиска информации в XML
  • чем XPath отличается от CSS-селекторов при поиске в HTML

Синтаксис XPath

Для начала создадим базовый пример XML, с которым и будем работать весь урок. Например, список курсов по верстке на Хекслете в XML будет выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<courses>
  <title>Курсы HTML и CSS (верстка)</title>
  <description>На курсах по верстке вы познакомитесь с основами HTML и CSS, научитесь верстать адаптивные страницы, работать с препроцессорами. Освоите современные технологии и инструменты, включая Flex, Sass, Bootstrap.</description>
  <course>
    <name>Основы современной верстки</name>
    <tags>HTML5, CSS, DevTools, верстка</tags>
    <duration value="9{C}{C}{C}">9 часов</duration>
    <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/layout-designer-basics</url>
    <url lang="en{C}{C}{C}">https://hexlet.io/courses/layout-designer-basics</url>
  </course>
  <course>
    <name>Основы верстки контента</name>
    <tags>CSS3, HTML5, Селекторы, Доступность, CSS Columns, CSS Units, Верстка</tags>
    <duration value="18{C}{C}{C}">18 часов</duration>
    <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/css-content</url>
    <url lang="en{C}{C}{C}">https://hexlet.io/courses/css-content</url>
  </course>
  <course>
    <name>Bootstrap 5: Основы верстки</name>
    <tags>Bootstrap 5, Адаптивность, HTML, CSS3</tags>
    <duration value="10{C}{C}{C}">10 часов</duration>
    <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/bootstrap_basic</url>
    <url lang="en{C}{C}{C}">https://hexlet.io/courses/bootstrap_basic</url>
  </course>
</courses>

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

Для тестирования результата подойдут такие онлайн-сервисы, как:

Абсолютные пути

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

/courses. Нам вернется XML в почти таком же виде, что и в примере выше. Обратите внимание на строку

<?xml version="1.0" encoding="UTF-8"?>. Она отличается, потому что элемент не внутри

<courses>:

<courses>
  <title>Курсы HTML и CSS (верстка)</title>
  <description>На курсах по верстке вы познакомитесь с основами HTML и CSS, научитесь верстать адаптивные страницы, работать с препроцессорами. Освоите современные технологии и инструменты, включая Flex, Sass, Bootstrap.</description>
  <course>
    <name>Основы современной верстки</name>
    <tags>HTML5, CSS, DevTools, верстка</tags>
    <duration value="9{C}{C}{C}">9 часов</duration>
    <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/layout-designer-basics</url>
    <url lang="en{C}{C}{C}">https://hexlet.io/courses/layout-designer-basics</url>
  </course>
  <course>
    <name>Основы верстки контента</name>
    <tags>CSS3, HTML5, Селекторы, Доступность, CSS Columns, CSS Units, Верстка</tags>
    <duration value="18{C}{C}{C}">18 часов</duration>
    <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/css-content</url>
    <url lang="en{C}{C}{C}">https://hexlet.io/courses/css-content</url>
  </course>
  <course>
    <name>Bootstrap 5: Основы верстки</name>
    <tags>Bootstrap 5, Адаптивность, HTML, CSS3</tags>
    <duration value="10{C}{C}{C}">10 часов</duration>
    <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/bootstrap_basic</url>
    <url lang="en{C}{C}{C}">https://hexlet.io/courses/bootstrap_basic</url>
  </course>
</courses>

В качестве результата XPath возвращает узлы XML-документа.

Продолжим цепочку и обратимся к описанию из элемента

<description>. Для этого добавим в запрос путь к

description:

/courses/description. Результатом выполнения станет:

<description>На курсах по верстке вы познакомитесь с основами HTML и CSS, научитесь верстать адаптивные страницы, работать с препроцессорами. Освоите современные технологии и инструменты, включая Flex, Sass, Bootstrap.</description>

Путь, который строится от корневого элемента, называется

абсолютным. Используем схему из прошлого запроса и обратимся к любому элементу внутри XML.

Попробуем обратиться к имени курса. В этом случае вернется поле

<name> из всех курсов. Запрос

/courses/course/name вернет:

<name>Основы современной верстки</name>
<name>Основы верстки контента</name>
<name>Bootstrap 5: Основы верстки</name>

Вот список некоторых базовых запросов и их результат:

Запрос          Результат                                                                               
/courses/course Все данные из всех элементов

<course></course>                                         

/courses/course/name <name>Основы современной верстки</name>
<name>Основы верстки контента</name>
<name>Bootstrap 5: Основы верстки</name>
/courses/course/duration <duration value="9">9 часов</duration>
<duration value="18">18 часов</duration>
<duration value="10">10 часов</duration>

Относительные пути

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

относительный путь — он произведет поиск по всему XML и вернет узлы, подходящие под запрос.

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

//. После нее можно написать любое поле и получить результат. Например,

//name вернет поля

<name> из всего XML:

<name>Основы современной верстки</name>
<name>Основы верстки контента</name>
<name>Bootstrap 5: Основы верстки</name>

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

<title>:

<courses>
  <title>Курсы HTML и CSS (верстка)</title>
  <!-- ... -->
    
  <course>
    <title>Основы современной верстки</title>
    <!-- ... -->
  </course>
    
  <course>
    <title>Основы верстки контента</title>
    <!-- ... -->
  </course>
    
  <course>
    <title>Bootstrap 5: Основы верстки</title>
    <!-- ... -->
  </course>
    
</courses>

Запрос

//title вернет не только имена курсов, но и узел, который находится в

<courses>:

<title>Курсы HTML и CSS (верстка)</title>
<title>Основы современной верстки</title>
<title>Основы верстки контента</title>
<title>Bootstrap 5: Основы верстки</title>

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

/courses/course/name они пишут

//course/name. Для практики попробуйте прошлые примеры перевести на относительные пути с помощью такого механизма.

Несколько примеров запросов с идентичными ответами, как и в прошлой таблице:

Запрос              Результат                                                   
//course          Все данные из всех элементов

<course></course>             

//name            <name>Основы современной верстки</name>
<name>Основы верстки контента</name>
<name>Bootstrap 5: Основы верстки</name>
//course/duration <duration value="9">9 часов</duration>
<duration value="18">18 часов</duration>
<duration value="10">10 часов</duration>

Предикаты

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

<courses>? На помощь приходят

предикаты — конструкции, с помощью которых можно отфильтровать элементы по заданным условиям. 

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

//course[1]/tags:

<tags>HTML5, CSS, DevTools, верстка</tags>

Обратите внимание на

[1]. Это предикат с таким условием: «Взять элемент по индексу 1». Попробуйте сделать запрос ко второму или третьему элементу. Достаточно поменять всего одну цифру! 


В

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


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

<url>, у которых атрибут

lang равен

ru. Делается это указанием атрибута и значения. Чтобы

XPath отличил атрибут от элемента перед атрибутом указывается символ

@

Теперь запрос будет выглядеть так:

//course/url[@lang="ru"]

<url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/layout-designer-basics</url>
<url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/css-content</url>
<url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/bootstrap_basic</url>

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

//*[@*]:

<duration value="9{C}{C}{C}">9 часов</duration>
<url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/layout-designer-basics</url>
<url lang="en{C}{C}{C}">https://hexlet.io/courses/layout-designer-basics</url>
<duration value="18{C}{C}{C}">18 часов</duration>
<url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/css-content</url>
<url lang="en{C}{C}{C}">https://hexlet.io/courses/css-content</url>
<duration value="10{C}{C}{C}">10 часов</duration>
<url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/bootstrap_basic</url>
<url lang="en{C}{C}{C}">https://hexlet.io/courses/bootstrap_basic</url>

По примеру выше видно, знак

* обозначает «все/любой».

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

<duration> со значением атрибута

value больше

9. Внутри предикатов используются

операторы сравнения, знакомые по языкам программирования:

  • > — больше
  • < — меньше
  • >= — больше или равно
  • <= — меньше или равно
  • = — равно
  • != — не равно

Запрос будет выглядеть так:

//course/duration[@value > 9]:

<duration value="18{C}{C}{C}">18 часов</duration>
<duration value="10{C}{C}{C}">10 часов</duration>

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

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

Мы уже знаем, как с помощью предиката отфильтровать данные по полю

<duration>. Эту задачу мы выполняли с помощью конструкции

duration[@value > 9]. А теперь попробуем сделать эту конструкцию предикатом для

<course>. Так мы получим данные о курсах с длительностью больше 9 часов:

//course[duration[@value > 9]]:

<course>
  <title>Основы верстки контента</title>
  <tags>CSS3, HTML5, Селекторы, Доступность, CSS Columns, CSS Units, Верстка</tags>
  <duration value="18{C}{C}{C}">18 часов</duration>
  <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/css-content</url>
  <url lang="en{C}{C}{C}">https://hexlet.io/courses/css-content</url>
</course>
<course>
  <title>Bootstrap 5: Основы верстки</title>
  <tags>Bootstrap 5, Адаптивность, HTML, CSS3</tags>
  <duration value="10{C}{C}{C}">10 часов</duration>
  <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/bootstrap_basic</url>
  <url lang="en{C}{C}{C}">https://hexlet.io/courses/bootstrap_basic</url>
</course>

Можно продолжить этот запрос и получить только имена курсов. Тогда предикат будет в середине запроса, а не в его конце: `//course[duration[@value > 9]]/name

<name>Основы верстки контента</name>
<name>Bootstrap 5: Основы верстки</name>

Функции

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

XPath функции. Они являются частью предикатов — например,

@. Попробуем найти курс с названием «Основы верстки контента».

Для поиска по тексту внутри элемента используется функция

text(). Ее задача — получить текстовое значение элемента и сравнить его с условием по необходимости. Вот как будет выглядеть запрос для поиска курса с нужным именем:

//course[name[text()="Основы верстки контента"]]

<course>
  <name>Основы верстки контента</name>
  <tags>CSS3, HTML5, Селекторы, Доступность, CSS Columns, CSS Units, Верстка</tags>
  <duration value="18{C}{C}{C}">18 часов</duration>
  <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/css:content</url>
  <url lang="en{C}{C}{C}">https://hexlet.io/courses/css:content</url>
</course>

Но что, если нам известно только часть названия? Для этого существует функция

contains(), которая принимает два аргумента:

  1. Строка, где будет производиться поиск
  2. Подстрока, которая будет искаться

Для примера найдем курс, у которого в ключевых словах есть слово «Bootstrap». Функция примет текстовое значение элемента

tags и найдет там слово «Bootstrap»:

//course[tags[contains(text(), "Bootstrap")]]

<course>
  <name>Bootstrap 5: Основы верстки</name>
  <tags>Bootstrap 5, Адаптивность, HTML, CSS3</tags>
  <duration value="10{C}{C}{C}">10 часов</duration>
  <url lang="ru{C}{C}{C}">https://ru.hexlet.io/courses/bootstrap_basic</url>
  <url lang="en{C}{C}{C}">https://hexlet.io/courses/bootstrap_basic</url>
</course>

В стандарте

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

Отличия от CSS-селекторов

Если вы писали на JavaScript, то знаете, что элементы можно искать с помощью CSS-селекторов, используя методы

querySelector() или

querySelectorAll(). Почему же разработчики иногда ищут элементы внутри HTML именно с помощью_XPath_?

Дело в концепции поиска элементов. Используя CSS, можно идти только в глубину без возможности обратиться к родительским элементам. В отличие от CSS,

XPath позволяет в любой момент обращаться и к дочерним, и к родительским элементам.


Если вы хотите подробнее изучить поиск по HTML с помощью XPath, рекомендуем обратиться к статье

Introduction to using XPath in JavaScript


С помощью CSS нельзя найти все элементы

div, внутри которых есть ссылки — можно найти сами ссылки, но не их родителей. XPath позволяет это сделать простым сочетанием

div[a]. Постепенно ситуация меняется: в CSS появился селектор

:has(), но он поддерживается еще не всеми новыми версиями браузеров. Со временем это изменится, но, пока реальность именно такая.

Другой пример — поиск элементов по тексту внутри них. С этой задачей CSS никогда не справится, так как такой задачи у него нет. XPath, как мы изучили, умеет это делать с помощью функции

text()

Кому нужен Xpath

Если коротко, Xpath нужен всем, кто работает с XML.

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

SEO-специалисты. Специалисты по продвижению часто обрабатывают большие массивы данных и вытаскивают информацию со страниц сайта.

Например, для них критичны

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

XPath.

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

XPath и DevTools, встроенный в браузеры на основе

Chromium.

Разработчики. Они часто используют

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

XPath.

Это лишь часть сценариев, в которых пригождается язык

XPath — на самом деле, их десятки.

Заключение

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

  • Абсолютные и относительные пути
  • Предикаты
  • Поиск по атрибутам
  • Операторы сравнения
  • Функции

Также теперь вы знаете, что поиск по HTML с помощью XPath может быть эффективнее поиска с помощью CSS-селекторов.

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

Источник: https://guides.hexlet.io/ru/xpath/

Средства просмотра фотографий Windows не показывает скриншоты с некоторых телефонов?

Как решить проблему при просмотре изображений с помощью средства просмотра фотографий Windows: присылают скриншоты с телефонов, а они не открываются пишет — недостаточно памяти, а у меня в ноутбуке 8 Гб. Что делать?

Если вам знакома такая картина и вы не знаете как решить проблему — то вы пришли по адресу.

У многих при просмотре некоторых изображений с помощью стандартного средства просмотра фотографий Windows (на Windows 7 и реже на Windows 10) возникает проблема со следующим описанием:

«Средство просмотра фотографий Windows не может отобразить изображение. Возможна нехватка свободной оперативной памяти. Закройте некоторые неиспользуемые программы или, если жесткий диск почти заполнен, освободите часть места  на  диске, после чего повторите попытку.»  

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

Итак, на примере Windows 7, смотрим что нужно делать.

1. Правой клавишей клик на рабочем столе и в появившемся контекстном меню выбираем пункт «Разрешение экрана»:


2. Далее в открывшемся окне жмем на «Дополнительные параметры»:


3. В следующем окне переходим на вкладку «Управление цветом» и жмем на одноименную кнопку:


4. В следующем окне переходим на вкладку «Подробно» и в раскрывающемся списке «Профиль устройства» выбираем «Agfa: Swop Standart» как на скриншоте ниже:


Все. Жмем закрыть, ок, ок. И пробуем открывать проблемное изображение. Если вы все сделали правильно — оно без проблем откроется.

Желающие могут посмотреть это все на видео:

В Windows 10 все делается подобным образом. Менять нужно тот же профиль. Только менюшки немного другие.

Источник: https://igorlutiy.pp.ua/2021/09/05/%D0%BA%D0%B0%D0%BA-%D1%80%D0%B5%D1%88...

Как добавить бесплатный сертификат Let’s Encrypt на сайт с хостингом?

Недавно решал данную проблем.

Хостинг nic.ru не очень клиентоориентирован и хочет чрезмерно много за обычный ssl сертификат. А хочется подешевле и бесплатно — Let’s Encrypt.

К слову, хостинг reg.ru тоже не предполагает автоматом установки сертификата SSL для домена. Решение подойдет и ему и любому хостингу.

Актуальность статьи на сентябрь 2022 года.

Итак, сначала был создан ssh пользователь. получилось поставить CerBot, но на этапе выпуска сертификата потребовались root права, которые как известно получить на обычном шаред хостинге нереально, либо долго, т.к. с саппортом спорить там бесполезно.

Было решено искать другое решение. и нашлось.

NB! Сразу скажу, что для установки ssl сертификата на сайт, хостинг требует выделенный IP-адрес (у нас он был).

Дабы не зависеть от санкций и хотелок тех или иных сайтов пошел искать решение на сайте Let’s Encrypt. Благо теперь там куча вариаций по генерации.

Решение на php с автоматическим продлением, хотя установка на хостинге все равно делается руками.

Все что нужно — это доступ к файлам на сервере (FTP или через встроенный файл-менеджер)

 

1. Итак заходим на сайт https://freessl.tech/

2. Скачиваем архив (скачивание происходит как заказ в интернет-магазине). После оформления получаем ссылку на скачивание.

3. Далее распаковываем архив у себя на компе в папке будет еще 1 папка. можно закинуть ее в корень нашего сайта и там переименовать как угодно. Я переименовал папку в «mysert».

После переименования вводим в адресной строке браузера «ваш сайт/mysert». Если все сделано правильно, видим окно интерфейса с генерацией сертификата.

4. Наверху есть кнопка для быстрой генерации ключей. Если вы хотите , чтобы ключи генерировались автоматом, то нужно создать базу данных и ввести данные ниже в окне (на сайте есть мануал, хотя смысл от него, если все равно кличи надо руками прописывать на хостинге). Нажимаем кнопку, далее страница ввода e-mail (обязательно) и соглашаемся с условиями. После жмем кнопку и ждем несколько секунд.

5. После генерации получаем окно с результатами, наши главные строки со ссылками на папку, где лежать сертификаты.

 

6. Далее идем в паку, в которой сохранены сертификаты на хостинге, через total или файл-менеджер хостинга.

Мы выпустили сертификат SSL, поздравляю!

Нужно скачать 3 файла: certifacate (наш сертификат), private (наш приватный ключ), cabundle (промежуточный сертификат).

7. Теперь надо добавить сертификат в панель управления хостингом nic.ru:

Заходим под своим логином. Выбираем управление услугами: хостинг, почта, конструктор сайтов — сайты (выбираете нужный сайт и жмете на его название) — безопасность — жмете галку ssl сертификат и жмете кнопку установить.

После этого панель предложит загрузить файлы сертификата.

8. Грузите файлы сертификата: в окно сертификат — файл certificate- в окно приватный ключ файл с буквами key на конце, в окно с промежуточным сертификатом грузим -cabundle.

9. Сохраняем и радуемся! Перезагружаем сервер чтобы обновления вступили в силу.

P.S. Инструкция для добавления на nic.ru подходит и для других хостингов, хотя все уже сами предлагают автоматом сертификаты при размещении сайтов на их хосте.

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

Вот так.

Источник: https://uranote.ru/web/letencrypt-nic-ru/

Как получить бесплатно SSL сертификата от Let’s Encrypt без установки скриптов на сервер?

Как получить бесплатно SSL сертификата от Let’s Encrypt без установки скриптов на сервер? Везде где я не смотрю нужен рут доступ. у меня его нет

 

В этой статье я расскажу как воспользоваться одним из удобных способов для автоматизации получения бесплатного SSL сертификата от Let’s Encrypt. Данный способ, на мой взгляд, очень удобен. Для его функционирования не нужно вводить команды в консоли, а все операции выполняются в вашем любимом браузере.

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

Итак, инструмент называется FreeSSL.tech Auto. Это клиент для Let’s Encrypt написанный на PHP. Вот основные плюсы данного клиента:

  • Это приложение работает на виртуальном хостинге.
  • Не требуется root-прав.
  • Не требуется командная строка.
  • Установка и настройка приложения с помощью браузера.
  • Панель управления администратора адаптирована для мобильных устройств. Таким образом, вы можете эффективно управлять приложением со своего мобильного телефона!
  • Совершенно бесплатно!

Девиз разработчиков «Все, что вам нужно, веб-браузер и несколько минут!» – идеально подходит к данному способу получения сертификата. Да, вот ссылка на сайт разработчиков.

ну и прежде чем начать:

ВАЖНО! Для подтверждения владения доменом и успешной генерации сертификата, нужно генерировать сертификаты с сервера куда ссылается A-запись.

Минимальные системные требования:

  • Хостинг на Linux: cPanel или другие панели (этот клиент НЕ совместим с Windows-хостингом)
  • PHP 5.4 и выше
  • MySQL 5 или MariaDB 10
  • Установленные расширения OpenSSL, Curl и MySQLi
  • PHP директива allow_url_fopen = On
  • Для автоматической установки бесплатного SSL-сертификата вам необходимо включить функцию установки SSL в вашей cPanel (подробнее читайте на сайте разработчиков).

Скачивание клиента

  • Если вам комфортнее с composer, можете скачать клиент с Github по ссылке https://github.com/speed-up-website/freessl.tech-auto.
  • Если у вас не хватает опыта для работы с composer или если вы вообще не знаете что это такое, скачайте клиент по ссылке (2.71 MB). Архив содержит предустановленную версию клиента и все необходимые компоненты.

Установка на хостинг

Любым удобным способом (ftp, через файловый менеджер самой панели) закачайте архив с клиентом на свой хостинг. Предварительно, рекомендую создать домен 3-го уровня и установить клиент именно на него. К примеру: http://myfreessl.mydomain.com
Затем необходимо распаковать содержимое архива в корневую директорию своего сайта, обычно это public_html. Но на некоторых хостингах может быть по-другому. Если вы не используете домен 3-го уровня, то распакуйте содержимое архива в предварительно созданную директорию в корне сайта, к примеру myssl.

Создание базы данных

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

Запуск установочного скрипта

Теперь необходимо запустить установку клиента с помощью веб-браузера. Перейдите по URL, в место куда был распакован клиент. Для домена 3-го уровня путь будет выглядеть следующим образом: http://myfreessl.mydomain.com. Если вы распаковали клиент в директорию myssl, то URL будет выглядеть примерно так: http://yourdomain.com/myssl
Если web-сервер настроен корректно, то должна открыться страница с регистрацией:

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

Регистрация пользователя

В открывшуюся форму необходимо ввести e-mail адрес администратора и его пароль. Затем нажать кнопку Submit

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

Авторизация пользователя

В открывшейся форме, введите свой e-mail и пароль, указанные при регистрации. Затем нажмите кнопку Login

Настройка клиента

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

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

В открывшемся окне необходимо заполнить все поля обозначенные *
Выберите, будете ли использовать wildcard.
Выберите страну и введите штат (область).
Поле «Home directory of your server. Don’t use a trailing slash» – в него необходимо ввести домашний каталог веб сервера.
Это должен быть каталог, который НЕ доступен через web. Ваши приватные ключи и пароль cPanel будут сохранены здесь. Этот каталог должен быть доступен для записи.
В следующем поле, необходимо ввести путь к каталогу в котором будут храниться закрытые ключи. Не нужно указывать / до и после пути. К примеру: ssl/myssl. Рекомендую ввести в это поле ssl.
«IP Address of this server» – введите в это поле реальный IP сервера, на котором установлен хостинг.
После завершения настроек, нажмите кнопку Save

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

Добавление домена

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

На главной странице панели отображаются две кнопки:

Domains – список уже добавленных доменов
Add domains – добавить новый домен.
Жмем кнопку «Add domains».

Далее открывается форма:

В первое поле введите свой домен, для которого необходимо сгенерировать SSL сертификат.
Во второе поле введите псевдонимы домена (если они у вас есть) разделяя их пробелами. Грубо говоря: данные псевдонимы должны открывать сайт вашего основного домена.
Ну и третье поле – Document Root. В него необходимо ввести полный путь до корневого каталога сайта. Как выше уже говорил, обычно это заканчивается на public_html. К примеру /var/share/www/mydomain/public_html
После заполнения форм нажмите кнопку Save – домен будет добавлен.

Генерация SSL сертификата

В главном меню панели управления, нажмите кнопку «Issue Free SSL», либо на панели навигации слева:

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

Хочу заметить, что данная процедура запускает попытку генерации сертификатов для всех добавленных доменов. Если их срок истекает, то сертификат обновится. Срок настраивается в настройках, поле «Number of days before the expiry date do you want to renew the SSL»
В случае успешной генерации SSL сертификата, в корневом каталоге веб сервера (указан в настройках) появится каталог ssl (указан в настройках), содержащий сертификат для конкретного домена. К примеру: /var/share/www/ssl/acme_v2/live/mydomain.ru/
В этом каталоге находятся сертификат fullchain.pem и ключ private.pem.

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

Что бы SSL сертификаты генерировались и обновлялись автоматически, необходимо добавить задание cron, которое запускает генерацию сертификатов для всех добавленных доменов, подобно кнопке Issue Free SSL:

php /var/share/www/mydomain.ru/public_html/cron.php 

На этом процесс генерации SSL сертификата завершен.
Удачи!

Источник: https://blognode.ru/avto-poluchenie-besplatnogo-ssl-sertifikata-ot-lets-...

Как подключить второй компьютер, как второй монитор?

В Виндовс 10 есть опция — беспроводной дисплей, т.е. использование мониора компьютера, как монитора для другого компьютера, как ее пользоваться?

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

И в этом плане, возможно, для некоторых хорошим решением станет использование "старого" ноутбука под это дело (благо, никаких проводов и переходников не потребуется — будем использовать полностью беспроводное подключение дисплея!).

  • ничего доп. покупать не нужно;
  • его легко и быстро подключить, и также легко убрать с рабочего стола;
  • на столе не появиться никаких проводов;
  • помимо изображения — будет также подаваться и звук (благо у ноутбуков есть динамики. Может быть актуально в рабочих условиях, где нет колонок у офисного ПК);
  • к такому дисплею можно подключаться с любого другого компьютера (и даже телефона!).

Теперь о том, как "всё это" настроить...

Подключение ноутбука «в роли монитора и колонок»

ШАГ 1 (условия)

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

  1. во-первых, на всех устройствах, участвующих в подключении, должна быть установлена Windows 10 версии 1809+ 
  2. во-вторых, также на всех устройствах должен быть адаптер Wi-Fi (в подавляющем большинстве ноутбуков он есть, на ПК — чаще всего покупается отдельный модуль).

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

Если ноутбук видит доступные Wi-Fi сети — значит Wi-Fi работает! (а это нам и надо)

ШАГ 2

Теперь необходимо открыть параметры Windows 10/11 (сочетание Win+i) на ноутбуке, который у нас будет в роли "второго дисплея".

 

 

После перейти в раздел "Система / Проецировать на этот компьютер" (если у вас нет этой вкладки — возможно стоит обновить ОС). Далее, если у вас настройки в этой вкладке "серые" и их нельзя поменять — нажмите по ссылке "Доп. компоненты".

Проецирование на этот компьютер - доп. компоненты

Проецирование на этот компьютер - доп. компоненты

Затем установите дополнительный компонент "Беспроводной дисплей" ().

Установить беспроводной дисплей

Установить беспроводной дисплей // Windows 10

Беспроводной дисплей - доп. компонент для Windows 11

Беспроводной дисплей - доп. компонент для Windows 11

 

 

После, установите режим "Доступно везде", без ввода пин-кода — и нажмите по ссылке "Запуск приложения для подключения...". См. пример ниже.

запуск приложения для проектирования на этот ПК

Запуск приложения для проецирования на этот ПК

 

 

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

Готово для беспроводного подключения

Готово для беспроводного подключения

ШАГ 3

Переходим к основному компьютеру (к которому мы подключаем "второй дисплей в виде ноутбука"). Еще раз добавлю, что на этом ПК также должен быть Wi-Fi адаптер и Windows 10.

1) Сначала нужно нажать сочетание кнопок Win+P — чтобы появилось боковое меню с выбором варианта проецирования. Кликните по ссылке "Подключение к беспроводному дисплею".

Подключение к беспроводному дисплею

Подключение к беспроводному дисплею

 

Кстати, если сочетание Win+P не сработает — кликните по значку уведомления в нижнем правом углу экрана и выберите опцию "Подключение".

Подключение

Подключение

 

 

2) Далее в списке доступных устройств должен появиться наш "ноутбук" (который ждет с ШАГА 2, когда мы к нему подключимся... ). Выбираем его и ждем 5-10 сек...

Нажимаем по найденному дисплею

Нажимаем по найденному дисплею

 

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

Нажмите снова на Win+P и выберите варианта проецирования - "Расширить" (это позволит выводить на него отдельные окна).

Вариант проецирования - расширение!

Вариант проецирования - расширение!

ШАГ 4

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

Примечание: звук при данном подключении начинает подаваться на ноутбук автоматически! Технология WiDi — беспроводная передача контента между мобильных устройств (1080p HD-видео и 5.1 объёмный звук).

Фото 1: беспроводной дисплей подключен

Фото 1: беспроводной дисплей подключен

 

Ремарка:

  1. разумеется, "создать такой второй дисплей" можно как из ноутбука, так и из ПК (главное, чтобы они имели Wi-Fi адаптеры и соответствующие версии Windows 10);
  2. расстояние между устройствами может быть достаточно большим (тестировал: до 10 метров все ОК). На своих фото ниже я спец. разместил их вместе.

Фото 2: разумеется, ноутбук можно поставить дальше от текущего компьютера

Фото 2: разумеется, ноутбук можно поставить дальше от текущего компьютера

Пожалуй, единственный существенный минус: изображение на этот подключенный дисплей ноутбука передается с небольшой задержкой в 0,3-0,5 сек. Для просмотра фильма, музыки и пр. "добра" — это не имеет значения, но вот для игр или графиков такая задержка может быть губительна...

 

Источник: https://ocomp.info/iz-nouta-vtoroy-monitor.html

 

Как скачать защищенный pdf файл с гугл диска?

Скажите, как скачать пдф файл с гугл диска, который защищен от скачивания?

Вам, нужен скрипт:


let jspdf = document.createElement("script");
jspdf.onload = function () {
let pdf = new jsPDF();
let elements = document.getElementsByTagName("img");
for (let i in elements) {
let img = elements[i];
console.log("add img ", img);
if (!/^blob:/.test(img.src)) {
console.log("invalid src");
continue;
}
let can = document.createElement('canvas');
let con = can.getContext("2d");
can.width = img.width;
can.height = img.height;
con.drawImage(img, 0, 0, img.width, img.height);
let imgData = can.toDataURL("image/jpeg", 1.0);
pdf.addImage(imgData, 'JPEG', 0, 0);
pdf.addPage();
}
pdf.save("download.pdf");
};
jspdf.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js';
document.body.appendChild(jspdf);

Как загрузить ограниченный PDF из Google Drive через Chrome

  • Откройте ваш защищенный PDF документ, я покажу, как это делается в Google Chrome
  • Перейдите в режим разработчика. В Google Chrome это делается, через нажатие клавиши F11 или вызов соответствующего меню "Дополнительные - Инструменты разработчика (CTRL+SHOFT+I)"

Вызов режима разработчика в Chrome

  • Обязательно выберите режим iPad Pro для максимального разрешения и выставите масштаб 100%, в противном случае вы скачаете документ не с очень хорошим качеством. Далее нажмите клавишу F5 и обновите страницу
  • Полностью, по порядку пролистайте все страницы данного PDF файла
  • Далее перейдите на вкладку "Console"

Вызов консоли в инструментах разработчика

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

Выполнение кода для скачивания защищенного PDF в Chrome

Начнется процесс сборки вашего PDF документа.

Скачивание ограниченного PDF файла из гугл диска

Через пару мгновений вы получите нужный вам PDF документ.

Успешно загруженный PDF документ

Источник: http://pyatilistnik.org/download-view-protected-pdf-google-drive/

Страницы

Мы в курсе новинок и технологий компьютерного рынка.

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