По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Итак, вы, возможно, слышали аббревиатуры BIOS и UEFI, особенно если имели дело со сменой операционной системы или разгоном. Возможно, вы даже знаете, как эти аббревиатуры расшифровываются (Unified Extensible Firmware Interface – единый расширяемый микропрограммный интерфейс, и Basic Input/Output System – базовая система ввода/вывода, соответственно). Но задумывались ли вы когда-нибудь, что они делают в компьютерной системе? Давайте раскроем тайну этих терминов и их значений. Процедура загрузки Сначала – главное! Да, я знаю, что мы отклоняемся от темы, но я обещаю, что это поможет вам понять позже некоторые концепции. Итак, как загружается компьютер? Давайте рассмотрим шаг за шагом: Вы нажимаете кнопку питания на ноутбуке/настольном компьютере. ЦП запускается, но ему необходимы некоторые команды для работы (помните о том, что ЦП всегда нужно что-то делать). Так как основная память на этом этапе пуста, то ЦП полагается на загрузку команд из прошивки микросхемы на материнской плате и начинает выполнять их. Код встроенного ПО выполняет самотестирование при включении питания (POST - Power On Self Test), инициализирует оставшееся оборудование, определяет подключенные внешние периферийные устройства (мышь, клавиатуру, флешку и т.д.) и проверяет исправность всех подключенных устройств. Возможно, вы даже помните звуковой сигнал, который настольные компьютеры издавали после успешного прохождения процедуры POST. И, наконец, алгоритм прошивки перебирает все запоминающие устройства и ищет загрузчик (обычно находится в первом секторе диска). Если загрузчик был найден, то прошивка передает ему управление компьютером. Для того, чтобы понять эту статью, вам не нужно знать больше. Но если вам интересно, то можете прочитать дальше (в ином случае вы можете перейти к следующему разделу). Итак, теперь, когда загрузчик загружен, его задача – загрузить остальную часть операционной системы. GRUB – один из таких загрузчиков, способный загружать unix-подобные операционные системы, а также он может последовательно загружать операционные системы Windows. Загрузчик доступен только в первом секторе диска размером 512 байт. С учетом сложности современных операционных систем, некоторые из загрузчиков имеют тенденцию выполнять многоэтапную загрузку, то есть когда загрузчик загружает загрузчик второго этапа в среде, не ограниченной 512 байтами. Затем загрузчик загружает ядро в память. Unix-подобные операционные системы затем запускают процесс init – процесс инициализации, (главный процесс, из которого разветвляются/выполняются другие процессы) и, наконец, инициализируют уровни запуска. В Windows wininit.exe загружается вместе с некоторыми другими процессами, такими как services.exe для управления службами, lsass.exe для локальной безопасности и прав доступа (аналогично уровням запуска) и lsm.exe для локального управления сеансами. После всех этих этапов и после инициализации некоторых других драйверов загружается графический пользовательский интерфейс (GUI - Graphical User Inferface), и отображается экран входа в систему. Это было описание общего процесса загрузки. А теперь вернемся к нашей первоначальной теме. BIOS: BIOS расшифровывается как Basic Input/Output System, то есть базовая система ввода/вывода, а иначе говоря, прошивка, о которой мы говорили выше. Она хранится в EPROM (Erasable Programmable Read-Only Memory – стираемое программируемое постоянное запоминающее устройство), что позволяет производителю легко выпускать обновления. Она представляет собой множество вспомогательных функций, которые позволяют читать загрузочные сектора подключенного хранилища и выводить на экран. Вы можете получить доступ к BIOS на начальных этапах загрузки, нажав del, F2 или F10. UEFI UEFI расшифровывается как Unified Extensible Firmware Interface, или единый расширяемый микропрограммный интерфейс. Он выполняет ту же работу, что и BIOS, но с одним основным отличием – он хранит все данные об инициализации и запуске в файле .efi, а не в прошивке. Этот файл .efi хранится в специальном системном разделе EFI (ESP - EFI System Partition) на жестком диске. Этот раздел также содержит загрузчик. UEFI был разработан с целью преодоления многих ограничений старого BIOS, в том числе: UEFI поддерживает размеры дисков до 9 зеттабайт, тогда как BIOS поддерживает только 2,2 терабайта. UEFI обеспечивает более быструю загрузку. UEFI поддерживает дискретные драйверы, в то время как BIOS поддерживает диски, хранящиеся в его ПЗУ, поэтому обновление прошивки BIOS немного затруднено. UEFI обеспечивает безопасную загрузку, которая предотвращает загрузку компьютера из неавторизированных/неподписанных приложений. Это помогает предотвратить внедрения руткитов, но при этом затрудняет двойную загрузку, так как рассматривает другие ОС как неподписанные приложения. UEFI работает в 32-битном или 64-битном режиме, тогда как BIOS работает в 16-битном режиме. Таким образом, UEFI может предоставить графический интерфейс (то есть управление с помощью мыши), в отличие от BIOS, который поддерживает управление только с помощью клавиатуры. Возможно, вам не нужен UEFI Несмотря на то, что все современные компьютеры по умолчанию оснащены UEFI, есть несколько причин, по которым вы можете выбрать BIOS вместо UEFI: Если вы новичок и не хотите возиться с любым типом прошивки, то BIOS для вас. Если у вас
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()
img
Apache – это часть стека LAMP программного обеспечения для Linux (Linux, Apache, MySQL, PHP). Apache позволяет открывать веб-страницы людям, просматривающим ваш сайт. Сервер предоставляет доступ для посещения вашего веб-сайта и ведет журнал доступа. Эти записи, лог-файлы, могут оказаться ценным источником информации о вашем веб-сайте, его использовании и его аудитории. В данной статье вы узнаете, как просматривать лог-файлы журнала доступа Apache. Просмотр журналов доступа Apache Использование cPanel для загрузки необработанных файлов регистрации доступа Если вы вошли на веб-сервер с помощью cPanel, то вы можете загрузить журналы доступа Apache через графический интерфейс. Найдите раздел с надписью «Metrics». Нажмите «Raw Access». Если включено архивирование, то необработанные файлы журналов Apache можно загрузить внизу страницы. Они будут выглядеть как стандартные гиперссылки, промаркированные с учетом конструкции веб-сайта, которым вы управляете. При нажатии на гиперссылку вам будет предложено сохранить или открыть файл. Эти лог-файлы сжаты при помощи gzip, поэтому, если ваша систему отлична от Linux, то вам могут понадобиться дополнительные инструменты для распаковки. Сохранить файл вы можете в любую папку. Найдите файл в своей ОС, затем щелкните на него правой кнопкой мыши и выберите extract(извлечь). После этого должен появиться новый файл без расширения .gz. Щелкните правой кнопкой мыши и выберите edit (изменить), чтобы открыть файл в любом текстовом редакторе и просмотреть его содержимое. Использование команд терминала для отображения журналов локального доступа Если вы работаете на компьютере, на котором установлен Apache, или если вы вошли в систему удаленно, то вы можете использовать терминал для отображения и фильтрации содержимого журналов доступа. По умолчанию вы можете найти лог-файл по следующим путям: /var/log/apache/access.log /var/log/apache2/access.log /etc/httpd/logs/access.log Чтобы перемещаться по вашей системе в поисках журналов, используйте графический интерфейс или терминал с командой cd. Шаг 1: Отображение последних 100 записей журнала доступа Введите в окно терминала следующую команду: sudo tail -100 /var/log/apache2/access.log Команда tail указывает на то, что необходимо прочитать последнюю часть файла, а команда -100 – что нужно отобразить 100 записей. Последняя часть команды, /var/log/apache2/access.log, указывает, где искать лог-файл. Если ваш лог-файл имеет другое расположение, то обязательно укажите верный путь. Шаг 2: отображение записей определенного типа из журнала доступа Иногда может потребоваться отобразить в журнале только записи определенного типа. Вы можете воспользоваться командой grep для фильтрации отчета по ключевым словам. Например, введите в терминал следующую команду: sudo grep GET /var/log/apache2/access.log Как и предыдущая команда, она обращается к файлу /var/log/apache2/access.log, чтобы отобразить содержимое журнала доступа. Команда grep указывает на то, что отобразить нужно только записи с запросом GET. Эту команду можно заменить на любые другие команды Apache. Например, если вы хотите отследить доступ к изображениям в формате .jpg, то вы можете заменить GET на .jpg. Как и в предыдущей команде, следите за тем, чтобы был указан фактический путь к лог-файлу вашего сервера. Просмотр журнала ошибок Apache Помимо журнала доступа вы можете просматривать журнал ошибок, используя ранее упомянутые команды терминала. Введите в терминал следующую команду: sudo tail -100 /var/log/apache2/error.log Если ваш лог-файл доступа был расположен в другой папке, то и лог-файл ошибок будет в той же папке. Проверьте, что вы верно указали путь до файла. Как читать логи в Apache Когда вы открываете лог-файл доступа впервые, то внутренний вид вас может потрясти. Там находится множество информации о HTTP-запросах, а некоторые текстовые редакторы (и терминал) еще могут переносить часть текста на следующую строку, что может затруднять чтение файла. Однако, несмотря на это, каждая информация отображается в определенном порядке. Традиционный формат отображения лог-файла доступа: "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" Это код для наиболее общих параметров в каждой строке лог-файла. Каждый знак % соответствует определенному фрагменту информации в журнале: %h – IP-адрес клиента (источника запроса на доступ). %l – следующая запись может быть просто дефисом – это означает, что информация не была получена. Это результат проверки identd на стороне клиента. %u – идентификатор пользователя клиентской стороны, если для запроса доступа требуется HTTP-аутентификация. %t – временная метка входящего запроса. %r – использованная строка запроса. Здесь речь идет о методе http (GET, POST, HEAD и т.д.), пути к тому, что было запрошено, и используемом протоколе http. %>s – код состояния, возвращенный сервером клиенту. %b – размер запрошенного ресурса. «%{Referer}i» - указывает на то, как был получен доступ, путем перехода по ссылке на другом веб-сайте или другими способами, с помощью которых клиент был направлен на вашу страницу. «%{User-agent}i» - сообщает вам информацию об объекте, совершающем запрос, например, о веб-браузере, операционной системе, источнике веб-сайта (если это робот) и т.д. При прочтении строки в вашем лог-файле каждая запись может быть расшифрована по схеме выше. Если той или иной информации нет, то на ее месте будет стоят дефис. Если вы работаете на предварительно сконфигурированном сервере, то в лог-файле может быть больше или меньше информации. Вы также можете создать свой собственный формат журнала с помощью пользовательского программного модуля. Дополнительную информацию о форматах журналов декодирования можно найти тут Как использовать данные в лог-файлах Apache Анализ журнала Apache дает возможность наблюдать за способами взаимодействия клиентов с вашим сайтом. Например, вы можете посмотреть временную метку, чтобы выяснить, сколько поступает запросов на доступ в час, чтобы определить шаблоны трафика. Вы можете посмотреть на user-agent, чтобы узнать, входят ли определенные пользователи на веб-сайт с целью доступа к базе данных или создания контента. Вы также можете отлеживать неудачные попытки аутентификации, чтобы выявлять различные виды кибератак на вашу систему. Журнал ошибок Apache можно использовать аналогичным образом. Часто его просто используют для того, что посмотреть сколько генерируется ошибок 404. Ошибка 404 возникает, когда клиент запрашивает отсутствующий ресурс, и это может помочь вам распознать неработающие ссылки или другие ошибки на странице. Помимо этого, его также можно использовать для поиска ошибок конфигурации или даже предупреждений о потенциальных проблемах с сервером. Заключение В данной статье были представлены методы извлечения данных для просмотра лог-файлов доступа Apache. Файл access.log – отличный вариант для того, чтобы проанализировать то, как клиенты взаимодействуют с вашим сервером. А файл error.log может помочь вам устранить проблемы с вашим веб-сайтом.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59