From bde145ef433f5c84fc0bc9280fff00b7eb0229a6 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Tue, 23 Mar 2021 17:31:19 +1000 Subject: [PATCH 01/22] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab06.rst | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/content/lab06.rst b/content/lab06.rst index 14d1c7a..f34babf 100644 --- a/content/lab06.rst +++ b/content/lab06.rst @@ -105,12 +105,16 @@ **Важно понимать, что ни classmethod ни staticmethod НЕ являются функциями от конкретного объекта класса и соответственно не принимают -self. Подчеркнем еще раз их различия:** - classmethod принимает cls как -первый параметр, тогда как staticmethod в специальных аргументах не -нуждается - classmethod может получать доступ или менять состояние -класса, в то время как staticmethod нет - staticmethod в целом вообще -ничего не знают про класс. Это просто функция над аргументами, -объявленная внутри класса. +self. Подчеркнем еще раз их различия:** + +- classmethod принимает cls как + первый параметр, тогда как staticmethod в специальных аргументах не + нуждается +- classmethod может получать доступ или менять состояние + класса, в то время как staticmethod нет +- staticmethod в целом вообще + ничего не знают про класс. Это просто функция над аргументами, + объявленная внутри класса. Специальные методы (магические) вида \_ *< param >* \_ @@ -297,6 +301,7 @@ y меньше у левого операнда. Реализуйте свой класс Complex для комплексных чисел, аналогично встроенной реализации complex: + 1. Добавьте инициализатор класса 2. Реализуйте основные математические операции 3. Реализуйте операцию модуля (**abs**, вызываемую как \|c\|) @@ -305,12 +310,13 @@ y меньше у левого операнда. Задача 2: ~~~~~~~~~ + 1. Создайте класс Vector с полями x, y, z определите для него конструктор, -метод __str__, необходимые арифметические операции. -Реализуйте конструктор, который принимает строку в формате "x,y". + метод __str__, необходимые арифметические операции. + Реализуйте конструктор, который принимает строку в формате "x,y". #. Программа получает на вход число N, далее координаты N точек. -Доопределите в классе Vector недостающие операторы, найдите и выведите координаты точки, -наиболее удаленной от начала координат. + Доопределите в классе Vector недостающие операторы, найдите и выведите координаты точки, + наиболее удаленной от начала координат. #. Используя класс Vector выведите координаты центра масс данного множества точек. #. Даны два вектора. Выведите площадь параллелограмма, построенного на заданных векторах. #. Даны три вектора. Выведите объём параллелепипеда, построенного на заданных векторах. From b6ff8137eb10bc2acf01bfa4baf0e9f3a49a9442 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Tue, 23 Mar 2021 18:24:09 +1000 Subject: [PATCH 02/22] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20simplemath=20?= =?UTF-8?q?=D0=BD=D0=B0=20worker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab07.rst | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/content/lab07.rst b/content/lab07.rst index f281d4a..da4dfc5 100644 --- a/content/lab07.rst +++ b/content/lab07.rst @@ -165,7 +165,7 @@ import для нас отлично подойдет. Это будет выгл .. code:: python - # представим, что эта ячейка - текстовый редактор, который мы сохраним под именем simplemath.py + # представим, что эта ячейка - текстовый редактор, который мы сохраним под именем worker.py #import simplemath #from simplemath inpord add,sub,mul,div @@ -226,37 +226,37 @@ __ ../extra/lab7/screen.py Данные структуры данных должны поддерживать следующие возможности: 1. Создавать структуру из строк. Обратите внимание, что в ДНК встречаются -только азотистые основания ATGC, а в РНК (AUGC) поэтому если во -входной строке содержались другие символы, необходимо поднимать ошибку -(Exception). + только азотистые основания ATGC, а в РНК (AUGC) поэтому если во + входной строке содержались другие символы, необходимо поднимать ошибку + (Exception). 2. Поддерживают индексацию. РНК по индексу возвращает -i-ое азотистое основание, ДНК - пару азотистых оснований -(соответствующие первой и второй цепочке) + i-ое азотистое основание, ДНК - пару азотистых оснований + (соответствующие первой и второй цепочке) 3. РНК может возвращать -комплиментарную ДНК (каждому азотистому основанию из РНК соответсвует -соответсвующее основание для первой цепочки ДНК: :math:`A \to T`, -:math:`U \to A`, :math:`G \to C`, :math:`C \to G`. Вторая цепочка ДНК -строится комплиментарной первой строчке ДНК: :math:`A \to T`, -:math:`T \to A`, :math:`G \to C`, :math:`C \to G`) + комплиментарную ДНК (каждому азотистому основанию из РНК соответсвует + соответсвующее основание для первой цепочки ДНК: :math:`A \to T`, + :math:`U \to A`, :math:`G \to C`, :math:`C \to G`. Вторая цепочка ДНК + строится комплиментарной первой строчке ДНК: :math:`A \to T`, + :math:`T \to A`, :math:`G \to C`, :math:`C \to G`) 4. РНК, как и ДНК, -могут складываться путем склеивания ("AUUGAACUA" + "CGGAAA" = -"AUUGAACUACGGAAA"). У ДНК склеиваются соответствующие цепочки (["ACG", -"TGC"] + ["TTTAAT", "AAATTA"] = ["ACGTTTAAT", "TGCAAATTA"]) + могут складываться путем склеивания ("AUUGAACUA" + "CGGAAA" = + "AUUGAACUACGGAAA"). У ДНК склеиваются соответствующие цепочки (["ACG", + "TGC"] + ["TTTAAT", "AAATTA"] = ["ACGTTTAAT", "TGCAAATTA"]) 5. РНК могут перемножаться друг с другом: каждое азотистое основание -результирующей РНК получается случайным выбором одного из двух -соответсвующих родительских азотистых оснований. Если одна из цепочек -длиннее другой, то перемножение происходит с начала, когда одна из -цепочек закончится оставшийся хвост другой переносится без изменений. -|Умножение РНК| -6. ДНК могут перемножаться друг с другом: ПЕРВЫЕ -цепочки каждой из ДНК перемножаются по такому же приницпу, как -перемножаются РНК выше. Вторая цепочка результирующей ДНК строится как -комплиментарная первой + результирующей РНК получается случайным выбором одного из двух + соответсвующих родительских азотистых оснований. Если одна из цепочек + длиннее другой, то перемножение происходит с начала, когда одна из + цепочек закончится оставшийся хвост другой переносится без изменений. +6. |Умножение РНК| ДНК могут перемножаться друг с другом: ПЕРВЫЕ + цепочки каждой из ДНК перемножаются по такому же приницпу, как + перемножаются РНК выше. Вторая цепочка результирующей ДНК строится как + комплиментарная первой 7. Цепочки РНК и первую и вторую у ДНК можно -проверять на равенство + проверять на равенство 8. Оба класса должны давать осмысленный вывод -как при print, так и просто при вызове в ячейке -| **Обдумайте и создайте необходимые и, возможно, вспомогательные + как при print, так и просто при вызове в ячейке + +**Обдумайте и создайте необходимые и, возможно, вспомогательные классы, настройте наследование, если требуется. Полученная структура должна быть адекватной и удобной, готовой к простому расширению функционала, если потребуется** From 1a0ce2dc09cabc305d7e1817cfaae93e25801cd8 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Tue, 23 Mar 2021 20:28:16 +1000 Subject: [PATCH 03/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab07.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab07.rst b/content/lab07.rst index da4dfc5..b91891b 100644 --- a/content/lab07.rst +++ b/content/lab07.rst @@ -209,7 +209,7 @@ __ ../extra/lab7/screen.py Ваша задача: 1. Изучить документацию к библиотеке pygame и код программы. Понять механизм работы программы (как происходит отрисовка кривой, перерасчет точек сглаживания и другие нюансы реализации программы) -2. Провести рефакторниг кода, переписать программу в ООП стиле с использованием классов и наследования. +2. Провести рефакторинг кода, переписать программу в ООП стиле с использованием классов и наследования. Реализовать класс 2-мерных векторов `Vec2d` . В классе следует определить методы для основных математических операций, необходимых для работы с вектором. Добавить возможность вычислять длину вектора с использованием функции len(a) и метод `int_pair`, который возвращает кортеж из двух целых чисел (текущие координаты вектора). Реализовать класс замкнутых ломаных `Polyline` с методами отвечающими за добавление в ломаную точки (`Vec2d`) c её скоростью, пересчёт координат точек (`set_points`) и отрисовку ломаной (`draw_points`). Арифметические действия с векторами должны быть реализованы с помощью операторов, а не через вызовы соответствующих методов. From e7432141422e6a164a6f2e323d156d280b0be585 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 11:58:32 +1000 Subject: [PATCH 04/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab07.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab07.rst b/content/lab07.rst index b91891b..fd31fe4 100644 --- a/content/lab07.rst +++ b/content/lab07.rst @@ -222,7 +222,7 @@ __ ../extra/lab7/screen.py Задача 3\* ДНК ~~~~~~~~~~~~~~ -Реализуйте классы для ДНК (двойная цепочк) и РНК (одинарная цепочка). +Реализуйте классы для ДНК (двойная цепочка) и РНК (одинарная цепочка). Данные структуры данных должны поддерживать следующие возможности: 1. Создавать структуру из строк. Обратите внимание, что в ДНК встречаются From e17df05e0f494f50c288aaa56ce38536431d0a6e Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 12:00:52 +1000 Subject: [PATCH 05/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit соответствует --- content/lab07.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab07.rst b/content/lab07.rst index fd31fe4..97c3e6a 100644 --- a/content/lab07.rst +++ b/content/lab07.rst @@ -233,7 +233,7 @@ __ ../extra/lab7/screen.py i-ое азотистое основание, ДНК - пару азотистых оснований (соответствующие первой и второй цепочке) 3. РНК может возвращать - комплиментарную ДНК (каждому азотистому основанию из РНК соответсвует + комплиментарную ДНК (каждому азотистому основанию из РНК соответствует соответсвующее основание для первой цепочки ДНК: :math:`A \to T`, :math:`U \to A`, :math:`G \to C`, :math:`C \to G`. Вторая цепочка ДНК строится комплиментарной первой строчке ДНК: :math:`A \to T`, From ba46c4a73b9ff7c5dd553c7ff4a3797429b7d423 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 12:02:01 +1000 Subject: [PATCH 06/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit соответствующее --- content/lab07.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab07.rst b/content/lab07.rst index 97c3e6a..3dc90fb 100644 --- a/content/lab07.rst +++ b/content/lab07.rst @@ -234,7 +234,7 @@ __ ../extra/lab7/screen.py (соответствующие первой и второй цепочке) 3. РНК может возвращать комплиментарную ДНК (каждому азотистому основанию из РНК соответствует - соответсвующее основание для первой цепочки ДНК: :math:`A \to T`, + соответствующее основание для первой цепочки ДНК: :math:`A \to T`, :math:`U \to A`, :math:`G \to C`, :math:`C \to G`. Вторая цепочка ДНК строится комплиментарной первой строчке ДНК: :math:`A \to T`, :math:`T \to A`, :math:`G \to C`, :math:`C \to G`) From 024eaf1211729b7edb4a7b629dedf7ffed087f67 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 14:09:03 +1000 Subject: [PATCH 07/22] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=82=D0=B5=D0=B3=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D1=83=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab08.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/lab08.rst b/content/lab08.rst index b8e2e5d..ba355b1 100644 --- a/content/lab08.rst +++ b/content/lab08.rst @@ -511,7 +511,7 @@ k и возвращать все возможные комбинации из с ============= В функцию передается список списков. Нужно вернуть максимум, который -достигает выражение $(a\_1^2 + a\_2^2 + ... + a\_n^2) % m $. Где +достигает выражение :math:`(a\_1^2 + a\_2^2 + ... + a\_n^2) % m`. Где :math:`a_i` --- максимальный элемент из :math:`i`-ого списка (использовать функцию из itertools) @@ -528,6 +528,6 @@ k и возвращать все возможные комбинации из с maximize(lists, m=1000) == 206 В примере = 206, так как это максимум от суммы -:math:`(a_1^2 + a_2^2 + a_3^2) \% 1000` +:math:`(a_1^2 + a_2^2 + a_3^2) % 1000` :math:`a_1 = 5, a_2 = 9, a_3 = 10` From 424c50be2b32e91add642438ef5135c935e9268c Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 14:13:03 +1000 Subject: [PATCH 08/22] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20%=20=D0=B2=20=D1=84=D0=BE=D1=80=D0=BC=D1=83?= =?UTF-8?q?=D0=BB=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab08.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/lab08.rst b/content/lab08.rst index ba355b1..c8e4234 100644 --- a/content/lab08.rst +++ b/content/lab08.rst @@ -511,7 +511,7 @@ k и возвращать все возможные комбинации из с ============= В функцию передается список списков. Нужно вернуть максимум, который -достигает выражение :math:`(a\_1^2 + a\_2^2 + ... + a\_n^2) % m`. Где +достигает выражение :math:`(a\_1^2 + a\_2^2 + ... + a\_n^2) \% m`. Где :math:`a_i` --- максимальный элемент из :math:`i`-ого списка (использовать функцию из itertools) @@ -528,6 +528,6 @@ k и возвращать все возможные комбинации из с maximize(lists, m=1000) == 206 В примере = 206, так как это максимум от суммы -:math:`(a_1^2 + a_2^2 + a_3^2) % 1000` +:math:`(a_1^2 + a_2^2 + a_3^2) \% 1000` :math:`a_1 = 5, a_2 = 9, a_3 = 10` From 845b82d6c1efb2814702b7d42738588c301dcf2b Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 15:27:31 +1000 Subject: [PATCH 09/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=5F=5Fgetitem=5F=5F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab09.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab09.rst b/content/lab09.rst index 381fa32..254bdca 100644 --- a/content/lab09.rst +++ b/content/lab09.rst @@ -84,7 +84,7 @@ Jupyter-notebook current = self.start for i in range(idx): current = current.get_next() - current.get_value() + return current.get_value() def __iter__(self): self.__curr = self.start From 4df1cb2bbe0be50335b302edaae54180ac321eb2 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 15:34:33 +1000 Subject: [PATCH 10/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= =?UTF-8?q?=20LinkedList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab09.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/lab09.rst b/content/lab09.rst index 254bdca..3b0f4ad 100644 --- a/content/lab09.rst +++ b/content/lab09.rst @@ -59,7 +59,7 @@ Jupyter-notebook def get_next(self): return self.nxt - class LinkedLiset: + class LinkedList: def __init__(self): self.start = None self.length = 0 @@ -99,7 +99,7 @@ Jupyter-notebook .. code:: python - lst = LinkedLiset() + lst = LinkedList() for i in range(10): lst.add(i*i) From ed3b1ffbf80727192d191d228c1dfdbb0531a60f Mon Sep 17 00:00:00 2001 From: mariohuq Date: Wed, 24 Mar 2021 17:13:08 +1000 Subject: [PATCH 11/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= =?UTF-8?q?=20write?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab09.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab09.rst b/content/lab09.rst index 3b0f4ad..5a707f1 100644 --- a/content/lab09.rst +++ b/content/lab09.rst @@ -441,7 +441,7 @@ Jupyter-notebook 1) Корутина ``connect_user`` принимает данные авторизации от пользователя, открывает файл с названием .txt и создает на его основе - корутину ``цrite_to_file`` + корутину ``write_to_file`` 2) Корутина ``write_to_file(f_obj)`` записывает переданное планировщиком задач сообщение пользователя, которые записываются в файловый объект, From 5a02b40097e1bc0aacf45eddb77a14a5b2c64c61 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Thu, 25 Mar 2021 13:05:54 +1000 Subject: [PATCH 12/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab10.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/lab10.rst b/content/lab10.rst index 75d9708..a45d691 100644 --- a/content/lab10.rst +++ b/content/lab10.rst @@ -352,7 +352,7 @@ http://cs.mipt.ru/advanced_python/lessons/lab2.html multiprocessing =============== Библиотека multiprocessing позволяет организовать параллелизм вычислений за счет создания подпроцессов. Т.к. каждый процесс выполняется независимо от других, этот метод параллелизма позволяет избежать проблем с GIL. -Предоставляемый библиотекой API схож с тем, что есть в threading, хотя есть уникальные вещи. Создание процесса происходит поутем создания объекта класса Process. +Предоставляемый библиотекой API схож с тем, что есть в threading, хотя есть уникальные вещи. Создание процесса происходит путем создания объекта класса Process. Аргументы конструктора аналогичны тем, что есть в конструкторе Thread. В том числе аргумент daemon позволяет создавать служебные процессы. Служебные процессы завершаются вместе с родительским процессом и не могут порождать свои подпроцессы. Простой пример работы с библиотекой: @@ -580,4 +580,4 @@ map\_async, apply\_async - неблокирующие. При их вызове, .. _`Архив с файлом`: https://drive.google.com/file/d/1Jgy1u_meH7zpMWt4dr2j4Xx5VZjzJ6AD/view?usp=sharing -Не забудьте замерить время работы. Примерное время работы на моем компьютере для 10 строк в 1 процесс - 300 сек. \ No newline at end of file +Не забудьте замерить время работы. Примерное время работы на моем компьютере для 10 строк в 1 процесс - 300 сек. From 60336afb9f9a9575475e14598a1ca89f750ba2a5 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Thu, 25 Mar 2021 15:44:16 +1000 Subject: [PATCH 13/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab11.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab11.rst b/content/lab11.rst index d5c2a0d..aee3651 100644 --- a/content/lab11.rst +++ b/content/lab11.rst @@ -83,7 +83,7 @@ В этом примере: -1. Упарвление будет передано в корутину main; +1. Управление будет передано в корутину main; 2. Напечатается hello; 3. Управление будет передано в корутину sleep; 4. В течении одной секунды программа "спит"; From 7bae4ef231afc18bd6caf8301a52e7e7002de2fe Mon Sep 17 00:00:00 2001 From: mariohuq Date: Fri, 26 Mar 2021 12:49:09 +0300 Subject: [PATCH 14/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20"=D0=BE=D1=82=D0=BD=D0=BE=D1=81=D1=8F=D1=82?= =?UTF-8?q?=D1=81=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab14.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/lab14.rst b/content/lab14.rst index 4068758..614e0eb 100644 --- a/content/lab14.rst +++ b/content/lab14.rst @@ -42,17 +42,17 @@ Самый низкий уровень взаимодействия — передача информации (битов) между устройствами через сетевые кабеля, радиоканал и пр. -Канальный уровень — подразумевает работу с кадрами (frame) обеспечивая взаимодействие на физическом уровне и контроль ошибок. Именно к этому уровню относяться Ethernet, PPPoE и прочие. К этому уровню также относят драйвер сетевой карты, фактически обеспечивающий взаимодействие канального уровня с сетевым. +Канальный уровень — подразумевает работу с кадрами (frame) обеспечивая взаимодействие на физическом уровне и контроль ошибок. Именно к этому уровню относятся Ethernet, PPPoE и прочие. К этому уровню также относят драйвер сетевой карты, фактически обеспечивающий взаимодействие канального уровня с сетевым. -Сетевой уровень предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и «заторов» в сети. К этому уровню относяться такие протоколы, как IP, RIP и пр. +Сетевой уровень предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и «заторов» в сети. К этому уровню относятся такие протоколы, как IP, RIP и пр. Транспортный уровень модели предназначен для обеспечения надёжной передачи данных от отправителя к получателю. К данному уровню относятся протоколы как TCP, UDP. -Сеансовый уровень модели обеспечивает поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Сюда относяться протоколы PPTP, SOCKS и пр. +Сеансовый уровень модели обеспечивает поддержание сеанса связи, позволяя приложениям взаимодействовать между собой длительное время. Уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Сюда относятся протоколы PPTP, SOCKS и пр. Уровень представления обеспечивает преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с прикладного уровня, на уровне представления преобразуются в формат для передачи по сети, а полученные из сети данные преобразуются в формат приложений. На этом уровне может осуществляться сжатие/распаковка или шифрование/дешифрование, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально. -Прикладной уровень — верхний уровень модели, обеспечивающий взаимодействие пользовательских приложений с сетью. К этому уровню относяться такие протоколы, как HTTP, FTP и пр. +Прикладной уровень — верхний уровень модели, обеспечивающий взаимодействие пользовательских приложений с сетью. К этому уровню относятся такие протоколы, как HTTP, FTP и пр. Данная выше модель — эталонная. Реальная же модель, на которой работает современный интернет - `стек протоколов TCP/IP`__ From 76f8f8c3292f4ef9d7bec687066ff4e85cd0eba9 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Fri, 26 Mar 2021 13:31:19 +0300 Subject: [PATCH 15/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= =?UTF-8?q?=20"=D1=81=D1=82=D0=BE=D0=BB=D0=B1=D0=B5=D1=86"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab16.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab16.rst b/content/lab16.rst index 3df4159..00d3158 100644 --- a/content/lab16.rst +++ b/content/lab16.rst @@ -279,7 +279,7 @@ __ {filename}/extra/lab14/2Numpy.ipynb a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) # Используя слайсинг, созадим матрицу b из элементов матрицы а - # будем использовать 0 и 1 строку, а так же 1 и 2 столебц + # будем использовать 0 и 1 строку, а так же 1 и 2 столбец # [[2 3] # [6 7]] b = a[:2, 1:3] From d003d7a13a83d8669b61f16762c601e8d27bfe7f Mon Sep 17 00:00:00 2001 From: mariohuq Date: Fri, 26 Mar 2021 13:32:55 +0300 Subject: [PATCH 16/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= =?UTF-8?q?=20"=D1=81=D1=82=D0=BE=D0=BB=D0=B1=D0=B5=D1=86"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/extra/lab14/2Numpy.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/extra/lab14/2Numpy.ipynb b/content/extra/lab14/2Numpy.ipynb index 6fd70be..edd0a7e 100644 --- a/content/extra/lab14/2Numpy.ipynb +++ b/content/extra/lab14/2Numpy.ipynb @@ -404,7 +404,7 @@ "a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])\n", "\n", "# Используя слайсинг, созадим матрицу b из элементов матрицы а\n", - "# будем использовать 0 и 1 строку, а так же 1 и 2 столебц\n", + "# будем использовать 0 и 1 строку, а так же 1 и 2 столбец\n", "# [[2 3]\n", "# [6 7]]\n", "b = a[:2, 1:3]\n", From b1903cfc40187c5b7a1e755f017c5c423877b6f1 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Sun, 28 Mar 2021 18:45:58 +1000 Subject: [PATCH 17/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= =?UTF-8?q?=20=D0=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab18.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab18.rst b/content/lab18.rst index 47236db..1904f4f 100644 --- a/content/lab18.rst +++ b/content/lab18.rst @@ -521,7 +521,7 @@ DataFrame df Создание анимации ----------------- -Покажемсоздание анимации на примере построения разделябщей прямой между +Покажемсоздание анимации на примере построения разделяющей прямой между данными: https://hsto.org/webt/h7/vn/dt/h7vndtkzlinfkyoqzpcmjxecubu.gif из статьи про SVM https://habr.com/ru/company/ods/blog/484148/ From 4c2059a6b1dbd78d654a7025f8ee3293416816a8 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Sun, 28 Mar 2021 18:49:51 +1000 Subject: [PATCH 18/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= =?UTF-8?q?=20"=D0=9F=D0=BE=D0=BA=D0=B0=D0=B6=D0=B5=D0=BC=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab18.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab18.rst b/content/lab18.rst index 1904f4f..37f5990 100644 --- a/content/lab18.rst +++ b/content/lab18.rst @@ -521,7 +521,7 @@ DataFrame df Создание анимации ----------------- -Покажемсоздание анимации на примере построения разделяющей прямой между +Покажем создание анимации на примере построения разделяющей прямой между данными: https://hsto.org/webt/h7/vn/dt/h7vndtkzlinfkyoqzpcmjxecubu.gif из статьи про SVM https://habr.com/ru/company/ods/blog/484148/ From 7737d338478dea7a4f73ec5ab740400f1b9df321 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Mon, 29 Mar 2021 15:11:31 +1000 Subject: [PATCH 19/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=BA=D1=83?= =?UTF-8?q?=20"=D0=B2=D1=80=D0=B5=D0=BC=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab19.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab19.rst b/content/lab19.rst index 23e75bb..9d4a120 100644 --- a/content/lab19.rst +++ b/content/lab19.rst @@ -160,7 +160,7 @@ BOOLEAN в SQLite представлен типом INTEGER со значени Отдельное внимание стоит уделить хранению даты/времени. В SQLite под это также нет специального типа. Однако TEXT, REAL и INTEGER могут быть использованы для этих целей. -В виде текста вермя хранится в формате `YYYY-MM-DD HH:MM:SS.SSS`, хотя миллисекунды можно опустить. +В виде текста время хранится в формате `YYYY-MM-DD HH:MM:SS.SSS`, хотя миллисекунды можно опустить. Для того, чтобы получить текущее время в этом представлении, можно использовать функцию `DATETIME("now")`. Полученный результат будет отображать текущее время по UTC (Coordinated Universal Time). Московское время – UTC+3. Если необходимо получить локальное текущее время, то `DATETIME("now", "localtime")`. From e4361bfd147f0d48e7013e4a480a83661e05f891 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Tue, 30 Mar 2021 12:47:43 +1000 Subject: [PATCH 20/22] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B0=D0=B4=D1=80=D0=B5=D1=81=20=D1=82=D1=83=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=B0=D0=BB=D0=B0=20=D0=BD=D0=B0=20=D0=B1?= =?UTF-8?q?=D0=BE=D0=BB=D0=B5=D0=B5=20=D0=BA=D0=BE=D0=BD=D0=BA=D1=80=D0=B5?= =?UTF-8?q?=D1=82=D0=BD=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab22.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab22.rst b/content/lab22.rst index 4c38c52..d4629ef 100644 --- a/content/lab22.rst +++ b/content/lab22.rst @@ -137,7 +137,7 @@ Blueprint создаётся по аналогии с простым сайто __ {static}/extras/lab20/flaskr.zip -__ https://flask.palletsprojects.com/en/1.1.x/ +__ https://flask.palletsprojects.com/en/1.1.x/tutorial/ Файл `__init__.py` выглядит следующим образом: From 5902213b2857dff534c9c08b9a094a03d63af690 Mon Sep 17 00:00:00 2001 From: mariohuq Date: Tue, 30 Mar 2021 15:58:31 +1000 Subject: [PATCH 21/22] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=BE=D0=BF=D1=83=D1=89=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20"=D0=B8"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab22.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab22.rst b/content/lab22.rst index d4629ef..fa4e28c 100644 --- a/content/lab22.rst +++ b/content/lab22.rst @@ -419,5 +419,5 @@ __ https://flask.palletsprojects.com/en/1.1.x/tutorial/ ====== #. Скачайте себе и запустите сайт из обучения flask. -#. Допишите в таблицу пользователей поля с email-ом пользователя его уровенем доступа (админ или простой пользователь) +#. Допишите в таблицу пользователей поля с email-ом пользователя и его уровенем доступа (админ или простой пользователь) #. Напишите свой модуль, позволяющий администратору изменять информацию обо всех пользователях сайта From bcc595f97958c96271e2133eef6148e71946c35b Mon Sep 17 00:00:00 2001 From: mariohuq Date: Tue, 30 Mar 2021 16:37:17 +1000 Subject: [PATCH 22/22] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20"=D0=B7?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2=D0=BE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lab23.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/lab23.rst b/content/lab23.rst index 70304f4..0df11cb 100644 --- a/content/lab23.rst +++ b/content/lab23.rst @@ -376,7 +376,7 @@ QFormLayout для добавления элементов использует завершается. Закрытие окна логина вручную приводит к завершению программы. Для создания логин формы успользуйте QDialog, для окон с уведомлениями — QMessageBox. -*Дополнительно: после неверной пары программа не завершается, а дается возможность ввести логин/пароль заного.* +*Дополнительно: после неверной пары программа не завершается, а дается возможность ввести логин/пароль заново.* Базовая 2D графика ------------------