По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Основные тезисы: Шифрование – это крайне важная технология для информационной безопасности, которая обеспечивает конфиденциальность за счет преобразования данных в нечитаемый формат для тех, у кого нет доступа к ним.  Такие известные истории методы шифрования, как скитала, квадрат Полибия и шифр Цезаря, повлияли на современные системы шифрования.  На сегодняшний день шифрование опирается на алгоритмы, в основе которых лежит разложение чрезвычайно больших чисел на простые, и которые защищают хранимые данные, веб-сайты и цифровую коммуникацию. Вы наверняка встречали на просторах Интернета такой термин, как «шифрование». Но что это такое? Вероятно, это самая важная технология, которой мы располагаем. На нее полагается большая часть мер информационной безопасности – от безопасного просмотра веб-страниц до защиты электронной почты. Если бы у нас не было такой функции, как шифрование, то ни о какой конфиденциальности не могло бы быть и речи.  Что такое шифрование? Шифрование меняет состав сообщения или данные таким образом, что его могут прочитать лишь люди, которые знают, как привести его в исходную форму. Все остальные просто решат, что это какой-то бессмысленный набор букв и символов.  Это на редкость полезная вещь, особенно если вы пересылаете какую-то конфиденциальную информацию. Хорошая схема шифрования поможет защитить эту информацию от посторонних глаз. Схема шифрования буквально описывает то, как алгоритм меняет сообщение или данные, чтобы сделать их нечитаемыми. Мы приведем несколько примеров устаревших алгоритмов, а затем обсудим, как это происходит сейчас.  Скитала Еще в давние времена люди использовали различные средства для того, чтобы их личные сообщения смог прочитать лишь предполагаемый получатель, и никто другой. Древние греки плотно обматывали спиралью узкую полоску пергамента вокруг деревянного стержня, который назвался скиталой. Они писали свое послание поверх завернутого пергамента по всей длине этого стержня.  Раскрученный пергамент не имел никакого смысла. Посыльный доставлял его получателю, который должен был прочитать его без посторонних, предварительно обернув его вокруг своей собственной скиталы. Это разновидность перестановочного шифра. Это довольно примитивный способ, но в нем присутствуют элементы, которые можно найти и в современных системах шифрования. Получается, что и отправитель, и получатель должны знать, что это за схема шифрования и как ее использовать, и для этого им обоим нужны соответствующие приспособления. Квадрат Полибия Был еще один метод, который также использовали древние греки. Он заключался в использовании квадрата Полибия. Это была буквенная сетка размером 5х5 или 6х6. Буква находилась по своим координатам, как в игре «Морской бой». Первая буква в первой строке кодировалась как «11», четвертая буква во второй строке – как «42» и т.д. Разумеется, способов заполнения такой стеки довольно много, и если вы не знаете, как расположены буквы в этой сетке, то расшифровать сообщение будет довольно сложно. Такой метод позволяет вам создать схему с несколькими квадратами с несколькими вариантами расположения букв. Например, вы можете создать семь квадратов и использовать каждый из них в определенный день недели. Схемы, использующие несколько алфавитов, называются полиалфавитными шифрами.  Квадрат Полибия – это разновидность кода. Код заменяет буквы другими символами, в данном случае цифрами. Шифры же заменяют буквы другими буквами. Шифр Цезаря Юлий Цезарь назвал этот шифр в свою честь. Этот шифр для выбора буквы использует смещение (или «сдвиг») на заданное расстояние от буквы, которую вы шифруете. Если бы вы использовали смещение, равное двум, то «А» стало бы «С», а «D» - «F». Получатель должен знать точное смещение, необходимое для расшифровки сообщения. Чтобы расшифровать текст, необходимо было вычесть из полученных букв это смещение.  Шифр Цезаря со смещением на 13 позиций также известен как «сдвиг на 13» или ROT13. Он обладает особым свойством. В обычном английском алфавите 26 букв, и 13 делит это количество ровно пополам. Если используется такое смещение, то, чтобы расшифровать какое-то сообщение, вы можете снова выполнить процедуру шифрования. В данном случае двойное шифрование вернет вас к исходному тексту.  Исходный: ABCDEFGHIJKLMNOPQRSTUVWXYZ ROT13: NOPQRSTUVWXYZABCDEFGHIJKLM Если вы выберите из обычного алфавита буквы «GEEK» и запишете соответствующие буквы из второго алфавита, вы получите «TRRX». Если вы проделаете тоже самое с буквами «TRRX», то снова получите «GEEK». С точки зрения программирования, такой шифр упрощает нам задачу – нам необходимо написать только программу шифрования. Писать программу для расшифровки не нужно. Именно по этой причине реализация ROT13 стала стандартным упражнением для тех, кто изучает программирование. При этом ROT13 зачастую называют примером шифра крайне низкой криптографической стойкости.   Вы можете попробовать поэкспериментировать с этим шифром с помощью  онлайн-программы ROT13 . Попробуйте ввести «Alaska Nynfxn», а затем попробуйте передать этот вывод в качестве входного значения.  Так что же такое шифрование? Все примеры шифров, которые мы здесь рассмотрели, довольно легко взломать, но они иллюстрируют общий элемент, который объединяет их и все виды шифрования. Существует определенный набор правил, которым необходимо следовать, чтобы преобразовать исходные данные, которые называются «открытым текстом», в их зашифрованную версию, которая известна как «шифртекст». Этот набор правил – это алгоритм, который и определяет шифрование.  Это алгоритмы, которые обеспечивают конфиденциальность. Как работает шифрование сегодня? Как и древние греки, люди, живущие в эпоху цифровых технологий, желающие хранить и отправлять личные данные, сталкиваются с некоторыми трудностями. Что вы можете сделать, чтобы посторонние лица не смогли получить доступ к этим данным? И что можно сделать, чтобы их обезопасить? Все старые системы можно легко взломать, если вы знаете систему шифрования. Если вы воспользуетесь стелжнем того же диаметра, то без проблем сможете прочитать сообщение на скитале. Шифр Цезаря также можно легко взломать, просто попробовав разные смещения на первой части сообщения. Получится максимум 25 попыток. Квадраты Полибия – это уже более сложная задача, так как буквы внутри квадрата могут располагаться как угодно. Если вы знаете, как расположены буквы, то вам ничего не стоит расшифровать сообщение. Ну а если вы понятия не имеете, каким образом составлен квадрат, то вы можете попробовать расшифровать сообщение, изучив непосредственно зашифрованный текст. Это называется криптоанализ.  При простом шифре вы можете использовать такие вспомогательные средства, как частотные таблицы букв. С их помощью вы можете определить, какая буква шифртекста какой букве открытого текста соответствует. Надежная схема шифрования должна оставаться надежной независимо от того, кто знает о принципе шифрования, а шифртекст должен быть устойчив к криптоанализу. Никаких символов, только биты Надежные схемы шифрования не работают с буквами и символами по отдельности, как это делают алгоритмы посимвольного шифрования. Они обрабатывают данные частями (блоками) и называются блочными шифрами. Они оперируют битами (единицами и нулями) внутри каждого блока в соответствии с правилами сложных математических преобразований, заложенных в алгоритмах шифрования. Если алгоритм использует блоки размером 128 бит, то он будет обрабатывать данные порциями по 128 бит. Если последний обрабатываемый блок оказывается меньше, он заполняется незначащей информацией до необходимого размера. Существует огромное количество схем блочного шифрования. AES (Advanced Encryption Standard – расширенный стандарт шифрования) – это официальный стандарт шифрования правительства США. Разные схемы шифрования используют разные алгоритмы и разные размеры блоков, а также разные комбинации математических преобразований.  Все это хорошо звучит, но как сделать так, чтобы посторонние лица не смогли воспользоваться той же схемой шифрования для расшифровки шифртекста? Хэш-строки Для начала рассмотрим частный случай. Данные можно зашифровать с помощью одностороннего преобразования. Это полная противоположность ROT13, так как мы не сможем вернуть полученному шифртексту вид открытого текста. Если быть более точным, то его невозможно расшифровать в какие-то более или менее реальные сроки. Такой тип шифрования используется в хэш-функциях, которые хэшируют строку открытого текста в строку шифртекста, которая называется хэшем или хэш-строкой. Все хэш-строки имеют одинаковую длину. Насколько это полезно? Что ж, защищенный веб-сайт не будет хранить ваш пароль в виде открытого текста. Он хэширует ваш пароль и сохраняет хэш-строку. Ваш пароль никогда не сохраняется. Когда вы в следующий раз будете заходить в систему и введете пароль, он вновь хэшируется, и полученная хэш-строка будет сравниваться с хэш-строкой, которая хранится в данных вашей учетной записи. Если они совпадают, то это значит, что вы можете войти в систему. Если же вы введете неправильный пароль, то эти хэш-строки не совпадут, и система вас не пропустит. Таким образом, веб-сайт может использовать функцию аутентификации, и при этом ему не нужно хранить пароль в открытом виде. Если вдруг сайт взломают, пароли не будут скомпрометированы. Помимо этого, перед хэшированием паролей методы могут добавлять к ним уникальные случайные данные, которые называют «солью». Это значит, что, даже если несколько пользователей выберут одинаковые пароли, хэши все равно будут уникальными.  Для чего используется шифрование? На сегодняшний день шифрование используется почти для всего (ну или, по крайней мере, так должно быть). Вот несколько примеров, с которыми вы встречаетесь практически каждый день. Зашифрованные накопители данных В целях предотвращения расшифровки данных посторонними лицами, используется специальный ключ, который определяет, кто их зашифровал, и кто их может расшифровать. Ключ – это длинная последовательность битов, сгенерированная сложным алгоритмом. Как правило, размер ключа варьируется от 128 до 2048 бит и более. Алгоритм шифрования использует ключ при шифровании открытого текста, при этом размер ключа никак не зависит от размера блока.  Для того, чтобы защитить данные, которые хранятся локально, можно зашифровать все жесткие диски. Процедура шифрования в данном случае привязывается непосредственно к учетной записи пользователя, а ключ генерируется и применяется автоматически. Пользователь не взаимодействует с ключом напрямую, и его не нужно никому отправлять. Так как ключ привязан к учетной записи пользователя, просто извлечь и подключить его к другому компьютеру и получить, таким образом, доступ к данным невозможно. Такой подход обеспечивает защиту данных, которые являются статическими или «хранимыми». Это относится не только к обычным компьютерам. Хранилища на современных мобильных телефонах также зашифрованы, и не без оснований. Наш телефон – это клондайк личной и конфиденциальной информации, и не стоит допускать, чтобы любой, кто случайно возьмет телефон в руки, мог получить доступ к этой информации.  Если вам необходимо передать данные, то вам стоит подумать, как защитить их при передаче. Защищенные веб-сайты Когда вы заходите на сайт и видите в адресной строке замочек, вы понимаете, что зашли на защищенный веб-сайт, не так ли? Ну или что-то в этом роде. На самом деле это значит, что соединение между вашим компьютером и веб-сайтом зашифровано криптографическими протоколами SSL/TLS.  Все это хорошо, но это не говорит о том, что остальная часть веб-сайта также защищена. Веб-сайт может хранить пароли в открытом виде или использовать пароль администратора по умолчанию для доступа к базе данных. Во всяком случае, если вы видите замочек, вы понимаете, что ваше взаимодействие с веб-сайтом зашифровано. Такое шифрование вполне возможно, так как ваш браузер и веб-сайт использую одну и ту же схему шифрования с несколькими ключами. В начале сеанса ваш браузер и веб-сайт обмениваются открытыми ключами. С его помощью можно расшифровать то, что было зашифровано с использованием закрытого ключа.  Ваш браузер и веб-сайт обмениваются своими открытыми ключами, а затем шифруют их с помощью своих закрытых ключей. Каждый конец соединения получает открытый ключ другого конца, а значит, каждый конец может расшифровать информацию, которую он получил от другого конца. Закрытые ключи не раскрываются. Такой обмен открытыми ключами полностью безопасен, так как их нельзя использовать для обманного шифрования данных. Так что, даже если вы получаете копию открытого ключа веб-сайта, вы не сможете выдать себя за подлинный веб-сайт, так как у вас нет закрытого ключа. И вот здесь возникает вопрос подлинности. Как понять, что веб-сайт является подлинным владельцем открытого и закрытого ключа, а не сайтом-подделкой, который каким-то образом украл оба ключа у подлинного сайта? Для проверки подлинности сайта используются сертификаты. Эти сертификаты выдаются специальными сертифицирующими организациями и только после проверки личности заявителя. Веб-сайт оправляет сертификат в качестве подтверждения в самом начале сеанса, чтобы браузер мог его проверить.  Для этого он обращается в сертифицирующую организацию и расшифровывает некоторые сведения о сертификате. Для этого нужны еще ключи. В установочном пакете вашего браузера хранятся открытые ключи основных сертифицирующих организаций. Дальше еще больше. Помимо того, что ваш браузер и веб-сайт обмениваются открытыми ключами, они также создают уникальные сеансовые ключи для того, чтобы обеспечить дополнительную защиту связи. После того, как ваш браузер проверит подлинность сайта и убедиться в надежности шифрования, он отметит его замочком.   Защищенная электронная почта Концепция открытого и закрытого ключей вновь и вновь появляется в шифровании. Один из распространенных методов защиты электронных писем при передаче использует все те же пары ключей. Открытыми ключами можно обмениться и не беспокоиться о безопасности, а вот закрытые ключи передавать нельзя. Сообщения шифруются с помощью закрытого ключа отправителя. А получатель может легко его расшифровать и прочитать, воспользовавшись открытым ключом отправителя. Для шифрования ответа они могут использовать свои собственные закрытые ключи.  OpenPGP – это хорошо известная схема шифрования, которая придерживается именно такой модели, но с некоторой изюминкой.  Почтовая программа отправителя генерирует случайный ключ, с помощью которого он шифрует сообщение. Затем этот случайный ключ шифруется с помощью открытого ключа получателя. После этого зашифрованное сообщение и зашифрованный случайный ключ отправляются получателю. С помощью своего закрытого ключа программа получателя расшифровывает случайный ключ, который затем использует для того, чтобы расшифровать сообщение. У этого дополнительного шага есть особая цель – он призван обеспечить безопасную отправку электронного письма нескольким получателям. Вам не нужно шифровать сообщение отдельно для каждого получателя, достаточно просто сгенерировать случайный ключ.  Разумеется, здесь также встает вопрос подлинности. Вы должны быть уверены в подлинности открытого ключа, который вам отправили. Ключи привязаны к адресам электронной почты. Если открытый ключ был отправлен с адреса, с которым вы будете общаться, это уже хорошо. Большинство почтовых программ способны отображать адрес электронной почты, к которому привязан открытый ключ.   Существует еще один способ проверки подлинности открытого ключа. Вы можете получить ключ из репозитория. Открытые ключи, загруженные в репозитории, всегда проверяются им перед публикацией.  Шифрование лежит в основе нашей жизни в цифровом мире Шифрование – это, пожалуй, и есть основа нашей цифровой жизни (если, конечно, мы все делаем правильно). Избегайте незащищенных удалённых подключений (будь то удаленная работа или Интернет-магазин), используйте почтовые программы, которые способны шифровать личные сообщения, и используйте мессенджеры со сквозным шифрованием.   Как бы сказал Цезарь: «Lbhe cevinpl vf vzcbegnag, hfr gur nccebcevngr gbbyf gb fnsrthneq vg».
img
Jitsi Meet - это бесплатное программное обеспечение для видеоконференций с открытым исходным кодом на базе WebRTC, которое работает на Linux, macOS, Windows, iOS и Android. Если вы не доверяете Zoom, вы можете запустить собственную платформу для видеоконференций на собственном сервере. Преимущество Jitsi Meet заключается в том, что все ваши данные передаются только через ваш сервер, а шифрование TLS обеспечивает защиту от перехвата и прослушивания. Это руководство покажет вам, как установить Jitsi Meet на сервер Ubuntu 18.04 и 20.04, а также Debian 10. > Особенности Jitsi Meet Совершенно бесплатно Поделитесь экраном своего компьютера с другими (Screensharing) Режим докладчика, который позволяет одновременно использовать экран и камеру Вы можете поделиться системным звуком во время демонстрации экрана Вы можете назначить авторизованных пользователей модераторами. Модератор может отключить звук у каждого участника одним щелчком мыши Связь по сети зашифрована с использованием DTLS-SRTP Сквозное шифрование Вы можете установить пароль для своей конференции, чтобы предотвратить вход случайных незнакомцев Запишите конференцию и сохраните ее в Dropbox Транслируйте на YouTube Live и сохраняйте запись на YouTube Приложения для Android и iOS Текстовый чат Вы можете поделиться текстовым документом Телефонный доступ к конференции Исходящий вызов телефонному абоненту Вы можете встроить вызов Jits Meet на любую веб-страницу с помощью всего нескольких строк кода Системные требования Вам понадобится: Linux сервер и non-root user с привилегиями sudo Доменное имя, указывающее на ваш сервер Шаг 1. Установите Jitsi Meet из официального репозитория пакетов Jitsi Meet не включен в репозиторий Ubuntu по умолчанию. Мы можем установить его из официального репозитория пакетов Jitsi, который также содержит несколько других полезных программных пакетов. Войдите на свой сервер через SSH, затем выполните следующую команду, чтобы добавить официальный репозиторий Jitsi. echo 'deb https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list Импортируйте открытый ключ Jitsi, чтобы менеджер пакетов APT мог проверять целостность пакетов, загруженных из этого репозитория. wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add - Поскольку для репозитория Jitsi требуется HTTPS-соединение, нам нужно установить пакет apt-transport-https, чтобы APT установил HTTPS-соединение с репозиторием Jitsi. sudo apt install apt-transport-https Затем обновите локальный индекс пакета и установите Jitsi Meet в Ubuntu. sudo apt update sudo apt install jitsi-meet Во время установки вам необходимо ввести имя хоста для вашего экземпляра Jitsi. Это имя хоста, которое будет отображаться в адресной строке веб-браузера, когда посетители присоединятся к вашей видеоконференции. Вы можете использовать описательное имя хоста, например meet.example.com. На следующем экране вы можете выбрать создание нового самозаверяющего сертификата TLS (Generate a new self-signed certificate), чтобы позже вы могли получить и установить доверенный сертификат Let’s Encryption. В процессе установки будут настроены некоторые параметры ядра Linux, которые сохраняются в файле /etc/sysctl.d/20-jvb-udp-buffers.conf. После завершения установки Jitsi Meet автоматически запустится. Вы можете проверить его статус с помощью: systemctl status jitsi-videobridge2 Пример вывода: ? jitsi-videobridge2.service - Jitsi Videobridge Loaded: loaded (/lib/systemd/system/jitsi-videobridge2.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-24 12:11:13 UTC; 3min 27s ago Main PID: 3665 (java) Tasks: 37 (limit: 65000) CGroup: /system.slice/jitsi-videobridge2.service L-3665 java -Xmx3072m -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HO Пакет jitsi-meet также извлекал другие пакеты в качестве зависимостей, например openjdk-8-jre-headless: среда выполнения Java. Это необходимо, потому что Jitsi Meet написан на языке Java. jicofo: Jitsi Conference Focus (systemctl status jicofo) prosody: Легкий сервер Jabber / XMPP (systemctl status prosody) coturn: сервер TURN и STUN для VoIP (systemctl status coturn) Шаг 2. Откройте порты в брандмауэре Jitsi Meet прослушивает несколько портов UDP, что можно увидеть с помощью следующей команды. (Если на вашем сервере Ubuntu нет команды netstat, вы можете запустить команду sudo apt install net-tools, чтобы установить ее.) sudo netstat -lnptu | grep java Чтобы участники могли присоединиться к видеоконференции из веб-браузера, вам необходимо открыть TCP-порт 80 и 443. А для передачи видео по сети откройте UDP-порт 10000 и 5000. Если вы используете брандмауэр UFW, запустите следующую команду, чтобы открыть эти порты. sudo ufw allow 80,443/tcp sudo ufw allow 10000,5000/udp Шаг 3. Получите доверенный сертификат Let's Encrypt TLS Перейдите в службу хостинга DNS (обычно это ваш регистратор домена), чтобы создать запись DNS A для вашего имени хоста Jitsi (meet.example.com). Затем запустите следующий скрипт, чтобы получить доверенный сертификат Let’s Encrypt TLS: sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh Введите свой адрес электронной почты, чтобы получать важные уведомления об учетной записи. Затем он загрузит certbot и получит сертификат TLS. This script will: - Need a working DNS record pointing to this machine(for domain jitsi.example.com) - Download certbot-auto from https://dl.eff.org to /usr/local/sbin - Install additional dependencies in order to request Let’s Encrypt certificate - If running with jetty serving web content, will stop Jitsi Videobridge - Configure and reload nginx or apache2, whichever is used - Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks - Add command in weekly cron job to renew certificates regularly You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf) by providing an email address for important account notifications Enter your email and press [ENTER]: Если все в порядке, вы увидите следующее сообщение, указывающее, что сертификаты TLS были успешно получены и установлены. Обратите внимание, что этот сценарий использует запрос http-01, что означает, что ваш веб-сервер Apache или Nginx должен прослушивать порт 80 общедоступного IP-адреса. Если ваша серверная среда не поддерживает вызов http-01, вам не следует запускать приведенный выше сценарий. Вам нужно использовать другие типы задач. В этом случае используем вызов DNS. sudo certbot --agree-tos -a dns-cloudflare -i nginx --redirect --hsts --staple-ocsp --email me@example.com -d meet.example.com Где: --agree-tos: примите условия использования. -a dns-cloudflare: используем плагин DNS cloudflare для аутентификации, потому что используем службу Cloudflare DNS. -i nginx: использовать плагин nginx для установки сертификата TLS. Если вы используете Apache, вам необходимо заменить nginx на apache. --redirect: принудительно использовать HTTPS с помощью 301 редиректа. --hsts: добавлять заголовок Strict-Transport-Security к каждому ответу HTTP. Заставить браузер всегда использовать TLS для домена. Защищает от удаления SSL/TLS. --staple-ocsp: включает сшивание OCSP. Допустимый ответ OCSP прикреплен к сертификату, который сервер предлагает во время TLS. Шаг 4. Включите HTTP2 HTTP2 может улучшить скорость загрузки веб-страницы. Чтобы включить HTTP2 в Nginx, отредактируйте файл конфигурации виртуального хоста. sudo nano /etc/nginx/sites-enabled/meet.example.com.conf Найдите следующие две строки. listen 443 ssl; listen [::]:443 ssl; Добавьте http2 в конце каждой строки. listen 443 ssl http2; listen [::]:443 ssl http2; Сохраните и закройте файл. Затем перезагрузите Nginx, чтобы изменения вступили в силу. sudo systemctl reload nginx Шаг 5. Начните новую онлайн-встречу Теперь посетите https://meet.example.com, и вы сможете начать конференцию. Для передачи звука вам необходимо разрешить веб-браузеру использовать ваш микрофон. А для передачи видео вам необходимо разрешить веб-браузеру доступ к вашей камере. Дайте вашей встрече название и нажмите кнопку Go. После начала собрания вы можете при желании установить пароль для собрания. Шаг 6. Настройте аутентификацию пользователя По умолчанию любой может перейти к вашему серверу Jitsi Meet, создать комнату и начать собрание. Чтобы настроить аутентификацию пользователя, отредактируйте файл конфигурации Prosody. sudo nano /etc/prosody/conf.d/meet.example.com.cfg.lua Найдите следующую строку. authentication = "anonymous" Измените его на следующее, что потребует от пользователя ввода имени пользователя и пароля для начала конференции. authentication = "internal_plain" Однако мы не хотим, чтобы участники вводили имя пользователя и пароль при присоединении к конференции, поэтому нам нужно создать анонимный вход для гостей, добавив следующие строки в конец этого файла. Обратите внимание, что вам не нужно создавать запись A DNS для guest.meet.example.com. VirtualHost "guest.meet.example.com" authentication = "anonymous" c2s_require_encryption = false Сохраните и закройте файл. Затем отредактируйте файл конфигурации Jitsi Meet. sudo nano /etc/jitsi/meet/meet.example.com-config.js Найдите следующую строку: // anonymousdomain: 'guest.example.com', Удалите двойные косые черты и измените гостевой домен. Замените meet.example.com своим настоящим именем хоста Jitsi Meet. anonymousdomain: 'guest.meet.example.com', Сохраните и закройте файл. Затем отредактируйте файл конфигурации Jicofo. sudo nano /etc/jitsi/jicofo/sip-communicator.properties Добавьте следующую строку в конец этого файла. org.jitsi.jicofo.auth.URL=XMPP:meet.example.com Сохраните и закройте файл. Перезапустите службы systemd, чтобы изменения вступили в силу. sudo systemctl restart jitsi-videobridge2 prosody jicofo Чтобы создать учетные записи пользователей в Jisi Meet, выполните следующую команду. Вам будет предложено ввести пароль для нового пользователя. sudo prosodyctl register username meet.example.com Теперь, если вы создаете комнату в Jitsi Meet, вам нужно будет ввести имя пользователя и пароль. Советы по устранению неполадок Если вы столкнулись с ошибками, вы можете проверить журнал ошибок Nginx (/var/log/nginx/error.log), чтобы узнать, что не так. Также проверьте журналы служб systemd. sudo journalctl -eu jitsi-videobridge2 sudo journalctl -eu prosody sudo journalctl -eu jicofo Если вы видите ошибку You have been disconnected (Вы были отключены) при запуске собрания в Jitsi, возможно, вы забыли изменить meet.example.com на свое настоящее имя хоста Jitsi Meet в файлах конфигурации. Опционально: настроить Jigasi для телефонного набора или исходящего вызова Jitsi предлагает телефонный интерфейс, который позволяет пользователям подключаться к конференции или делать звонки с напоминанием. Установите пакет jigasi (шлюз Jitsi для SIP). sudo apt install jigasi Во время установки вам нужно будет ввести свое имя пользователя и пароль SIP. Если у вас его нет, вы можете создать бесплатную учетную запись SIP на сайте OnSIP.com. Если вы настроили аутентификацию пользователя на шаге 6, вам необходимо отредактировать файл конфигурации Jigasi. sudo nano /etc/jitsi/jigasi/sip-communicator.properties Найдите следующие строки. # org.jitsi.jigasi.xmpp.acc.USER_ID=SOME_USER@SOME_DOMAIN # org.jitsi.jigasi.xmpp.acc.PASS=SOME_PASS # org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false Раскомментируйте их и введите учетную запись и пароль, которые вы создали на шаге 6. org.jitsi.jigasi.xmpp.acc.USER_ID=user1@meet.example.com org.jitsi.jigasi.xmpp.acc.PASS=user1_password org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false Сохраните и закройте файл. Перезапустите службу jigasi systemd. sudo systemctl restart jigasi Опционально: настроить Coturn Если во время установки Jitsi Meet вы видите следующее сообщение, вам необходимо настроить Coturn, чтобы он работал правильно. Warning! Could not resolve your external ip address! Error:^ Your turn server will not work till you edit your /etc/turnserver.conf config file. You need to set your external ip address in external-ip and restart coturn service. Отредактируйте файл конфигурации Coturn. sudo nano /etc/turnserver.conf Найдите следующую строку. external-ip=127.0.0.1 Замените 127.0.0.1 общедоступным IP-адресом вашего сервера. Сохраните и закройте файл. Затем перезапустите Coturn. sudo systemctl restart coturn Итоги Готово! Мы успешно установили Jitsi Meet на наш Linux сервер.
img
Временные таблицы SQL используются для того, чтобы хранить временные данные. Они создаются на непродолжительный период времени, а именно на время сеанса или транзакции базы данных. Как правило, они используются для хранения промежуточных результатов, которые были получены в результате обработки сложных запросов или вычислений. Помимо этого, их можно использовать для упрощения многоэтапных запросов. Кроме того, мы можем выполнять с временными таблицами CRUD-операции (create, read, update, delete – создание, чтение, обновление, удаление) и операции соединения – все как с обычными таблицами. Временные таблицы удаляются автоматически при завершении сеанса, или их может явным образом удалить пользователь.  Временные таблицы поддерживаются разными базами данных, например, MySQL, Oracle и SQL Server. Однако в зависимости от того, какой сервер баз данных вы используете, функции и синтаксис могут отличаться. В этой статье мы будем использовать SQL Server. В нем существуют два вида временных таблиц: Локальные временные таблицы Глобальные временные таблицы Локальные временные таблицы Локальные временные таблицы создаются с помощью оператора  CREATE TABLE , за которым следует название таблицы с одним символом «решетка» ( # ) перед ним. Они доступны только в рамках текущего сеанса пользователя и автоматически удаляются после того, как сеанс, в котором они были созданы, завершится. Вот пример создания локальной временной таблицы: CREATE TABLE #TempTable (ID INT, Name VARCHAR(50)); Этот оператор создает локальную временную таблицу  #TempTable , у которой есть два столбца:  ID и  Name . Столбец  ID имеет тип  INT , а столбец  Name - тип  VARCHAR с ограничением в 50 символов. Для добавления данных в локальную временную таблицу мы можем использовать обычные операторы вставки. Вот пример: INSERT INTO #TempTable (ID, Name) VALUES (1, 'Educative'), (2, 'DevPath'); Обратите внимание на то, что в приведенном выше примере мы создали временную таблицу с помощью оператора  CREATE , а затем добавили в нее данные с помощью оператора  INSERT . После того, как мы создали временную таблицу и добавили в нее данные, мы можем использовать эти данные в запросах подобно тому, как мы бы то делали с обычной таблицей. Например, для того, чтобы получить данные из временной таблицы, мы можем воспользоваться оператором  SELECT : SELECT * FROM #TempTable; Ниже вы можете видеть вывод команд, приведенных выше: Пример выше демонстрирует то, что из себя представляет временная таблица в SQL. Также существует еще один способ создания временной таблицы и добавления в нее данных – оператор  INTO . Для того, чтобы разобраться, как он работает, давайте представим, что у нас есть таблица  Sales со следующими столбцами:  SaleID ,  ProductID ,  SalesAmount ,  SaleDate , и выглядит она следующим образом: SaleID (PK) ProductID SalesAmount SaleDate 1 1 1000 19-06-2023 2 1 500 21-06-2023 3 2 300 22-06-2023 4 2 200 23-06-2023 5 1 700 23-06-2023 … … … … Допустим, что в рамках этого примера мы хотим создать временную таблицу, используя таблицу  Sales , но выбрав при этом только столбцы  ProductID и  SalesAmount . Следующий синтаксис – это второй способ создания временной таблицы и добавления в нее данных (с помощью оператора  INTO ): SELECT ProductID, SalesAmount INTO #TempTable FROM Sales В примере выше мы создаем временную таблицу  #TempTable , у которой есть два столбца:  ProductID и  SalesAmount . Эти столбцы определяются выборочным списком оператора  SELECT . Запрос, который приведен выше, создает временную таблицу и добавляет в нее данные из таблицы  Sales .  Для того, чтобы удалить локальную временную таблицу, вам понадобиться следующий синтаксис: DROP TABLE #TempTable; Пример В этом примере мы создадим локальную временную таблицу, в которой будет храниться общий объем продаж продукции. Для этого создадим временную таблицу с двумя столбцами. Первый столбец – это ID продукции, а второй – объем продаж для этой продукции. Давайте для начала создадим временную таблицу: CREATE TABLE #TempResults (ProductID INT, TotalSales DECIMAL(10, 2)); После того, как мы создали временную таблицу, мы можем сделать запрос и заполнить ее. В данном случае мы предполагаем, что в базе данных имеется таблица с именем  Sales , в которой содержится информация о продукции и объемах ее продаж. Ниже приведен пример таблицы  Sales , а также запросы для ее создания и заполнения: Таблица  Sales SaleID (PK) ProductID SalesAmount SaleDate 1 1 1000 19-06-2023 2 1 500 21-06-2023 3 2 300 22-06-2023 4 2 200 23-06-2023 5 1 700 23-06-2023 … … … … Запросы CREATE TABLE [dbo].[Sales]( [SaleID] [int] PRIMARY KEY,[ProductID] [int] ,[SalesAmount] [decimal](18, 0) ,[SaleDate] [date] , ); INSERT [Sales] ([SaleID], [ProductID], [SalesAmount], [SaleDate]) VALUES (1, 1, 1000 , '2023-06-19' ) INSERT [Sales] ([SaleID], [ProductID], [SalesAmount], [SaleDate]) VALUES (2, 1, 500  , '2023-06-21' ) INSERT [Sales] ([SaleID], [ProductID], [SalesAmount], [SaleDate]) VALUES (3, 2, 300  , '2023-06-22' ) INSERT [Sales] ([SaleID], [ProductID], [SalesAmount], [SaleDate]) VALUES (4, 2, 200  , '2023-06-23' ) INSERT [Sales] ([SaleID], [ProductID], [SalesAmount], [SaleDate]) VALUES (5, 1, 700  , '2023-06-23' ) Следующий запрос – это запрос для добавления данных из таблицы  Sales во временную таблицу: INSERT INTO #TempResults (ProductID, TotalSales) SELECT ProductID, SUM(SalesAmount) FROM Sales GROUP BY ProductID; После того, как мы добавили данные во временную таблицу, мы можем использовать ее для дальнейших вычислений и запросов. Например, для того, чтобы получить список продукции, объем продаж которой превышает 1000, мы можем сделать следующий запрос: SELECT ProductID, TotalSales FROM #TempResults WHERE TotalSales > 1000; Результат будет следующий: Пример, приведенный выше, демонстрирует то, как можно использовать временную таблицу для хранения промежуточных результатов. В следующем разделе мы рассмотрим, что такое глобальные временные таблицы. Глобальные временные таблицы Глобальные временные таблицы создаются с помощью оператора  CREATE TABLE , после которого идет имя таблицы с двойным символом «решетка» ( ## ) перед ним. Они доступны для всех пользователей сеанса в рамках данной базы данных и удаляются после завершения последнего сеанса, который ее использует. Вот пример создания глобальной базы данных: CREATE TABLE ##TempTable (ID INT, Name VARCHAR(50)); Этот оператор создает глобальную временную таблицу  #TempTable , у которой есть два столбца:  ID и  Name . Столбец  ID имеет тип  INT , а столбец  Name - тип  VARCHAR с ограничением в 50 символов. Для добавления данных в локальную временную таблицу мы можем использовать обычные операторы вставки. Вот пример: INSERT INTO ##TempTable (ID, Name) VALUES (1, 'Educative'), (2, 'DevPath'); После того, как мы создали временную таблицу и добавили в нее данные, мы можем использовать эти данные в запросах подобно тому, как мы бы то делали с обычной таблицей. Например, для того, чтобы получить данные из временной таблицы, мы можем воспользоваться оператором  SELECT : SELECT * FROM ##TempTable; Для того, чтобы удалить глобальную временную таблицу, вам понадобиться следующий синтаксис: DROP TABLE ##TempTable; Принцип использования глобальной временной таблицы аналогичен принципу использования локальной. Однако есть небольшие различия, которые представлены в следующей таблице: Локальная временная таблица Глобальная временная таблица Доступна для текущего сеанса Доступна для всех сеансов Начинается с одного символа «решетка» Начинается с двойного символа «решетка» Существует до завершения сеанса Существует до тех пор, пока не будут завершены все связанные с ней сеансы Недоступна для других сеансов Доступна для всех сессий в рамках одной базы данных Чаще всего используется для промежуточных результатов и вычислений Подходит для обмена временными данными между сеансами В заключение следует отметить, что временные таблицы полезны при работе с большими объемами данных и сложными запросами. Они помогают хранить промежуточные данные в рамках определенного сеанса или транзакции базы данных.
22 октября
20:00
Бесплатный вебинар
Как стать Python - разработчиком?