[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:05.61,Default,,0000,0000,0000,,В этом видеоуроке мы кратко рассмотрим каким образом можно использовать для дальнейшего изучения Node.js Dialogue: 0,0:00:05.61,0:00:13.58,Default,,0000,0000,0000,,такую технологию как Jupyter Notebook. Здесь у меня запущена Anaconda, приложение которое сосредотачивает в себе Dialogue: 0,0:00:13.58,0:00:21.53,Default,,0000,0000,0000,,множество разных возможностей по использованию различных инструментов экосистемы Python. Dialogue: 0,0:00:21.53,0:00:33.73,Default,,0000,0000,0000,,Как выясняется, существуют пересечения и с экосистемой JavaScript. Давайте запустим часть анаконды, которая управляет ноутбуками. Dialogue: 0,0:00:33.73,0:00:43.17,Default,,0000,0000,0000,,Нажав на Launch. При этом открывается локальный веб-сервер, который я сделал доступным на внешнем сетевом интерфейсе. Dialogue: 0,0:00:43.17,0:00:58.44,Default,,0000,0000,0000,,Мы это видим по адресу: 0.0.0.0 вместо 127.0.0.1. И таким образом к этому локальному серверу можно подключиться из локальной сети, Dialogue: 0,0:00:58.44,0:01:08.34,Default,,0000,0000,0000,,а в принципе даже из глобальной, если у этого компьютера на котором я сейчас работаю имеется статический доступный публичный IP-адрес. Dialogue: 0,0:01:08.34,0:01:18.45,Default,,0000,0000,0000,,И вот соответственно сейчас здесь имеется пустая папка, в которой находится папка js. И мы можем здесь нажать на кнопку New Dialogue: 0,0:01:18.45,0:01:28.64,Default,,0000,0000,0000,,и выбрать JavaScript (Node.js). Поскольку Notebook это нечто что совмещает в себе возможности интерактивного документа, Dialogue: 0,0:01:28.64,0:01:39.70,Default,,0000,0000,0000,,такого в том числе как google-документ, а также чего-то похожего на интерактивный терминал, который позволяет вводить результаты Dialogue: 0,0:01:39.70,0:01:48.43,Default,,0000,0000,0000,,выполнения программного кода. Выполняемого с помощью того или иного ядра, в данном случае вы видите в правом верхнем углу Node.js, Dialogue: 0,0:01:48.43,0:01:57.08,Default,,0000,0000,0000,,то мы можем писать пояснение и рядом исполнимый программный код. В частности, например для того чтобы Dialogue: 0,0:01:57.08,0:02:05.85,Default,,0000,0000,0000,,получить версию платформы Node.js, которая используется для исполнения кода, мы можем написать здесь process, Dialogue: 0,0:02:05.85,0:02:15.41,Default,,0000,0000,0000,,нажать Tab для того чтобы посмотреть подсказки и найти здесь свойство versions. Если теперь нажать Ctrl+Enter, Dialogue: 0,0:02:15.41,0:02:25.42,Default,,0000,0000,0000,,то мы увидим подробную информацию о том, что здесь у нас поставлено и запущено. Это Node.js версии 14.5.0. Dialogue: 0,0:02:25.42,0:02:35.87,Default,,0000,0000,0000,,Если не самая последняя, то одна из самых последних. Версия движка - V8, версия библиотеки - uv. Ну и т.д. Dialogue: 0,0:02:35.87,0:02:44.98,Default,,0000,0000,0000,,Соответственно, мы можем добавлять эти островки кода, по необходимости перемежая их текстом и в данном случае Dialogue: 0,0:02:44.98,0:02:55.78,Default,,0000,0000,0000,,выполнять код типичный для JavaScript, типичный для Node.js. Например у нас есть console.log, это объект Dialogue: 0,0:02:55.78,0:03:04.15,Default,,0000,0000,0000,,который поддерживается различными JavaScript средами, такими как Node.js и браузер. И у нас есть встроенный в JavaScript Dialogue: 0,0:03:04.15,0:03:11.63,Default,,0000,0000,0000,,объект Math, который содержит метод sqrt, который вычисляет значение квадратного корня от данного числа. Dialogue: 0,0:03:11.63,0:03:21.29,Default,,0000,0000,0000,,Мы сейчас увидим, должны будем увидеть, здесь число 4. И действительно так оно и есть. Итак, поскольку в данном случае Dialogue: 0,0:03:21.29,0:03:28.61,Default,,0000,0000,0000,,используется публичный сетевой интерфейс, то к такому ноутбуку можно подключиться из локальной сети и даже из глобальной. Dialogue: 0,0:03:28.61,0:03:39.10,Default,,0000,0000,0000,,И тем самым может быть осуществлена демонстрация выполнения кода для определённой группы подключившихся слушателей Dialogue: 0,0:03:39.10,0:03:49.25,Default,,0000,0000,0000,,или обучающихся. Но также разумеется существует и возможность использовать облачные различные решения, Dialogue: 0,0:03:49.25,0:04:01.23,Default,,0000,0000,0000,,вот например платформа colab от Google, которая доступна в том числе через Google-диск. Правда на данном этапе там нет в качестве среды выполнения Dialogue: 0,0:04:01.23,0:04:13.36,Default,,0000,0000,0000,,Node.js, но всегда можно поисследовать и найти какие-то другие варианты, это может быть решение связанное с Azure, Dialogue: 0,0:04:13.36,0:04:26.14,Default,,0000,0000,0000,,с облаками такими как SberCloud и другими подобными. Очевидно, что такую среду можно точно также использовать и для запуска серверного веб-приложения, Dialogue: 0,0:04:26.14,0:04:35.28,Default,,0000,0000,0000,,притом что она сама является серверным веб-приложением. Но перед тем как это продемонстрировать, напомним что Dialogue: 0,0:04:35.28,0:04:46.02,Default,,0000,0000,0000,,с помощью инструментов управления пакетами мы можем пользоваться в наших проектах локально загруженными файлами. Dialogue: 0,0:04:46.02,0:04:57.37,Default,,0000,0000,0000,,Вот например если мы инициализируем проект в данной папке и установим express в этот проект, то мы получим в папке Dialogue: 0,0:04:57.37,0:05:10.06,Default,,0000,0000,0000,,node_modules папку express, которая содержит файлы библиотеки. Мы можем разместить папку с файлами express Dialogue: 0,0:05:10.06,0:05:21.61,Default,,0000,0000,0000,,где-нибудь у себя на локальном компьютере, например в папке express и обращаться в дальнейшем в наших проектах Dialogue: 0,0:05:21.61,0:05:30.18,Default,,0000,0000,0000,,не к пакету, который находится в репозитории в интернете, а к пакету который находится на нашем компьютере в локальной файловой системе. Dialogue: 0,0:05:30.18,0:05:37.26,Default,,0000,0000,0000,,Это может пригодиться в том случае, если нужно например продемонстрировать работу с express локально, в условиях Dialogue: 0,0:05:37.26,0:05:47.78,Default,,0000,0000,0000,,ограниченного доступа к интернету. В этой ситуации можно заранее соответственно загрузить файлы и потом ими пользоваться. Dialogue: 0,0:05:47.78,0:05:58.86,Default,,0000,0000,0000,,Например в данном случае будет вот такой путь к express. Зная этот путь, мы теперь можем перейти в любую другую папку, Dialogue: 0,0:05:58.86,0:06:06.79,Default,,0000,0000,0000,,инициализировать проект и далее добавить в него библиотеку, указав этот путь с префиксом file. Dialogue: 0,0:06:06.79,0:06:14.44,Default,,0000,0000,0000,,После чего за долю секунды библиотека будет установлена уже не из интернета, а из файловой системы. Dialogue: 0,0:06:14.44,0:06:26.80,Default,,0000,0000,0000,,И мы тогда можем зареквайрить express именно из этого пути, и соответственно запустить и получить приложение. Dialogue: 0,0:06:26.80,0:06:36.63,Default,,0000,0000,0000,,Мы видим, что эта строка успешно исполнилась. И мы даже можем посмотреть теперь, что представляет собой App. Dialogue: 0,0:06:36.63,0:06:49.26,Default,,0000,0000,0000,,Далее у нас имеется базовый код, который мы можем вставить сюда и убедиться в том, что по адресу: localhost:4321 Dialogue: 0,0:06:49.26,0:06:59.57,Default,,0000,0000,0000,,ничего не работает. Теперь нажатием Ctrl+Enter запускаем эту часть notebook, и снова обновляем страницу. Dialogue: 0,0:06:59.57,0:07:08.49,Default,,0000,0000,0000,,Мы видим, что приложение запустилось. Такой вариант запуска очень полезен и нагляден на стадии изучения Dialogue: 0,0:07:08.49,0:07:16.42,Default,,0000,0000,0000,,библиотеки, когда хочется одновременно видеть и код, и результат его исполнения для того чтобы исследовать структуру файлов Dialogue: 0,0:07:16.42,0:07:21.88,Default,,0000,0000,0000,,библиотеки, и таким образом достичь более глубокого понимания происходящих процессов.