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

Простая установка «Ubuntu»

Мы уже узнали о системах Debian и Ubuntu. В этой статье я покажу минимальный процесс установки операционной системы Ubuntu 22.04.





Читать далее…

Вкусная маринованная капуста быстрого приготовления – 5 рецептов, о которых вы должны знать

 

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

Компания Cosmochanger.cc: обмен валюты и преимущества

Биткоины или криптовалюта – это современные электронные деньги, которые широко используют для оплаты различных услуг и приобретенных товаров. Такую плату могут просить авиакомпании, туристические агентства, а также отели и гостиницы. Получить биткоины можно на официальном сайте специализированной компании Cosmochanger.cc Читать

Как сэкономить на покупках за счет купонов, промокодов и скидок Алиэкспресс

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

Купоны Алиэкспресс и промокоды

Скидки и купоны Алиэкспресс

Читать

Как работать с CSV-файлами в Python

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

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

 

Чтение данных из файлов CSV с помощью Python

Модуль CSV в Python позволяет вам читать, записывать и управлять любыми данными, хранящимися в файлах CSV. Чтобы прочитать файл CSV, вам нужно будет использовать метод «reader» из модуля Python «csv», который включен в стандартную библиотеку Python.

Учтите, что у вас есть файл CSV, содержащий следующие данные:

Mango,Banana,Apple,Orange

50,70,30,90

 

Первая строка файла определяет категорию каждого столбца, в данном случае название фруктов. Во второй строке хранятся значения в каждом столбце (на складе). Все эти значения разделяются запятой. Если бы вы открыли этот файл в приложении для работы с электронными таблицами, таком как LibreOffice Calc, он бы выглядел так:

Как работать с CSV-файлами в Python

 

Теперь, чтобы прочитать значения из файла «fruit.csv» с помощью модуля Python «csv», вам нужно будет использовать метод «reader» в следующем формате:

import csv

with open("fruits.csv") as file:

data_reader = csv.reader(file)

for line in data_reader:

print (line)

 

Первая строка в приведенном выше примере импортирует модуль «csv». Затем оператор «with open» используется для безопасного открытия файла, хранящегося на вашем жестком диске (в данном случае «fruit.csv»). Новый объект «data_reader» создается путем вызова метода «reader» из модуля «csv». Этот метод «читателя» принимает имя файла в качестве обязательного аргумента, поэтому ему передается ссылка на «fruit.csv». Затем выполняется оператор цикла for для печати каждой строки из файла «fruit.csv». После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

['50', '70', '30', '90']

 

Если вы хотите назначить номера строк для вывода, вы можете использовать функцию «перечислить», которая присваивает номер каждому элементу в итерации (начиная с 0, если не было изменено).

import csv

with open("fruits.csv") as file:

data_reader = csv.reader(file)

for index, line in enumerate(data_reader):

print (index, line)

 

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

0 ['Mango', 'Banana', 'Apple', 'Orange']

1 ['50', '70', '30', '90']

 

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

import csv

with open("fruits.csv") as file:

data_reader = csv.reader(file)

for index, line in enumerate(data_reader):

if index == 0:

headings = line

print (headings)

 

Блок «if» в приведенном выше утверждении проверяет, равен ли индекс нулю (первая строка в файле «fruit.csv»). Если да, то значение переменной «строка» присваивается новой переменной «заголовки». После выполнения приведенного выше примера кода вы должны получить следующий результат:

['Mango', 'Banana', 'Apple', 'Orange']

 

Обратите внимание, что вы можете использовать свой собственный разделитель при вызове метода csv.reader, используя необязательный аргумент «разделитель» в следующем формате:

import csv

with open("fruits.csv") as file:

data_reader = csv.reader(file, delimiter=";")

for line in data_reader:

print (line)

 

Поскольку в файле csv каждый столбец связан со значениями в строке, вы можете создать объект «словарь» Python при чтении данных из файла «csv». Для этого вам нужно использовать метод «DictReader», как показано в приведенном ниже коде:

import csv

with open("fruits.csv") as file:

data_reader = csv.DictReader(file)

for line in data_reader:

print (line)

 

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

{'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'}</cce_text>



So now you have a dictionary object that associates individual columns with their corresponding values in the rows. This works fine if you have only one row. Let's assume that the "fruits.csv" file now includes an additional row that specifies how many days it will take for the stock of fruit to perish.



[cce_text width="100%" height="100%" escaped="true" theme="blackboard" nowrap="0"]Mango,Banana,Apple,Orange

50,70,30,90

3,1,6,4

 



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

{'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'}

{'Mango': '3', 'Banana': '1', 'Apple': '6', 'Orange': '4'}

 

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

import csv

with open("fruits.csv") as file:

data_reader = csv.DictReader(file)

data_dict = {}

for line in data_reader:

for key, value in line.items():

data_dict.setdefault(key, [])

data_dict[key].append(value)

print (data_dict)

 

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

{'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90', '4']}

 

Цикл «for» используется для каждого элемента объекта «DictReader» для перебора пар ключ-значение. Перед этим определяется новая переменная словаря Python «data_dict». Он будет хранить окончательные сопоставления данных. Во втором блоке цикла for используется метод setdefault словаря Python. Этот метод присваивает значение ключу словаря. Если пара «ключ-значение» не существует, создается новая из указанных аргументов. Таким образом, в этом случае новый пустой список будет назначен ключу, если он еще не существует. Наконец, «значение» добавляется к соответствующему ключу в конечном объекте «data_dict».

 

Запись данных в файл CSV

Чтобы записать данные в файл «csv», вам нужно будет использовать метод «writer» из модуля «csv». В приведенном ниже примере к существующему файлу «fruit.csv» будет добавлена ​​новая строка.

import csv

with open("fruits.csv", "a") as file:

data_writer = csv.writer(file)

data_writer.writerow([3,1,6,4])

 

Первый оператор открывает файл в режиме «добавления», обозначенном аргументом «а». Затем вызывается метод «писателя», и ему передается ссылка на файл «fruit.csv» в качестве аргумента. Метод «writerow» записывает или добавляет новую строку в файл.

Если вы хотите преобразовать словарь Python в файловую структуру «csv» и сохранить вывод в файле «csv», попробуйте этот код:

import csv

with open("fruits.csv", "w") as file:

    headings = ["Mango", "Banana", "Apple", "Orange"]

    data_writer = csv.DictWriter(file, fieldnames=headings)

    data_writer.writeheader()

    data_writer.writerow({"Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90})

    data_writer.writerow({"Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4})

 

После открытия пустого файла «fruit.csv» с помощью оператора «with open» определяется новая переменная «заголовки», которая содержит заголовки столбцов. Новый объект «data_writer» создается путем вызова метода «DictWriter» и передачи ему ссылки на файл «fruit.csv» и аргумент «fieldnames». В следующей строке заголовки столбцов записываются в файл с помощью метода «writeheader». Последние два оператора добавляют новые строки к соответствующим заголовкам, созданным на предыдущем шаге.

 

Заключение

Файлы CSV предоставляют удобный способ записи данных в табличном формате. Встроенный в Python модуль «csv» позволяет легко обрабатывать данные, доступные в файлах «csv», и реализовывать на них дополнительную логику.



2021-04-02T16:38:35
Python

MikroTik – статические маршруты.

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

Освоить MikroTik Вы можете с помощью онлайн-куса
«Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.

Схема сетей.

В обоих сетях работают роутеры MikroTik RB750Gr3 с прошивкой 6.48.

В первые порты подключены патч-корды внешних сетей.

Во вторые порты подключен патч-корд между двумя роутерами (красный).

В пятые порты подключены патч-корды до коммутаторов ЛВС (синие).

Для понятности описаны подробные настройки для обоих роутеров.

Обозначим роутеры №1 и №2.

Базовые настройки помещены под спойлер.


СПОЙЛЕР Настройки роутера №1.

Подключаемся к роутеру через WinBox из локальной сети. (как это сделать)

Reset Configuration.

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

Через командную строку терминала:



Подключаемся к роутеру по MAC-адресу.

 

Ports.

Переименуем порты, чтоб не путаться в процессе настройки.

ether1-WAN (внешняя сеть – Интернет)

ether2-ROUTE (роутер №2)

ether3-ether5 – LAN (локальная сеть)

Через командную строку терминала:



 

Bridge.

Создаем мост для внутренней локальной сети.

Через командную строку терминала:



 

Bridge ports.

Добавляем в мост порты ether3-ether5

Через командную строку терминала:



 

Bridge address.

Назначим мосту статический IP-адрес.

Через командную строку терминала:



 

Ether2-ROUTE address.

Назначим статический адрес порту в направлении второго роутера.

Через командную строку терминала:



 

DHCPclient.

Создадим получение IP-адреса от вышестоящего роутера (провайдера) в автоматическом режиме.

Создаем DHCP Client соединение.

Через командную строку терминала:



 

DHCPserver для локальной сети.

Создаем пул IP-адресов, которые будут раздаваться автоматически.

Через командную строку терминала:



 

Укажем сеть для DHCP-сервера.

Через командную строку терминала:



 

Создадим DHCP Server.

Через командную строку терминала:



 

Привяжем полученный IP-адрес к MAC-адресу ПК пользователя.

Через командную строку терминала:



 

DNS.

Динамический DNS будет присвоен автоматически, или его можно указать вручную.

Allow Remote Requests – отмечаем галочкой.

Через командную строку терминала:



 

NAT.

NAT masquerade подменяет IP-адреса локальной сети на внешний IP при отправке запросов и обратная ситуация при возвращении ответов.

Через командную строку терминала:



После этих действий Интернет заработает в локальной сети.

Для полноценной работы необходимо выполнить настройки по безопасности, и некоторые другие настройки (см.базовая настройка роутера MikroTik).


Routes.

Создадим маршрут от первого до второго роутера. Это можно сделать в меню  IP >> Routes.

Через командную строку терминала:



Этот маршрут означает что при необходимости попасть в сеть 192.168.20.0/24 будет использован шлюз 172.16.0.20.

 


СПОЙЛЕР Настройки роутера №2.

Подключаемся к роутеру через WinBox из локальной сети. (как это сделать)

Reset Configuration.

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

Через командную строку терминала:



Подключаемся к роутеру по MAC-адресу.

 

Ports.

Переименуем порты, чтоб не путаться в процессе настройки.

ether1-WAN (внешняя сеть – Интернет)

ether2-ROUTE (роутер №1)

ether3-ether5 – LAN (локальная сеть)

Через командную строку терминала:



 

Bridge.

Создаем мост для внутренней локальной сети.

Через командную строку терминала:



 

Bridge ports.

Добавляем в мост порты ether3-ether5

Через командную строку терминала:



 

Bridge address.

Назначим мосту статический IP-адрес.

Через командную строку терминала:



 

Ether2-ROUTE address.

Назначим статический адрес порту в направлении первого роутера.

Через командную строку терминала:



 

DHCPclient.

Создадим получение IP-адреса от вышестоящего роутера (провайдера) в автоматическом режиме.

Создаем DHCP Client соединение.

Через командную строку терминала:



 

DHCPserver для локальной сети.

Создаем пул IP-адресов, которые будут раздаваться автоматически.

Через командную строку терминала:



 

Укажем сеть для DHCP-сервера.

Через командную строку терминала:



 

Создадим DHCP Server.

Через командную строку терминала:



 

Привяжем полученный IP-адрес к MAC-адресу ПК пользователя.

Через командную строку терминала:



 

DNS.

Динамический DNS будет присвоен автоматически, или его можно указать вручную.

Allow Remote Requests – отмечаем галочкой.

Через командную строку терминала:



 

NAT masquerade.

Через командную строку терминала:



После этих действий Интернет заработает в локальной сети.

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


Routes.

Создадим маршрут от второго роутера к первому роутера. Переходим в боковом меню в  IP >> Routes.

Через командную строку терминала:



Этот маршрут означает что при необходимости попасть в сеть 192.168.10.0/24 будет использован шлюз 172.16.0.10.

Настроенная система прошла успешное тестирование. Доступ между сетями может ограничивать антивирус или правила Firewall в роутерах.

Освоить MikroTik Вы можете с помощью онлайн-куса
«Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.



2021-04-02T16:37:28
Настройка ПО