瀏覽代碼

Merge branch 'master' of http://213.155.192.79:3001/ypv/ISRPO

ypv 1 年之前
父節點
當前提交
8a8965d0e8
共有 3 個文件被更改,包括 471 次插入0 次删除
  1. 226 0
      Лекции/Python/Python.md
  2. 98 0
      Лекции/Rust/Rust.md
  3. 147 0
      Лекции/VMWare/Vmware.md

+ 226 - 0
Лекции/Python/Python.md

@@ -0,0 +1,226 @@
+Что такое Python?
+
+Python — это язык программирования, который широко используется в интернет-приложениях, разработке программного обеспечения, науке о данных и машинном обучении (ML). Разработчики используют Python, потому что он эффективен, прост в изучении и работает на разных платформах. Программы на языке Python можно скачать бесплатно, они совместимы со всеми типами систем и повышают скорость разработки.
+
+В чем заключаются преимущества языка Python?
+
+Язык Python имеет следующие преимущества:
+
+- Разработчики могут легко читать и понимать программы на Python, поскольку язык имеет базовый синтаксис, похожий на синтаксис английского. 
+- Python помогает разработчикам быть более продуктивными, поскольку они могут писать программы на Python, используя меньше строк кода, чем в других языках.
+- Python имеет большую стандартную библиотеку, содержащую многократно используемые коды практически для любой задачи. В результате разработчикам не требуется писать код с нуля.
+- Разработчики могут легко сочетать Python с другими популярными языками программирования: Java, C и C++.
+- Активное сообщество Python состоит из миллионов поддерживающих разработчиков со всего мира. При возникновении проблем сообщество поможет в их решении.
+- Кроме того, в Интернете доступно множество полезных ресурсов для изучения Python. Например, вы можете легко найти видеоролики, учебные пособия, документацию и руководства для разработчиков.
+- Python можно переносить на различные операционные системы: Windows, macOS, Linux и Unix.
+
+Где применяется Python?
+
+Язык Python имеет несколько стандартных примеров использования при разработке приложений, в числе которых:
+
+**Веб-разработка на стороне сервера**
+
+Веб-разработка на стороне сервера включает в себя сложные серверные функции, с помощью которых веб-сайты отображают информацию для пользователя. Например, веб-сайты должны взаимодействовать с базами данных и другими веб-сайтами, а также защищать данные при их отправке по сети. 
+
+Python полезен при написании серверного кода, поскольку он предлагает множество библиотек, состоящих из предварительно написанного кода для сложных серверных функций. Также разработчики используют широкий спектр платформ Python, которые предоставляют все необходимые инструменты для более быстрого и простого создания интернет-приложений. Например, разработчики могут создать «скелет» интернет-приложения за считанные секунды, потому что им не нужно писать код с нуля. Затем его можно протестировать с помощью инструментов тестирования платформы независимо от внешних инструментов тестирования.
+
+**Автоматизация с помощью скриптов Python**
+
+Язык скриптов — это язык программирования, который автоматизирует задачи, обычно выполняемые людьми. Программисты широко используют скрипты Python для автоматизации многих повседневных задач, среди которых:
+
+- Одновременное переименование большого количества файлов
+- Преобразование файла в другой тип файла
+- Удаление повторяющихся слов в текстовом файле
+- Выполнение базовых математических операций
+- Отправка сообщений электронной почты
+- Загрузка контента
+- Выполнение базового анализа журналов
+- Поиск ошибок в нескольких файлах
+
+**Наука о данных и машинное обучение**
+
+[Наука о данных](https://aws.amazon.com/what-is/data-science/) извлекает ценную информацию из данных, а [машинное обучение (ML)](https://aws.amazon.com/what-is/machine-learning/) позволяет компьютерам автоматически учиться на данных и делать точные прогнозы. Специалисты по работе с данными используют Python для решения следующих задач:
+
+- Исправление и удаление неверных данных (очистка данных) 
+- Извлечение и выбор различных характеристик данных
+- [Разметка данных](https://aws.amazon.com/sagemaker/data-labeling/what-is-data-labeling/) добавляет данным значимые имена
+- Поиск статистической информации в данных
+- Визуализация данных с помощью диаграмм и графиков: линейных диаграмм, столбчатых диаграмм, гистограмм и круговых диаграмм
+
+
+
+Специалисты по работе с данными используют библиотеки Python ML для моделей машинного обучения и создания классификаторов, которые точно классифицируют данные. Классификаторы на основе Python используются в различных областях и применяются для выполнения таких задач, как классификация изображений, текста и сетевого трафика, распознавание речи и распознавание лиц. Специалисты по работе с данными также используют Python для глубокого обучения — передовой техники машинного обучения.
+
+**Разработка программного обеспечения**
+
+Разработчики программного обеспечения часто используют Python для различных задач разработки и программных приложений, среди которых:
+
+- Отслеживание ошибок в программном коде
+- Автоматическая сборка программного обеспечения
+- Управление программными проектами
+- Разработка прототипов программного обеспечения
+- Разработка настольных приложений с использованием библиотек графического пользовательского интерфейса (ГПИ)
+- Разработка игр: от простых текстовых игр до сложных видеоигр
+
+**Автоматизация тестирования программного обеспечения**
+
+Тестирование программного обеспечения — это процесс проверки соответствия фактических результатов программного обеспечения ожидаемым результатам, который позволяет убедиться, что программное обеспечение не содержит ошибок. 
+
+- Разработчики используют среды модульного тестирования Python (Unittest, Robot и PyUnit) для тестирования написанных функций. 
+- Тестировщики программного обеспечения используют Python для написания тестовых примеров для различных сценариев. Например, язык применяется для тестирования пользовательского интерфейса интернет-приложения, нескольких программных компонентов и новых функций. 
+
+Разработчики могут использовать несколько инструментов для автоматического запуска тестовых скриптов. Эти инструменты известны как инструменты непрерывной интеграции / непрерывного развертывания (CI/CD). Тестировщики и разработчики программного обеспечения используют инструменты CI/CD (Travis CI и Jenkins) для автоматизации процесса тестирования. Инструмент CI/CD автоматически запускает тестовые скрипты Python и сообщает о результатах тестирования всякий раз, когда разработчики вносят новые изменения в код.
+
+Как развивался Python?
+
+Python разработан Гвидо Ван Россумом (Guido Van Rossum), программистом из Нидерландов. Он начал работу над языком в 1989 году в центре Centrum Wiskunde & Informatica (CWI). Изначально язык был полностью любительским проектом: Ван Россум просто хотел чем-то занять себя на рождественских каникулах. Название языка было взято из телешоу BBC «Летающий цирк Монти Пайтона», большим поклонником которого являлся программист. 
+
+**История версий Python**
+
+- Гвидо Ван Россум опубликовал первую версию кода Python (версия 0.9.0) в 1991 году. Он уже включал в себя ряд полезных возможностей. Например, различные типы данных и функции для обработки ошибок. 
+- В версии Python 1.0, выпущенной в 1994 году, были реализованы новые функции для простой обработки списка данных: сопоставление, фильтрация и сокращение.
+- Python 2.0 был выпущен 16 октября 2000 года с новыми полезными функциями для программистов, такими как поддержка символов Unicode и упрощенный способ циклического просмотра списка.
+- 3 декабря 2008 года вышел Python 3.0. Эта версия включала функцию печати и дополнительную поддержку деления чисел и обработки ошибок. 
+
+Каковы особенности Python?
+
+Язык Python уникален благодаря следующим особенностям:
+
+**Интерпретируемый язык**
+
+Python является интерпретируемым языком, то есть он выполняет код построчно. Если в коде программы присутствуют ошибки, она перестает работать. Это позволяет программистам быстро найти ошибки в коде.
+
+**Простой в использовании язык**
+
+Python использует слова, подобные словам английского языка. В отличие от других языков программирования, в Python не используются фигурные скобки. Вместо них применяется отступ. 
+
+**Язык с динамической типизацией**
+
+Программистам не нужно объявлять типы переменных при написании кода, потому что Python определяет их во время выполнения. Эта функция позволяет писать программы на Python значительно быстрее.
+
+**Язык высокого уровня**
+
+Python ближе к естественным языкам, чем ряд других языков программирования. Благодаря этому программистам не нужно беспокоиться о его базовой функциональности, например об архитектуре и управлении памятью.
+
+**Объектно-ориентированный язык**
+
+Python рассматривает все элементы как объекты, но также поддерживает другие типы программирования (например, структурное и функциональное программирование).
+
+Что такое библиотеки Python?
+
+Библиотека — это набор часто используемых кодов, которые разработчики могут включать в свои программы Python, чтобы не писать код с нуля. По умолчанию в Python доступна стандартная библиотека, которая содержит большое количество многократно используемых функций. Кроме того, доступно более 137 000 библиотек Python для различных задач, в числе которых интернет-разработка, наука о данных и машинное обучение (ML).
+
+**Какие библиотеки Python наиболее популярны?**
+
+**Matplotlib**
+
+Разработчики используют Matplotlib для отображения данных в высококачественной двух- и трехмерной (2D и 3D) графике. Данная библиотека распространена при решении научных задач. С помощью Matplotlib данные можно визуализировать в виде различных диаграмм (например, столбчатых и линейных). Также можно строить несколько диаграмм сразу, а графику — переносить на любые платформы.
+
+**Pandas**
+
+Pandas содержит оптимизированные и гибкие структуры данных, которые можно использовать для управления данными временных рядов и структурированными данными, такими как таблицы и массивы. Например, Pandas можно использовать для чтения, записи, объединения, фильтрации и группировки данных. Также данная библиотека широко применяется в науке о данных, анализе данных и задачах машинного обучения.
+
+**NumPy**
+
+NumPy — это популярная библиотека, используемая разработчиками для простого создания массивов и управления ими, а также управления логическими фигурами и выполнения операций линейной алгебры. NumPy поддерживает интеграцию со многими языками. Например, C и C++.
+
+**Requests**
+
+Библиотека Requests содержит полезные функции, необходимые для веб-разработки. Их можно использовать для отправки HTTP-запросов, добавления заголовков, добавления параметров URL, добавления данных и выполнения многих других задач, связанных с интернет-приложениями. 
+
+**OpenCV-Python**
+
+OpenCV-Python — это библиотека, используемая для обработки изображений при работе с машинным зрением. Она содержит множество функций обработки изображений, таких как одновременное чтение и запись изображений, преобразование двухмерной среды в трехмерную, а также захват и анализ изображений из видео.
+
+**Keras**
+
+Keras – это библиотека глубокой нейронной сети Python с отличными функциями обработки данных, визуализации и многого другого. Keras поддерживает множество нейронных сетей. Библиотека имеет модульную структуру, обеспечивающую гибкость при написании инновационных приложений.
+
+Что такое платформы Python?
+
+Платформы Python — это наборы пакетов и модулей. Модуль — это набор связанного кода, а пакет — это набор модулей. Разработчики могут использовать платформы Python для более быстрого создания приложений Python, поскольку им не нужно беспокоиться о низкоуровневых деталях (например, скорости обмена данных в веб-приложении) или том, как Python ускоряет работу программы. Python имеет два типа платформ: 
+
+- Платформа с полным стеком включает почти все, что требуется для создания крупного приложения.
+- Микроплатформа – это базовая платформа, предоставляющая минимальные функциональные возможности для создания простых приложений Python. Также она предоставляет расширения, если приложениям требуются более сложные функции.
+
+**Какие платформы Python наиболее популярны?**
+
+Чтобы сделать свою разработку более эффективной, можно использовать несколько платформ Python сразу. В их числе:
+
+**Django**
+
+Django — одна из наиболее популярных платформ с полным стеком Python, которая используется для разработки крупных интернет-приложений. Она содержит несколько полезных функций, в числе которых веб-сервер для разработки и тестирования, движок шаблонов для frontend-разработки и различные механизмы безопасности.
+
+**Flask**
+
+Flask – это микроплатформа для разработки небольших интернет-приложений. К ее особенностям относятся сильная поддержка со стороны сообщества, качественно составленная документация, движок шаблонов, модульное тестирование и встроенный веб-сервер. Также платформа содержит расширения для поддержки валидации, уровни отображения базы данных и веб-безопасность.
+
+**TurboGears**
+
+TurboGears – это платформа, предназначенная для более быстрого и простого создания интернет-приложений. Ниже представлены ее основные возможности: 
+
+- Определенная структура таблиц базы данных
+- Инструменты для создания и управления проектами
+- Движок шаблонов для создания баз данных
+- Движок шаблонов для frontend-разработки
+- Механизмы обеспечения веб-безопасности
+
+**Apache MXNet**
+
+Apache MXNet – это быстрая, гибкая и масштабируемая платформа глубокого обучения для создания исследовательских прототипов и приложений глубокого обучения. Она поддерживает несколько языков программирования, включая Java, C++, R и Perl. Платформа содержит богатый набор инструментов и библиотек для разработчиков. Например, на ней можно найти книгу по интерактивному машинному обучению (ML), наборы инструментов машинного зрения и модели глубокого обучения для обработки естественного языка (NLP), в том числе текста и речи.
+
+**PyTorch**
+
+PyTorch – это платформа для машинного обучения, созданная на основе библиотеки Torch, еще одной библиотеки машинного обучения с открытым исходным кодом.  Разработчики используют ее в NLP, робототехнике и машинном зрении для поиска важной информации в изображениях и видео. Также платформа используется для запуска этих приложений на процессорах и графических процессорах.
+
+Что такое Python IDE?
+
+Интегрированная среда разработки (IDE) — это программное обеспечение, которое предоставляет разработчикам инструменты для написания, редактирования, тестирования и отладки кода. 
+
+**Какие Python IDE наиболее популярны?**
+
+**PyCharm**
+
+PyCharm – результат трудов JetBrains, чешской компании по разработке программных инструментов. У программы имеется как бесплатная версия для небольших приложений, так и платная профессиональная версия, подходящая для создания крупных приложений Python со следующим набором функций:
+
+- Автоматическое завершение и проверка кода
+- Обработка и быстрое устранение ошибок
+- Чистка кода без изменения функциональных возможностей
+- Поддержка платформ интернет-приложений, таких как Django и Flask
+- Поддержка других языков программирования, таких как JavaScript, CoffeeScript, TypeScript, AngularJS и Node
+- Научные инструменты и библиотеки, такие как Matplotlib и NumPy
+- Возможность запуска, отладки, тестирования и развертывания приложений на удаленных виртуальных машинах
+- Отладчик для поиска ошибок в коде, профилировщик для выявления проблем с производительностью и средство запуска модульных тестов
+- Поддержка баз данных
+
+**IDLE**
+
+Интегрированная среда разработки и обучения (IDLE) – это интегрированная среда разработки Python, установленная по умолчанию. Среда разработана только на Python с использованием набора инструментов Tkinter GUI и имеет следующие особенности:
+
+
+- Совместимость со множеством операционных систем, таких как Windows, Unix и macOS
+- Командное окно для запуска команд и отображения вывода
+- Многооконный текстовый редактор с подсветкой синтаксиса кода и автозавершением
+- Встроенный отладчик 
+
+**Spyder**
+
+Spyder – это IDE с открытым исходным кодом, которую используют многие специалисты и аналитики данных. Она применяется для всесторонней разработки с использованием функций расширенного анализа данных, визуализации и отладки. Среда имеет следующие особенности:
+
+- Редактор кода, поддерживающий несколько языков
+- Интерактивная консоль IPython
+- Базовый отладчик
+- Научные библиотеки, такие как Matplotlib, SciPy и NumPy
+- Возможность исследования переменных в коде
+- Возможность просмотра документации в режиме реального времени
+
+**Atom**
+
+Atom – это бесплатный редактор, разработанный GitHub, который поддерживает кодирование на многих языках программирования, в том числе Python. Atom позволяет напрямую работать с GitHub — веб-сайтом, на котором можно централизованно хранить свой код. Atom имеет следующие особенности:
+
+- Совместимость со многими операционными системами 
+- Простая установка или создание новых пакетов
+- Ускоренное автозавершение кода
+- Возможность поиска файлов и проектов
+- Простая настройка интерфейса
+

+ 98 - 0
Лекции/Rust/Rust.md

@@ -0,0 +1,98 @@
+**Что такое Rust**
+
+Rust — это язык программирования общего назначения, заточенный под разработку высоконагруженных систем. На нём пишут веб-приложения, браузерные движки, блокчейны и другие сложные платформы, которые обрабатывают запросы миллионов пользователей. Разберём его главные фишки.
+
+**Компиляция.** Перед запуском код на Rust сразу переводится на машинный язык — то есть превращается в набор нулей и единиц. Этим Rust отличается, например, от [JavaScript](https://skillbox.ru/media/code/chto-takoe-javascript-i-zachem-on-nuzhen/?utm_source=media&utm_medium=link&utm_campaign=all_all_media_links_links_articles_all_all_skillbox), где код сначала прогоняется через интерпретатор, а уже потом идёт на процессор. Фишка компиляции в том, что так программы запускаются быстрее и потребляют меньше памяти.
+
+**Мультипарадигмальность.** Парадигма программирования определяет стиль, в котором разработчики пишут код. Rust поддерживает сразу несколько парадигм: функциональное, декларативное и объектно-ориентированное программирование. Чаще всего компании используют последний подход, но Rust может работать в любом режиме.
+
+**Высокий уровень абстракции.** Команды на Rust представляют собой простые английские слова: input, let, match и так далее. Поэтому код на нём легко читать и проверять. В то же время язык поддерживает использование некоторых низкоуровневых средств для более тонкой работы с железом.
+
+Главная фишка Rust — сочетание скорости и надёжности. С одной стороны, язык даёт программисту полный доступ к памяти, а с другой — страхует его от ошибок и «выстрелов в ногу». Поэтому на Rust пишут софт, для которого важна стабильная работа в тяжёлых условиях: многопоточные системы, ПО для сложных вычислений и так далее.
+
+**История создания**
+
+В начале нулевых было два подхода к созданию компьютерных языков: в одном делали упор на скорость, а в другом — на безопасность. Например, программы на C++ работали быстро, но могли дать сбой из-за случайной ошибки программиста. А Java, напротив, снижал риски для разработчика, но из-за этого программы теряли в темпе.
+
+Замысел создателей Rust был в том, чтобы соединить мощь C++ со стабильностью Java и выжать максимум из обоих подходов:
+
+«Наша целевая аудитория — это разочарованные разработчики C++. То есть мы сами. Если вы тоже вынуждены работать с C++ из-за его производительности, но ищете что-то более безопасное и менее „болезненное“ — мы надеемся, что сможем это предоставить».
+
+**ГРЭЙДОН ХОР,**
+автор языка программирования Rust
+
+Изначально язык развивался как авторский проект программиста Mozilla Грэйдона Хора, а потом полностью перешёл под управление компании. Браузер Firefox тогда переживал обновление движка, а Rust помог реализовать некоторые важные штуки — например, загрузку сайтов в режиме многопоточности.
+
+Кстати, своё название язык получил в честь грибов порядка Ржавчинные (англ. Rust Fungi). Эти грибы обладают особой живучестью — по мнению автора, такими должны были стать и программы на Rust.
+
+**Примеры кода и синтаксис**
+
+Так как основой для Rust послужил C++, внешне они очень похожи. Посмотрите, как выглядит одна и та же функция, написанная на этих языках:
+
+![<https://skillbox.ru/upload/setka_images/09065902112022_5c20dcbcfbab07ab6c2df7e27444d5ac2afca569.png>](<https://skillbox.ru/upload/setka_images/09065902112022_5c20dcbcfbab07ab6c2df7e27444d5ac2afca569.png>)
+
+Такой синтаксис называют си-подобным — потому что его корни восходят к языку С, который появился ещё в далёких семидесятых. Сейчас это фактически стандарт корпоративной разработки — если знаете такой синтаксис, сможете быстро пересесть на Java, Swift, C# и любой другой современный язык.
+
+**В чём преимущество Rust**
+
+Короткий ответ — в безопасном и экономичном управлении памятью. Когда вы пишете код на С++, вам нужно работать с ней вручную: расставлять указатели, чистить программу от мусора, следить за утечками. Если программа упадёт из-за какой-то ошибки или уязвимости, вы несёте за это полную ответственность.
+
+У Rust совершенно другой подход — вся работа с памятью происходит под капотом языка по строго определённым правилам:
+
+- У любого значения (например, числа) есть переменная-владелец.
+- В каждый момент времени у значения может быть только один владелец.
+- Если переместить владельца в другую часть кода, значение обнуляется.
+
+Если нарушить одно из этих правил, компилятор выдаст ошибку и откажется собирать программу. Если в коде появится проблема, вы узнаете об этом сразу и сможете на лету её исправить. Наконец, если программа на Rust прошла сборку и запустилась, она будет работать стабильно даже в стрессовых условиях.
+
+С другой стороны, можно отключить безопасный режим с помощью блока unsafe и управлять памятью полностью вручную. Это нужно, например, чтобы писать низкоуровневый код для аппаратных средств: умных часов, видеокамер, микроконтроллеров и других устройств.
+
+**Для чего используют Rust**
+
+Так как Rust умеет выжимать максимум из железа, на нём часто пишут высоконагруженные части приложений и сервисов. Например, вот что разрабатывают с его помощью крупные международные и российские IT-компании:
+
+- Mozilla — движок Quantum, на котором работает браузер Mozilla Firefox;
+- Coursera — компоненты платформы онлайн-обучения;
+- Microsoft — низкоуровневые элементы ОС Windows;
+- Rambler — серверную логику веб-приложений;
+- «ВКонтакте» — инструменты сборки и управления исходным кодом.
+
+Теперь пройдёмся по сферам, где этот язык программирования широко применяется.
+
+**Криптовалюты и блокчейн.** Чтобы блокчейны могли совершать защищённые транзакции между миллионами разных устройств, нужен быстрый и стабильно работающий код — а программирование на Rust как раз это позволяет. Например, на нём работает один из самых популярных клиентов для платформы Ethereum — [Parity](https://www.parity.io/technologies/ethereum/).
+
+**Операционные системы.** В теории на Rust можно с нуля написать полноценную операционку с драйверами, файловым менеджером, браузером и другой начинкой. На практике конкурировать с Apple и Microsoft мало кто хочет, поэтому успешных проектов пока не так много. Можно вспомнить разве что ОС для умных устройств [Tock](https://www.tockos.org/) и защищённую операционную систему [Redox](https://www.redox-os.org/).
+
+**Сайты и веб-приложения.** Благодаря тому, что Rust устойчив к нагрузкам, его можно использовать для разработки серверной логики сайтов. Например, облачный сервис Dropbox переписал на нём свою систему хранения файлов — а это десятки тысяч серверных машин, куда постоянно загружают гигабайты новых данных.
+
+**Браузерные движки.** Не зря же Rust придумали в Mozilla — язык изначально заточен именно под браузерную разработку. В нём есть фишки для быстрой отрисовки веб-страниц в режиме многопоточности — можно разбить загрузку сайта на несколько задач и распределить их между ядрами процессора.
+
+**Машинное обучение.** Rust поддерживает [множество библиотек для работы с большими данными](https://dzen.ru/media/machinelearning/-rust-dlia-mashinnogo-obucheniia-62763b9c1c6f74426db054ee): тренировку алгоритмов, визуализацию данных, линейную алгебру, работу с векторами, обработку изображений — всё что угодно. Если в будущем вы видите себя в Data Science — присмотритесь к Rust.
+
+**Плюсы и минусы Rust**
+
+Вот за что язык ценят компании и разработчики:
+
+- **Скорость и безопасность.** Как мы писали выше, программы на Rust работают быстро и ломаются только в безвыходных ситуациях.
+- **Статическая типизация.** В Rust проверка типов переменных происходит ещё на этапе компиляции — это плюс к надёжности языка.
+- **Совместимость с C++**. В программах на Rust можно без проблем вызывать блоки кода из С и C++ — и наоборот.
+- **Заботливый компилятор.** Если в программе случится ошибка, компилятор расскажет, что пошло не так, и даст советы, как всё починить.
+- **Кросс-платформенность.** Rust запускается почти на любом устройстве: от компьютеров и смартфонов до банкоматов и умных часов.
+- **Многопоточность.** Программы на Rust умеют выполнять несколько операций одновременно, эффективно используя мощности процессора.
+- **Высокие зарплаты программистов**. По данным «Хабр Карьеры», средняя зарплата разработчика — [242 тысячи рублей](https://career.habr.com/salaries?utf8=%E2%9C%93&p=222&q=&skills%5B%5D=848&skills%5B%5D=&skills%5B%5D=&employment_type=&remote=&company_id=). Деньги действительно большие, но есть нюанс — о нём ниже.
+
+Есть у Rust и недостатки — их немного, но давайте их тоже разберём:
+
+- **Ограниченная поддержка ООП.** Например, нельзя без костылей реализовать полноценное наследование кода и классы.
+- **Частые обновления.** Синтаксис Rust меняется с каждой новой версией, поэтому разработчикам приходится постоянно переучиваться. С другой стороны, язык в итоге становится безопаснее и удобнее в использовании.
+- **Низкая популярность**. На HeadHunter мы нашли всего [140 вакансий](https://hh.ru/search/vacancy?search_field=name&search_field=company_name&search_field=description&text=rust&from=suggest_post) для Rust-разработчиков по всей России — при этом компании в основном ищут опытных специалистов, а предложений для джунов совсем немного.
+
+**Подходит ли Rust новичку?**
+
+Несмотря на любовь программистов к Rust, у этого языка довольно высокий порог входа. Чтобы начать работать, нужно долго учиться: осваивать сам язык, параллелизм, работу с памятью и другие сложные концепции. Поэтому ответ на вопрос будет зависеть от вашего опыта и скиллов.
+
+**Если вы только начинаете изучать программирование**, лучше подыскать что-то более востребованное и лёгкое в освоении. Скажем, тот же [JavaScript](https://skillbox.ru/media/code/chto-takoe-javascript-i-zachem-on-nuzhen/?utm_source=media&utm_medium=link&utm_campaign=all_all_media_links_links_articles_all_all_skillbox) — сейчас это один из самых популярных языков в России. На нём пишут всю видимую часть интернета: интерфейсы, кнопки, слайдеры и прочую красоту. Если хотите писать код и сразу видеть результат — лучше варианта не найти.
+
+**Но если вы уже умеете программировать** на C++ или Java и кто-то предлагает вам сменить профиль — есть смысл задуматься о переходе. Rust — быстрый, безопасный и компактный язык, он отлично подходит для разработки сложных проектов и систем. С ним вы будете застрахованы от случайных ошибок и утечек памяти.
+- # Литература
+https://skillbox.ru/media/code/rust-zachem-on-nuzhen-gde-primenyaetsya-i-za-chto-ego-vse-lyubyat/

+ 147 - 0
Лекции/VMWare/Vmware.md

@@ -0,0 +1,147 @@
+**Виртуализация Vmware: что это и как работает**
+
+VMware – это программное обеспечение, позволяющее создавать виртуальные машины (ВМ) на физическом сервере. Каждая ВМ представляет собой отдельный компьютер, работающий независимо от остальных. Такая технология, называемая виртуализацией, позволяет значительно повысить эффективность использования вычислительных ресурсов и улучшить гибкость и надежность работы всей системы.
+
+При помощи VMware можно эмулировать аппаратное и программное обеспечение, необходимое для работы различных операционных систем. Таким образом, можно создавать и запускать ВМ с разными ОС на одном физическом компьютере. Это открывает широкие возможности для тестирования разработанного программного обеспечения, запуска необходимого ПО, виртуализации серверов и даже создания целых инфраструктур, состоящих из нескольких ВМ и серверов.
+
+VMware можно использовать как настольное приложение или как серверный продукт в крупных предприятиях. В качестве серверного продукта, VMware позволяет создавать виртуальные инфраструктуры, объединяющие множество физических серверов, что позволяет снизить расходы на оборудование и упростить процесс администрирования.
+
+VMware – это мощное программное обеспечение, позволяющее создавать виртуальные машины и использовать их для решения множества задач. Оно является незаменимым инструментом для тестирования программного обеспечения, развертывания и управления серверами, а также для создания высокоэффективных виртуальных инфраструктур.
+
+Vmware — это компания, специализирующаяся на разработке программного обеспечения для виртуализации. Виртуализация является технологией, которая позволяет запускать несколько виртуальных операционных систем на одном физическом сервере, что позволяет эффективно использовать вычислительные ресурсы.
+
+Виртуализация позволяет создавать виртуальные машины (ВМ) и запускать на них различные операционные системы, приложения и сервисы. Каждая виртуальная машина работает как отдельный экземпляр компьютера, имеет свои процессор, память, жесткий диск и сетевые устройства.
+
+**Применение виртуализации, особенно с помощью Vmware, может быть очень широким:**
+
+Создание и управление серверами виртуальных машин;
+
+Консолидация физических серверов, что позволяет уменьшить количество физических серверов и использовать ресурсы эффективнее;
+
+Резервное копирование и восстановление виртуальных машин;
+
+Тестирование и разработка программного обеспечения;
+
+Создание тестовых и изоляционных окружений;
+
+Виртуализация рабочих станций, что позволяет отдельным пользователям работать на разных операционных системах на одном компьютере;
+
+Одним из самых популярных продуктов Vmware является Vmware vSphere, платформа для виртуализации серверов. Она предоставляет комплексное решение для создания, управления и масштабирования виртуальных машин и виртуальных сетей. С помощью Vmware vSphere можно создавать высокодоступные и отказоустойчивые серверные кластеры, управлять ресурсами и мониторить производительность.
+
+Vmware предлагает также другие продукты, такие как Vmware Workstation и Vmware Fusion, которые позволяют виртуализировать рабочие станции и запускать на них несколько операционных систем одновременно.
+
+Вместе с развитием виртуализации, Vmware постоянно совершенствует свои продукты и предлагает новые решения для упрощения работы и повышения эффективности процессов виртуализации.
+
+**Что такое Vmware?**
+
+Vmware — это компания, разрабатывающая программное обеспечение для виртуализации. Виртуализация позволяет создать несколько виртуальных сред, работающих на одном физическом сервере. Такая технология позволяет эффективнее использовать вычислительные ресурсы и упрощает управление инфраструктурой.
+
+Одним из самых популярных продуктов компании Vmware является программный продукт Vmware ESXi, который представляет собой гипервизор — программное обеспечение, позволяющее создавать и управлять виртуальными машинами. Гипервизор выполняет функции виртуальной машины и предоставляет вычислительные ресурсы для работы операционных систем и приложений.
+
+С помощью Vmware ESXi возможно создание нескольких виртуальных машин на одном физическом сервере. Каждая виртуальная машина работает независимо друг от друга и имеет свою собственную операционную систему и приложения.
+
+**Преимущества использования Vmware и виртуализации:**
+
+Экономия ресурсов — возможность эффективного использования вычислительных ресурсов сервера, так как несколько виртуальных сред могут работать на одном физическом сервере;
+
+Удобство управления — возможность легкого управления виртуальными машинами и целой инфраструктурой;
+
+Безопасность — возможность изолировать виртуальные машины друг от друга для обеспечения безопасности данных;
+
+Отказоустойчивость — возможность запускать виртуальные машины на других физических серверах в случае отказа одного из них;
+
+Гибкость — возможность быстро настраивать и переносить виртуальные машины между физическими серверами.
+
+Вместе с Vmware ESXi компания Vmware предлагает также другие продукты для работы с виртуализацией, такие как Vmware vCenter — инструмент для управления и мониторинга виртуальной инфраструктуры, Vmware Workstation — решение для работы с виртуальными машинами на персональном компьютере и многие другие.
+
+**Как работает Vmware?**
+
+Vmware – это программное обеспечение для виртуализации, которое позволяет запускать несколько операционных систем на одном физическом компьютере. Оно работает на уровне программы, называемой гипервизором, который создает и изолирует виртуальные машины.
+
+Гипервизор Vmware работает непосредственно на оборудовании компьютера и разделяет его ресурсы, такие как процессор, память и хранилище данных, между виртуальными машинами. Каждая виртуальная машина имеет свою собственную изолированную среду, включая свою собственную операционную систему и приложения.
+
+Для работы Vmware необходимо установить гипервизор на хост-компьютер, который будет управлять виртуальными машинами. После установки гипервизора, пользователь может создавать и настраивать виртуальные машины с помощью удобного интерфейса.
+
+Виртуальные машины Vmware могут быть сконфигурированы таким образом, чтобы использовать только те ресурсы, которые им необходимы. Например, можно задать количество процессоров и объем оперативной памяти для каждой виртуальной машины. Это позволяет распределять ресурсы компьютера эффективно и экономно.
+
+При запуске виртуальной машины, гипервизор создает виртуальные компоненты оборудования, такие как процессоры, память, жесткий диск и сетевые карты. Операционная система внутри виртуальной машины работает так же, как если бы она была установлена на реальном компьютере.
+
+Управление виртуальными машинами осуществляется через интерфейс гипервизора Vmware, который позволяет управлять созданием, удалением и настройкой виртуальных машин. Этот интерфейс также предоставляет возможность мониторинга и управления ресурсами компьютера.
+
+Можно создавать несколько виртуальных машин на одном хост-компьютере. Это позволяет использовать ресурсы компьютера более эффективно и упрощает управление системой.
+
+**Преимущества использования Vmware:**
+
+Экономия ресурсов компьютера.
+
+Изоляция приложений и операционных систем.
+
+Удобство управления и конфигурирования виртуальных машин.
+
+Повышение гибкости и масштабируемости системы.
+
+Быстрое создание резервных копий и восстановление системы.
+
+Поддержка различных операционных систем.
+
+Таким образом, Vmware предоставляет удобную и эффективную платформу для виртуализации, которая позволяет использовать ресурсы компьютера более эффективно, упрощает управление системой и обеспечивает надежность и безопасность данных.
+
+**Преимущества использования Vmware**
+
+1\. Эффективное использование аппаратных ресурсов:
+
+Виртуализация позволяет эффективно использовать аппаратные ресурсы, такие как процессоры, память и дисковое пространство. Благодаря возможности запускать несколько виртуальных машин на одной физической машине, можно достичь высокой степени загрузки сервера.
+
+Также, благодаря возможности динамического распределения ресурсов между виртуальными машинами, можно предоставить необходимые ресурсы в реальном времени при их увеличении или уменьшении.
+
+2\. Упрощение администрирования:
+
+Виртуализация позволяет снизить сложность управления и обслуживания серверной инфраструктуры. Вместо отдельного обслуживания каждой физической машины, администратор может управлять всеми виртуальными машинами через единую консоль управления.
+
+Также, благодаря возможности создания образов виртуальных машин, можно упростить установку и настройку новых серверов, а также быстро восстановить работу при сбое или отказе.
+
+3\. Улучшение отказоустойчивости и безопасности:
+
+Виртуализация позволяет создавать резервные копии виртуальных машин и переносить их на другие физические серверы. Это позволяет обеспечить высокую отказоустойчивость и быстрое восстановление работы в случае сбоя или отказа сервера.
+
+Также, благодаря возможности изоляции виртуальных машин друг от друга, в случае атаки на одну виртуальную машину, другие виртуальные машины останутся незатронутыми.
+
+4\. Гибкость и масштабируемость:
+
+Виртуализация позволяет гибко настраивать ресурсы для каждой виртуальной машины. Например, можно увеличить объем памяти или дисковое пространство виртуальной машины без ее остановки.
+
+Также, благодаря возможности масштабирования виртуальных машин, можно легко добавлять или удалять виртуальные машины в зависимости от потребностей бизнеса.
+
+5\. Экономия затрат:
+
+Виртуализация позволяет сэкономить затраты на аппаратное обеспечение, так как необходимо меньшее количество физических машин для обеспечения требуемой производительности.
+
+Также, благодаря возможности консолидации ресурсов, можно сократить энергопотребление серверной инфраструктуры и снизить затраты на расходы связанные с обслуживанием физических серверов.
+
+6\. Возможность развертывания облачной инфраструктуры:
+
+Виртуализация позволяет создать облачную инфраструктуру, которая позволяет предоставлять виртуальные машины и ресурсы по требованию.
+
+Такая возможность позволяет снизить затраты на инфраструктуру, упростить управление и предоставлять более гибкие сервисы для бизнеса.
+
+В целом, использование Vmware и виртуализации позволяет получить ряд преимуществ для бизнеса, таких как эффективное использование аппаратных ресурсов, простое администрирование, улучшение отказоустойчивости и безопасности, гибкость и масштабируемость, экономия затрат и возможность развертывания облачной инфраструктуры.
+
+**Применение виртуализации Vmware**
+
+Vmware — один из наиболее популярных продуктов для виртуализации, который позволяет создавать и управлять виртуальными машинами на компьютере и сервере. Он обеспечивает широкий спектр возможностей и применяется в различных областях, к примеру:
+
+Серверная виртуализация: Vmware используется для создания виртуальных серверов, что позволяет эффективно использовать аппаратные ресурсы. Вместо того чтобы запускать каждый сервер на отдельной физической машине, можно создать несколько виртуальных серверов на одном физическом сервере.
+
+Тестирование и разработка: Vmware позволяет создавать и управлять виртуальными окружениями для тестирования и разработки программного обеспечения. Вместо того чтобы использовать физические компьютеры для каждого тестового окружения, можно создать несколько виртуальных машин на одном компьютере.
+
+Обучение: Vmware можно использовать для создания виртуальных обучающих сред, где студенты могут практиковаться на реальных виртуальных машинах без риска повреждения или потери данных.
+
+Демонстрация и презентация: Vmware предоставляет возможность создания виртуальных демонстрационных сред, которые можно использовать для презентаций или показа программного обеспечения, не затрагивая реальную систему.
+
+Расширение возможностей: Vmware позволяет создавать виртуальные машины с различными операционными системами и настройками. Это дает возможность работать с программами и приложениями, которые не являются совместимыми с вашей основной операционной системой.
+
+Применение Vmware не ограничивается перечисленными пунктами. Этот инструмент может быть полезен во многих областях, где требуется создание и управление виртуальными машинами, обеспечивая более эффективное использование ресурсов и упрощенное управление.
+
+- **Литература**
+
+https://uchet-jkh.ru/i/virtualizaciya-vmware-cto-eto-i-kak-rabotaet/#:~:text=Vmware%20%E2%80%94%20%D1%8D%D1%82%D0%BE%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D1%8F%2C%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D1%8E%D1%89%D0%B0%D1%8F%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5,%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B%20%D0%B8%20%D1%83%D0%BF%D1%80%D0%BE%D1%89%D0%B0%D0%B5%D1%82%20%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%D0%BD%D1%84%D1%80%D0%B0%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%BE%D0%B9.