Использование Namedtuple в Python

Python поставляется со встроенным модулем, называемым коллекциями , который предоставляет различные классы и функции в качестве альтернативы встроенным в Python структурам данных, таким как dict, list, set и tuple.

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

 

Что такое Namedtuple в Python?

Namedtuple — это функция модуля collections в Python, расширения контейнера данных кортежа Python, которая позволяет нам получать доступ к элементам в кортеже, используя имена или метки. Мы можем определить новый класс кортежа, импортировав namedtuple из модуля коллекций Python и используя фабричную функцию namedtuple(). Короче говоря, именованный кортеж представляет собой комбинацию кортежа Python и типа данных dict.

 

Синтаксис Python Namedtuple

from collections import namedtuple



tuple_name = namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

Среди 6 атрибутов namedtuple() только два являются обязательными, typename и fields_name, остальные — необязательными.

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

Feild_names атрибут представляет имя метки для элементов кортежа. Это может быть строка, разделенная пробелами «fname lname dept salary» или список строк [‘fname’, ‘lname’, ‘dept’, ‘salary’].

 

Объявление Namedtuple в Python

Теперь давайте начнем с объявления именованного кортежа.

from collections import namedtuple



#Объявление в namedtuple

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



#Добавление значения в указанном наборе

e1 = Employee('Andrey', 'Ex', 'Marketing', 20000)



#значение доступа с меткой

print("Имя сотрудника e1 is:", e1.fname +" "+ e1.lname) # доступ к значению с использованием значения индекса print("Отдел сотрудника e1 is:", e1[2])

Вывод:

Имя сотрудника e1 is: AndreyEx

Отдел сотрудника e1 is: Marketing

Доступ к элементам из Namedtuple в Python

Есть три способа получить доступ к элементам из именованного кортежа, используя:

  • индекс (как кортеж)
  • имя поля/имя метки (например, словарь)
  • метод getattr()

from collections import namedtuple



#Объявление в namedtuple:

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



#добавление значения именованного кортежа:

e1 = Employee('Andrey', 'Ex', 'Marketing', 20000) # доступ к значению с использованием значения индекса: 

print("Employee (using index)", e1[0], e1[1], e1[2], e1[3]) 

# Доступ значения с меткой: 

print("Employee (using label)", e1.fname, e1.lname, e1.dept, e1.salary)

 

# Доступ значения используя getattr (): 

print("Employee (using getattr())", getattr(e1,'fname'), getattr(e1,'lname'), getattr(e1,'dept'), getattr(e1,'salary'))

Вывод:

Employee (using index) AndreyEx Marketing 20000

Employee (using label) AndreyEx Marketing 20000

Employee (using getattr()) AndreyEx Marketing 20000

Работа с Python Namedtuple

Именованные кортежи в Python неизменяемы.

Как и обычный кортеж, именованные кортежи также неизменяемы. Это вызовет ошибку, если мы присвоим новое значение существующему номеру индекса или метке.

Пример:

from collections import namedtuple



#Объявление в namedtuple

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



#add значения в указанном наборе

e1 = Employee('Andrey', 'Ex', 'Marketing', 20000)



e1.fname ="John"   #  ошибка

Вывод:

AttributeError: невозможно установить атрибут

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

Чтобы преобразовать именованный кортеж в словарь, мы можем использовать метод ._asdict().

Пример:

From collections import namedtuple



#Объявление в namedtuple

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



# добавление значения в указанном наборе

e1 = Employee('Andrey', 'Ex', 'Marketing', 20000)



print(e1._asdict())

Вывод:

{'fname': 'Andrey', 'lname': 'Ex', 'dept': 'Marketing', 'salary': 20000}

Создание Namedtuple из объекта Python Iterable

Чтобы преобразовать итеративный объект, такой как кортеж, список, набор и словарь, в namedtuple, мы можем использовать метод namedtuple ._make () .

Пример:

From collections import namedtuple



#Объявление the namedtuple

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



# список

e1 = ['Alex', 'Terminat', 'Marketing', 20000]

# кортеж

e2 = ('Max', 'Bobikov', 'Marketing', 20000)





print(Employee._make(e1))

print(Employee._make(e2))

Вывод:

Employee(fname='Alex', lname='Terminat', dept='Marketing', salary=20000)

Employee(fname='Max', lname='Bobikov', dept='Marketing', salary=20000)

Преобразование словаря Python в именованный кортеж

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

Мы можем использовать оператор ** или метод словарных значений().

Пример:

From collections import namedtuple



#Объявление the namedtuple

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



# словарь

e1 ={'fname':'Sonia', 'lname':'Jenner', 'dept':'Management', 'salary':20000}



# с помощью ** operator

print(Employee(**e1))



# с помощью метода ._make()

print(Employee._make(e1.values()))

 

Вывод:

Employee(fname='Sonia', lname='Jenner', dept='Management', salary=20000) Employee(fname='Sonia', lname='Jenner', dept='Management', salary=20000)

Проверить все поля именованного кортежа Python Используя свойство _fields, мы можем все поля именованного кортежа

Пример:

From collections import namedtuple



#Объявление namedtuple

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



print(Employee._fields)

Вывод:

('fname', 'lname', 'dept', 'salary')

Как изменить значение Namedtuple

Именованный набор неизменяем, и мы не можем изменить значения его атрибутов после объявления. Однако namedtuple предоставляет метод .replace (), который возвращает копию namedtuple с измененным значением атрибута.

Пример:

From collections import namedtuple



#Объявление в namedtuple

Employee = namedtuple("Employee", ['fname', 'lname', 'dept', 'salary'])



# добавьте значения в именованный кортеж

e1 = Employee('Andrey', 'Ex', 'Marketing', 20000)



print(e1._replace(fname='John'))

Вывод:

Employee(fname='John', lname='Ex', dept='Marketing', salary=20000)

Заключение

В заключение этой статьи по Python мы узнали, что называется кортежем в Python и как его объявить. Namedtuple — это комбинация кортежа Python и словаря Python, в котором доступ к элементам осуществляется с помощью как метки (ключа), так и номера индекса. Мы можем использовать namedtuple как обычный контейнер кортежей Python, и они пригодятся, когда мы хотим выполнить хеширование, используя только кортеж.



2021-06-12T18:25:35
Python

Объяснение адресного фишинга

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

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

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

Характеристики целевого фишинга следующие:

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

Хотя такого рода атаки не новы, и власти пытаются предупредить население более десяти лет назад, этот метод мошенничества становится все более популярным. Убытки от Spear-фишинга составляют около 12 000 000 долларов США.

Спецслужбы также сообщили о целевых фишинговых атаках со стороны партнеров.

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

 

Как выполняются целевые фишинговые атаки?

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

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

Для выполнения этих атак мошенники используют автоматизированные инструменты, такие как Setoolkit, включенный в дистрибутив Kali Linux, самый популярный дистрибутив Linux для тестирования на проникновение. Еще один инструмент, широко используемый для фишинговых атак, — это Metasploit (который можно интегрировать с Setoolkit). Другие фреймворки для пен-тестирования также включают социальную инженерию для выполнения различных типов фишинговых атак, таких как Clone phishing и Spear phishing.

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

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

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

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

 

3 известных фишинговых атаки

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

Facebook и Google (100000000 долларов США): в 2017 году сообщалось, что Facebook и Google подверглись фишингу на сумму 100 миллионов долларов.

FACC Аэрокосмическая и оборонная промышленность (55 000 000 долларов): в рассылке по электронной почте служащий просил перевести деньги на счет для поддельного проекта по приобретению.

Ubiquiti Networks (46000000 долларов): кибер-воры украли 46,7 млн ​​долларов, используя Spear-фишинг, подменяя руководителей, чтобы поручить несанкционированные международные телеграфные переводы.

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

 

Как защититься от целевого фишинга?

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

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

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

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

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

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

 

Заключение

Хотя эти типы атак сопряжены с большим риском, профилактика действительно недорогая.

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

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

Тем не менее, многие люди становятся жертвами всех методов фишинга, поскольку компании не осознают реальный риск, который несет фишинг. Такие компании, как Facebook или Google, стали жертвами фишингового мошенничества, которое принесло убытки в размере 100000000 долларов.

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

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



2021-06-12T18:05:15
Безопасность

Выборочный обход блокировок на маршрутизаторах Keenetic

Суть обхода любой блокировки (при условии что сам сайт работает) это посетить его с помощью другого (через другой) компьютера (сервера, шлюза) у которого есть доступ к необходимому сайту. Реализация задуманного как правило сводится к организации защищенного туннеля между вашим компьютером и сервером у которого есть доступ к нужному ресурсу. Читать

Как установить и настроить HAproxy в Ubuntu 20.04 LTS

HAproxy — это легкий пакет с открытым исходным кодом, который обеспечивает высокую доступность и балансировку нагрузки для программ на основе TCP и HTTP. Он распределяет нагрузку между веб-серверами и серверами приложений. HAproxy доступен почти для всех дистрибутивов Linux. Это широко используемый балансировщик нагрузки, популярный своей эффективностью, надежностью и малым объемом памяти и процессора. В этом посте мы объясним, как установить и настроить HAproxy в системе Ubuntu.  Ну, а если вам нужен уже готовый прокси-сервер, вы можете зайти на этот сайт и купить его прямо сейчас.

Мы установили три машины. Мы установим HAproxy на одном сервере и веб-серверы Apache на двух серверах. Затем наш сервер HAproxy будет действовать как балансировщик нагрузки и распределять нагрузку между веб-серверами Apache.

Примечание. Процедура и команды, упомянутые в этом посте, были протестированы на Ubuntu 20.04 LTS (Focal Fossa). Та же процедура действительна для дистрибутивов Debian и Mint.

Сведения о сети

Мы будем использовать три сервера Ubuntu; все в одной сети. Подробная информация о наших серверах:

Hostname: HAproxy, IP address: 192.168.72.157 (Frontend server)

Hostname: web-server1, IP address: 192.168.72.158 (Backend servers)

Hostname: web-server2, IP address: 192.168.72.159 (Backend servers)

Примечание. У вас должны быть права sudo на всех серверах.

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

Вот как выглядит наша установка:

Настройка веб-серверов — Backend-серверы

В этом разделе мы настроим два веб-сервера ( веб-сервер1 и веб-сервер2 ) в качестве наших внутренних серверов.

На веб-сервере1 (192.168.72.158)

Выполните следующие шаги на своем веб-сервере. Обязательно замените имена хостов и IP-адреса соответствующими IP-адресами и именами хостов ваших веб-серверов.

1. Настройте файл hosts

На веб-сервере1 отредактируйте файл /etc/hosts :

$ sudo nano /etc/hosts

Затем добавьте запись имени хоста для сервера HAproxy следующим образом:

hostname-of-HAproxy IP-address-of-HAproxy

В нашем сценарии это будет:

HAproxy 192.168.72.157

2. Настройте веб-сервер Apache.

Теперь установите веб-сервер Apache, используя следующую команду в Терминале.

$ sudo apt install apache2

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

$ sudo systemctl enable apache2 

$ sudo systemctl start apache2

Создайте индексный файл для web-server1, используя следующую команду в Терминале:

$ echo "<H1>Hello! This is webserver1: 192.168.72.158 </H1>" | sudo tee /var/www/html/index.html

Если в вашей системе работает брандмауэр, вам необходимо разрешить трафик Apache через него:

$ sudo ufw allow 80/tcp

Затем перезагрузите конфигурации брандмауэра:

$ ufw reload

Теперь попробуйте получить доступ к сайту в своем веб-браузере, набрав http://, а затем либо IP-адрес, либо имя хоста вашего веб-сервера.

http:// hostname-or-IP-address

Кроме того, вы также можете использовать команду curl для тестирования веб-страницы.

$ curl <hostname-or-IP-address>

На веб-сервере-2 192.168.72.159

Выполните следующие шаги на своем втором веб-сервере. Обязательно замените имена хостов и IP-адреса соответствующими IP-адресами и именами хостов ваших веб-серверов.

1. Настройте файл hosts

На веб-сервере2 отредактируйте файл / etc / hosts :

$ sudo nano /etc/hosts

Затем добавьте запись имени хоста для сервера HAproxy следующим образом:

HAproxy 192.168.72.157

2. Установите веб-сервер Apache.

Теперь установите веб-сервер Apache, используя следующую команду в Терминале.

$ sudo apt install apache2

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

$ sudo systemctl включить apache2 

$ sudo systemctl start apache2

Создайте индексный файл для web-server2, используя следующую команду в Терминале:

$ echo "<H1>Hello! This is webserver2: 192.168.72.159 </H1>" | sudo tee /var/www/html/index.html

Разрешите Apache в брандмауэре:

$ sudo ufw allow 80/tcp

а затем перезагрузите конфигурации брандмауэра:

$ ufw reload

Теперь попробуйте получить доступ к сайту в своем веб-браузере, набрав http: //, а затем либо IP-адрес, либо имя хоста.

http:// hostname-or-IP-address

Кроме того, вы можете использовать команду curl для тестирования веб-страницы.

$ curl <hostname-or-IP-address>

Теперь наши веб-серверы Apache готовы.

Настройка балансировщика нагрузки HAproxy-Frontend server

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

На сервере HAproxy ( 192.168.72.157 ) выполните следующие шаги для настройки балансировщика нагрузки.

1. Настройте файл hosts

Отредактируйте файл / etc / hosts, используя следующую команду в Терминале:

$ sudo nano / etc / hosts

Добавьте следующие записи имени хоста для обоих веб-серверов Apache вместе с собственным именем хоста :

192.168.72.157 HAproxy

192.168.72.158 web-server1

192.168.72.159 web-server2

Теперь сохраните и закройте файл /etc/hosts.

Установка балансировщика нагрузки HAproxy

Теперь на этом этапе мы будем устанавливать HAproxy на один из наших серверов Ubuntu (192.168.72.157). Для этого обновите apt, используя следующую команду в Терминале:

$ sudo apt-get update

Затем обновите пакеты, используя следующую команду:

$ sudo apt-get upgrade

Теперь установите HAproxy, используя следующую команду в Терминале:

$ sudo sudo apt install haproxy

После завершения установки сервера HAproxy вы можете подтвердить это, используя следующую команду в Терминале:

$ haproxy -v

Он покажет вам установленную версию HAproxy в вашей системе, которая подтверждает, что HAproxy был успешно установлен.

Настройка HAproxy в качестве балансировщика нагрузки

В следующем разделе мы настроим HAproxy в качестве балансировщика нагрузки. Для этого отредактируйте файл /etc/haproxy/haproxy.cfg :

$ sudo nano /etc/haproxy/haproxy.cfg

Добавьте следующие строки в файл haproxy.cfg, заменив IP-адреса вашими собственными IP-адресами.

Интерфейс веб-интерфейс в приведенной выше строках конфигурации говорит HAproxy для прослушивания входящих запросов на порт 80 из 192.168.72.157 , а затем направляет их серверные сервера , сконфигурированных в соответствии с серверной веб-интерфейсом. Во время настройки замените IP-адреса соответствующими IP-адресами ваших веб-серверов.

Настройка мониторинга HAproxy

С помощью мониторинга HAproxy вы можете просматривать множество информации, включая статус сервера, передаваемые данные, время безотказной работы, скорость сеанса и т.д. Чтобы настроить мониторинг HAproxy, добавьте следующие строки в файл конфигурации, расположенный по адресу /etc/haproxy/haproxy.cfg :

listen stats

bind 192.168.72.157:8080

mode http

option forwardfor

option httpclose

stats enable

stats show-legends

stats refresh 5s

stats uri /stats

stats realm Haproxy Statistics

stats auth kbuzdar:kbuzdar            #Login User and Password for the monitoring

stats admin if TRUE

default_backend web-backend

Приведенная выше конфигурация включает страницу « статистики » HAproxy с помощью директивы stats и защищает ее с помощью базовой аутентификации http с использованием имени пользователя и пароля, определенных директивой stats auth .

По завершении настройки сохраните и закройте файл haproxy.cfg.

Теперь проверьте файл конфигурации, используя следующую команду в Терминале:

$ haproxy -c -f /etc/haproxy/haproxy.cfg

Следующий вывод показывает, что конфигурации верны.

Теперь, чтобы применить настройки, перезапустите службу HAproxy:

$ sudo systemctl restart haproxy.service

Он остановит, а затем запустит службу HAproxy.

Чтобы проверить статус службы HAproxy, используйте следующую команду:

$ sudo systemctl status haproxy.service

Активно (работает) положение в следующих выходных показывают , что сервер HAproxy включен и работает нормально.

Вот еще несколько команд для управления сервером HAproxy:

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

$ sudo systemctl start haproxy.service

Чтобы остановить сервер HAproxy, используйте следующую команду:

$ sudo systemctl stop haproxy.service

Если вы хотите временно отключить сервер HAproxy, используйте следующую команду:

$ sudo systemctl отключить haproxy.service

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

$ sudo systemctl включить haproxy.service

Тест HAproxy

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

$ ping имя-хоста-или-IP-адрес

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

Протестируйте прокси HA с помощью веб-браузера

Теперь на сервере HAproxy откройте любой веб-браузер и введите http: //, а затем IP-адрес сервера HAproxy, который в нашем случае 192.168.72.157.

http://192.168.72.157

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

Вот ответ, который мы получили, когда впервые посетили http://192.168.72.157 :

Это ответ, который мы получили, когда перезагрузили веб-страницу:

Вы также можете использовать имя хоста вместо IP-адреса сервера HAproxy.

Протестируйте прокси HA с помощью curl

Вы также можете использовать команду curl в Linux для проверки настройки HAproxy. Откройте Терминал и введите curl, а затем IP-адрес или имя хоста сервера HAproxy.

$ curl 192.168.72.157

или же

$ curl HAproxy

Выполните команду curl несколько раз, и вы увидите, что ответ чередуется между обоими веб-серверами.

Вместо того, чтобы запускать команды несколько раз, вы также можете запустить следующий однострочный сценарий для тестирования сервера HAproxy:

$ while true; do curl 192.168.72.157; sleep 1; done

Тестирование мониторинга HAproxy

Чтобы получить доступ к странице мониторинга HAproxy, введите http: //, а затем IP-адрес/имя хоста сервера HAproxy и порт 8080 / stats:

http://192.168.72.157:8080/stats

или же

http://HAproxy:8080/stats

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

Это статистический отчет для нашего сервера HAproxy.

Здесь у вас есть установка и настройка балансировщика нагрузки HAproxy в системе Linux. Мы только что обсудили базовую настройку и конфигурацию HAproxy в качестве балансировщика нагрузки для веб-серверов Apache. Мы также рассмотрели некоторые команды для управления сервером HAproxy. В итоге мы протестировали балансировку нагрузки через браузер и команду curl. Для получения дополнительной информации посетите официальную документацию HAproxy.



2021-06-09T10:58:10
Вопросы читателей

Как удалить строки в Vim?

Vim — популярный текстовый редактор командной строки, который присутствует в большинстве дистрибутивов Linux и macOS. Знание того, как использовать редактор, может сэкономить вам много времени, когда вы прыгаете по терминалу.

В этой статье мы рассмотрим, как удалить строки в Vim с помощью следующих четырех руководств.

  • Удаление отдельной строки в Vim
  • Удаление нескольких строк в Vim
  • Удаление диапазона строк в Vim
  • Удаление строк с шаблоном в Vim

Как удалить строку в Vim?

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

Шаг 2:  Введите  dd, чтобы удалить строку. Обратите внимание, что нажатие  dd  несколько раз приведет к удалению нескольких строк.

Как удалить несколько строк в Vim?

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

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

Шаг 2:  Введите 3dd  и нажмите Enter, чтобы удалить три строки с позиции курсора. Вы можете заменить число на количество строк, которые хотите удалить.

Как удалить ряд строк в Vim?

Используйте этот синтаксис для одновременного удаления ряда строк.

:[start], [end]d

Шаг 1.  Нажмите  Esc,  чтобы перейти в нормальный режим.

Шаг 2:  Введите  : 4,10d,  чтобы удалить строки с 4 по 10. Вы можете изменить эти числа в соответствии с вашими требованиями.

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

  • .: Удаляет текущую строку.
  • $:  Удаляет последнюю строку.
  • %:  Удаляет все строки.

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


Как удалить строки с рисунком в Vim?

Используйте команду  d  в следующем синтаксисе для удаления строк с шаблоном.

:g/<pattern>/d

Синтаксис включает глобальную команду (g), указывающую команде удаления  (d)  удалить все строки, включая  <pattern>.

:g!/<pattern>/d

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

  • :g/del/d: Эта команда удалит все строки, содержащие ‘del’, даже если она встроена в слова большего размера, такие как ‘delete’.
  • :g!/del/d:  Выполняет полную противоположность вышеупомянутой команде. Удаляет все строки, не содержащие ‘del’.
  • :g/^$/d:  Удаляет все пустые строки, причем ^ $  является выражением для пустых строк.
  • :g/^#/d:  Эта команда удалит все комментарии из сценария bash, поскольку комментарии bash начинаются с символа #.



2021-06-07T21:51:20
Вопросы читателей

Чему программисты на Java должны научиться в 2021 году. Java Enterprise Stack

№3. Java Enterprise Stack

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

Когда люди говорят о корпоративных технологиях, связанных с Java, они обычно имеют в виду два основных стека, Spring Framework и Jakarta Enterprise Edition (ранее Java Enterprise Edition, JavaEE).

Они делают похожие вещи, но не совсем. Вы можете думать о Spring как о наборе фреймворков, в то время как чистая Jakarta — это набор спецификаций и стандартов.

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

Java EE хорошо подходит для реализации масштабируемого монолитного кластерного приложения.

На рынке труда в настоящий момент более востребованы разработчики, знакомые со Spring Framework. Исторически сложилось так, что в те дни, когда Java EE была чрезмерно сложной, Spring «приобрела клиентскую базу».

Так что в 2021 году логичнее приложить усилия для изучения Spring. Тем не менее, лучше хотя бы поверхностно познакомиться с обеими платформами. Напишите небольшой домашний проект на Java EE и Spring. Затем углубитесь в структуру, которая требуется при работе.

Spring Framework — огромная экосистема для создания серверных приложений. Наиболее важные части Spring для изучения:

  • Основные компоненты Spring, такие как внедрение зависимостей (DI), инверсия управления (IoC) и Spring MVC в целом.
  • Весенний ботинок
  • Весенняя безопасность
  • Spring Data JPA
  • Весна АОП

JakartaEE

  • JSP
  • Servlet
  • JPA
  • JAX-RS
  • JAX-WS

 

Полезные компоненты

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

  • Сервлеты, компоненты для расширения возможностей сервера.
  • Log4j, одна из самых полезных библиотек для регистрации сообщений.
  • Jackson/JSON. JSON (JavaScript Object Notation) — это открытый стандартный формат файла и формат обмена данными. Jackson — это высокопроизводительный процессор JSON для Java.
  • API Java для веб-служб RESTful.

 

Выводы

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

Будьте первым, кто поделится этой статьей со своей сетью!

Начало:



2021-06-04T23:02:15
Java