Forwarded from JavaScript.Ninja News (Illya Klymov 🇺🇦)
Это птица? Это самолет? Нет, это Наташа и Стас :)
Время обсудить State of JS 2023 :)
Приходите сегодня в 19:30 - мы будем разговаривать о том куда идет JS, что с этим делать и где у нас болит
https://youtube.com/live/1dReRMvwckY?feature=share
Время обсудить State of JS 2023 :)
Приходите сегодня в 19:30 - мы будем разговаривать о том куда идет JS, что с этим делать и где у нас болит
https://youtube.com/live/1dReRMvwckY?feature=share
YouTube
[RU] State of JS 2023 - Обсудим?
Сегодня вместе с моими коллегами из GitLab мы попытаемся обсудить результаты ежегодного опроса State of JS - чем они нас удивили и чем нет
В гостях:
* Станислав Лашманов - Senior Frontend Engineer @ GitLab
* Наталья Теплухина - Principal Engineer @ GitLab…
В гостях:
* Станислав Лашманов - Senior Frontend Engineer @ GitLab
* Наталья Теплухина - Principal Engineer @ GitLab…
Я анонсирую на ближайшее время стрим по теме:
Что почти все JS - ПОМИДОРЫ не разбираются в том, почему и зачем нужна статическая типизация в js.
Как только мне дадут свет, я поясню, почему люди, которые ничего не знают и не понимают в том, как работает язык - обнаруживают свою некомпетентность.
Некомпетентность, думая, что статическая типизация, нужна для каких-то плюшек js программистов.
Не понимая, что єто нужно, не для их слабо развитого кода, но для HOST среды и оптимизирующего компилятора.
Что почти все JS - ПОМИДОРЫ не разбираются в том, почему и зачем нужна статическая типизация в js.
Как только мне дадут свет, я поясню, почему люди, которые ничего не знают и не понимают в том, как работает язык - обнаруживают свою некомпетентность.
Некомпетентность, думая, что статическая типизация, нужна для каких-то плюшек js программистов.
Не понимая, что єто нужно, не для их слабо развитого кода, но для HOST среды и оптимизирующего компилятора.
Как одной строкой сообщить и хорошую новость и плохую?
Мама, мама, дедушка храпеть перестал.
Тут, это, в общем у меня почти все хорошо. Только печень не выдержала.
Мне нужно провести УЗД пункцию печени - это 300 дол.
И потом радиочастотную mts абляцию - это 750 дол.
У меня есть: -200 дол.
Если кто-то имеет желание мне чем-то помочь, то у меня для Вас хорошие новости - сейчас самое удачное время.
Bobrov Maksym
Карта приват:
5168745021397333
USDT Tron (TRC20):
TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx
USDT etherium (erc20):
0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa
TON:
UQAGXvuhxg3qU0eFgOxtdDlKXqdp1zPq6yCRSRbRYQClxOzH
paypal (работает не у всех):
demimurych@protonmail.com
Boosty:
https://boosty.to/asforjs
Собрано usd:
910 / 1050
1005 / 1050
1065 / 1050
ЗАЧИНЕНО
щіро дякую
Мама, мама, дедушка храпеть перестал.
Тут, это, в общем у меня почти все хорошо. Только печень не выдержала.
Мне нужно провести УЗД пункцию печени - это 300 дол.
И потом радиочастотную mts абляцию - это 750 дол.
У меня есть: -200 дол.
Если кто-то имеет желание мне чем-то помочь, то у меня для Вас хорошие новости - сейчас самое удачное время.
Bobrov Maksym
Карта приват:
5168745021397333
USDT Tron (TRC20):
TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx
USDT etherium (erc20):
0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa
TON:
UQAGXvuhxg3qU0eFgOxtdDlKXqdp1zPq6yCRSRbRYQClxOzH
paypal (работает не у всех):
demimurych@protonmail.com
Boosty:
https://boosty.to/asforjs
Собрано usd:
1065 / 1050
[==========]
100%ЗАЧИНЕНО
щіро дякую
Возможно кто-то помнит вопрос, о сабеседовании на должность сеньер девелопер, про часовые пояса.
Мне пришло много писем, что я мудак, потому как єто частный и особый случай.
Наверное оправдывающий то, почему не взяли на помидора.
Даю Вам еще одну задачу на должность сеньера:
Организуйте архитектуру системы, которая фиксирует имя и фамилию реципиента.
Как вы єто сделаете?
Мне пришло много писем, что я мудак, потому как єто частный и особый случай.
Наверное оправдывающий то, почему не взяли на помидора.
Даю Вам еще одну задачу на должность сеньера:
Организуйте архитектуру системы, которая фиксирует имя и фамилию реципиента.
Как вы єто сделаете?
Требуется ли для работы языка программирования JavaScript - Garbage Collector?
Anonymous Quiz
39%
Да
40%
Нет
21%
Я упырь
Я очень давно не смотрел на YouTube новых видео о JS.
Для тех кто не знает, раньше, когда был порох в пороховницах и ягоды в ягодицах, я старался отсматривать все в русскоязычном сегменте.
Сегодня, прибываючи в пути на оплаченую вами процедуру, я решил повторить єтот героический поступок. И что вы себе думаете?
Я думаю что мы победили. Каждое третье видео стало ссылаться на спецификцацию. Люди стали говорить о том что var не depricated...
А некоторые, при анализе проблем, даже стали пытаться собирать логи из v8.
Минимум три года назад, лента видео о JS ничего подобного не содержала.
Следующий єтап - вопросы на собеседованиях без идиотии про контексты, передаче по ссылке и значению и null как ошибка в js
Для тех кто не знает, раньше, когда был порох в пороховницах и ягоды в ягодицах, я старался отсматривать все в русскоязычном сегменте.
Сегодня, прибываючи в пути на оплаченую вами процедуру, я решил повторить єтот героический поступок. И что вы себе думаете?
Я думаю что мы победили. Каждое третье видео стало ссылаться на спецификцацию. Люди стали говорить о том что var не depricated...
А некоторые, при анализе проблем, даже стали пытаться собирать логи из v8.
Минимум три года назад, лента видео о JS ничего подобного не содержала.
Следующий єтап - вопросы на собеседованиях без идиотии про контексты, передаче по ссылке и значению и null как ошибка в js
Понатыкали сегодня в меня всякого.
Врач рассказал 2 анекдота:
1) хорошо зафиксированный больной в анастезии не нуждается
2) я собираюсть жить вечно - пока получается.
Врач рассказал 2 анекдота:
1) хорошо зафиксированный больной в анастезии не нуждается
2) я собираюсть жить вечно - пока получается.
И пол года не прошло, когда удалось получить второй финальный обжиг.
Гавнююшки!!!
Фото делали по сумеркам, потому не видно как они блестят, но все равно.
Гавнююшки!!!
Фото делали по сумеркам, потому не видно как они блестят, но все равно.
23-15 По Киеву
Смотрим вместе YT: Григорий Бизюкин - Продвинутый JS. ШРИ 2024
Если у кого-то есть хоть какие-то дела имеющие маломальский вес важности - настоятельно рекомендую заняться ими и пропустить это видео. Смотреть тут будет практически нечего.
https://www.youtube.com/watch?v=YLvbza4GtiM
Смотрим вместе YT: Григорий Бизюкин - Продвинутый JS. ШРИ 2024
Если у кого-то есть хоть какие-то дела имеющие маломальский вес важности - настоятельно рекомендую заняться ими и пропустить это видео. Смотреть тут будет практически нечего.
https://www.youtube.com/watch?v=YLvbza4GtiM
YouTube
Смотрим вместе YT: Григорий Бизюкин - Продвинутый JS. ШРИ 2024
Посмотрим в режиме x1.5 актуальное видео от Григория Бизюкина -
Продвинутый JS — ШРИ 2024
Разберемся в неочевидных возможностях JavaScript.
https://www.youtube.com/watch?v=t7wWLjQgkOQ
Если у кого-то есть хоть какие-то дела имеющие маломальский вес важности…
Продвинутый JS — ШРИ 2024
Разберемся в неочевидных возможностях JavaScript.
https://www.youtube.com/watch?v=t7wWLjQgkOQ
Если у кого-то есть хоть какие-то дела имеющие маломальский вес важности…
Все мы (; знаем что
єто не вызов функции. Для єтого достаточно обратиться к спецификации.
Попробуйте придумать еще, не менее двух доказательств тому, что
например:
Таких доказательств есть минимум 6
super()
єто не вызов функции. Для єтого достаточно обратиться к спецификации.
Попробуйте придумать еще, не менее двух доказательств тому, что
super
не является функцией. например:
typeof super
Мне прислали маленький кусочек лекции с переводой, от автора книги - вы не знаете JavaScript.
Послушайте его.
https://youtu.be/OjsrG5eTYPM?si=CLedXE9dYoEljebI
Послушайте его.
https://youtu.be/OjsrG5eTYPM?si=CLedXE9dYoEljebI
YouTube
Глубокие основы JS. 0 - Введение
Перевод видеолекции Кайла Симпсона (автор серии книг "You don't know JS").
Почему дружок? да потому...
Что я жизнь учил не по учебникам
Просто я работаю, просто я работаю,
Волшебником волшебником...
https://youtu.be/1SgfKzR9bUg?si=k8AjoYyu5FSWY4Gg
Что я жизнь учил не по учебникам
Просто я работаю, просто я работаю,
Волшебником волшебником...
https://youtu.be/1SgfKzR9bUg?si=k8AjoYyu5FSWY4Gg
YouTube
Марк Бернес - Я работаю волшебником
Кеширование байкода в V8 и GoogleChrome.
Кеширование откомпилированного JavaScript кода существует с 2015 года с версии v8 4.2,
в чем можно легко убедиться даже просто посмотрев в папку кеша Google Chrome где кеш байткод-а вынесен в отдельную папку.
Машинерия отвечающая за критерии подобного кеширования местами настолько странная, что ничего кроме моего удивления не вызывает.
Ниже упрощенное описание этого процесса, актуальное на июнь 2021 года, (на 2024 ничего не поменялось)
достаточное чтобы знать все необходимое для понимания процесса кеширования байткода в Chrome.
Подчеркиваю - именно в Хроме. Любая другая хост среда, может получить от V8 байткод и организовать свою собственную стратегию кеширования байткода.
Существует три стратегии Chrome браузера приводящие к кешированию байткода.
При этом для всех трех стратегий должны выполняться следующие условия:
1. Это должен быть внешний файл. Inline код никогда не кешируется (для байт кода)
2. Размер файла должен быть более 1 килобайта.
3. Кодировка файла и страницы должна быть UTF8 В случае если кодировка не
совпадает - кеш байт кода не используется, но при этом может в некоторых случаях
создаваться.
Стратегия 1
Самая распространенная модель поведения связана с типичной загрузкой Js файла: использования тега script для подключения файла кода.
В рамках этой модели, существует три фазы через которые должен пройти код, чтобы его откомпилированная версия(байт код) попала в кеш.
При первом запросе JS файла, происходят все типичные процессы для запуска кода, при этом откомпилированная версия не сохраняется в кеше. Сохраняется только сам JS файл - его текстовое представление.
В случае если осуществляется повторный запрос этого файла не позднее чем через 72 часа относительно первого запроса, его байт код версия, созданная в момент подключения, сохраняется в кеше. И в свою очередь при третьем запросе, который опять должен произойти не позднее чем через 72 часа, уже загружается и используется ранее сохраненная откомпилированная версия.
При этом следует знать, что современный V8 использует так называемую ленивую компиляцию кода которая выглядит следующим образом:
на старте компилируется только то, что выполнялось в момент подключения JS файла
(на самом деле все чуть сложнее, и откомпилирован может быть и мертвый на старте код, но зависит это все, в первую очередь, именно от того, что выполняется и как выполняется при подключении).
Весь прочий код файла остается в исходном виде. То есть только эта первая часть откомпилированного кода попадает в кеш.
Даже если при последующей работе используется весь код из файла, в кеше будет лежать только та его часть, которая была создана на момент подключения JS файла. При этом для случая, когда эта стартовая часть имеет какое либо ветвление, зависящее от каких то внешних факторов (то есть в одно время выполняется на старте одно а в другое - другое) то в кеш постоянно будет сохраняться то одна версия то вторая.
Например, в случае загрузки jQuery версии 1.2 где обьем JS кода в несжатом виде составляет около 100кб, только половина его кода компилируется на старте и попадет в кеш байт кода.
Стратегия 2
Вторая модель поведения связана с использованием Cache API. Если JS код запрашивается и подключается при помощи использования этого API, то все происходит ровно так же как и в стратегии 1, за исключением первой подфазы сохранения JS файла. То есть в случае использования Cache API мы ровно на один шаг ближе к цели.
Стратегия 3
Третья модель поведения связана с фазой Install у Service Workera. В этой фазе, все JS файлы которые присутствуют в списке предварительной загрузки, в отличии от двух предыдущих примеров, гарантировано проходят 100% компиляцию, и 100% сохранение в кеш байт кода, в результате чего браузер уже при первом подключении использует 100% откомпилированную версию взятую из кеша байт кода.
Исключением является ситуации когда, файл, получивший кеш таким образом, будет подключен как модуль. В этом случае кеш аннулируется и вместо него создается новый с использованием типичных механизмов ленивой компиляции.
Кеширование откомпилированного JavaScript кода существует с 2015 года с версии v8 4.2,
в чем можно легко убедиться даже просто посмотрев в папку кеша Google Chrome где кеш байткод-а вынесен в отдельную папку.
Машинерия отвечающая за критерии подобного кеширования местами настолько странная, что ничего кроме моего удивления не вызывает.
Ниже упрощенное описание этого процесса, актуальное на июнь 2021 года, (на 2024 ничего не поменялось)
достаточное чтобы знать все необходимое для понимания процесса кеширования байткода в Chrome.
Подчеркиваю - именно в Хроме. Любая другая хост среда, может получить от V8 байткод и организовать свою собственную стратегию кеширования байткода.
Существует три стратегии Chrome браузера приводящие к кешированию байткода.
При этом для всех трех стратегий должны выполняться следующие условия:
1. Это должен быть внешний файл. Inline код никогда не кешируется (для байт кода)
2. Размер файла должен быть более 1 килобайта.
3. Кодировка файла и страницы должна быть UTF8 В случае если кодировка не
совпадает - кеш байт кода не используется, но при этом может в некоторых случаях
создаваться.
Стратегия 1
Самая распространенная модель поведения связана с типичной загрузкой Js файла: использования тега script для подключения файла кода.
В рамках этой модели, существует три фазы через которые должен пройти код, чтобы его откомпилированная версия(байт код) попала в кеш.
При первом запросе JS файла, происходят все типичные процессы для запуска кода, при этом откомпилированная версия не сохраняется в кеше. Сохраняется только сам JS файл - его текстовое представление.
В случае если осуществляется повторный запрос этого файла не позднее чем через 72 часа относительно первого запроса, его байт код версия, созданная в момент подключения, сохраняется в кеше. И в свою очередь при третьем запросе, который опять должен произойти не позднее чем через 72 часа, уже загружается и используется ранее сохраненная откомпилированная версия.
При этом следует знать, что современный V8 использует так называемую ленивую компиляцию кода которая выглядит следующим образом:
на старте компилируется только то, что выполнялось в момент подключения JS файла
(на самом деле все чуть сложнее, и откомпилирован может быть и мертвый на старте код, но зависит это все, в первую очередь, именно от того, что выполняется и как выполняется при подключении).
Весь прочий код файла остается в исходном виде. То есть только эта первая часть откомпилированного кода попадает в кеш.
Даже если при последующей работе используется весь код из файла, в кеше будет лежать только та его часть, которая была создана на момент подключения JS файла. При этом для случая, когда эта стартовая часть имеет какое либо ветвление, зависящее от каких то внешних факторов (то есть в одно время выполняется на старте одно а в другое - другое) то в кеш постоянно будет сохраняться то одна версия то вторая.
Например, в случае загрузки jQuery версии 1.2 где обьем JS кода в несжатом виде составляет около 100кб, только половина его кода компилируется на старте и попадет в кеш байт кода.
Стратегия 2
Вторая модель поведения связана с использованием Cache API. Если JS код запрашивается и подключается при помощи использования этого API, то все происходит ровно так же как и в стратегии 1, за исключением первой подфазы сохранения JS файла. То есть в случае использования Cache API мы ровно на один шаг ближе к цели.
Стратегия 3
Третья модель поведения связана с фазой Install у Service Workera. В этой фазе, все JS файлы которые присутствуют в списке предварительной загрузки, в отличии от двух предыдущих примеров, гарантировано проходят 100% компиляцию, и 100% сохранение в кеш байт кода, в результате чего браузер уже при первом подключении использует 100% откомпилированную версию взятую из кеша байт кода.
Исключением является ситуации когда, файл, получивший кеш таким образом, будет подключен как модуль. В этом случае кеш аннулируется и вместо него создается новый с использованием типичных механизмов ленивой компиляции.
Как контролировать/изучать процесс
Наблюдать за всеми этими процессами частично можно в DevTools во вкладке Perfomance фильтруя процессы загрузки по конкретному JS файлу.
В подробном описании фазы, обязательно указывается откуда взят файл, в каком виде, и каков обьем байт код кешированной версии если взята она.
Наиболее подробный отчет можно получить используя механизм записи трейса работы браузера.
Выводы:
Любой современный проект, который опирается в своей работе на:
1) Большой обьем JS кода
2) работу которого обеспечивает браузер Google Chrome или любая другая технология, которая в качестве своей основы использует его (например Electron)
3) проект многократно используется пользователем повторно
4) производительность
обязан реализовывать стретегию, где сердцем работы проекта выступает Service Worker, гарантирующий 100% предварительную компиляцию ВСЕГо JS кода в байт-код.
Наблюдать за всеми этими процессами частично можно в DevTools во вкладке Perfomance фильтруя процессы загрузки по конкретному JS файлу.
В подробном описании фазы, обязательно указывается откуда взят файл, в каком виде, и каков обьем байт код кешированной версии если взята она.
Наиболее подробный отчет можно получить используя механизм записи трейса работы браузера.
Выводы:
Любой современный проект, который опирается в своей работе на:
1) Большой обьем JS кода
2) работу которого обеспечивает браузер Google Chrome или любая другая технология, которая в качестве своей основы использует его (например Electron)
3) проект многократно используется пользователем повторно
4) производительность
обязан реализовывать стретегию, где сердцем работы проекта выступает Service Worker, гарантирующий 100% предварительную компиляцию ВСЕГо JS кода в байт-код.