пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
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; Принцип использования глобальной временной таблицы аналогичен принципу использования локальной. Однако есть небольшие различия, которые представлены в следующей таблице: Локальная временная таблица Глобальная временная таблица Доступна для текущего сеанса Доступна для всех сеансов Начинается с одного символа «решетка» Начинается с двойного символа «решетка» Существует до завершения сеанса Существует до тех пор, пока не будут завершены все связанные с ней сеансы Недоступна для других сеансов Доступна для всех сессий в рамках одной базы данных Чаще всего используется для промежуточных результатов и вычислений Подходит для обмена временными данными между сеансами В заключение следует отметить, что временные таблицы полезны при работе с большими объемами данных и сложными запросами. Они помогают хранить промежуточные данные в рамках определенного сеанса или транзакции базы данных.
img
Компьютерные сети это то, что можно встретить сейчас в любом доме, в любой организации. Более того, это одна из основных составляющих успешной деятельности современного предприятия. И чем крупнее организация, тем шире в ней компьютерная сеть. В этом случае для удобства организации работы имеет смысл разделить единую сеть на подсети. В этой статье мы рассмотрим, как правильно и без ошибок наладить работу с подсетями в рамках одной локальной сети. p> Прежде всего, стоит понимать, а нужно ли вообще разбивать сеть? Если фирма небольшая, на 3-4 сотрудника в одном офисе, то в такой разбивке нет необходимости. Однако, если сотрудники компаний занимают несколько кабинетов, или же отделы находятся в различных зданиях - в этом случае без сегментации на подсети не обойтись. Вообще, интернет-провайдер рассматривает любую организацию как одну сеть, в идеале, имеющую один IP-адрес. На деле так получается далеко не всегда. Если организация крупная, то в ней по факту может быть несколько локальных подсетей, объединенных в одну сеть, которую и будет "видеть" провайдер. Эти подсети могут быть территориально удалены друг от друга, поэтому нужно правильно наладить их соединение, чтобы избежать ошибок в обмене данными. Конечно, самым очевидным решением будет присвоение каждому устройству своего IP-адреса. Но если в сети есть несколько маршрутизаторов, такой вариант будет неприемлемым или исключительно сложным в реализации. Что же делать в случае, если сеть организована через связанные между собой маршрутизаторы? В этом случае нужно присвоить IP-подсетям разные адреса. Задачка: из пункта А в пункт Б выехал поезд…Упс, нет, не та задача. Пусть в организации есть несколько отделов. Чтобы понять, какое количество IP-адресов выдать на подсеть, необходимо знать потребности каждого отдела. Иными словами, знать максимальное количество компьютеров и сетевых устройств, которое планируется ставить в каждом отделе. Для каждого компьютера (и любого другого сетевого девайса) в рамках подсети будет установлен свой индивидуальный IP-адрес. Также нужны IP-адреса для виртуальных серверов, если таковые используются в организации. Не лишним будет создать запас IP-адресов на случай расширения отдела и установки новых рабочих станций. Есть два варианта разделения сети. Это вариант с подсетями равного размера и вариант с подсетями разного размера. Рассмотрим первый случай: Если вы на хотите заморачиваться с самостоятельным расчетом подсетей, то мы сделали все за вас 😌. Воспользуйтесь нашим готовым калькулятором подсетей Вариант 1: Разделение сети на подсети одинакового размера: Вообще, в сети, устроенной по протоколу IPv4 можно, как правило размещают 254 устройства (2^8-2 – два в восьмой степени минус 2. Минус два, так как один адрес широковещательный а другой сетевой, так называемый нулевой). Из адресного пространства узла (последние 8 бит) для адресации подсетей потребуется занять несколько бит. Если занять 1 бит получится 2 подсети, 2 бита 4 подсети, 3 бита 8 подсетей и так далее. Маска подсети будет увеличиваться на +1 за каждый занятый для разбивки бит. Таким образом, определив нужное количество подсетей, мы можем начинать разбивку. Стоит помнить, что чем больше подсетей, тем меньше в них будет адресов. Например, если подсетей нужно сделать 7, то для адресации в адресном пространстве узла мы возьмем 3 бита, и еще 5 у нас останется для присвоения IP-адресов. Таким образом, в каждой подсети можно будет установить (2^5-2 – два в пятой степени минус два) = 30 устройств. Общая вместимость сети в данном случае составит (30*8) =240 устройств. Диапазоны устройств в подсетях найти также несложно. Они будут распределены от 0 до 254, при этом адреса подсети уже будут зарезервированы (0, 32, 64, 96, 128, 160, 192, 224) Пример: 1-я подсеть: 1.2.3.0 /27 диапазон 1.2.3.1 /27 1.2.3.30 /27 2-я подсеть: 1.2.3.32 /27 диапазон 1.2.3.33 /27 1.2.3.62 /27 3-я подсеть: 1.2.3.64 /27 диапазон 1.2.3.65 /27 1.2.3.94 /27 4-я подсеть: 1.2.3.96 /27 диапазон 1.2.3.97 /27 1.2.3.126 /27 5-я подсеть: 1.2.3.128 /27 диапазон 1.2.3.129 /27 1.2.3.158 /27 6-я подсеть: 1.2.3.160 /27 диапазон 1.2.3.161 /27 1.2.3.190 /27 7-я подсеть: 1.2.3.192 /27 диапазон 1.2.3.193 /27 1.2.3.222 /27 8-я подсеть: 1.2.3.224 /27 диапазон 1.2.3.225 /27 1.2.3.254 /27 Таким образом, наши IP - пакетики могут легко пройти через маршрутизаторы и найти нужный путь. Но в данном варианте есть и минус - множество IP-адресов в подсети остаются неиспользуемыми. Теперь рассмотрим второй вариант: Вариант 2. Разделение сети на подсети различного размера: В данном случае необходимо будет рекурсивно разделить сеть пополам. Посмотрите наглядную картинку: И так далее. А затем для каждой подсети подобрать адрес с диапазоном нужного размера. Таким образом если в одной подсети 50 устройств, она будет в диапазоне 3 итерации деления, если же 5, то в 5 итерации. Используя этот метод, мы экономим IP-адреса и можем разделять сеть на подсети разных размеров. Подытоживая, можно отметить, что такое деление отлично подойдет в случае IPv6, но с учетом того, что там используется гораздо более объемное адресное пространство, там проблемы с экономией IP-адресов не стоит. Принцип деления сети на подсети будет тем же самым с поправкой на 128-битный адрес нового протокола.
img
Apache - популярный бесплатный opensource веб-сервер. Он является частью стека LAMP (Linux, Apache, MySQL, PHP), который обеспечивает большую часть Интернета. Мы уже рассказывали про его установку на Windows и сравнивали его с nginx, а сегодня расскажем про то как установить Apache на Linux. А про то как установить nginx на Linux, можно прочитать в нашей статье. Установка веб-сервера Apache на Linux Установка Apache на CentOS и RHEL Откройте окно терминала и обновите списки пакетов репозитория, введя следующее: sudo yum update Теперь вы можете установить Apache с помощью команды: sudo yum –y install httpd httpd - это имя службы Apache в CentOS. Опция –y автоматически отвечает да на запрос подтверждения. Готово, Apache установлен. Установка Apache на Ubuntu и Debian В Ubuntu и Debian пакет и служба Apache называются apache2. Сначала также обновите инструмент управления пакетами apt. sudo apt update Теперь устанавливаем Apache: sudo apt install apache2 Запуск и управление веб-сервером Apache Apache - это сервис, работающий в фоновом режиме. В Debian и Ubuntu он автоматически запустится после установки, а в CentOS его нужно запустить вручную. Не забывайте что в командах в CentOS нам нужно использовать httpd, а в Debian и Ubuntu apache2 Запустите службу Apache, введя следующее: sudo systemctl start httpd Система не возвращает вывод, если команда выполняется правильно. Чтобы настроить автозагрузку Apache при запуске используйте команду: sudo systemctl enable httpd Чтобы проверить состояние службы Apache: sudo systemctl status httpd Чтобы перезагрузить Apache (перезагрузит файлы конфигурации, чтобы применить изменения): sudo systemctl reload httpd Чтобы перезапустить весь сервис Apache: sudo systemctl restart httpd Чтобы остановить Apache: sudo systemctl stop httpd Чтобы отключить Apache при запуске системы: sudo systemctl disable httpd Проверить веб-сервер Apache Задача вашего программного обеспечения Apache - обслуживать веб-страницы по сети. Ваша новая установка Apache имеет тестовую страницу по умолчанию, но вы также можете создать собственную тестовую страницу. Проверьте тестовую страницу Apache В окне терминала найдите IP-адрес вашей системы: hostname -I | awk '{print $1}' Если вы знакомы с командами ip addr show или ifconfig, вы можете использовать их вместо этого. Подробно про команду ip можно прочитать тут. Откройте веб-браузер и введите IP-адрес, отображаемый в выводе. Система должна показать тестовую страницу HTTP-сервера Apache, как показано на скриншоте ниже: Или так, если у вас Ubuntu: Если ваша система не имеет графического интерфейса, используйте команду curl: curl [your_system's_IP_address]:80 Примечание. В конце: 80 обозначает порт 80, стандартный порт для интернет-трафика. Обязательно напишите соответствующий IP-адрес вместо [your_system's_IP_address]. Создать HTML-файл для тестирования Если по какой-либо причине вам нужна или у вас уже есть пользовательская HTML-страница, которую вы хотите использовать в качестве тестовой страницы, выполните следующие действия: В окне терминала создайте новый индекс файл HTML: echo My Apache Web Server > /var/www/html/index.html Отредактируйте файл по своему вкусу и сохраните его. Теперь вы можете выполнить действия, описанные в предыдущем разделе, и если ваш сервер Apache работает правильно, если он отобразит указанную пользовательскую страницу. Настройка фаервола для Apache Фаервол в вашей системе блокирует трафик через разные порты. Каждый порт имеет свой номер, и разные виды трафика используют разные порты. Для вашего веб-сервера вам нужно разрешить HTTP и HTTPS трафик через порты 80 и 443. В терминале введите следующее: sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload Еще раз проверьте, правильно ли настроен ваш фаервол: sudo firewall-cmd --list-all | grep services Вы должны увидеть http и https в списке разрешенных сервисов. Если вы пользуйтесь UFW, то можно открыть порты HTTP (80) и HTTPS (443), включив профиль Apache Full: sudo ufw allow 'Apache Full' Если вы используете nftables для фильтрации подключений к вашей системе, откройте необходимые порты, введя следующую команду: nft add rule inet filter input tcp dport {80, 443} ct state new,established counter accept Файлы и каталоги Apache Apache управляется путем применения директив в файлах конфигурации: /etc/httpd/conf/httpd.conf - основной файл конфигурации Apache /etc/httpd/ - Расположение всех файлов конфигурации /etc/httpd/conf.d/ - Все конфигурационные файлы в этом каталоге включены в основной файл настроек /etc/httpd/conf.modules.d/ - Расположение конфигурационных файлов модуля Apache Примечание. При внесении изменений в файлы конфигурации не забывайте всегда перезапускать службу Apache, чтобы применить новую конфигурацию. Логи Apache расположены тут: /var/log/httpd/ - расположение файлов логов Apache /var/log/httpd/access_log - показывает журнал систем, которые обращались к серверу var/log/httpd/error_log - показывает список любых ошибок, с которыми сталкивается Apache Назначьте каталог для хранения файлов для вашего сайта. Используйте файлы конфигурации, чтобы указать каталог, который вы выбрали. Некоторые типичные места включают в себя: /home/username/my_website /var/www/my_website /var/www/html/my_website /opt/my_website
ЗИМНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59