Архив автора: admin

Как использовать флажок PyQt в Python?

Флажок используется для выбора нуля или более вариантов из многих вариантов с помощью графического пользовательского интерфейса. Форма с флажком может быть создана с помощью класса QCheckBox в скрипте Python или с помощью виджета QCheckBox в Qt Designer без написания какого-либо скрипта.

Когда форма с флажком создается с использованием класса QCheckBox, тогда вызывается функция stateChanged.connect(), чтобы применить действие, выполненное пользователем. Если пользователь установил какой-либо параметр флажка, тогда значение QtCore.Qt.checked будет True. С помощью класса QbuttonGroup можно создать несколько флажков с одним выбором, например Radio Button.

В этой статье показано, как создать форму с флажком, написав скрипт Python.

 

Необходимые методы QCheckBox

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










Название методаЦель
isChecked()Возвращает логическое значение. Когда пользователь щелкает, чтобы установить флажок, он возвращает True, в противном случае он возвращает False.
setChecked ()Он используется для изменения состояния флажка. Установлено значение True, чтобы флажок был установлен, а значение False — чтобы снять флажок.
text()Он используется для чтения метки флажка.
setText()Он используется для установки метки флажка.
isTriState()Возвращает логическое значение. Он используется для проверки тройного состояния, чтобы узнать, включен ли флажок.
setTriState()Он используется для включения третьего состояния флажка, который указывает нейтральное состояние.

 

Создайте форму с флажком, используя класс QCheckBox:

Использование флажка показано в этом разделе на различных типах примеров. Использование одного флажка, как показано в первом примере, и использование нескольких флажков показано во втором примере.

 

Пример 1: Создание единого флажка

В этом примере показан способ создания одного флажка с использованием класса QCheckBox и считывание входного значения флажка, предоставленного пользователем. Необходимые модули импортируются в начале скрипта. Метка используется в поле вышеупомянутого флажка для предоставления информации пользователю. Если пользователь установит флажок, чтобы проверить, скрипт напечатает: «Ух ты! Вы любите программировать», иначе сценарий напечатает: «О нет! Вы не любите программировать».

# Импортировать необходимые модули

import sys

from PyQt5 import QtCore, QtWidgets

from PyQt5.QtWidgets import QMainWindow, QCheckBox, QLabel, QVBoxLayout, QDesktopWidget

# Определите класс для создания формы с одним флажком

class SingleCheckbox(QMainWindow):

def __init__(self):

super().__init__()

# Создайте текст метки для пользователя

lb = QLabel(«Вам нравится программирование?», self)

lb.setGeometry(20, 20, 200, 20)

lb.move(20, 20)

# Создайте флажок с меткой

cb = QCheckBox(‘Да’, self)

cb.stateChanged.connect(self.Check_Answer)

cb.move(20, 50)

# Установить вертикальную планировку интервала QT

vbox = QVBoxLayout()

vbox.addWidget(lb)

vbox.addWidget(cb)

# Установите заголовок и размер окна

self.setWindowTitle(‘Form with Single Checkbox’)

self.setGeometry(60, 60, 300, 100)

# Отображение окна в центре экрана

win = self.frameGeometry()

pos = QDesktopWidget().availableGeometry().center()

win.moveCenter(pos)

self.move(win.topLeft())

self.show()

# Определите функцию для проверки ввода пользователя

def Check_Answer(self, state):

if state == QtCore.Qt.Checked:

print(«Ух ты! Вы любите программирование.»)

else:

print(«О нет! — Вы не любите программировать.»)

# Создайте объект приложения и выполните его

app = QtWidgets.QApplication(sys.argv)

form = SingleCheckbox()

app.exec()

 

Пример 2: Создание нескольких флажков

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

# Импортировать необходимые модули

import sys

from PyQt5.QtWidgets import (QWidget, QCheckBox, QApplication, QVBoxLayout, QLabel, QDesktopWidget)

# Определите класс для создания формы с несколькими флажками

class MultipleCheckbox(QWidget):

def __init__(self):

super().__init__()

# Установите текст метки для пользователя

lb = QLabel(«Выберите свою любимую еду(ы):», self)

lb.setGeometry(20, 20, 100, 20)

lb.move(20, 20)

# Создайте три флажка

cb1 = QCheckBox(‘Шоколадный торт’, self)

cb1.move(20, 70)

cb1.stateChanged.connect(lambda: self.Selected_Value(cb1))

cb2 = QCheckBox(‘Мороженое’, self)

cb2.move(20, 90)

cb2.stateChanged.connect(lambda: self.Selected_Value(cb2))

cb3 = QCheckBox(‘Макароны’, self)

cb3.move(20, 110)

cb3.stateChanged.connect(lambda: self.Selected_Value(cb3))

self.label = QLabel(‘Ничего не выбрано’)

self.label.move(20, 150)

# Установить вертикальную планировку интервала QT

vbox = QVBoxLayout()

vbox.addWidget(lb)

vbox.addWidget(cb1)

vbox.addWidget(cb2)

vbox.addWidget(cb3)

vbox.addWidget(self.label)

self.setLayout(vbox)

self.setWindowTitle(‘Форма с несколькими флажками’)

self.setGeometry(60, 60, 350, 200)

self.lblText = »

# Отображение окна в центре экрана

win = self.frameGeometry()

pos = QDesktopWidget().availableGeometry().center()

win.moveCenter(pos)

self.move(win.topLeft())

self.show()

# Определите функцию для чтения входных данных пользователя

def Selected_Value(self, btn):

if self.lblText != »:

str = self.lblText

strArray = str.split(‘ ,’)

self.lblText = »

for val in strArray:

if btn.text() != val:

if self.lblText == »:

self.lblText = val

else:

self.lblText += ‘ ,’ + val

if btn.isChecked() == True:

if self.lblText == »:

self.lblText = btn.text()

else:

self.lblText += ‘ ,’ + btn.text()

else:

if btn.isChecked() == True:

if self.lblText == »:

self.lblText = btn.text()

else:

self.lblText += ‘ ,’ + btn.text()

self.label.setText(‘Вы выбрали n’ + self.lblText)

# Создайте объект приложения и выполните его

app = QApplication(sys.argv)

ex = MultipleCheckbox()

sys.exit(app.exec_())

 

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

 

Вывод

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



2021-02-13T05:59:26
Python

Wi-Fi и интернет — это одно и то же. . . верно?

Мы живем в беспрецедентный век цифровых технологий. Более 4 миллиардов человек (более половины населения Земли) ежедневно получают доступ к Интернету 1 , 2,2 миллиарда играют в онлайн-видеоигры каждый день 2 , и почти 3 миллиарда имеют учетные записи в социальных сетях.

Вот еще несколько удивительных фактов об Интернете:

  • В среднем человек проводит в сети почти 10 часов в день — больше, чем мы спим.
  • Ежедневно в Интернете выполняется более 5 миллиардов поисковых запросов в Google.
  • По всему миру используется более 50 миллиардов устройств, подключенных к Интернету.
  • Китай лидирует в использовании Интернета с более чем 650 миллионами пользователей
  • Wi-Fi — это наиболее часто используемый сленг в Интернете 4

Прочтите этот последний факт еще раз. Если вы похожи на большинство людей, вы обычно используете термины «Wi-Fi» и «Интернет» как синонимы. И это нормально, потому что это одно и то же. . . верно?

 

Вся правда о Wi-Fi и Интернете

На самом деле Wi-Fi и интернет — это разные вещи. Они связаны, но не одинаковы. Так чем же они отличаются?

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

Допустим, вы хотите поехать из Сан-Франциско в Лос-Анджелес, чтобы навестить свою сестру. Лос-Анджелес — это город, в котором много интересного и еще кое-что, что заставляет ломать голову. Очень похоже на Интернет, не так ли? Шоссе Тихоокеанского побережья, которое доставит вас из Сан-Франциско в Лос-Анджелес, является вашей сетью Wi-Fi в этой аналогии. Это маршрут от точки A (ваше местоположение в Сан-Франциско) до точки B (Лос-Анджелес). Пробки могут двигаться быстро, и вы доберетесь до пункта назначения в рекордно короткие сроки. Или, что более вероятно, он будет ускоряться и замедляться, что очень похоже на соединение Wi-Fi.

Интернет — это данные (язык). Wi-Fi — это технология беспроводной сети, которая отправляет эти данные через Интернет-соединения (шоссе) по воздуху в глобальные сети и на компьютеры без проводов. Эта беспроводная технология позволяет вашим сотовым телефонам, планшетам и другим беспроводным устройствам iPhone или Android обмениваться данными без прямого кабеля Ethernet, сетевых кабелей, проводных линий или других физических подключений.

Теперь, когда мы начинаем понимать разницу между Wi-Fi и Интернетом, давайте подробнее рассмотрим каждый из них.

 

Интересные факты о Wi-Fi

Вот ответы на часто задаваемые вопросы о Wi-Fi:

 

Что означает Wi-Fi?

Фактически . . . ничего. Хотя некоторые люди обычно говорят, что это относится к «верности беспроводного подключения», термин Wi-Fi изначально был изобретен командой маркетологов, которая хотела брендировать технологию беспроводной сети. Хотя это звучит «технически», Wi-Fi — это имя, которое прижилось и никогда не исчезло. Сегодня вы увидите широко используемое прозвище повсюду, от веб-сайтов интернет-провайдеров (ISP) до учебных пособий по онлайн-играм и инструкций по настройке телевидения и доступу в Интернет.

 

Где был изобретен Wi-Fi?

Большинство экспертов говорят о Гавайях. Компьютерная сетевая система под названием «ALOHAnet» была первой беспроводной сетью передачи данных и предшественницей сетей Wi-Fi и Bluetooth. Спустя более 20 лет AT&T и NCR Corporation разработали WaveLAN, которая намного ближе к сетям Wi-Fi, беспроводным сетям (WAN) и локальным сетям (LAN), которые мы имеем сегодня.

 

Какой тип сигнала выдает Wi-Fi?

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

 

Как работает Wi-Fi?

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

 

Как далеко может распространяться сигнал Wi-Fi?

В повседневных домашних приложениях сигналы Wi-Fi могут с комфортом перемещаться на расстояние около 100 футов или около того, что идеально подходит для обеспечения интернет-соединения с интернет-устройствами в доме или некоторых офисных помещениях. Стоит отметить: Шведское космическое агентство передало сигнал Wi-Fi на расстояние более 310 километров (км) или 192 миль! Конечно, это было с мощным маршрутизатором Wi-Fi, который имеет гораздо более мощную точку доступа, чем та, что есть у вашего интернет-провайдера, но все равно это впечатляет.

 

Дополнительные факты о Wi-Fi:

  • Беспроводной интернет впервые появился в 1990 году — Wi-Fi всего несколько лет до своего 30-летия.
  • Wi-Fi в настоящее время является крупнейшим передатчиком глобальной связи — более 71% мобильной связи отправляется и принимается через сети Wi-Fi и мобильные точки доступа.
  • В Европе сигнал Wi-Fi слабее, чем в Соединенных Штатах, просто потому, что власти США разрешают передачу с большей мощностью, чем в Европе.
  • В мире используется более 10 миллиардов устройств Wi-Fi.
  • Недавнее исследование Red Roof показало, что путешественники предпочли бы хороший сигнал повторителя Wi-Fi, чем бесплатный завтрак и практически все другие услуги и удобства в отеле 7

 

Интересные интернет-итерации

Вот ответы на часто задаваемые вопросы об Интернете:

Когда был изобретен Интернет?

Согласно History.com: «ARPANET перешла на TCP/IP 1 января 1983 года, и оттуда исследователи начали собирать «сеть сетей», которая стала современным протоколом Интернета. Затем онлайн-мир приобрел более узнаваемую форму в 1990 году, когда компьютерный ученый Тим Бернерс-Ли изобрел Всемирную паутину».

Сколько людей пользуются Интернетом?

Сегодня насчитывается более 4 миллиардов пользователей Интернета — это более половины населения мира!

В какой стране больше всего пользователей Интернета?

Китай с более чем 800 миллионами пользователей Интернета. На втором месте Индия с более чем 500 миллионами пользователей Интернета. Еще один забавный факт: 98 процентов всех китайских интернет-пользователей используют мобильные устройства и точки доступа Wi-Fi.

В какой стране самый высокий процент интернет-пользователей.

Исландия, где (получите это) 100 процентов граждан пользуются Интернетом ежедневно.

Дополнительные факты об использовании Интернета:

  • Ожидается, что в 2019 году почти 2 миллиарда человек сделают покупки в Интернете.
  • Более 80 процентов интернет-пользователей в США сделают покупки в Интернете в 2019 году.
  • Ежедневно в Интернете публикуется более 4 миллионов сообщений в блогах.
  • 500 миллионов твитов отправляются каждый день
  • Ежедневно в Google выполняется более 5 миллиардов запросов 8

 

Wi-Fi и Интернет: давайте объединим все это

Wi-Fi и интернет - это одно и то же. . . верно?

Давайте посмотрим, как Wi-Fi и Интернет дополняют друг друга и как они влияют на использование вами Интернета.

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



2021-02-13T05:42:24
Сети

Контрольный список повышения безопасности Windows Server. Часть 3

10. Регистрация и мониторинг

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

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

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

Установите базовый уровень производительности и настройте пороговые значения уведомлений для важных показателей. Независимо от того, используете ли вы встроенный монитор производительности Windows или стороннее решение, которое использует клиент или SNMP для сбора данных, вам необходимо собирать информацию о производительности на каждом сервере. Такие вещи, как доступное дисковое пространство, использование процессора и памяти, сетевая активность и даже температура, должны постоянно анализироваться и регистрироваться, чтобы можно было легко выявлять и устранять аномалии. Этот шаг часто пропускают из-за напряженного графика производства, но в конечном итоге он принесет дивиденды, потому что устранение неполадок без установленных базовых показателей — это, по сути, съемка в темноте.

 

11. Часто задаваемые вопросы об усилении защиты Windows Server

Что такое усиление защиты сервера?

Упрочнение — это всеобъемлющий термин, обозначающий изменения, внесенные в конфигурацию, управление доступом, сетевые настройки и серверную среду, включая приложения, с целью повышения безопасности сервера и общей безопасности ИТ-инфраструктуры организации. Существуют различные тесты для повышения безопасности серверов Windows, в том числе тесты Microsoft Security Benchmark, а также стандарты повышения безопасности CIS Benchmark, установленные  Центром безопасности в Интернете . Эталонные тесты от CIS охватывают усиление безопасности сети для облачных платформ, таких как Microsoft Azure, а также политику безопасности приложений для программного обеспечения, такого как Microsoft SharePoint, наряду с усилением защиты баз данных для Microsoft SQL Server, среди прочего.

 

Как укрепить веб-сервер?

Хорошая практика — следовать стандартному процессу повышения безопасности веб-серверов для новых серверов, прежде чем они будут запущены в производство. Никогда не пытайтесь укрепить используемые веб-серверы, так как это может повлиять на ваши производственные рабочие нагрузки с непредсказуемыми сбоями, поэтому вместо этого подготовьте новые серверы для повышения безопасности, а затем перенесите свои приложения после усиления защиты и полного тестирования настройки. Хорошим первым шагом при усилении защиты веб-сервера Windows является установка на сервере последних пакетов обновления от Microsoft, прежде чем переходить к защите программного обеспечения веб-сервера, такого как Microsoft IIS, Apache, PHP или Nginx.

Усиление доступа к системе и настройка управления сетевым трафиком, в том числе установка минимальной длины пароля, настройка брандмауэра Windows, который позволяет реализовать функциональность, аналогичную iptables с использованием политики трафика, настроить аппаратный брандмауэр, если он доступен, и настроить политику аудита, а также настройки журнала. Устранение потенциальных бэкдоров, которые могут быть использованы злоумышленником, начиная с уровня микропрограммы, путем обеспечения на ваших серверах последней версии микропрограммы BIOS, защищенной от атак микропрограмм, вплоть до правил IP-адресов для ограничения несанкционированного доступа и удаления неиспользуемых служб или ненужный софт. Убедитесь, что все тома файловой системы используют файловую систему NTFS, и настройте права доступа к файлам, чтобы ограничить права доступа пользователей минимальными правами доступа.. Вам также следует установить антивирусное программное обеспечение как часть стандартной конфигурации безопасности сервера, в идеале с ежедневными обновлениями и защитой в реальном времени.

 

Какой самый важный процесс в усилении защиты Windows-серверов?

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

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

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

 

Какая версия Windows Server наиболее безопасна?

Последние версии Windows Server, как правило, являются наиболее безопасными, поскольку в них используются самые современные передовые методы обеспечения безопасности серверов. Для обеспечения максимальной безопасности серверов вам следует обратить внимание на последние версии, включая Windows Server 2008 R2, Windows Server 2012 R2, Windows Server 2016 и самый последний выпуск, Windows Server 2019. Microsoft значительно улучшила профиль безопасности своего сервера. ОС в Windows Server 2019 с  далеко идущими обновлениями  , ориентированными на безопасность, которые подтверждают широко распространенное влияние взломов и атак. Эти новые функции делают Windows Server 2019 самой грозной из линейки с точки зрения безопасности.

Такие функции Windows Server 2019, как защита от эксплойтов ATP в Защитнике Windows и уменьшение поверхности атаки (ASR), помогают заблокировать ваши системы от вторжений и предоставляют расширенные инструменты для блокировки доступа к вредоносным файлам, скриптам, программам-вымогателям и другим атакам. Функции защиты сети в Windows Server 2019 обеспечивают защиту от веб-атак за счет блокировки IP-адресов для устранения исходящих процессов на ненадежные узлы. Параметры расширенной политики аудита в Windows Server 2019, включая очередь инцидентов Advanced Threat Protection в защитнике Microsoft, помогут вам получить подробный журнал событий для мониторинга угроз, требующих ручных действий или последующих действий.

 

Последние мысли

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

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

 

Начало:



2021-02-13T05:25:34
OS Windows

Книги по машинному обучению и искусственному интеллекту, вышедшие в 2019 году

 

Искусственный интеллект с примерами на Python.

Машинное обучение, глубокое обучение, искусственный интеллект — очень популярные сегодня области знаний.

Мы составили подборку книг, которые пригодятся вам при изучении этих тем. Не так давно мы публиковали аналогичную подборку книг, вышедших в 2020 году, а сейчас сосредоточимся на книгах 2019 года.

Автор: Пратик Джоши. Язык: русский.

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

8 советов по оптимизации sql запросов

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

В этом руководстве мы рассмотрим 8 основных советов по SQL для оптимизации вашего SQL-сервера.

Совет 1. Выберите правильный тип данных для столбца

Каждый столбец таблицы в SQL имеет связанный тип данных. Вы можете выбирать из целых чисел, дат, переменных, логических значений, текста и т.д. При разработке важно выбрать правильный тип данных. Числа должны быть числового типа, даты должны быть датами и т.д. Это чрезвычайно важно для индексации.

Давайте посмотрим на пример ниже.

SELECT employeeID, employeeName

FROM employee

WHERE employeeID = 13412;

Вышеупомянутый запрос извлекает идентификатор и имя сотрудника с идентификатором 13412. Что, если тип данных для employeeID — строка? Вы можете столкнуться с проблемами при использовании индексации, поскольку это займет много времени, когда это должно быть простое сканирование.

Совет 2: Табличные переменные и объединения

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

Давайте посмотрим на пример соединения:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate

FROM Orders

INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

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

Совет 3. Используйте условное предложение WHERE

Условные предложения WHERE используются для подмножества. Допустим, у вас есть такая ситуация:

-if SEQ_VAR in (1, 2, 3) & diff(DATE_VAR2, DATE_VAR1)≥ 0

— elif SEQ_VAR in (4, 5, 6) & diff(DATE_VAR2, DATE_VAR1) ≥1

— else diff(DATE_VAR2, DATE_VAR1) ≥2

С условным предложением WHERE это будет выглядеть так:

SELECT 

  DAT.ID_VAR,

  DAT.SEQ_VAR,

  DAT.NUM_VAR,

  DATE_VAR1,

  DATE_VAR2,

  TRUNC(DATE_VAR2) - TRUNC(DATE_VAR1) AS LAG_IN_DATES



FROM 

  CURRENT_TABLE      DAT 

WHERE

  (TRUNC(DATE_VAR2) - TRUNC(DATE_VAR1)) >= CASE WHEN SEQ_VAR IN (1,2,3) THEN 0 WHEN SEQ_VAR IN (4,5,6) THEN 1 ELSE 2 END 

ORDER BY ID_VAR, SEQ_VAR

Совет 4: используйте SET NOCOUNT ON

При выполнении операций INSERT, SELECT, DELETE и UPDATE, используйте SET NOCOUNT ON. SQL всегда возвращает соответствующее количество строк для таких операций, поэтому, когда у вас есть сложные запросы с большим количеством соединений, это может повлиять на производительность.

С SET NOCOUNT ON SQL не будет подсчитывать затронутые строки и улучшить производительность.

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

USE AdventureWorks2012;  

GO  

SET NOCOUNT OFF;  

GO  

-- Display the count message.  

SELECT TOP(5)LastName  

FROM Person.Person  

WHERE LastName LIKE 'A%';  

GO  

-- SET NOCOUNT to ON to no longer display the count message.  

SET NOCOUNT ON;  

GO  

SELECT TOP(5) LastName  

FROM Person.Person  

WHERE LastName LIKE 'A%';  

GO  

-- Reset SET NOCOUNT to OFF  

SET NOCOUNT OFF;  

GO

Совет 5: Избегайте ORDER BY, GROUP BY и DISTINCT

Использование ORDER BY, GROUP BYи DISTINCT только в случае необходимости. SQL создает рабочие таблицы и помещает туда данные. Затем он организует данные в рабочей таблице на основе запроса и затем возвращает результаты.

Совет 6. Полностью уточняйте имена объектов базы данных

Цель использования полностью определенных имен объектов базы данных — устранить двусмысленность. Полное имя объекта выглядит так:

DATABASE.SCHEMA.OBJECTNAME.

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

Поэтому вместо использования такого оператора:

SELECT * FROM TableName

Вам следует использовать:

SELECT * FROM dbo.TableName

Совет 7. Узнайте, как полностью защитить свой код

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

textuserID = getRequestString("userID");

textSQL = "SELECT * FROM Users WHERE userID = " + textuserID;

Допустим, у вас есть это, вы textuserIDполучите ввод от пользователя. Вот как это может пойти не так:

SELECT * FROM Users WHERE userID = 890 OR 1=1;

Поскольку 1=1 всегда верно, он будет извлекать все данные из таблицы Users.

Вы можете защитить свою базу данных от SQL-инъекций, используя параметризованные операторы, проверки ввода, очистку ввода и т. Д. Как вы защищаете свою базу данных, зависит от СУБД. Вам нужно будет разобраться в своей СУБД и ее проблемах безопасности, чтобы вы могли писать безопасный код.

Совет 8: используйте LAG и LEAD для последовательных строк

Функция LAG позволяет запрашивать более одной строки в таблице, не вступая в таблицу к себе. Он возвращает значения из предыдущей строки таблицы.

LAG(expression [,offset[,default_value]]) OVER(ORDER BY columns)

Функция LEAD делает то же самое, но и для следующей строки.

LEAD(expression [,offset[,default_value]]) OVER(ORDER BY columns)

Отказ от использования самостоятельных соединений повышает производительность, поскольку уменьшается количество операций чтения. Но, вы должны проверить, как LEAD и LAG влияют на производительность запросов.

Что изучать дальше

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

  • Оптимизация просмотров
  • Вложенные запросы
  • INSERT триггеры
  • Внешние ключи

Удачного обучения!



2021-02-12T21:57:11
Вопросы читателей

Лучшие варианты доступа в Интернет для сельских предприятий

Плюсы и минусы различных вариантов Интернета для сельского бизнеса

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

* Обратите внимание, что коммутируемый доступ в Интернет технически доступен в сельской местности. Тем не менее, из-за требований к постоянному и надежному подключению для обеспечения непрерывности бизнеса на сегодняшнем рынке и с учетом того, что менее 0,3% по-прежнему используют коммутируемый доступ, коммутируемое соединение не обсуждается как жизнеспособный вариант Интернета для сельского бизнеса.

Итак, какие технологии от бизнес-интернет-провайдеров доступны в сельской местности? Вот плюсы и минусы различных вариантов Интернета в сельской местности:

 

Плюсы и минусы возможностей Интернета

Фиксированный беспроводной широкополосный доступ в Интернет

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

 

Плюсы фиксированного беспроводного Интернета:

  • Быстрое развертывание — фиксированные беспроводные Интернет-сети развертываются быстрее, чем конкурирующие проводные технологии.
  • Рентабельность — благодаря отсутствию дорогостоящих траншей, фиксированные беспроводные сети Интернет намного дешевле в строительстве и оказывают меньшее воздействие на окружающую среду.
  • Широко доступны — поскольку они используют радиоволны, фиксированные беспроводные сети Интернет могут достигать областей, находящихся «вне сети», таких как сельские районы.
  • Время безотказной работы — фиксированные беспроводные Интернет-сети.
  • Неограниченная пропускная способность.

Минусы фиксированного беспроводного Интернета:

  • Линия видимости (LOS) — поскольку цепи требуют прямой видимости, деревья или большие здания на пути подключения могут вызывать помехи сигнала.
  • Стоимость полосы пропускания — пропускная способность может быть дороже, чем у поставщиков услуг DSL, кабельного и спутникового телевидения.

 

Широкополосный DSL

Широкополосная цифровая абонентская линия (DSL) — это проводная технология, которая передает данные по традиционным медным телефонным линиям, установленным в дома и на предприятиях. Поскольку он работает на уже существующих телефонных линиях, DSL можно быстро установить при наличии инфраструктуры.

Плюсы DSL Интернета:

  • Доступность — поскольку DSL проходит через телефонные линии, он более доступен по всей стране.
  • Это относительно недорого — стоимость установки и обслуживания ниже, чем у многих других широкополосных технологий, таких как оптоволокно.

Минусы DSL Интернета:

  • Низкие скорости — скорость DSL в сельской местности обычно составляет от 128 Кбит/с до 3 Мбит/с.
  • Непостоянное качество сети — поскольку качество канала в значительной степени зависит от расстояния от центрального концентратора интернет-провайдера, серьезная проблема для многих предприятий в сельской местности, скорость и надежность сети непостоянны.

 

Спутниковый Интернет

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

Плюсы спутникового Интернета:

  • Широкая доступность — поскольку он передает на спутник в космосе, он доступен практически в любой точке Земли.
  • Достойные скорости — скорость до 100 Мбит/с, спутник превосходит DSL.

Минусы спутникового Интернета:

  • Проблемы с задержкой — Спутнику присущи проблемы с задержкой — это особенно проблематично для приложений видеоконференцсвязи и VoIP.
  • Ненадежный — качество цепи зависит от влаги (погоды) и таких объектов, как деревья и растительность.
  • Высокая стоимость. Спутниковый Интернет — одна из самых дорогих широкополосных технологий на рынке.

 

Кабельный широкополосный доступ

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

Плюсы кабельного широкополосного интернета:

  • Легко и быстро установить — поскольку он использует существующую инфраструктуру, он иногда может быть доступен сразу.
  • Быстрее — пропускная способность значительно выше, чем у других типов широкополосных подключений, таких как спутниковое и DSL.

Минусы кабельного широкополосного доступа:

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

 

Сотовый мобильный широкополосный Интернет

Мобильная широкополосная связь обеспечивает подключение к Интернету через мобильную сеть — ту же инфраструктуру, что и ваш смартфон. Мобильная широкополосная связь доступна через портативные беспроводные точки доступа и беспроводные модемы из любого места, где есть сотовая связь.

Плюсы мобильного широкополосного доступа:

  • Легкий доступ — при условии, что поблизости есть стойка регистрации, она может быть доступна немедленно.
  • Быстрая и простая установка — функция «подключи и работай» этой технологии устраняет необходимость в физических кабелях, телефонных линиях или источнике электроэнергии.

Минусы мобильного широкополосного доступа:

  • Непостоянное покрытие — если вы живете в удаленном районе, вы можете не получить сотовый прием, что полностью препятствует доступу.
  • Ненадежная производительность — средняя скорость мобильной связи в сельской местности падает примерно от 12 до 15 Мбит/с и колеблется в зависимости от местоположения и количества людей, подключенных к сети.
  • Ограничение использования данных. Чтобы предотвратить перегрузку сети, планы мобильного широкополосного доступа обычно имеют ограничение на объем данных. Излишки могут быть дорогими.

 

Оптоволоконный широкополосный Интернет

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

Плюсы Fiber Broadband:

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

Минусы Fiber Broadband:

  • Доступно не везде — волокно в настоящее время доступно только в 32% страны.
  • Дорого и медленно в развертывании — оптоволоконный кабель исключительно дорог в развертывании и требует рытья траншей (часто задерживается длительными процессами выдачи разрешений).

 

Сравнение плюсов и минусов интернет-возможностей для сельского бизнеса

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



2021-02-12T10:48:34
Сети