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

Скачать "How Zig is used at Uber - Motiejus Jakštys"

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

Оглавление

0:00
Intro
0:41
About me
3:09
About Uber's tech stack
4:49
How does Uber use Zig?
6:14
About this talk
7:15
2019: Hermetic C++ toolchain
10:16
2021 Jan: finding and reporting bugs to zig cc
11:28
2021 June: start of bazel-zig.cc
15:28
2021 End: little progress
17:00
2021: Recap
19:12
2021 End: things start moving
20:22
Onboarding new technology in a megacorp
24:49
Support Contract
25:11
2022-02-02: the diff is landed
27:06
Next steps
32:13
How could this have failed?
36:30
TLDR
Теги видео
|

Теги видео

go
zig
clang
cgo
ziglang
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
все записано, ок, мне
00:00:02
стоит вас представить,
00:00:04
нет, все в порядке,
00:00:06
здравствуйте,
00:00:07
вы меня слышите,
00:00:09
здравствуйте,
00:00:10
доброе утро,
00:00:11
я забыл это по-итальянски, что такое, доброе
00:00:13
утро,
00:00:14
бонжурно,
00:00:15
доброе утро,
00:00:18
спасибо, что пришли, я Матиас,
00:00:21
вот мотивы, я работаю в uber, сегодня я
00:00:24
ухожу чтобы поговорить о том, как мы
00:00:26
используем get uber, для меня большая
00:00:28
честь и
00:00:30
очень удивлено, что этот парень все еще
00:00:33
хочет, позвольте мне поговорить на сцене, единственный
00:00:35
ведущий, не являющийся zsf, э-э, так что я очень
00:00:37
скромен за это, спасибо вам
00:00:40
немного обо мне я сделаю очень
00:00:42
короткую демонстрацию, вдохновленную Фрэнком, которая
00:00:44
не будет связана с информатикой.
00:00:46
Я Матиас, я работаю в uber чуть
00:00:48
больше шести лет. Я присоединился к uber,
00:00:51
когда моему первому сыну было две недели, так что
00:00:53
это довольно легко запомнить,
00:00:55
я был разработчиком на Erlang большую часть
00:00:58
своей жизни до появления Uber и системным администратором, а
00:01:01
также я картограф,
00:01:03
ну,
00:01:04
официально, я думаю,
00:01:05
и я собираюсь сделать очень быструю демонстрацию
00:01:08
картографии обо мне,
00:01:10
э-э неправильный неправильный победитель
00:01:12
здесь это моя
00:01:13
дача это город моей
00:01:15
дачи
00:01:16
это фотография с самолета
00:01:21
и это национальная
00:01:23
фотография это аэрофотоснимок, который
00:01:26
вы можете видеть,
00:01:27
как будто он сделан литовским правительством
00:01:30
я думаю Bing Maps тоже использует это,
00:01:33
и
00:01:35
здесь это вот оно, и это
00:01:37
мое
00:01:38
место,
00:01:39
и я хотел сделать его карту, но
00:01:41
это разрешение не очень хорошее, вы
00:01:44
можете видеть, поэтому я создал
00:01:46
другое искусство фотографии, как я
00:01:48
сделал, я снял, я сфотографировал всю территорию в
00:01:51
два квадратных километра
00:01:52
с помощью моего дешевого потребительского дрона, вот
00:01:56
как это выглядит,
00:01:58
это мое
00:01:59
20 миссий
00:02:01
700 извините 1700 фотографий
00:02:05
около 10 часов работы снаружи и еще
00:02:09
больше работы внутри, чтобы сшить их
00:02:10
вместе и воплотить это в жизнь
00:02:12
и вот результат
00:02:14
это моя дача это моя машина
00:02:18
мне прямо сейчас нравится когда это фото
00:02:20
сделано это типа
00:02:22
место где можно спрятаться от солнца вот я
00:02:23
сижу вот тут за крышей
00:02:26
и
00:02:27
вот оно Дешевый дрон высотой 80 метров
00:02:31
возвращается к исходному состоянию,
00:02:34
и вы можете видеть, как это получается, когда вы создаете
00:02:36
любую карту, вы обычно в 99 случаях
00:02:39
начинаете с фотографии, а затем
00:02:41
пишете свои векторы, рисуете свои векторы,
00:02:43
а затем делаете стилизацию, так что
00:02:45
использовать это было немного проще, и
00:02:49
это везде одинаково.
00:02:52
Это замечательная церковь,
00:02:54
которую я посещаю по воскресеньям, когда бываю
00:02:57
там, это немного запутанно, но все равно очень красиво
00:02:59
вот и все,
00:03:02
я хочу
00:03:09
немного поблагодарить вас за мою компанию uber,
00:03:13
она началась в 2010 году,
00:03:18
к настоящему времени она совершила более 15 миллиардов поездок,
00:03:19
и мы создали
00:03:21
довольно
00:03:23
много крутых
00:03:25
и инновационных
00:03:26
инновационных технологий, чтобы это произошло, чтобы это
00:03:29
произошло случиться, все эти поездки,
00:03:32
это несколько тысяч инженеров, это
00:03:34
довольно много,
00:03:36
в первую очередь,
00:03:38
идите в Java,
00:03:41
я в
00:03:42
этом собираюсь, Java - это
00:03:44
мандат или направление всей компании, в зависимости от того, как вы
00:03:46
хотите, как вы видите мир,
00:03:48
э-э, я большую часть времени занимаюсь инфраструктурой
00:03:51
интерес, как
00:03:53
будто весь инфраструктурный код
00:03:55
написан на Go, так что я работаю Go-
00:03:58
разработчиком, так как в течение последних шести лет
00:04:01
существуют редкие исключения
00:04:02
для, ну, за исключением, например, не-go и Java, так что
00:04:07
иногда они похожи на очень нишевые случаи,
00:04:08
когда вам нужен, например, c plus plus,
00:04:10
но они очень редки,
00:04:13
и у нас есть язык монорепортера, поэтому
00:04:15
в настоящее время у нас есть четыре монорепозитория. go
00:04:16
монорепо - самый большой, потому что вся
00:04:18
инфраструктура работает на ходу и работает
00:04:21
довольно много бизнес-приложений.
00:04:22
on go
00:04:24
монорепозитории go получают статус очень
00:04:27
мощного приложения, например, когда мощная
00:04:29
машина занимает около секунды,
00:04:30
это примерно на порядок больше
00:04:33
с точки зрения количества строк и файлов,
00:04:35
чем ядро ​​​​Linux, так что вы можете представить
00:04:37
размер код, который мы
00:04:38
используем, и это только монорепозиторий go,
00:04:42
так что
00:04:44
внутри этого монорепозитория много кода и много движущихся частей,
00:04:45
так что это очень кратко об uber, а
00:04:49
как uber использует zig, вот
00:04:52
что мы собираемся выяснить но,
00:04:53
очевидно, это
00:04:54
очень легко узнать очень быстро,
00:04:57
когда
00:04:58
мы договорились с Лорисом, что я собираюсь
00:05:00
провести этот доклад,
00:05:02
он написал в Твиттере, и в течение часа на нашем
00:05:04
инженерном канале, как вы можете видеть в
00:05:05
верхней части,
00:05:07
этим поделились
00:05:09
Оказывается, у нас
00:05:11
внутри есть зиг-канал уже больше года,
00:05:15
и я не знал об этом,
00:05:19
поэтому
00:05:20
это было отмечено, и
00:05:21
внутри была ветка, и
00:05:24
мой коллега Абхинав
00:05:27
как бы подвел итог, как мы используем uber,
00:05:30
как мы используем получите uber, и это
00:05:33
следующий слайд, так что
00:05:34
прочитайте его, и мы его разберем,
00:05:38
это довольно круто, как будто это
00:05:39
tldr, мы используем только цепочку инструментов zix, а
00:05:43
не язык, он не полностью развернут,
00:05:47
он позволит кросс-компиляцию c
00:05:49
основанный код
00:05:50
и c
00:05:51
uh c go - это
00:05:53
c, на котором вы можете написать расширения C для go,
00:05:55
а затем скомпилировать их в один и тот же двоичный файл,
00:05:58
хм, так это называется c go, и мы, мы, мы
00:06:00
делаем много этого,
00:06:02
и цепочка инструментов zig отбросит
00:06:04
зависимость от компилятора системы C,
00:06:06
вот как мы его правильно используем,
00:06:09
окей, есть вопросы,
00:06:13
окей, я мог бы закончить этот разговор, как будто я
00:06:16
удовлетворил бы заголовок,
00:06:18
но
00:06:19
вы, вероятно, захотите узнать
00:06:20
немного больше о том, как это произошло,
00:06:22
поэтому я
00:06:23
изначально
00:06:24
заголовок был как мы
00:06:27
подключились к
00:06:29
зигзагу, и это было бы более точно
00:06:31
с точки зрения времени разговора, поэтому
00:06:34
мы поговорим об этом сейчас,
00:06:35
почему нам это нужно, это
00:06:37
будет в несколько похожих этапов, почему, когда мы
00:06:40
думаем, что нам нужно zig и зачем нам это нужно,
00:06:42
как мы адаптируемся, как
00:06:44
выглядел процесс в нашей
00:06:46
организации с таким стеком технологий,
00:06:49
и как выглядит будущее,
00:06:51
каким я вижу его сейчас,
00:06:56
так что давайте начнем с того, что
00:06:58
убера не было. компания монорепо все
00:07:00
время, когда монорепо появилось
00:07:02
в 2018 году, так что прошло уже два три
00:07:06
года, пока я был там, мы начали с
00:07:07
микрорепо,
00:07:09
а потом все
00:07:11
начало переходить на монорепо, и
00:07:13
золотое монорепо было первым монорепо
00:07:15
в 2019 году, когда было подключено несколько сотен сервисов,
00:07:20
эта задача была создана внутри
00:07:24
нас, у монорепо с самого начала была
00:07:28
своя собственная цепочка инструментов go, поэтому монорепозиторий
00:07:30
настраивает цепочку инструментов go и
00:07:32
загружает ее, поэтому,
00:07:34
где бы вы ни запускали наш код, он будет использовать одну и
00:07:36
ту же версию go,
00:07:38
но он будет использовать
00:07:42
компилятор c plus plus хоста,
00:07:45
поэтому он не является герметичным.
00:07:47
Герметичная цепочка инструментов означает, что это
00:07:49
герметичная компиляция, что означает, что она не
00:07:52
требует ничего на хосте, все
00:07:54
настроено, все зависимости, все
00:07:56
компиляторы, все инструменты есть. в
00:07:58
том же репозитории,
00:08:00
что означает, что на самом деле не имеет значения, на
00:08:02
каком хосте вы его запускаете и на
00:08:03
каком дистрибутиве вы его запускаете,
00:08:05
если это Linux и т. д., поэтому go герметичен
00:08:08
с самого начала, c plus plus
00:08:11
не герметичен, поэтому все, что он найдет на
00:08:13
хосте, он будет использовать, он будет использовать clang в
00:08:15
Linux, ой, извините, он будет использовать clang в
00:08:17
darwin, в Mac OS, он будет использовать любую
00:08:20
версию gcc, которую найдет, когда он находится в Linux,
00:08:23
и будет жаловаться, если в Linux нет gcc
00:08:26
это очень проблематично, когда, ну,
00:08:29
по многим причинам, среди прочего,
00:08:31
мы должны воткнуть одну из
00:08:34
ну,
00:08:35
по крайней мере, одну вещь, которую мы не можем обновить,
00:08:36
например, компилятор, мы не можем полагаться на
00:08:38
новые функции, потому что всегда есть что-то, что можно
00:08:40
использовать,
00:08:41
например, более старый дистрибутив, так что
00:08:44
с этим много проблем, но
00:08:46
никто, никто, на самом деле, никому не
00:08:48
было достаточно больно,
00:08:50
и это не то, что мы
00:08:52
могли бы решить быстро, э-э, используя,
00:08:56
кто знает, кто слышал о базеле, кстати, о,
00:08:59
это довольно много, вот и все
00:09:00
удивительно, поэтому использовать go с go Hermetic
00:09:03
Go Tool Chain Hermetic Go Tool Chain
00:09:06
только для Go с Базиликом очень просто, это значение по
00:09:08
умолчанию, если вы используете правила Go, вот
00:09:10
что вы получаете,
00:09:11
но настроить C Plus Plus сложно,
00:09:14
как и есть, это
00:09:15
я не делаю Не знаю почему, но
00:09:18
системы echo для герметичных компиляторов C Plus Plus
00:09:19
просто нет,
00:09:21
поэтому никто серьезно ею не занялся,
00:09:23
потому что инвестиции значительны,
00:09:25
и не было большой проблемы,
00:09:28
поэтому
00:09:29
на ближайшие два года,
00:09:31
январь 2021 года,
00:09:33
произошло одно событие, у меня была у меня родился второй ребенок
00:09:36
в январе и я ушла в
00:09:39
трехмесячный отпуск по уходу за ребенком
00:09:41
и только в начале
00:09:43
отпуска по уходу за ребенком я обнаружила это,
00:09:46
в то время это было не ново, но вот
00:09:48
как
00:09:50
вы знаете, я нашел этот компилятор
00:09:52
и начал возиться, я скомпилировал
00:09:55
Первое, что я попытался скомпилировать, это, я
00:09:57
думаю, xz
00:09:58
компрессор и декомпрессор, и
00:10:01
я сразу же наткнулся на какое-то
00:10:03
возможное или неопределенное поведение, или
00:10:05
оно отсутствовало, как компоновщик или
00:10:07
что-то в этом роде, поэтому оно не работало, но некоторые
00:10:08
вещи работали, как sqlite, работавший из
00:10:10
box, и я был поражен, потому что это
00:10:13
огромный проект, и некоторые другие вещи
00:10:14
работали,
00:10:16
и я начал, я возился, я
00:10:20
собирал разные вещи, ну, и я
00:10:22
начал, это было для личного использования, например, из
00:10:25
любопытства, а не для работы, как будто я был в
00:10:28
отпуске по уходу за ребенком, у меня было ребенок, у меня была
00:10:30
магистерская диссертация, магистерская диссертация по картографии,
00:10:32
поэтому я не работал,
00:10:35
я сообщал об ошибках,
00:10:37
тех ошибках, которые я нашел, какое-то
00:10:39
время ничего не происходило, потом я начал, ок, может быть, мне
00:10:41
нужно сделать пожертвования, я начал делать
00:10:43
пожертвования,
00:10:44
может быть, что-то произойдет с тобой Теперь я вижу, к
00:10:46
чему это идет,
00:10:48
ничего не произошло
00:10:50
ох, черт,
00:10:51
типа, окей, я был как будто ожидал
00:10:53
внимания, у меня его не было, окей, так
00:10:55
где мое внимание, я спросил о
00:10:56
намерении,
00:10:58
вот журнал irc,
00:11:02
это была моя первая или вторая запись в irc,
00:11:05
и я спросил, типа, откуда я знаю, как мне
00:11:08
заставить вас работать над тем, что для
00:11:10
меня важно, и он ответил, что нет, поэтому
00:11:17
я
00:11:18
хотел выкопать яму и потом спрятаться
00:11:19
там, это было действительно очень очень
00:11:21
стыдно, но теперь, оглядываясь назад, это все
00:11:23
очень смешно,
00:11:27
окей, я ничего не мог сделать, типа,
00:11:30
в общем, я сообщил об этих ошибках, которые я
00:11:32
портил, вы знаете, но это просто лежало
00:11:34
там, и,
00:11:35
ну, но это все еще было у меня в голове, как будто у
00:11:38
нас есть эта проблема
00:11:39
в моей работе, у нас нет герметичная
00:11:42
цепочка инструментов, и на самом деле нет ничего, на чем можно было бы
00:11:44
основывать ее,
00:11:45
ну, но мы были освещены, но и есть zig,
00:11:49
который может кросс-компилировать вещи, он
00:11:51
маленький, вы знаете, это потрясающе,
00:11:53
сообщение в блоге великолепно, как будто
00:11:55
это действительно хорошая часть,
00:11:57
но недостающая часть был связующим звеном
00:11:59
между Бэзилом и Zig, так что настройка
00:12:01
цепочки инструментов C Plus Plus и Zig - это
00:12:03
немалый подвиг, я пытался, но потерпел неудачу,
00:12:05
ну, вместо этого я продолжил писать диссертацию,
00:12:08
что, вы знаете, может быть, может быть, это хорошая
00:12:10
вещь,
00:12:11
а затем в июне
00:12:14
создал Адама, э-э,
00:12:16
очень хорошее доказательство концепции базального zxcc, так что
00:12:20
базального и зигзагообразной обертки, которая позволяет использовать
00:12:23
герметичную цепочку инструментов с использованием zig c,
00:12:27
я подумал: вау, это все
00:12:29
еще не хватает многих вещей, но
00:12:31
в принципе это работало, например, в
00:12:34
самой первой версии, потому что zig
00:12:36
не сделал архив,
00:12:39
что это такое, команда,
00:12:41
которую
00:12:42
вы знаете,
00:12:43
архиватор,
00:12:45
так что она загружала весь
00:12:46
материал llvm, например, целую
00:12:49
штуку размером в полгигабайта, только для zig, чтобы
00:12:52
использовать llvms ar,
00:12:54
но для всего остального это было использовал zig
00:12:57
cc,
00:12:58
и это было
00:12:59
круто, тогда я сразу же сообщил, что
00:13:02
нам нужен zig ar, а потом, может быть, я попробовал
00:13:05
это сам, я потратил
00:13:07
довольно много времени, пытаясь это, и у меня ничего не вышло, я не
00:13:10
был, вы знаете, я не смог
00:13:12
это реализовать, но это был не Эндрю продолжал
00:13:15
говорить мне, что это вроде не сложно, но я
00:13:16
потерпел неудачу,
00:13:20
а потом Якоб
00:13:22
по какой-то причине пошел и реализовал это
00:13:23
[Музыка]
00:13:25
так что спасибо, что
00:13:29
ты сказал, да,
00:13:31
ты это сделал,
00:13:32
я могу указать тебе, как ты, и я
00:13:34
был удивлен, что не сделал ожидаю, что
00:13:39
я интегрирую, как в тот же день, когда я интегрировал
00:13:41
zig, и я перестал загружать
00:13:43
llvm
00:13:44
[Музыка]
00:13:46
как это вообще назвать
00:13:48
да, но то, что огромное турбо - это не значит, что
00:13:51
оно огромно, как
00:13:53
lvm-
00:13:58
гигант, да,
00:13:59
тогда я, а потом они немедленно
00:14:00
объявил об этом, как будто это оно в
00:14:02
некоторой степени пригодно для использования, как будто я уже
00:14:04
был в состоянии использовать его для своего проекта, мой
00:14:07
небольшой проект,
00:14:08
этот базилик и клей, и вот,
00:14:11
вот, он работает, в нем есть
00:14:14
ошибки, вроде есть около 10 ошибок
00:14:17
позже в электронном письме я пытаюсь донести это так, как будто
00:14:19
я тайком пытаюсь привлечь их внимание,
00:14:21
типа: «ОК, вот что мешает мне
00:14:23
принять это больше», поэтому я перечислил некоторые из
00:14:25
досадных ошибок, но объявление было
00:14:27
опубликовано, как будто слово вышло, и
00:14:29
цепочка инструментов вроде как работает, так что я был в
00:14:31
положении, когда у меня был клей,
00:14:34
ну,
00:14:35
ты знаешь, Зиг и Бэзил, так что у
00:14:37
тебя есть резюме, нет,
00:14:39
хорошо, в следующий раз мы скоро подведем итоги, и у
00:14:41
меня есть этот клей
00:14:43
и базилик, зиг клей, и у меня есть
00:14:46
монорепо нашей компании, мой отпуск по уходу за ребенком
00:14:48
в это время закончился, так что я
00:14:51
снова работаю,
00:14:52
я создал
00:14:55
внутри себя запрос на вытягивание различий, который был бы
00:14:57
просто
00:14:58
тупым,
00:14:59
выбрал цепочку инструментов, использовал ее и
00:15:01
попытался скомпилировать
00:15:03
наш код
00:15:05
почти все тесты провалились к
00:15:07
ожидаемому сроку, потому что
00:15:10
было слишком много предположений, другие
00:15:12
предположения, такие как негерметичные
00:15:14
фундаментальные негерметичные библиотеки, от которых
00:15:16
мы зависим,
00:15:18
и т. д., было много проблем,
00:15:20
но я создал это 1 июля.
00:15:24
и он сидел там, так что наш
00:15:27
статус, э-э,
00:15:29
был у
00:15:30
нас было шесть кубов кубов вроде этого замечательного
00:15:33
компилятора инструментов, который может
00:15:35
делать то, что мы хотим, у меня
00:15:36
была рабочая интеграция, э-э, написанная
00:15:39
Адамом, а затем улучшенная мной,
00:15:42
а затем у меня была разница, например разницу, которую я могу
00:15:44
показать другим в нашем монорепозитории,
00:15:46
но опять же
00:15:48
разница существует, но первоначальная
00:15:51
проблема все еще существует, она никому не
00:15:52
нужна, еще много работы по
00:15:55
исправлению всех этих тестов, которые нужно
00:15:57
переделать, чтобы отменить техническую глубину, которая
00:16:00
мы приобрели, чтобы уменьшить
00:16:02
зависимость от
00:16:04
этих
00:16:06
хост-библиотек, вы знаете, много работы, я
00:16:08
думал, это от шести до 12
00:16:10
месяцев, человек, от шести до двенадцати человеко-
00:16:13
часов, человек, человек, нет, от шести до двенадцати человеко-
00:16:16
месяцев,
00:16:17
человеко-месяцев
00:16:19
и нет никакого интереса, потому что не
00:16:20
было, но на самом деле не было никакой деловой необходимости,
00:16:23
вы знаете, хотя какая-то
00:16:26
интеграция была, но ее не было,
00:16:28
вы знаете, никого это не волновало, кроме
00:16:30
меня, я бы это сделал,
00:16:31
когда возникла какая-то проблема, которую можно было бы исправить,
00:16:33
это произошло как раз в месяц я
00:16:35
обновлял этот diff, обновлял версию zxcc,
00:16:38
а потом
00:16:40
да, я даже не знаю, что, может быть, какой-то
00:16:42
тест типа less потерпит неудачу или
00:16:44
что-то в этом роде, но, как и он, вообще не было
00:16:46
прогресса,
00:16:48
я продолжал поддерживать div иногда,
00:16:50
например, когда когда проблема будет исправлена,
00:16:52
я бы просто обновил версию, и
00:16:53
все,
00:16:54
но я знал, что предстоит много работы, ну,
00:16:57
если мы когда-нибудь захотим объединить это,
00:17:01
так что подведем итог
00:17:02
всему, что я только что сказал, помимо
00:17:04
моего введения, конечно, уберу
00:17:06
нужен кросс-компилятор Hermetic C Plus Plus
00:17:08
Уберу нужен компилятор Hermetic C Plus Plus,
00:17:10
кросс-компилятор на тот момент даже не был
00:17:12
нужен, но он не будет его финансировать,
00:17:14
потому что он на самом деле не нужен, как будто
00:17:16
задача решена, но вы знаете,
00:17:18
что это было, не было вроде ясного примера,
00:17:21
например, почему нам нужно вкладывать средства в это по
00:17:23
сравнению со всей остальной инфраструктурной работой,
00:17:24
которую мы должны сделать,
00:17:26
э-э, zix bazel, zxcc работает для игрушечных проектов,
00:17:29
для моего проекта это сработало, но далеко не
00:17:31
реальное использование, э-э, в Six cc были некоторые ошибки
00:17:36
что вы не можете,
00:17:38
просто вы просто не можете отправить в большем
00:17:40
масштабе, как будто были некоторые
00:17:42
условия гонки при компиляции, но, как
00:17:45
по мне, это нормально, потому что он просто может
00:17:46
перезапустить команду, но это не подходит для
00:17:48
форума для такого репозитория,
00:17:51
и в zxcc также были ошибки или отсутствующие
00:17:53
функции, о которых сообщалось, и
00:17:55
по праву их не было в zsfs
00:17:58
и основных участниках,
00:18:00
э-э, приоритет
00:18:02
что-то, где некоторые вещи были исправлены,
00:18:03
как я уже сказал, что мне действительно нравится, я
00:18:06
люблю и ценю, но у
00:18:08
нас разные
00:18:10
цели
00:18:11
например, zsf,
00:18:13
мы хотим чего-то одного, но вы знаете, что
00:18:16
ребята в то время очень сильно хотели выпустить 0.9,
00:18:20
и нам это не нравится, наши приоритеты на самом
00:18:22
деле не совпадают, поэтому я не могу, даже если
00:18:24
захочу подтолкнуть этот Adobe, как попытка сделать
00:18:26
это, невозможно сказать, что да,
00:18:29
это работает и это будет работать,
00:18:32
поэтому у нас тоже была эта проблема,
00:18:34
пожертвования не помогают, как вы можете видеть, как
00:18:37
некоторые из вас могут наивно представить,
00:18:40
и я могу не реально реализовать их,
00:18:41
я попробовал с помощью zig ar, который, как вы знаете,
00:18:43
кажется простой функцией, я не
00:18:45
смог, ну, так что у меня есть основная
00:18:48
работа, вы знаете, у меня есть семья,
00:18:50
я могу сделать только так много, и
00:18:54
да, и там
00:18:57
слишком много всего, и теперь на нашей стороне хотелось бы
00:18:59
продвигать это самостоятельно, особенно
00:19:01
еще и то, что я не состою в команде монорепо,
00:19:03
как будто это не моя работа, герметичный
00:19:05
компилятор - не моя работа, это просто чертовски
00:19:07
раздражает не делать этого есть, но это не моя
00:19:09
работа, это не моя команда,
00:19:12
так что же произошло
00:19:15
в конце 2021 года, мой директор
00:19:18
связался со мной и затем попросил дать мне
00:19:20
проект по оценке вооруженных серверов
00:19:24
для нашего производственного стека, у
00:19:30
нас есть экономическое обоснование,
00:19:34
так что на данный момент я сказал, что в первую
00:19:37
очередь нам нужен кросс-компилятор,
00:19:39
окей, конечно,
00:19:43
а потом все начало становиться на свои
00:19:44
места, ну,
00:19:46
там была команда, вроде нас было трое,
00:19:48
теперь я сам и еще два инженера,
00:19:51
есть время, например, где у нас есть около
00:19:54
года плюс-минус для этого проект
00:19:57
и деньги, конечно, как будто есть
00:19:59
организационная реальная организационная
00:20:01
стратегия, это
00:20:03
стратегическая
00:20:05
задача, как будто мы не знаем, будем ли мы
00:20:07
вооружаться или нет, но мы потратим некоторое
00:20:09
инженерное время, несколько инженерных часов,
00:20:11
чтобы разобраться в этом,
00:20:13
для этого есть предпосылки так что
00:20:15
мне нужен кросс-компилятор
00:20:17
и вот разница
00:20:19
хм
00:20:21
но этого не было
00:20:23
но это было не так,
00:20:24
не так ли этого было недостаточно
00:20:26
это было только начало типа окей
00:20:28
теперь у меня есть экономическое обоснование, которое
00:20:30
типа начало переместить вещи, но
00:20:33
похоже, что я много разговаривал с
00:20:36
командой monorepo к тому времени,
00:20:38
ну, так что zigza c может сработать, они были вроде
00:20:40
счастливы, что хорошо, у нас теперь есть два
00:20:42
предложения, есть одно предложение,
00:20:44
есть еще одна цепочка инструментов bazel,
00:20:46
основанная на цепочке инструментов bazel c plus plus который
00:20:49
основан на ванильном llvm, который представляет собой
00:20:52
огромный огромный объект, этот 500-мегабайтный объект,
00:20:54
который доставляет весь стек llvm,
00:20:58
и есть мой, который использует zxc
00:21:01
и
00:21:03
внедряет zigza c, в то время был похож на
00:21:06
команду monorepo, э-э, они поддерживают
00:21:08
goldman rippon, они будут
00:21:10
поддерживать его до тех пор, пока существует
00:21:11
Uber,
00:21:12
они смотрят на долгосрочную перспективу, как будто
00:21:14
они всегда оценивают критические
00:21:16
зависимости, насколько это рискованно,
00:21:19
и это рискованно. В
00:21:20
zxcc есть ошибки,
00:21:22
известные ошибки, которые я нашел,
00:21:24
и это очень новая вещь, это даже не
00:21:26
1.0, как будто
00:21:29
мне задали этот вопрос, во многом похожий на
00:21:31
тот же вопрос, который задают Лоуренсу,
00:21:32
кто еще использует цинк,
00:21:35
я не знаю своих проектов, мой личный
00:21:37
проект, никто,
00:21:39
кроме вас, но
00:21:41
есть две вещи, которые я мы нужно каким
00:21:43
-то образом компенсировать риск, нам нужно
00:21:45
снизить риск, если я хочу перейти на базель от шести
00:21:47
до c, нам нужно снизить риск,
00:21:51
и, конечно, исправить ошибки, поэтому
00:21:53
на данный момент есть две основные проблемы, как мне
00:21:55
убедить других это хорошо,
00:21:57
риск есть, но мы можем его смягчить, а во-
00:21:59
вторых, почему почему так лучше, и
00:22:03
я
00:22:05
в какой-то
00:22:07
странный вечер, я не знаю, так что
00:22:12
мое пожертвование не удалось, пожертвование 50
00:22:14
не удалось, но, возможно, более крупная
00:22:17
денежная инъекция могла бы сработать, потому
00:22:20
что у нас было время и
00:22:23
бюджет, я спросил у того же директора, можем ли
00:22:25
мы знать, что есть эта цепочка инструментов,
00:22:28
может быть, мы можем
00:22:29
нанять
00:22:30
кого-нибудь, чтобы исправить ошибки, о которых мы знаем,
00:22:32
а затем снизить риски в
00:22:34
этой части,
00:22:36
потому что есть
00:22:37
технические преимущества перед
00:22:40
цепочка инструментов, о которой я вам говорил раньше, нет, не только
00:22:42
размер,
00:22:44
и он сказал, ну, сколько это будет
00:22:45
стоить, мы поговорили, типа, иди разберись,
00:22:48
ну,
00:22:49
типа, что они вообще ее открывают, поэтому я
00:22:51
обратился к Эндрю, он перенаправил меня
00:22:53
на Лорис, и мы поговорили с Лорис, и
00:22:55
мы поняли, что это приемлемо, мы
00:22:57
можем, мы можем работать с этим,
00:22:59
и деньги, которые для этого
00:23:01
потребуются, приемлемы с
00:23:04
нашей стороны, так что это круто, как будто у нас
00:23:06
был такой бюджет, мы могли его выделить,
00:23:09
поэтому я смог мы у нас был контракт,
00:23:13
о котором
00:23:14
мы вели переговоры, мы вели переговоры, мы работали
00:23:16
над контрактом, который бы, ну,
00:23:19
мы бы хотели, мы
00:23:22
были бы в порядке, у нас был контракт, по которому мы
00:23:24
платили бы за определение приоритетности наших проблем на
00:23:28
zxcc, у
00:23:29
нас было несколько известных,
00:23:31
некоторые из них были типа большие, как дни
00:23:33
работы для Эндрю, так что представьте, что вы знаете, что
00:23:35
это огромно,
00:23:37
и мы хотели сначала их исправить, но
00:23:39
нам хотелось иметь немного времени, пока мы
00:23:41
работаем над этим, если мы обнаружим новые ошибки, мы
00:23:45
бы хотели, чтобы у нас был канал
00:23:47
и лайк разумное соглашение об исправлении проблемы, чтобы оно
00:23:50
работало
00:23:52
со всех сторон, чему я очень рад,
00:23:56
и было много других
00:23:58
дискуссий о том,
00:23:59
соответствует ли это вообще, как с
00:24:02
точки зрения риска, так и с точки зрения функций,
00:24:04
гм, это в какой-то момент чуть не провалился, как будто
00:24:07
был очень грустный вечер, когда я
00:24:09
написал Лоуренсу по электронной почте, что, возможно, это
00:24:11
не так,
00:24:12
вы знаете, мы
00:24:13
почти подписали контракт,
00:24:15
но команда репо почти вышла под залог,
00:24:19
и вы, возможно, помните то письмо, которое
00:24:22
я написал но я, вы знаете, я сохранил профессиональных
00:24:24
учеников, сохранил профессиональные навыки, так что все хорошо,
00:24:26
но потом, в конце концов, они оценили
00:24:29
zxcc в моем прототипе внутри компании, и
00:24:33
эта штука выиграла спор
00:24:37
[Аплодисменты]
00:24:46
хм да, так что теперь это так хорошо,
00:24:49
вот это и есть В результате
00:24:51
контракта мы перевели 52 000
00:24:54
на
00:24:56
некоторую поддержку в течение этого года, и
00:24:58
это было на нашей стороне, это было
00:25:00
очень успешно, мы сообщили о
00:25:01
нескольких вещах,
00:25:03
и они были исправлены, поэтому спасибо
00:25:04
за это,
00:25:06
это здорово,
00:25:07
это позволяет нам чтобы двигаться дальше внутри,
00:25:10
а также линия разницы, это мой
00:25:13
diff, который я начал в июле 2021 года, был
00:25:16
добавлен в феврале,
00:25:18
что дополнительно
00:25:20
включает
00:25:21
xcc, если вы, если вы, если вы установите флаг
00:25:25
для bazel минус минус, конфигурация равна
00:25:27
герметичному cc, поэтому он скомпилируется все c
00:25:29
и c плюс плюс вещи,
00:25:31
э-э, с
00:25:32
зигом, так что это
00:25:34
было для меня как первая большая победа,
00:25:37
потому что
00:25:38
это было в коде, как в мастере
00:25:41
в штате Мэн,
00:25:42
э-э, и мне нравится видеть, что работает, а
00:25:45
что нет не работает, например, запустите
00:25:47
тесты, а также в это время
00:25:50
команду monorepo
00:25:52
для варианта использования кросс-компиляции, которую мы
00:25:55
спросили, как будто есть процесс, чтобы запросить
00:25:57
что-то у другой команды, которую
00:25:59
мы официально попросили
00:26:01
поддержать
00:26:02
кросс-компилятор, кем бы они ни были,
00:26:06
и они пообещал выделить
00:26:07
для этого некоторые ресурсы, так что есть человек, который
00:26:09
полный рабочий день работает над
00:26:11
отменой нашей технической глубины, чтобы сделать это значением по
00:26:14
умолчанию сейчас
00:26:16
в другой команде, вот и все,
00:26:21
наш текущий
00:26:22
статус - это все еще необязательно,
00:26:25
как вы видели в два в этой
00:26:28
ветке,
00:26:29
извините,
00:26:32
мы
00:26:34
работали над
00:26:36
инструментами для компиляции с помощью zxcc,
00:26:38
нужны некоторые инструменты,
00:26:40
и я только вчера понял, что мы
00:26:45
отправили в производство наш первый
00:26:47
двоичный файл,
00:26:48
который был скомпилирован с помощью
00:26:50
zxcc,
00:26:57
да,
00:26:58
спасибо, это было вчера, это было не
00:26:59
так это было в пятницу, это было в пятницу, так что это
00:27:01
было первое,
00:27:04
и мы будем так что,
00:27:06
извините, это работает да да,
00:27:09
мы проводим тестирование, прежде чем
00:27:11
развернуть производство в пятницу
00:27:14
[Смех]
00:27:18
да, это правда,
00:27:20
это все еще убер, вы знаете
00:27:22
Итак, мы
00:27:23
хорошо, хорошо, я имел в виду, что это было
00:27:25
утро пятницы, э-э, по европейскому времени,
00:27:28
так что до пятницы, до
00:27:30
обеда все в порядке, мы все еще готовы к
00:27:32
развертыванию, и
00:27:34
что дальше, э-э, в течение следующих двух
00:27:36
недель или немного, это предполагает, что
00:27:39
ничего не изменится, что может Я имею
00:27:41
в виду, что что-то произошло с
00:27:43
изменениями плана, но если все пойдет так, как я вижу
00:27:46
сейчас, это то, что мы собираемся сделать,
00:27:48
мы включим это по умолчанию для всех
00:27:49
сборок в течение
00:27:50
большого количества недель или небольшого количества
00:27:53
месяцев, как я не знаю, два или три
00:27:54
месяца,
00:27:56
потому что осталось две основные проблемы,
00:27:58
э-э, в
00:28:00
зависимости от системных библиотек, и
00:28:03
они сложны
00:28:05
[Музыка],
00:28:06
затем следующий, поэтому, как только он будет
00:28:08
включен, мы отметим bazel 6cc 1.0, мы
00:28:12
скажем, хорошо, мы используйте его,
00:28:14
мы перенесем, в настоящее время bazel zxc находится в
00:28:17
исходном коде, но в моем личном
00:28:20
репозитории с открытым исходным кодом,
00:28:21
мы переместим его на github.com uber,
00:28:24
и тогда это будет официальный проект uber,
00:28:28
я буду
00:28:29
поддерживать на один проект меньше,
00:28:31
поэтому мы отметим 1.0
00:28:34
um я начну, я обещал Лорису написать сообщение в
00:28:37
блоге о том, как uber использует zik,
00:28:41
и это то, что я собираюсь хорошо написать,
00:28:43
кое-что из того, о чем я говорю здесь,
00:28:44
но это будет своего рода
00:28:46
объявлением для xcc от bazel, окей,
00:28:48
мы его используем,
00:28:50
да, а затем работаем над включением
00:28:53
целей Mac OS, так что в настоящее время
00:28:57
работать на нем довольно болезненно, вы знаете, это не больно, но
00:29:00
когда у вас есть тысячи инженеров,
00:29:03
разрабатывающих что-то, что требует
00:29:05
компилятора C, они бы они это сделали ему нужен xcode,
00:29:08
как будто ему нужно загрузить xcode, и ему
00:29:10
нужно делать это при каждом
00:29:12
обновлении патча, иногда даже, как будто ему
00:29:14
нужно повторно загрузить xcode, и это
00:29:16
раздражает, что иногда происходит сбой, это запрашивает что-то,
00:29:18
а иногда
00:29:20
UX сообщает вам, что
00:29:24
делает Apple UI Это всегда работает,
00:29:27
поэтому это неудобно, и у команды monorepo есть
00:29:29
довольно большая
00:29:31
нагрузка по поддержке разработки для os x,
00:29:34
поэтому в
00:29:35
следующей части, как только часть linux будет
00:29:37
готова, мы
00:29:39
перейдем к
00:29:40
os x,
00:29:42
поэтому
00:29:43
наша цель — иметь герметичную цепочку инструментов
00:29:45
как для Linux, так и для Mac,
00:29:46
это также позволит нам компилировать
00:29:49
двоичные файлы для перекрестной компиляции двоичных файлов из
00:29:52
Linux в darwin,
00:29:54
потому что
00:29:55
иногда нам действительно нужен sego, и у нас
00:29:58
нет компилятора для
00:30:01
Mac OS, так что это будет
00:30:03
очень важной
00:30:05
вехой как и в
00:30:06
случае с разработчиком, команда goman repo очень
00:30:08
заботится об этом, и до шести
00:30:10
там ничего не было,
00:30:11
чтобы увидеть вас, вам пришлось
00:30:14
использовать хост-компилятор, ну, по
00:30:16
крайней мере, хост-компоновщик,
00:30:18
а теперь вы этого не делаете, так что я очень
00:30:20
жду, когда это произойдет,
00:30:22
так что если, как я уже сказал, если план будет таким
00:30:26
же, может быть, к концу этого года
00:30:28
что-то в этом роде,
00:30:31
хорошо, как это могло потерпеть неудачу во многих
00:30:33
отношениях, но
00:30:35
я расскажу об этом быстро, но я просто
00:30:36
помните, что на самом деле есть и другие
00:30:38
компании, которые
00:30:39
используют bazel xse и, следовательно, zig,
00:30:43
которые
00:30:44
по какой-то причине являются конфиденциальными, они конфиденциальны,
00:30:45
они отправляют электронные письма конфиденциально, и
00:30:48
иногда они комментируют проблемы с github,
00:30:52
но самая большая из них -
00:30:53
Cloudflare, и они использую его внутри компании
00:30:56
довольно часто, по-видимому, даже больше, чем в
00:30:57
uber, и в производстве им тоже нравится, я
00:31:00
получил электронное письмо из облака от
00:31:01
инженерного Cloudflare, типа спасибо за
00:31:03
безель 60cc, это здорово, мы используем
00:31:05
это в течение последних нескольких месяцев,
00:31:08
все работает отлично верно, это не для меня,
00:31:17
тогда я получил
00:31:20
Google,
00:31:21
Google наградил меня, наградил меня, есть
00:31:23
бонус Google Peer с открытым исходным кодом,
00:31:26
где они отправляют вам 250
00:31:29
за вклад в открытый исходный код,
00:31:30
поэтому я получил это за bazel 66,
00:31:33
спасибо Google,
00:31:36
почему, потому что они по
00:31:38
крайней мере, они
00:31:41
работают,
00:31:42
так что в envoy есть дополнительная поддержка bazel
00:31:45
zxcc, поэтому, если вы посмотрите
00:31:47
исходный код envoy, вы также можете включить его так же,
00:31:50
как я включил его для нашего
00:31:51
монорепозитория,
00:31:53
и вот как мы узнайте об этом,
00:31:54
как будто они есть, Эндрю также знает, что
00:31:57
они находят проблемы и комментируют, а
00:31:58
затем вы знаете, что мы, так что это, по крайней мере,
00:32:02
используется некоторыми мощностями в Google и
00:32:04
явно значительными мощностями в
00:32:06
Cloudflare, а также
00:32:08
некоторыми мощностями в Uber сейчас, так что это
00:32:11
состояние мира,
00:32:13
как это могло провалиться, как забавная
00:32:15
штука,
00:32:16
э, если бы меня не раздражало
00:32:18
такое статус-кво,
00:32:20
эта задача кросс-компилятора была у меня в
00:32:23
голове долгое время, и я
00:32:25
работал над ней на таких компонентах, где кросс-
00:32:27
компилятор
00:32:28
просто необходим и это очень
00:32:30
раздражает,
00:32:31
я бы не нашел пост Андрея
00:32:33
об универсальном компиляторе, тот,
00:32:34
который я показывал в начале, если
00:32:36
бы я не знал, что xcc существует, этого
00:32:38
бы не произошло или нет,
00:32:42
так что извлеченные уроки убедитесь, что вы
00:32:44
хорошо поработали для вас
00:32:46
обоих, вас можно найти и
00:32:48
увидеть,
00:32:49
э-э,
00:32:51
как я уже упоминал о продукте, который
00:32:53
был на zig cc, если бы он был не намного лучше,
00:32:56
В соревновании мы бы пошли
00:32:57
по безопасному пути,
00:32:59
поэтому в данном случае, указывая
00:33:01
версию glypc, я не упомянул, что это
00:33:03
действительно важно для нас, а также
00:33:05
по другим причинам, но
00:33:08
также и кросс-компилятору Дарвина,
00:33:10
который выиграл спор, он выиграл
00:33:11
аргумент, потому что это команда репо go mana,
00:33:13
это то, что их волнует, нас волнует,
00:33:15
я забочусь о версии Glypc больше,
00:33:18
чем о Дарвине, насколько я понимаю,
00:33:20
я бы не стал работать над тем, как будто мне не нужна
00:33:22
дарвинская штука, потому что у меня нет
00:33:25
его, ну, я сам не работаю на Mac
00:33:26
и обслуживаю парк Linux,
00:33:30
так что мне это не нужно, но это
00:33:31
нужно золотому монорепозиторию, так что там также есть
00:33:34
разные интересы,
00:33:36
мой интерес был версия gillipsy и
00:33:37
версия компилятора, которая идеально
00:33:40
подходит для zxcc,
00:33:42
э-э, мегабайт, размер вещи,
00:33:44
приятно, когда инженеры любят мелочи,
00:33:46
и это тоже всегда как приятная
00:33:48
вишенка на торте, как будто
00:33:50
все ценят это, когда это
00:33:52
только около 40 мегабайт вместо
00:33:54
сотен,
00:33:55
хм, да, демонстрируемый кросс-
00:33:57
компилятор для osx, мы говорили об этом
00:33:59
здесь,
00:34:00
есть кое-что,
00:34:02
осталось еще несколько инструментов, чтобы упростить задачу, осталось еще
00:34:04
несколько инструментов, чтобы
00:34:06
упростить кросс-компиляцию в
00:34:09
Дарвин на bazel,
00:34:11
ну, мы поработаем над этим в рамках
00:34:13
следующего проекта,
00:34:14
но это так, как будто я смог как
00:34:18
часть мошенничества, вы знаете, что в
00:34:20
процессе разговора я смог скомпилировать
00:34:22
двоичный файл go
00:34:23
для Linux и Дарвина amd64
00:34:27
и запустить его с помощью вызова Zoom,
00:34:30
и это было
00:34:32
потрясающе,
00:34:33
так что это было так, вы
00:34:35
знаете, это был переломный момент,
00:34:37
а еще команды и мой директор
00:34:39
не доверяли мне так сильно, как они,
00:34:41
я был здесь какое-то время у меня есть
00:34:44
некоторая репутация
00:34:45
со временем,
00:34:47
а также составление бюджета - это весело, потому что
00:34:49
время было выбрано правильно,
00:34:51
потому что это то, что
00:34:54
не всегда было возможно, у
00:34:57
нас просто был бюджет на тот момент, я
00:34:59
не буду вдаваться в подробности, хотя а также
00:35:02
это во многом зависело от того, что Эндрю
00:35:04
подписал контракт, вы, ребята, сказали
00:35:06
да,
00:35:07
если бы вы не сказали да, мы
00:35:09
не смогли бы снизить риск, поэтому все
00:35:13
могло быть совсем по-другому,
00:35:15
а также моя подготовка,
00:35:17
эээ да, да,
00:35:19
я потратил глупое количество времени,
00:35:23
работая над этим,
00:35:25
не зная, что за
00:35:27
этим что-то есть, как будто за этим что-то стоит,
00:35:30
я был настолько раздражен
00:35:32
статус-кво, что просто потратил свое личное
00:35:34
время,
00:35:35
но это тоже редкость,
00:35:36
и это
00:35:38
вы знаете, я думаю, что это удача,
00:35:41
что была подготовка, и ну, на самом деле, нам это
00:35:44
понадобилось позже, например,
00:35:46
когда
00:35:48
пришло экономическое обоснование, было кое-что, что я
00:35:50
мог показать, и время было уже
00:35:52
поджатым, когда пришло экономическое обоснование
00:35:54
как будто я бы не стал создавать зигзагообразную
00:35:56
цепочку инструментов после того, как мой директор
00:35:59
попросил бы меня сделать руку,
00:36:01
так что подведу итог, как вы можете видеть,
00:36:04
это
00:36:06
удача и время,
00:36:08
я действительно хочу,
00:36:10
я надеялся рассказать вам, хорошо, как
00:36:12
как вы можете отправиться в компанию,
00:36:15
как будто это то, что вы хотите
00:36:17
знать здесь больше всего,
00:36:19
у меня нет для вас хорошего ответа,
00:36:21
к сожалению, это в моем случае, это удача,
00:36:24
вам известно много удачи, и
00:36:26
еще удачи,
00:36:27
и еще немного работа,
00:36:30
хм да, так что подготовка, как
00:36:33
tldr всего разговора, так что
00:36:36
подготовка была решающей,
00:36:38
эээ, время и удача, хм,
00:36:43
да, я думаю, это
00:36:45
все, что я хотел показать
00:36:55
вам [Аплодисменты]

Описание:

Motiejus Jakštys talks about his journey onboarding zig at his company, Uber. Text version + errata in his blog: https://jakstys.lt/2022/how-uber-uses-zig/ From Zig MiLAN PARTY 2022

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

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

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

mobile menu iconКак можно скачать видео "How Zig is used at Uber - Motiejus Jakštys"?mobile menu icon

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

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

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

mobile menu iconКакой формат видео "How Zig is used at Uber - Motiejus Jakštys" выбрать?mobile menu icon

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

mobile menu iconПочему компьютер зависает при загрузке видео "How Zig is used at Uber - Motiejus Jakštys"?mobile menu icon

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

mobile menu iconКак скачать видео "How Zig is used at Uber - Motiejus Jakštys" на телефон?mobile menu icon

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

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "How Zig is used at Uber - Motiejus Jakštys"?mobile menu icon

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

mobile menu iconКак сохранить кадр из видео "How Zig is used at Uber - Motiejus Jakštys"?mobile menu icon

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

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

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