Настройка EoIP MikroTik, быстрый VPN туннель на L2

Ethernet over IP (EoIP) Tunneling — это протокол MikroTik RouterOS, который создает туннель Ethernet между двумя маршрутизаторами поверх IP-соединения. Туннель EoIP может работать через туннель IPIP, туннель PPTP или любое другое соединение, способное передавать IP.

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

Установка Яндекс Диск в Linux

 

У многих компаний существуют свои облачные хранилища, на которых вы можете бесплатно хранить свои файлы. Такое хранилище есть у Google, Mail.ru, DropBox, Mega, а также у Яндекса. В отличие от Mail.ru, у которого больше нет полноценного клиента для Linux у Яндекса такой клиент есть, правда, работает он только через терминал.

 

В этой небольшой статье мы рассмотрим как установить Яндекс Диск на Linux и как пользоваться программой для синхронизации локальной папки с удалённым диском. Мы рассмотрим все действия на примере Ubuntu.

Читать

Функция Python map ()

map() — это встроенная функция в Python, которая применяет функцию ко всем элементам в данной итерации. Это позволяет писать простой и чистый код без использования циклов.

Функция Python map()

Функция map() принимает следующий вид:

map(function, iterable, ...)

Он принимает два обязательных аргумента:

  • function — функция, которая вызывается для каждого элемента iterable .
  • iterable — один или несколько объектов, поддерживающих итерацию. Большинство встроенных объектов в Python, таких как списки, словари и кортежи, являются повторяемыми.

В Python 3 map() возвращает объект карты с размером, равным переданному итерируемому объекту. В python 2 функция возвращает список.

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

Один из способов сделать это — использовать традиционный цикл for :

directions = ["north", "east", "south", "west"]
directions_upper = []

for direction in directions:
    d = direction.upper()
    directions_upper.append(d)

print(directions_upper)

['NORTH', 'EAST', 'SOUTH', 'WEST']

С функцией map() код будет намного проще и гибче.

def to_upper_case(s):
    return s.upper()

directions = ["north", "east", "south", "west"]

directions_upper = map(to_upper_case, directions)

print(list(directions_upper))

Мы используем конструктор list() для преобразования возвращенного объекта карты в список :

['NORTH', 'EAST', 'SOUTH', 'WEST']

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

directions = ["north", "east", "south", "west"]

directions_upper = map(lambda s: s.upper(), directions)

print(list(directions_upper))

Лямбда-функция — это небольшая анонимная функция.

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

squares = map(lambda n: n*n , range(1, 11))
print(list(squares))

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Функция range() генерирует последовательность целых чисел.

Использование map() с несколькими итерациями

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

В следующем примере показано, как выполнить поэлементное умножение двух списков:

def multiply(x, y):
  return x * y

a = [1, 4, 6]
b = [2, 3, 5]

result = map(multiply, a, b)

print(list(result))

[2, 12, 30]

Тот же код, но с использованием лямбда-функции, будет выглядеть так:

a = [1, 4, 6]
b = [2, 3, 5]

result = map(lambda x, y: x*y, a, b)

print(list(result))

Когда предоставляется несколько итераций, размер возвращаемого объекта равен самому короткому итерируемому.

Давайте посмотрим на пример, когда итерируемые объекты имеют разную длину:

a = [1, 4, 6]
b = [2, 3, 5, 7, 8]

result = map(lambda x, y: x*y, a, b)

print(list(result))

Лишние элементы (7 и 8) игнорируются:

[2, 12, 30]

Выводы

Функция Python map() принимает итерируемый объект вместе с функцией и применяет эту функцию к каждому элементу в итерируемом объекте.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-10-18T16:23:42
Python

Как удалить учетные записи пользователей MySQL

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

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

В этом руководстве объясняется, как удалить учетные записи пользователей MySQL / MariaDB. Читать

Как переименовать учётную запись Windows 10

Как переименовать пользователя Windows, т.е. поменять имя его учётной записи? У разных типов учётных записей, а их два – локальная и подключаемая к аккаунту Microsoft, которая действует в среде Win8.1 и Win10 – разные способы переименования. Давайте рассмотрим, как переименовываются оба типа этих «учёток». Учётная запись Microsoft — Если на компьютере с Windows 8.1 или 10 работа ведётся с учётной записи, которая подключена к аккаунту Microsoft. Читать

Как получить и изменить текущий рабочий каталог в Python

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

Когда вы запускаете сценарий Python, в качестве текущего рабочего каталога устанавливается каталог, из которого выполняется сценарий.

Модуль os python обеспечивает переносимый способ взаимодействия с операционной системой. Модуль является частью стандартной библиотеки Python и включает методы поиска и изменения текущего рабочего каталога.

Получение текущего рабочего каталога в Python

Метод getcwd() модуля os в Python возвращает строку, содержащую абсолютный путь к текущему рабочему каталогу. Возвращенная строка не включает завершающий символ косой черты.

os.getcwd()

Чтобы использовать методы модуля os, вы должны импортировать модуль в верхней части файла.

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

# Import the os module
import os

# Get the current working directory
cwd = os.getcwd()

# Print the current working directory
print("Current working directory: {0}".format(cwd))

# Print the type of the returned object
print("os.getcwd() returns an object of type: {0}".format(type(cwd)))

Результат будет выглядеть примерно так:

Current working directory: /home/linuxize/Desktop
os.getcwd() returns an object of type: <class 'str'>

Если вы хотите найти каталог, в котором находится скрипт, используйте os.path.realpath(__file__) . Он вернет строку, содержащую абсолютный путь к запущенному скрипту.

Изменение текущего рабочего каталога в Python

Чтобы изменить текущий рабочий каталог в Python, используйте метод chdir() .

os.getcwd(path)

Метод принимает один аргумент — путь к каталогу, в который вы хотите перейти. Аргумент path может быть абсолютным или относительным.

Вот пример:

# Import the os module
import os

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

# Change the current working directory
os.chdir('/tmp')

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

Результат будет выглядеть примерно так:

Current working directory: /home/linuxize/Desktop
Current working directory: /tmp

Аргумент, передаваемый методу chdir() должен быть каталогом, в противном случае NotADirectoryError исключение NotADirectoryError . Если указанный каталог не существует, возникает исключение FileNotFoundError . Если у пользователя, от имени которого выполняется сценарий, нет необходимых разрешений, возникает исключение PermissionError .

# Import the os module
import os

path = '/var/www'

try:
    os.chdir(path)
    print("Current working directory: {0}".format(os.getcwd()))
except FileNotFoundError:
    print("Directory: {0} does not exist".format(path))
except NotADirectoryError:
    print("{0} is not a directory".format(path))
except PermissionError:
    print("You do not have permissions to change to {0}".format(path))

Выводы

Чтобы найти текущий рабочий каталог в Python, используйте os.getcwd() , а для изменения текущего рабочего каталога используйте os.chdir(path) .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.



2020-10-16T08:24:27
Python