Ver código fonte

Merge branch 'master' of u21volod/ISRPO42 into master

ypv 1 ano atrás
pai
commit
2397fc08e1

+ 50 - 0
Лекции/Captcha/Captcha.md

@@ -0,0 +1,50 @@
+# Что такое капча и как она работает
+
+По сути, это небольшое задание, которое иногда появляется на сайтах: вам нужно распознать картинку или текст, выполнить математическое действие, сложить пазл или просто подтвердить, что вы не робот.
+
+Капча считывает ваш ответ, анализирует его и решает, разрешить ли вам дальнейшие действия на сайте или задать следующий контрольный вопрос. Большинство заданий генерируется автоматически: алгоритм капчи создаёт задание на основе предыдущих, рисует изображения, искажает их, добавляет помехи и отправляет пользователю.
+
+# Зачем нужна капча?
+
+Интернет стал не просто средством обмена информацией — некоторые разглядели в нём средство лёгкого и не всегда законного заработка. Например, с помощью несложных программ можно зарегистрироваться на тысячах сайтов и рассылать рекламу, ссылки на вирусы, реквизиты для перевода денежных средств для фейковых больных и многое другое.
+Вредоносные программы научились самостоятельно оставлять комментарии и заполнять формы обратной связи. Большинство веб-ресурсов, даже недавно созданных, забиты спамом, вредоносными ссылками и прочим.
+Их владельцы остро нуждались в приложении для отсеивания ботов. Первое такое приложение разработали специалисты Университета Карнеги — Меллона, написавшие скрипт на основе теста Тьюринга. Перед регистрацией на сайте пользователю предлагали ввести символы с «зашумлённой» картинки — человек мог их распознать, а большинство хакерских программ нет. Тогда же университет зарегистрировал товарный знак CAPTCHA, приняв сочетание букв, близкое к английскому catch («поймать»).
+
+# От чего защищает капча
+
+Спам. Боты рассылают «мусорную» рекламу, оставляют негативные комментарии и отзывы. Их сложно вычищать вручную, особенно на крупных сайтах. Капча избавляет от этой напасти.
+
+DDoS-атаки. Злоумышленники направляют на сайт большое количество запросов, больше, чем он может выдержать. Веб-ресурс переполняют фейковые посетители, он перестаёт нормально работать и может рухнуть. Капча сдерживает натиск ботов.
+
+Атаки на интернет-магазины. Во время распродаж и акций боты получают доступ к корзинам покупок и помещают туда товары, не собираясь их оплачивать. Реальные покупатели не видят нужного товара в наличии и не могут его купить. Капча помогает защитить ресурс от перехвата товаров.
+
+Подбор логинов и паролей. Человеку трудно подобрать вручную логин или пароль на сайте. А бот может генерировать их до бесконечности, пока не найдёт подходящие. Капча это предотвращает.
+
+# Виды капчи
+
+Текстовая. Самый старый вид капчи. Она легко создавалась на сервере и отображалась в разных браузерах. Алгоритм работы такой: на сервере генерировался случайный набор цифр и символов, нередко в разных регистрах. На его основе формировалось изображение, которое потом деформировалось: буквы были наклонены, перечёркнуты, использовались цветовые и шумовые фильтры. Пользователю нужно было распознать символы на картинке и ввести их в специальное поле. Несколько лет такие капчи успешно защищали интернет от ботов, а на некоторых сайтах они используются до сих пор.
+![PHOTO](https://skillbox.ru/upload/setka_images/09433125052023_5c20dcbcfbab07ab6c2df7e27444d5ac2afca569.png)
+Логическая. Пользователь должен выполнить небольшое задание: составить пазлы, решить несложное математическое уравнение, выбрать цифру или фотографию из заданной последовательности, назвать слово, начинающееся с нужной буквы.
+![PHOTO](https://skillbox.ru/upload/setka_images/09433125052023_5c20dcbcfbab07ab6c2df7e27444d5ac2afca569.png)
+Звуковая. Обычно даётся в дополнение к текстовой капче. Это серия букв или цифр, которые произносит компьютер, чтобы помочь слабовидящим. Также это может быть альтернативный вариант капчи, например:
+![PHOTO](https://skillbox.ru/upload/setka_images/09433125052023_e3039f248dd555899a396179b51a05be377f9973.png)
+
+# ReCAPTCHA и искусственный интеллект
+
+Хакеры довольно быстро доработали своих ботов, и те научились разгадывать капчи первых поколений.
+
+В 2009 году специалисты Университета Карнеги — Меллона представили усовершенствованную версию, которую назвали ReCAPTCHA. Она имела более сложный механизм и обладала большей надёжностью, чем ранее существовавшие капчи.
+
+Чтобы пройти ReCAPTCHA, пользователю требовалось разгадать два слова, одно из которых известно системе, а второе представляет собой труднораспознаваемую фотографию из газеты или книги.
+![PHOTO](https://skillbox.ru/upload/setka_images/09433125052023_ee673444daa2c4c150863fb4fe2e59385df85324.png)
+
+Проверка пользователя осуществляется только по тому слову, которое известно системе, а второе слово вводить необязательно. Если пользователь всё же ввёл второе слово, то оно сохраняется системой в качестве одного из вариантов для распознавания. Таким образом ReCAPTCHA первой версии использовалась не только для защиты сайтов, но и для оцифровывания архивов.
+
+На перспективную технологию обратили внимание в Google и выкупили её. Однако поумневшие боты вскоре научились справляться и с этой версией капчи. В 2015 году Google прекратила использовать ReCAPTCHA v1.
+Затем была разработана ReCaptcha v2, с которой мы часто сталкиваемся. В ней можно пройти тест в один клик. Работа капчи начинается с появления таблички с надписью «Я не робот» — от пользователя требуется поставить галочку в нужном поле.
+
+# Выводы
+Капча может раздражать, но это лучший способ борьбы с вредоносными программами, мешающими нормальной работе сайтов, особенно больших. Разработчики систем защиты стараются упростить тесты, сделать их менее навязчивыми и даже незаметными. Но не стоит забывать, что злоумышленники тоже совершенствуют своих ботов и задача защиты сайтов со временем становится всё сложнее.
+
+# Литература
+https://skillbox.ru/media/code/chto-takoe-kapcha-i-kak-ona-zashchishchaet-vebresursy/

+ 45 - 0
Лекции/Figma Branch/Ветки.md

@@ -0,0 +1,45 @@
+# Figma Branch
+
+Figma Branch (или «ветка») — это функционал, который позволяет создать копию проекта и изменять его независимо от основной версии. Когда работа завершена и нужно внести изменения в основной проект — ветка сливается с master-версией. Всё как у разработчиков. Но чтобы использовать Branch, ваш тариф должен быть Organization или Enterprise.
+
+# Предпосылки 
+
+При коллективной работе над проектом, всегда встречаются классические проблемы: что/когда/кем было добавлено в проект и почему компоненты сломались. Типичное решение — складывать готовые экраны и компоненты куда-то в угол канваса, тегать лида комментом, а после ревью — чистить за собой, мрак. Проще, быстрей, дешевле использовать функционал Branch, тем более они идеально подходят для следующих сценариев:
+ - Вы дизайн-команда работающая над дизайн-системой или отдельным UI kit'ом
+ - Вы дизайн-команда работающая по фичам одновременно в одном или нескольких figma-проектах
+ - Оба варианта сразу
+
+# Три правила создания веток:
+ - Добавляем новые сущности в дизайн-систему: иконки, компоненты, варианты, стили, элементы, подсказки, группы, секции и так далее
+ - Вносим любые изменения в стили, компоненты и варианты в дизайн-систему
+ - Создаем или правим локальные компоненты в проекте продукта
+
+Используя эти простые правила вместе с нативным функционалом, мы как продуктовые дизайнеры получаем отличный механизм контроля и порядка в своих дизайн-системах и больших проектах. Дополнительно получая защиту от глупых ошибок, которые отсеиваются на этапе мёрж-ревью перед сливанием ветки в мастер, например:
+ - Кривые иконки (стиль не по гайду, вывернутые точки, неправильный нейминг)
+ - В компоненте properties-конфликт или новый элемент не отображается соседних вариантах
+ - В компоненте забыли проставить auto layout
+
+# Выбор ветки
+Проекты содержащие ветки, обозначаются специальным лейблом, по нажатию на который, можно выбрать конкретную версию проекта.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/b3f/7ae/cc1/b3f7aecc16e9a502d2ab6eb9f3fc369a.png)
+Также, посмотреть все ветки можно через основное меню File → See all branches.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/c0a/bfc/349/c0abfc3499bb3173b4432d83f0bf0c04.png)
+В ветки мжно приглашать как в обычный проект и делиться ссылкой на них. Работает это через привычную кнопку Share в правом углу, но дополнительно можно скопировать ссылку, переименовать ветку или отправить её в архив через выпадающие меню проекта View Branch → See all branches → •••
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/340/21a/a2a/34021aa2a6c6b94902dc5926a85613e4.png)
+
+# Создание ветки
+
+Находясь в проекте, раскрываем контекстное меню рядом с названием файл, в котором создаем ветку нажав на Create branch.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/036/101/12b/03610112b9efd765af50c29efaab9b51.png)
+
+# Мёрж ветки
+Чтобы начать процесс мёржа, раскрываем контекстное меню проекта, жмём Review and Merge changes, далее описываем что было сделано и выбираем аппрувером лида/руководителя/других дизайнеров.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/483/663/323/483663323664d2499e13e3da4bf04abb.png)
+Бывает что созданная ветка не требует продолжения работы и мёрджить её нет смысла (дубликат, изменились условия задачи и тд) — просто архивируем. Посмотреть или восстановить архивные ветки можно через контекстное меню проекта в разделе Archived.
+
+# Заключение
+Использование веток является важным базовым инструментом для дизайн-команд работающих с Figma. Он позволяет сделать совместную работу более эффективной и удобной. Убирает боль отмены больших изменений и путаницы при работе со сложными проектами. И конечно же, добавляет инструмент контроля и предотвращения ошибок.
+
+# Список литературы
+https://habr.com/ru/articles/793772/
+

+ 43 - 0
Лекции/Ветки.md

@@ -0,0 +1,43 @@
+# Figma Branch
+
+Figma Branch (или «ветка») — это функционал, который позволяет создать копию проекта и изменять его независимо от основной версии. Когда работа завершена и нужно внести изменения в основной проект — ветка сливается с master-версией. Всё как у разработчиков. Но чтобы использовать Branch, ваш тариф должен быть Organization или Enterprise.
+
+# Предпосылки 
+
+При коллективной работе над проектом, всегда встречаются классические проблемы: что/когда/кем было добавлено в проект и почему компоненты сломались. Типичное решение — складывать готовые экраны и компоненты куда-то в угол канваса, тегать лида комментом, а после ревью — чистить за собой, мрак. Проще, быстрей, дешевле использовать функционал Branch, тем более они идеально подходят для следующих сценариев:
+ - Вы дизайн-команда работающая над дизайн-системой или отдельным UI kit'ом
+ - Вы дизайн-команда работающая по фичам одновременно в одном или нескольких figma-проектах
+ - Оба варианта сразу
+
+# Три правила создания веток:
+ - Добавляем новые сущности в дизайн-систему: иконки, компоненты, варианты, стили, элементы, подсказки, группы, секции и так далее
+ - Вносим любые изменения в стили, компоненты и варианты в дизайн-систему
+ - Создаем или правим локальные компоненты в проекте продукта
+
+Используя эти простые правила вместе с нативным функционалом, мы как продуктовые дизайнеры получаем отличный механизм контроля и порядка в своих дизайн-системах и больших проектах. Дополнительно получая защиту от глупых ошибок, которые отсеиваются на этапе мёрж-ревью перед сливанием ветки в мастер, например:
+ - Кривые иконки (стиль не по гайду, вывернутые точки, неправильный нейминг)
+ - В компоненте properties-конфликт или новый элемент не отображается соседних вариантах
+ - В компоненте забыли проставить auto layout
+
+# Выбор ветки
+Проекты содержащие ветки, обозначаются специальным лейблом, по нажатию на который, можно выбрать конкретную версию проекта.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/b3f/7ae/cc1/b3f7aecc16e9a502d2ab6eb9f3fc369a.png)
+Также, посмотреть все ветки можно через основное меню File → See all branches.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/c0a/bfc/349/c0abfc3499bb3173b4432d83f0bf0c04.png)
+В ветки мжно приглашать как в обычный проект и делиться ссылкой на них. Работает это через привычную кнопку Share в правом углу, но дополнительно можно скопировать ссылку, переименовать ветку или отправить её в архив через выпадающие меню проекта View Branch → See all branches → •••
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/340/21a/a2a/34021aa2a6c6b94902dc5926a85613e4.png)
+
+# Создание ветки
+
+Находясь в проекте, раскрываем контекстное меню рядом с названием файл, в котором создаем ветку нажав на Create branch.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/036/101/12b/03610112b9efd765af50c29efaab9b51.png)
+
+# Мёрж ветки
+Чтобы начать процесс мёржа, раскрываем контекстное меню проекта, жмём Review and Merge changes, далее описываем что было сделано и выбираем аппрувером лида/руководителя/других дизайнеров.
+![PHOTO](https://habrastorage.org/r/w1560/getpro/habr/upload_files/483/663/323/483663323664d2499e13e3da4bf04abb.png)
+Бывает что созданная ветка не требует продолжения работы и мёрджить её нет смысла (дубликат, изменились условия задачи и тд) — просто архивируем. Посмотреть или восстановить архивные ветки можно через контекстное меню проекта в разделе Archived.
+
+# Заключение
+Использование веток является важным базовым инструментом для дизайн-команд работающих с Figma. Он позволяет сделать совместную работу более эффективной и удобной. Убирает боль отмены больших изменений и путаницы при работе со сложными проектами. И конечно же, добавляет инструмент контроля и предотвращения ошибок.
+
+

+ 39 - 0
Лекции/Двоичный код/Двоичный_код.md

@@ -0,0 +1,39 @@
+# Двоичный код
+
+Двоичный код (бинарный код) — система записи информации с помощью двух символов — 0 и 1. Он является основой цифровых вычислений, так как компьютеры используют внутреннюю архитектуру и операции, основанные на двоичной системе. Это обеспечивает возможность представления и обработки информации в виде электрических импульсов, с которыми работает современная вычислительная техника. Понимание двоичного кода необходимо для программирования, сетевых технологий и других областей, связанных с цифровой информацией.
+
+# Что такое двоичный код
+
+Когда мы говорим о двоичном коде, мы должны сначала разобраться в понятии «бит». Бит (сокращение от binary digit) представляет собой самую маленькую единицу информации. Он может принимать значение либо 0, либо 1. Используя комбинацию битов, можно представлять различные виды информации: числа, символы (буквы, знаки препинания, спецсимволы и т. д.), изображения, звуки и т.д. 
+
+Принцип работы современных компьютеров также имеет двоичную природу. Носителем информации в них является электрический заряд или импульс. Например, оперативная память содержит в себе множество ячеек, в которых этот заряд может либо отсутствовать, либо присутствовать, что соответствует 0 и 1. Комбинации таких ячеек с отсутствием или присутствием электрического заряда и являются физическим кодированием информации. Аналогично данные сохраняются на SSD, flash-картах. А вот на магнитных жестких дисках роль мельчайшего физического носителя информации играет ячейка из ферромагнетика, которая также принимает одно из двух состояний — намагниченное или ненамагниченное. Считывая информацию с жесткого диска специальной головкой, компьютер переводит это состояние в соответствующий электрический сигнал.
+
+# История двоичного кода
+
+Идея двоичного представления информации появилась в глубокой древности. Одним из первых исторических систем двоичного кода был древний китайский принцип инь-ян. В нем использовались различные комбинации линий, чтобы представить двоичные числа. Эта система применялась в китайской космологии и философии, а также созданных на их основе магических, астрологических и гадательных практиках и не была связана непосредственно с вычислениями. 
+
+Применительно к математике и вычислениям идея использования двоичного кода была представлена в 1679 году германским математиком и философом Готфридом Лейбницем. Он предложил применять ее для представления чисел и логических операций. Это стало отправной точкой для развития двоичной арифметики и логики, которые сегодня лежат в основе работы компьютеров. Но в силу технических ограничений того времени реализовать вычислительные устройства, работающие по такому принципу, было невозможно.
+
+Настоящий прорыв в истории двоичного кода произошел в начале и особенно середине XX века. Это связано с развитием электронных компьютеров и появлением электронных элементов, способных оперировать сигналами в двоичном формате. В 1947 году был создан первый транзистор, который стал основой для разработки электронных компонентов, способных работать с двоичным кодом. В этот период математики Джон Тьюки, Алан Тьюринг и Клод Шеннон были ключевыми фигурами в разработке теории двоичного кода для обработки информации. В частности, Тьюки впервые предложил термин bit, а Шеннон популяризировал его в своей фундаментальной статье «Математическая теория связи».
+
+# Преимущества двоичного кода
+
+Простота и надежность. Двоичный код состоит только из двух состояний — 0 и 1, что делает его очень простым в использовании и интерпретации. Компьютеры и электронные устройства обрабатывают и распознают его очень эффективно. Также двоичный код устойчив к помехам и ошибкам при передаче данных, поскольку каждый бит представлен одним из двух состояний.
+
+Легкость реализации. Множество электронных устройств, включая компьютеры, используют двоичную систему для работы, поскольку она является базовой и наиболее удобной для электронных компонентов. Они могут легко обрабатывать и хранить двоичные данные, что делает их эффективными в использовании ресурсов системы.
+
+Универсальность. Бинарное кодирование является универсальным языком для выражения информации в компьютерном мире. Оно используется для представления текста, чисел и других форматов данных. Будучи стандартным языком обмена информацией, двоичный код облегчает взаимодействие между различными компьютерными системами.
+
+Совместимость. Благодаря широкому использованию двоичного кода, его возможностям и простоте практически все компьютерные системы и электронные устройства обладают его поддержкой. Это обеспечивает совместимость между различными системами и позволяет обмениваться информацией без проблем.
+
+# Недостатки двоичного кода
+
+Сложность чтения. Записанная с помощью 0 и 1 информация нечитаема для человека, не обладающего специальными знаниями и обучения. Расшифровка двоичного кода на понятный язык может быть очень сложной и требует использования специальных методов и программ.
+
+Высокая сложность программирования. Написание программы на двоичном коде невозможно без глубокого понимания и экспертизы в области низкоуровневого программирования. Это требует большого количества усилий и времени, особенно для составления длинных и сложных программ.
+
+Ограниченная емкость. Двоичное представление требует больше символов для тех же данных по сравнению с другими системами кодирования. Это может привести к увеличению размера файла или затратам на дополнительное хранение.
+
+# Литература
+
+https://blog.skillfactory.ru/glossary/dvoichnyy-kod/

+ 47 - 0
Лекции/Функция/Функция.md

@@ -0,0 +1,47 @@
+# Функция
+
+Функция — это отдельный блок программы, который выполняет одно конкретное действие. Обычно функции выглядят как маленькие программы внутри основного кода, и их можно запускать в разные моменты времени.
+
+# Для чего нужны функции
+
+В программировании часто приходится выполнять одни и те же действия: перебирать массив, создавать набор объектов или получать данные с сервера. Если каждый раз писать команды для этих действий с нуля, программа получится большой, громоздкой и нечитаемой.
+
+Именно в таких ситуациях нужны функции — «программы» в программе. Они позволяют один раз описать, как выполнять какое-то действие, а потом сколько угодно раз запускать это действие одной строчкой кода. Это можно сделать практически в любой момент выполнения, а еще функцию можно вызывать с разными аргументами — и получать разный результат.
+
+Благодаря функциям код становится более чистым, лаконичным и понятным:
+
+ - действия разделены по функциям, а не хаотично повторяются в разных местах кода;
+ - программу легче отлаживать, ведь разработчик сам знает, где «лежит» какое действие;
+ - код можно использовать повторно и не писать одно и то же снова и снова;
+ - функции облегчают работу с элементами интерфейса: при нажатии на кнопку можно просто вызывать функцию с нужным действием, а не писать код отдельно.
+
+# Что можно делать с функциями
+
+Задавать. Разработчик может создать функцию — описать, как она будет называться и что будет делать. Обычно описание начинается с ключевого слова function и имени функции, которое разработчик придумывает сам. Правда, в разных языках синтаксис может отличаться.
+
+Вызывать. Когда программист задает функцию, она не выполняется сразу — это просто описание. Чтобы функция сработала, ее нужно вызвать: написать в нужном участке кода команду вызова. Команда обычно состоит из названия функции и двух скобок.
+
+Вызывать с аргументами. Иногда, чтобы функция сработала как надо, ей нужно передать какие-то данные. Причем при разных вызовах эти данные могут различаться. В таком случае можно создать функцию с параметрами:
+
+Получать значения. Функция может возвращать в основную программу какой-то результат, и с ним можно работать: записывать в переменную или использовать в вычислениях. Обычно для возврата используют ключевое слово return, а после него пишут то, что нужно вернуть.
+
+Редактировать. Если изменить описание функции, ее работа поменяется во всех местах, где эту функцию вызывали. Результат тоже изменится.
+
+# Как работают функции
+
+Обычно функция работает как бы отдельно от остального кода. Она может пользоваться переменными и объектами, которые есть во внешней части программы, но так делать не рекомендуют: лучше передавать нужную информацию в функцию с помощью параметров. 
+
+ - Чаще всего при передаче параметра в функцию отправляется копия значения. Это значит, что если внутри функции изменить переданное значение, то во внешнем коде оно останется прежним. 
+ - В некоторых языках программирования разработчик сам может выбрать, что передать в функцию: копию значения или изначальную переменную. Во втором случае, если поменять переданную переменную в функции, она изменится и во внешнем коде.
+
+# Разница между функцией, методом и процедурой
+
+Метод. Так называют функцию внутри объекта. Объект — структура данных, которая описывает какую-то сущность: кнопку, предмет в компьютерной игре, запись из базы данных и так далее. У объекта есть свойства и методы. 
+ - Свойства — это переменные, которые описывают объект. Например, вес персонажа, цвет предмета и так далее.
+ - Методы — это действия, которые объект может выполнять. Скажем, объект «кот» может выполнять действия «бегать», «прыгать», «спать», «есть», «вылизываться» и так далее.
+
+Процедура. Это понятие есть не во всех языках программирования. Так называют функцию, которая ничего не возвращает, зато меняет внешнее окружение и переданные ей аргументы. Она по определению не может быть чистой, но в некоторых ситуациях такое поведение тоже бывает нужно — например, процедурой можно оформить ту же запись в файл.
+
+# Литература
+
+https://blog.skillfactory.ru/glossary/funktsiya/