По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Компьютерные сети это то, что можно встретить сейчас в любом доме, в любой организации. Более того, это одна из основных составляющих успешной деятельности современного предприятия. И чем крупнее организация, тем шире в ней компьютерная сеть. В этом случае для удобства организации работы имеет смысл разделить единую сеть на подсети. В этой статье мы рассмотрим, как правильно и без ошибок наладить работу с подсетями в рамках одной локальной сети. p> Прежде всего, стоит понимать, а нужно ли вообще разбивать сеть? Если фирма небольшая, на 3-4 сотрудника в одном офисе, то в такой разбивке нет необходимости. Однако, если сотрудники компаний занимают несколько кабинетов, или же отделы находятся в различных зданиях - в этом случае без сегментации на подсети не обойтись. Вообще, интернет-провайдер рассматривает любую организацию как одну сеть, в идеале, имеющую один IP-адрес. На деле так получается далеко не всегда. Если организация крупная, то в ней по факту может быть несколько локальных подсетей, объединенных в одну сеть, которую и будет "видеть" провайдер. Эти подсети могут быть территориально удалены друг от друга, поэтому нужно правильно наладить их соединение, чтобы избежать ошибок в обмене данными. Конечно, самым очевидным решением будет присвоение каждому устройству своего IP-адреса. Но если в сети есть несколько маршрутизаторов, такой вариант будет неприемлемым или исключительно сложным в реализации. Что же делать в случае, если сеть организована через связанные между собой маршрутизаторы? В этом случае нужно присвоить IP-подсетям разные адреса. Задачка: из пункта А в пункт Б выехал поезд…Упс, нет, не та задача. Пусть в организации есть несколько отделов. Чтобы понять, какое количество IP-адресов выдать на подсеть, необходимо знать потребности каждого отдела. Иными словами, знать максимальное количество компьютеров и сетевых устройств, которое планируется ставить в каждом отделе. Для каждого компьютера (и любого другого сетевого девайса) в рамках подсети будет установлен свой индивидуальный IP-адрес. Также нужны IP-адреса для виртуальных серверов, если таковые используются в организации. Не лишним будет создать запас IP-адресов на случай расширения отдела и установки новых рабочих станций. Есть два варианта разделения сети. Это вариант с подсетями равного размера и вариант с подсетями разного размера. Рассмотрим первый случай: Если вы на хотите заморачиваться с самостоятельным расчетом подсетей, то мы сделали все за вас 😌. Воспользуйтесь нашим готовым калькулятором подсетей Вариант 1: Разделение сети на подсети одинакового размера: Вообще, в сети, устроенной по протоколу IPv4 можно, как правило размещают 254 устройства (2^8-2 – два в восьмой степени минус 2. Минус два, так как один адрес широковещательный а другой сетевой, так называемый нулевой). Из адресного пространства узла (последние 8 бит) для адресации подсетей потребуется занять несколько бит. Если занять 1 бит получится 2 подсети, 2 бита 4 подсети, 3 бита 8 подсетей и так далее. Маска подсети будет увеличиваться на +1 за каждый занятый для разбивки бит. Таким образом, определив нужное количество подсетей, мы можем начинать разбивку. Стоит помнить, что чем больше подсетей, тем меньше в них будет адресов. Например, если подсетей нужно сделать 7, то для адресации в адресном пространстве узла мы возьмем 3 бита, и еще 5 у нас останется для присвоения IP-адресов. Таким образом, в каждой подсети можно будет установить (2^5-2 – два в пятой степени минус два) = 30 устройств. Общая вместимость сети в данном случае составит (30*8) =240 устройств. Диапазоны устройств в подсетях найти также несложно. Они будут распределены от 0 до 254, при этом адреса подсети уже будут зарезервированы (0, 32, 64, 96, 128, 160, 192, 224) Пример: 1-я подсеть: 1.2.3.0 /27 диапазон 1.2.3.1 /27 1.2.3.30 /27 2-я подсеть: 1.2.3.32 /27 диапазон 1.2.3.33 /27 1.2.3.62 /27 3-я подсеть: 1.2.3.64 /27 диапазон 1.2.3.65 /27 1.2.3.94 /27 4-я подсеть: 1.2.3.96 /27 диапазон 1.2.3.97 /27 1.2.3.126 /27 5-я подсеть: 1.2.3.128 /27 диапазон 1.2.3.129 /27 1.2.3.158 /27 6-я подсеть: 1.2.3.160 /27 диапазон 1.2.3.161 /27 1.2.3.190 /27 7-я подсеть: 1.2.3.192 /27 диапазон 1.2.3.193 /27 1.2.3.222 /27 8-я подсеть: 1.2.3.224 /27 диапазон 1.2.3.225 /27 1.2.3.254 /27 Таким образом, наши IP - пакетики могут легко пройти через маршрутизаторы и найти нужный путь. Но в данном варианте есть и минус - множество IP-адресов в подсети остаются неиспользуемыми. Теперь рассмотрим второй вариант: Вариант 2. Разделение сети на подсети различного размера: В данном случае необходимо будет рекурсивно разделить сеть пополам. Посмотрите наглядную картинку: И так далее. А затем для каждой подсети подобрать адрес с диапазоном нужного размера. Таким образом если в одной подсети 50 устройств, она будет в диапазоне 3 итерации деления, если же 5, то в 5 итерации. Используя этот метод, мы экономим IP-адреса и можем разделять сеть на подсети разных размеров. Подытоживая, можно отметить, что такое деление отлично подойдет в случае IPv6, но с учетом того, что там используется гораздо более объемное адресное пространство, там проблемы с экономией IP-адресов не стоит. Принцип деления сети на подсети будет тем же самым с поправкой на 128-битный адрес нового протокола.
img
SugarCRM - самая распространенная в мире CRM (customer relationship management) или система взаимоотношений с клиентом, являющаяся системой с открытым кодом, или проще говоря «Open Source». Созданная в 2004 году, на текущий момент SugarCRM удовлетворяет потребности свыше 7 000 клиентов, которые создают маркетинговые кампании, увеличивают продажи, повышают лояльность клиентов и используют различные бизнес приложения. Уникальность SugarCRM заключается в том, что это «Open Source» приложение, а следовательно, оно доступно всем пользователям, будь то разработчик или конечный клиент продукта. Получив исходный код, клиент имеет возможность самостоятельно управлять информацией и приложениями внутри CRM и инсталлировать ее в зависимости от требований. Рассмотрим возможные редакции SugarCRM: Community Edition (CE) - CE распространяется в рамках лицензии AGPLv3. С 2004 года, CE скачало больше 8 миллионов человек. Данная версия обеспечивает базовый функционал для отдела продаж, маркетинга, поддерживает автоматизацию процессов, пользователей и соответствующих прав. В рамках Community Edition, доступны такие модули как Studio и Module Builder, которые позволяет исправлять ту или иную настройку под конкретное предприятие. Распространяется бесплатно. Professional Edition (PE) - PE - коммерческое издание SugarCRM, которое устанавливается на базе CE и имеет расширенный функционал. Из всех доступных опций, отметим наиболее важные: Поддержка «Команд», в рамках которых, можно группировать пользователей по правилам отделов, департаментов или рабочего функционала. Мощный механизм построения отчетности, который позволяет создавать собственные отчеты по работе сотрудников в виде круговых диаграмм, графиков и статистических данных. Специально оптимизированная для мобильных телефонов WEB – версия SugarCRM, которая полностью совместима с iPhone и Android смартфонами. Плагины для Microsoft Office, Outlook, Word и Excel. Corporate Edition (CorpEd) - Это новая редакция добавлена вместе с релизом версии 6.2, позволяет выстроить следующий функционал поверх существующей PE инсталляции: Расширенная мобильная версия, которая позволяет хранить данные в режиме оффлайн, совместимо с iPhone, iPad и Blackberry платформами. Более высокий уровень технической поддержки клиента. Enterprise Edition (EE) - Перечислим дополнительные опции версии EE: Улучшенная система отчетности Оффлайн клиент для работы сотрудников Специальный портал, в рамках которого осуществляется облегченное взаимодействие с SugarCRM Специальный плагин для работы с управленческими процессами и документами Lotus Notes Поддержка базы данных Oracle Высочайший уровень технической поддержки клиента. Ultimate Edition (UE) - UE является самым богатым изданием с точки зрения инструментария и функционала. Ко всем вышеперечисленным функциям добавляются: Коннектор к серверу приложений Lotus Domino Server Самый высокий из возможных сервис технической поддержки Что необходимо для установки SugarCRM? Для базовой инсталляции необходимо: Компьютер/сервер (поддерживается Unix или Windows ОС) WEB – сервер (Apache .x или IIS 6 и 7.x) База данных (MySQL 5.x, SQL Server 2005/2008 или Oracle 10g/11g) Последняя версия PHP для работы с вышеуказанными компонентами (5.2 или 5.3 поддерживается) Браузер для доступа к самой CRM (IE 7/8, Firefox, Safari и Chrome) Если у вас имеется новый дистрибутив Linux, все эти компоненты должны быть доступны из под менеджера пакетов (deb, rpm). Сам по себе инсталлятор это набор web – процедур. Все что нужно, это распаковать скачанный пакет в корне web – сервера и открыть эту директорию через интернет браузер. Пошаговый инсталлятор запросит необходимую информацию и произведет установку.
img
В этой статье посмотрим как можно отправлять электронные письма при помощи Python. Есть и более простые способы это сделать, но мне больше подошел именно следующий вариант. Итак, вот как это выглядит: у вас есть имена и адреса электронной почты некоторой группы контактов. И вы хотите отправить каждому из них письмо, добавив в начале сообщения «Уважаемый [имя]». Для простоты вы можете хранить всю контактную информацию просто в файле, а не в базе данных. Также вы можете сохранить в файл шаблон сообщения, которое вы хотите отправить. Модуль smtplib в Python – это практически все, что вам понадобиться для отправки простых электронных писем без заполнения темы письма или какой-либо еще дополнительной информации. Но, конечно, для настоящих писем вам необходимо заполнить строку темы письма и другую информацию, и, возможно, даже прикрепить изображения или какие-то другие вложения. Вот тут и приходит на помощь пакет email в Python. Имейте в виду, что нельзя отправить сообщение через электронную почту, используя только этот пакет. Вам необходимо совместить email и smtplib. Обязательно ознакомьтесь с подробной официальной документацией для каждого из этих пакетов. Вот четыре основных шага для отправки электронных писем с помощью Python: Настройте SMTP-сервер и войдите в свою учетную запись. Создайте объект сообщения MIMEMultipart и загрузите его с соответствующими заголовками для полей From (От), To (Кому) и Subject (Тема). Добавьте тело сообщения. Отправьте сообщение с помощью объекта SMTP-сервера. А теперь давайте рассмотрим весь процесс. Допустим, что у вас есть файл контактов mycontacts.txt, который выглядит вот так: user@computer ~ $ cat mycontacts.txt john johndoe@example.com katie katie2016@example.com Каждая строка соответствует одному контакту. В каждой строке пишется имя, а за ним следует адрес электронной почты. У меня все сохранено в нижнем регистре. Я оставлю преобразования любых полей или некоторых начальных букв в верхний регистр логике программирования, если это будет необходимо. В Python это все довольно просто. Далее у нас есть файл с шаблоном сообщения message.txt. user@computer ~ $ cat message.txt Dear ${PERSON_NAME}, This is a test message. Have a great weekend! Yours Truly Обратили внимание на ${PERSON_NAME}? Это шаблонная строка в Python. Шаблонные строки можно легко заменить другими строками; в данном примере ${PERSON_NAME} будет заменено настоящим именем человека (вы скоро это увидите). А теперь давайте перейдем к коду Python. Для начала нам необходимо прочитать контакты из файла mycontacts.txt. Мы, кстати, можем обобщить это в отдельную функцию. # Function to read the contacts from a given contact file and return a # list of names and email addresses def get_contacts(filename): names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails Функция get_contacts() в качестве аргумента принимает имя файла. Она откроет этот файл, прочитает каждую строку (то есть каждый контакт), разделит их на имя и адрес электронной почты, а затем добавит их в два отдельных списка. И, наконец, в качестве результата работы функции возвращаются эти два списка. Также нам нужна функция для того, чтобы прочитать шаблон сообщения (такой как message.txt) и вернуть объект типа Template, созданный из его содержимого. from string import Template def read_template(filename): with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) Как и предыдущая функция, в качестве аргумента она принимает имя файла. Для того, чтобы отправить письмо, вам необходимо использовать протокол SMTP (Simple Mail Transfer Protocol – протокол простого обмена электронной почтой). Как уже упоминалось ранее, у Python есть необходимые для этого библиотеки. # import the smtplib module. It should be included in Python by default import smtplib # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) В приведенном выше фрагменте кода вы импортируете smtplib, а затем создаете экземпляр SMTP, который формирует SMTP-соединение. В качестве параметра он принимает адрес хоста и номер порта, оба эти параметра полностью зависят от настроек SMTP вашего поставщика услуг электронной почты. Например, в случае Outlook строка под номером 4 будет выглядеть вот так: s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587) Для того, чтобы все работало, вам необходимо использовать адрес хоста и номер порта конкретно вашего поставщика услуг электронной почты. MY_ADDRESS и PASSWORD – это две переменные, которые содержат полный адрес электронной почты и пароль от учетной записи, которую вы собираетесь использовать. А теперь самое время получить контактную информацию и шаблон сообщения, используя функции, которые мы определили ранее. names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') А теперь давайте отправим отдельное письмо каждому из этих контактов. # import necessary packages from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg Для каждого name (имя) и email (адрес электронной почты) (из файла с контактами) вы создаете объект MIMEMultipart, настраиваете заголовки типов содержимого From (от), To (кому), Subject (тема) как словарь ключевых слов, а затем прикрепляете тело сообщения к объекту MIMEMultipart в виде обычного текста. Возможно, вам захочется прочитать документацию, чтобы узнать больше о других типах MIME, с которыми вы также можете поэкспериментировать. Также обратите внимание, что в строке 10 выше я заменяю ${PERSON_NAME} фактическим именем, которое было извлечено из файла с контактами с помощью механизма шаблонизации в Python. В данном конкретном примере я каждый раз удаляю объект MIMEMultipart и создаю его заново при каждой итерации цикла. Как только вы проделаете все это, то сможете отправить сообщение, используя простую удобную функцию send_message() объекта SMTP, который вы создали ранее. А вот и полный код: import smtplib from string import Template from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText MY_ADDRESS = 'my_address@example.comm' PASSWORD = 'mypassword' def get_contacts(filename): """ Return two lists names, emails containing names and email addresses read from a file specified by filename. """ names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails def read_template(filename): """ Returns a Template object comprising the contents of the file specified by filename. """ with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) def main(): names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # Prints out the message body for our sake print(message) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg # Terminate the SMTP session and close the connection s.quit() if __name__ == '__main__': main()
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59