background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Creating a new programming language with Rust Part 48: The last feature"

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Теги видео
|

Теги видео

creating
new
programming
language
rust
part
48:
last
feature
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
Я надеюсь, что вы готовы к этому видео,
00:00:02
потому что мы собираемся сделать что-то, чего
00:00:05
раньше не видели,
00:00:08
возможно, нет, но
00:00:13
наш интерпретатор почти готов, я имею в виду, что теперь
00:00:17
это полностью рабочий язык программирования
00:00:18
с
00:00:20
первоклассным наследованием
00:00:24
классов функций и такими вещами, как что у
00:00:30
нас уже есть одна специальная функция, а
00:00:33
именно
00:00:34
оператор канала, давайте на самом деле
00:00:38
посмотрим на это,
00:00:41
так что это в синтаксическом анализаторе, должно быть
00:00:45
здесь, мы идем,
00:00:47
и у
00:00:49
нас есть идея для оператора канала,
00:00:53
который выглядит так, и что он делает, это
00:00:56
берет
00:00:59
это вещь с правой стороны и
00:01:00
применяет ее к
00:01:03
причине, которая мне нравится, потому что давайте
00:01:05
посмотрим здесь,
00:01:08
гм, это пара примеров,
00:01:11
скажем, у меня есть конвейер,
00:01:13
конвейер обработки, и я
00:01:16
могу сказать, что могу взять некоторые входные данные затем
00:01:19
примените эту функцию, затем запустите другую
00:01:21
функцию,
00:01:23
так что это очень удобно для такого рода
00:01:25
конвейеров
00:01:27
и рабочих процессов,
00:01:29
и у меня возникла идея, что, возможно, этот
00:01:33
язык мог бы быть языком для
00:01:37
написания
00:01:39
сценариев автоматизации в командной строке,
00:01:43
что по сути похоже на расширенную форму
00:01:46
пакетного написания сценариев. у него также есть классы
00:01:48
и т. д., и я хотел
00:01:51
добиться этого
00:01:58
с помощью синтаксиса,
00:02:01
который выглядит так,
00:02:04
допустим, вы определяете
00:02:07
что-то,
00:02:13
я не уверен, хочу ли я этого, давайте
00:02:15
удалим это, чтобы у
00:02:17
вас было имя переменной
00:02:19
скорее идентификатор, а затем у вас есть этот
00:02:21
вызов стрелки, который он получает, или что-то еще, что
00:02:24
получает команда,
00:02:26
а затем вы пишете
00:02:32
что-то в командной строке, так что, скажем,
00:02:33
[Музыка]
00:02:35
гмЭхо
00:02:38
в командной строке,
00:02:41
так что на самом деле, что произойдет, если я запущу это, я
00:02:43
иду по команде строку,
00:02:48
мы просто скажем «ОК», так что это работает так, как я
00:02:50
думал,
00:02:54
тогда это должно создать функцию вплоть
00:02:57
до команды имени, поэтому, если я это сделаю, на
00:03:01
самом деле давайте напишем точку с запятой, тогда, если
00:03:04
я напишу такую ​​​​команду, если я вызову ее,
00:03:07
она должна просто сказать
00:03:12
на самом деле я бы хотел, чтобы в
00:03:14
стихе
00:03:16
для
00:03:17
этого
00:03:19
вывод команды был зафиксирован
00:03:21
в переменной, поэтому я на самом деле хочу сказать
00:03:23
что-то вроде
00:03:25
результата, а затем мы можем его распечатать, а
00:03:32
затем мы получим что-то вроде этого, и
00:03:34
как Достигнем ли мы этого,
00:03:37
так что, если мы на самом деле
00:03:41
первое, что я хочу сделать, то, что мне нужно
00:03:43
сделать, это перейти сюда к токенам, которые
00:03:49
скорее будут типами токенов,
00:03:52
и мы собираемся добавить новый
00:03:54
символ, который мы назовемgetsgets,
00:04:00
и это будет этот,
00:04:03
тогда здесь, в сканере,
00:04:10
если мы найдем этот символ, нам нужно
00:04:13
проверить
00:04:17
что-то вроде еще, если
00:04:20
следующий знак минус, тогда мы
00:04:25
должны
00:04:26
вернуть кошек,
00:04:30
иначе
00:04:34
мы просто предполагаем, что это
00:04:40
меньше, позвольте мне посмотреть на этот,
00:04:45
окей поэтому, если совпадение правильное,
00:04:48
оно также продвигается вперед,
00:04:51
поэтому мы могли бы
00:04:55
написать быстрый тест,
00:04:57
это выглядит вот так:
00:05:00
здесь у нас есть некоторая команда исходного кода,
00:05:02
получает Echo hello, мы делаем сканер для
00:05:06
этого исходного кода, мы сканируем токены,
00:05:09
затем мы утверждаем некоторые вещи
00:05:14
первый токен должен быть идентификатором, затем
00:05:16
он должен получить токен получения, затем
00:05:19
должен быть строковым литералом, затем это
00:05:22
должна быть точка с запятой и, наконец,
00:05:25
файл ввода,
00:05:26
и
00:05:29
если я запущу этот тест,
00:05:35
вы увидите, что он пройден,
00:05:37
так что теперь давайте перейдем к синтаксическому анализатору
00:05:40
поэтому, если вы хотите сохранить этот синтаксис, который
00:05:42
мы только что рассмотрели, то,
00:05:45
как только мы пройдем, мы фактически окажемся в
00:05:48
операторе,
00:05:51
и
00:05:52
здесь нет
00:05:55
ключевого слова print, нет левых скобок, нет,
00:05:58
если нет, while нет возврата,
00:05:59
это просто оператор выражения,
00:06:02
и
00:06:03
он будет потреблять выражение,
00:06:07
и оно попытается использовать присваивание,
00:06:11
поэтому
00:06:18
я немного беспокоюсь о
00:06:20
конфликте с этим, но
00:06:23
мы можем побеспокоиться об этом в другой день,
00:06:28
поэтому, если вы сопоставляете токен равенства,
00:06:31
это просто обычные
00:06:33
присваивания,
00:06:41
но теперь, если мы сопоставляем
00:06:48
получаемые значения токен,
00:06:52
тогда нам нужно что-то сделать,
00:06:54
и нам нужно
00:07:02
получить правую часть, и это может
00:07:04
быть просто выражением, поэтому я думаю, что это,
00:07:06
вероятно,
00:07:12
немного раздражает, так что ладно,
00:07:15
давайте получим, что правая часть
00:07:17
будет выражением
00:07:20
а
00:07:25
затем нам нужно сделать вызываемый объект,
00:07:32
так как же нам сделать так, чтобы
00:07:36
этот парень был углем,
00:07:40
на самом деле я думаю, что у нас есть своего рода
00:07:43
проблема, поэтому я думаю, что
00:07:48
то, что мы делаем сейчас, должно быть
00:07:51
утверждением, похожим на
00:07:54
объявление функции,
00:08:00
так что если мы
00:08:03
подойдем сюда,
00:08:09
хорошо, позвольте мне взглянуть на это,
00:08:16
да, так что это создает выражение, так что
00:08:18
мы хм,
00:08:21
как мы хотим это сделать,
00:08:24
может быть, мы могли бы создать новое ключевое слово, хм, так что
00:08:42
давайте
00:08:49
теперь мы не можем сделать каким мы хотим видеть
00:08:51
ключевое слово,
00:08:56
потому что я не хочу делать это, например, смотреть
00:08:57
вперед, проходя туда, где мы, это
00:09:03
нехорошо, поэтому,
00:09:09
возможно, мы можем просто
00:09:12
сделать это,
00:09:15
потому что это своего рода функция, которую
00:09:17
мы создаем, чтобы пространство было последовательным
00:09:21
Итак, в любом случае,
00:09:23
мы пойдем,
00:09:27
затем мы нажмем на это, так что хорошо,
00:09:30
мы создаем функцию,
00:09:32
мы используем идентификатор,
00:09:36
затем
00:09:37
нам нужно на самом деле пойти куда-то еще, поэтому
00:09:40
мы должны сказать, что если
00:09:42
мы сопоставляем токен get,
00:09:48
тогда нам нужно вернуть
00:09:52
Я, который получает
00:09:54
оператор,
00:09:57
и я думаю, это нормально,
00:10:05
поэтому мы сделаем
00:10:08
этого парня
00:10:14
в порядке, на
00:10:17
самом деле, у
00:10:19
нас есть имя,
00:10:23
и это должно затем вернуться
00:10:27
в целом, это должно вернуть
00:10:30
функцию,
00:10:33
так что, скажем, возврат ок,
00:10:36
телефон на самом деле функция оператора,
00:10:42
например, здесь,
00:10:44
параметры правильного имени,
00:10:47
так что имя - это имя,
00:10:50
параметры - пустой вектор,
00:10:53
а
00:10:55
тело -
00:11:00
назовем его, назовем его телом команды.
00:11:13
Я не знаю, может быть, так и должно быть, это
00:11:20
должно быть что-то вроде оператора совершенно нового типа.
00:11:28
Я думаю, это нормально, давайте назовем это
00:11:32
командная функция у нее есть имя, у нее
00:11:35
нет аргументов,
00:11:37
а затем она просто есть,
00:11:41
и давайте назовем ее командой, которая представляет собой
00:11:43
строку,
00:11:47
а затем мы вернемся к синтаксическому анализатору, мы
00:11:50
не собираемся получать функцию, мы
00:11:52
собираемся вернуть командную функцию это
00:11:55
имя, и
00:11:58
оно имеет
00:12:00
так, давайте скажем,
00:12:06
как мы конкретно потребляем строку, а
00:12:12
вот эту мы можем удалить,
00:12:15
это слишком много,
00:12:25
мы можем использовать тип токена
00:12:30
и строку, тип токена,
00:12:34
ну, у нас есть строковый литерал,
00:12:39
который является тип токена, поэтому мы можем на самом деле
00:12:42
сказать, что
00:12:45
внутренняя функция
00:12:48
может сказать,
00:12:50
что
00:12:53
само тело команды, которое использует
00:12:58
строковый литерал,
00:13:01
и тогда
00:13:06
да, все, что
00:13:09
это не имеет никакого смысла,
00:13:11
зачем нам разворачивать то, что мы можем сделать,
00:13:15
давайте посмотрим,
00:13:19
да, это называется командой,
00:13:33
так что что это за мошенник, возвращается снова,
00:13:35
он возвращает токен,
00:13:39
и
00:13:42
что теперь имеет токен,
00:13:49
мне нужно пойти проверить, что
00:13:51
нарисованный токен
00:13:53
имеет тип токена, имеет шов ноги, так что я
00:13:56
думаю, это
00:14:02
о, мы можем принять буквальное
00:14:07
значение,
00:14:11
давайте возьмем поток ног, который
00:14:14
должен быть в порядке,
00:14:21
и вот,
00:14:24
теперь у нас есть этот конкретный
00:14:29
оператор, так что теперь давайте посмотрим, что
00:14:31
будет куча ошибок,
00:14:34
например,
00:14:37
оператор Insight
00:14:46
и
00:14:49
Shake вместо этого внутри есть решатель, так что,
00:15:05
собственно,
00:15:10
что мы хотим сделать в этом случае
00:15:13
это что-то вроде объявления переменной,
00:15:16
поэтому давайте относиться к этому так,
00:15:24
и это должно работать, скажем,
00:15:26
разрешите переменную,
00:15:31
например, и
00:15:35
посмотрим, что еще мы можем найти
00:15:38
что-то в Интерпретаторе,
00:15:43
и
00:15:45
ладно, это самое интересное,
00:15:49
теперь у нас есть командная функция
00:15:51
и когда это интерпретируется, нам
00:15:53
нужно вернуть вызываемый объект, который
00:15:58
запускает
00:16:07
и запускает команду оболочки,
00:16:12
захватывает STD
00:16:17
и возвращает его в строке
00:16:22
что-то вроде этого,
00:16:28
поэтому сначала
00:16:31
нам нужно создать вызываемый объект,
00:16:34
теперь что находится внутри вызываемого объекта,
00:16:41
это имя,
00:16:47
это airity, это родительская среда,
00:16:53
э-э, некоторые параметры и тело, тело
00:16:58
- это список операторов,
00:17:01
так что на самом деле я не хочу создавать функцию lux,
00:17:11
я думаю, я, возможно, хочу относиться к ней как к
00:17:17
собственной функции, где это мы
00:17:23
ладно, у нас есть какая-то
00:17:26
естественная функция естественная функция
00:17:30
да, встроенная функция - это что-то
00:17:35
вроде этого, и у нас есть
00:17:38
ее пример,
00:17:42
я просто
00:17:45
возьму это для справки,
00:17:47
а не здесь, а здесь,
00:17:52
хорошо,
00:18:02
отлично,
00:18:05
поэтому мы хотим создать локальную функцию,
00:18:11
которая вызывает командную строку,
00:18:19
так что давайте сделаем так,
00:18:24
и на
00:18:26
что она жалуется,
00:18:31
я не могу сейчас просто удалить это, как
00:18:37
вы делаете замыкания, мне нравится сходить с
00:18:39
ума прямо сейчас,
00:18:42
окей, проблема в этом что-то,
00:18:46
а потом это неправильно,
00:18:48
должно быть так, хорошо,
00:18:52
в любом случае,
00:18:53
хорошо, после долгих усилий с
00:18:57
проверкой питания, я думаю,
00:19:00
вот код, который
00:19:04
вы
00:19:05
интерпретируете оператор функции команды,
00:19:08
подобный этому, у нас есть имя, и у нас есть
00:19:10
сама команда, которую
00:19:12
нам нужно сделайте локальный клон, не спрашивайте
00:19:14
меня, почему я это имею в виду, это в основном для того, чтобы получить
00:19:17
данные из этой ссылки, которая у нас есть,
00:19:19
это на самом деле
00:19:20
ссылка или что-то в этом роде,
00:19:22
затем мы перемещаем этот клон в замыкание,
00:19:27
нам нужно клонировать его снова, поэтому что
00:19:31
замыкание может использовать данные снова
00:19:34
и снова и снова,
00:19:37
но в любом случае мы помещаем эту команду в
00:19:39
тип команды из
00:19:42
команды процесса STD,
00:19:47
мы получаем выходные данные, которые мы просто принудительно
00:19:49
разворачиваем,
00:19:50
может быть лучше,
00:19:52
может быть хуже,
00:19:53
тогда мы возвращаем выходные данные в виде строки
00:19:57
значение,
00:19:59
затем мы создаем значение функции из
00:20:01
того,
00:20:02
что является собственной функцией,
00:20:06
и у
00:20:09
нее есть имя, которое ей дали, и у нее
00:20:12
есть эта функция, а затем мы определяем
00:20:14
эту
00:20:16
функцию здесь,
00:20:19
поэтому давайте снова запустим проверку покрытия, там ничего нет,
00:20:24
давайте
00:20:26
посмотрим на это снова,
00:20:30
так что если мы запустим его,
00:20:34
команда Echo, что произойдет,
00:20:38
ожидаемо,
00:20:42
мне интересно,
00:20:50
какого черта, поэтому мы сидим здесь,
00:20:55
да, по какой-то причине это не так,
00:20:59
поэтому оно должно быть здесь,
00:21:03
потребляет строковый литерал,
00:21:08
и все в
00:21:22
порядке, я не знаю Я не знаю,
00:21:23
что происходит, поэтому давайте поставим
00:21:25
точку с запятой,
00:21:27
чтобы снова запустить ту же команду,
00:21:32
так где же здесь говорится, что ожидается,
00:21:37
ах, так в объявлении переменной,
00:21:42
и почему
00:21:48
давайте избавимся от этого одного
00:21:52
наследования в его мысли, которая впереди,
00:21:57
все равно убила вас,
00:22:05
но это здесь наверняка жалуется,
00:22:18
так что
00:22:21
давайте попробуем подумать о том, что делает проход,
00:22:25
получает объявление,
00:22:28
токена VA нет, поэтому мы должны нажать на
00:22:32
этот оператор,
00:22:35
ах,
00:22:36
теперь это потому, что мы действительно изменили
00:22:39
синтаксис,
00:22:42
и он должен выглядеть так,
00:22:47
и теперь он говорит ожидаемое выражение,
00:22:53
и
00:22:56
я понятия не имею, откуда оно взялось, оно
00:22:59
пришло отсюда,
00:23:04
это синтаксический анализатор,
00:23:07
достаточно справедливо,
00:23:13
поэтому мы должны пойти сюда и сказать, что
00:23:16
передача получает то, что
00:23:21
работает.
00:23:26
Тело команды - это то, что
00:23:29
тело команды - это строка токена, у которой
00:23:33
есть эта нога. шов, который имеет
00:23:38
литерал и какой-то номер строки,
00:23:43
а затем мы
00:23:49
будем использовать точку с запятой,
00:23:59
хорошо,
00:24:02
теперь у нас есть еще одна проблема,
00:24:05
преобразователь,
00:24:07
который связан
00:24:12
с этим хаком, скорее всего, так что
00:24:14
давайте перейдем сюда,
00:24:16
да, так что на самом деле он не поддерживается
00:24:19
скажем,
00:24:21
если это командная функция
00:24:25
с именем и командами, которые,
00:24:28
вероятно, не нужны,
00:24:34
тогда мы что-то делаем, и мы
00:24:38
очистим имя
00:24:40
и определим имя, в этом нет
00:24:46
необходимости,
00:24:49
в команде нет ничего, что
00:24:51
мы можем
00:24:53
разрешить, так что же он сейчас говорит, он что-
00:24:59
то говорит,
00:25:02
потому что мне нужно это
00:25:11
право, хорошо,
00:25:13
тогда нам
00:25:15
нужно пойти сюда и давайте изменим это
00:25:17
развертывание, потому что у меня есть
00:25:20
подозрение, что это то, что происходит,
00:25:22
давайте изменим это на ожидание,
00:25:24
и мы скажем,
00:25:27
не удалось,
00:25:37
мы скажем, не удалось выполнить команды.
00:25:40
Я выполнил эту
00:25:42
команду запуска Panic at Fields,
00:25:46
и ей не нравится то, что
00:25:50
мы ей дали,
00:25:52
и причина в том, что
00:25:54
скажем,
00:25:57
команда, которая клонирует, и скажем, она
00:26:00
стала
00:26:02
командой, это команда
00:26:05
новый Хорошо,
00:26:14
как нам разделить,
00:26:20
спасибо, что
00:26:21
-то из этого есть в этом проекте,
00:26:24
да, у нас есть вот этот,
00:26:32
так что вы можете сказать разделенная команда.
00:26:34
Может быть, у этого
00:26:39
будет первая часть,
00:26:43
и тогда мы сможем точно сказать,
00:26:55
и эта должна быть в этом случае изменяемый,
00:26:58
хорошо, поэтому мы принимаем
00:27:01
команду, разделяем ее пробелами,
00:27:04
первая часть — это имя
00:27:05
командира, остальные рассматриваются как
00:27:07
аргументы,
00:27:09
а затем мы можем, наконец, сказать,
00:27:12
что вывод это вывод этой
00:27:14
команды, и скажем, теперь команда не удалась.
00:27:17
Я также немного волнуюсь, что это
00:27:19
не сработает,
00:27:20
но давайте попробуем
00:27:26
сначала еще раз,
00:27:30
поэтому давайте попробуем на самом деле более простой вариант, который
00:27:36
мы назовем Echo hello,
00:27:46
хм,
00:27:48
так что по какой-то причине это все еще терпит неудачу,
00:27:51
поэтому я хочу проверить, что мы
00:27:54
здесь сделали, так что
00:27:57
[Музыка]
00:28:00
что это значит, что это
00:28:04
значит,
00:28:19
окей, я понятия не имею, что это значит, но
00:28:22
это должно быть актуально,
00:28:26
можем ли мы напечатать эту
00:28:32
команду, да, это то, что
00:28:42
это такое
00:28:48
ах, трес вокруг меня, так что это было неправильно,
00:28:50
мы должны сказать: «
00:28:54
ОК, запускаем команду
00:28:56
Эхо,
00:28:59
привет,
00:29:05
и что с этим, что
00:29:18
с этим побегом,
00:29:22
так что что-то явно пошло не так,
00:29:31
Аманда была
00:29:34
чем-то,
00:29:38
команда была Эхо, привет,
00:29:41
здорово, и какие
00:29:46
именно части,
00:29:50
так что здесь произошло что-то забавное,
00:30:00
иностранное»
00:30:02
Я думаю, что проблема
00:30:15
не в том,
00:30:21
как нам передать
00:30:28
напиток
00:30:31
в буквальном смысле
00:30:54
да, так что проблема в буквальном смысле этого
00:31:01
странного побега, который он делает, что на
00:31:04
самом деле является
00:31:07
пиццей,
00:31:16
так что могу ли я заменить
00:31:21
да, здесь то же самое,
00:31:25
давайте посмотрим, сработает ли это,
00:31:30
и это также создать новую строку, что, я
00:31:34
думаю, нормально,
00:31:38
кнопка означает, что нам нужно исправить что-то
00:31:44
вроде этого, теперь давайте запустим тесты,
00:31:53
да, и еще здесь есть тест, который
00:31:56
сейчас терпит неудачу,
00:31:58
хм,
00:32:03
верно,
00:32:06
теперь должно быть шесть,
00:32:09
тогда мы должны
00:32:13
сделать еще один один из тех, которые нам нужно
00:32:17
увеличить, который не сработал, как я себе
00:32:21
представлял,
00:32:29
почему он делает это так, один, два,
00:32:31
три,
00:32:36
окей,
00:32:37
неважно,
00:32:45
правда, и что это за забавная штука,
00:32:48
это просто весело,
00:32:55
теперь он говорит, проходит,
00:32:57
теперь все проходит,
00:33:03
и теперь у нас есть язык сценариев,
00:33:05
в котором есть поддержка
00:33:08
командной строки,
00:33:13
поэтому я думаю, что это довольно круто, вот
00:33:18
просто забавный пример того, что вы
00:33:20
могли бы сделать,
00:33:21
давайте определим команду, в которой мы будем захватывать
00:33:24
захват слова внутри этого файла, в котором
00:33:28
мы находимся, и который на самом деле должен вернуть
00:33:31
эту строку,
00:33:34
хорошо, поэтому давайте поместим эту строку здесь, а
00:33:37
затем будет дополнительная новая строка,
00:33:40
так что давайте запустим ее,
00:33:45
и
00:33:46
теперь у нас есть
00:33:49
своего рода проблема, о которой я не думал, что
00:33:50
она также создаст
00:33:55
эту строку, но тогда, если мы поместите эту строку,
00:33:58
теперь она создаст и
00:34:02
эту строку,
00:34:04
так что на самом деле у нас нет возможности заставить
00:34:06
это работать, поэтому давайте
00:34:12
вместо этого создадим сценарий для результата, и это
00:34:15
должно просто дать нам эти две строки
00:34:25
и дополнительную новую строку, и теперь это будет теперь
00:34:28
это не работает не работает, что бы вы ни делали,
00:34:32
окей, нам нужно взять какой-нибудь другой файл,
00:34:36
мы
00:34:39
возьмем
00:34:42
команду Echo,
00:34:45
и мы предпочитаем результаты
00:34:48
и на самом деле просто повторяем это, так что
00:34:50
давайте попробуем запустить это сейчас,
00:34:53
окей, это
00:34:55
сработало, давайте запустим тесты
00:35:00
и это не удалось,
00:35:07
этоне удалось,
00:35:21
упс,
00:35:22
случаи сами по себе
00:35:29
забавны, когда я запускаю здесь, это работает, но когда
00:35:32
я запускаю это здесь, это
00:35:35
не работает, все в
00:35:45
порядке, так что это связано с тем, как
00:35:47
переменные извлекаются из чего-то,
00:35:48
когда мы это запускаем, мы видим, что это работает, и
00:35:51
на данный момент этого будет достаточно, вот и
00:35:55
все, мы только что
00:35:59
изобрели bash 2.0,
00:36:01
увидимся в следующем

Описание:

Source code: https://gitlab.com/codescope-reference/cii

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Creating a new programming language with Rust Part 48: The last feature"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Creating a new programming language with Rust Part 48: The last feature" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Creating a new programming language with Rust Part 48: The last feature"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Creating a new programming language with Rust Part 48: The last feature" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Creating a new programming language with Rust Part 48: The last feature"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Creating a new programming language with Rust Part 48: The last feature"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.