As For JS
3.39K subscribers
108 photos
12 videos
4 files
313 links
As For JavaScript...
Обсуждения — @AsForJsTalks
Download Telegram
Forwarded from JavaScript.Ninja News (Illya Klymov 🇺🇦)
Это птица? Это самолет? Нет, это Наташа и Стас :)

Время обсудить State of JS 2023 :)
Приходите сегодня в 19:30 - мы будем разговаривать о том куда идет JS, что с этим делать и где у нас болит

https://youtube.com/live/1dReRMvwckY?feature=share
Я анонсирую на ближайшее время стрим по теме:

Что почти все 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
[==========] 100%

ЗАЧИНЕНО
щіро дякую
Не про js.

На dvd вышел наконец последний мульфильм от Хаяо Миядзаки:
Мальчик и птица
Мальчик и цапля
Как поживаете

Как ты живешь

очень рекомендую к просмотру.
совершенно неожиданная для меня работа Миядзаки. А я его фанат.

Моих мозгов хватило только на первые 40 минут. После я потерялся.
Возможно кто-то помнит вопрос, о сабеседовании на должность сеньер девелопер, про часовые пояса.

Мне пришло много писем, что я мудак, потому как єто частный и особый случай.
Наверное оправдывающий то, почему не взяли на помидора.

Даю Вам еще одну задачу на должность сеньера:

Организуйте архитектуру системы, которая фиксирует имя и фамилию реципиента.

Как вы єто сделаете?
Єто рядом с моей больницей.
Киев. Детское отделение.

Отчет рф гласит о уничтожении склада.

Забыли уточнить склада чего. Детей наверное.
Требуется ли для работы языка программирования JavaScript - Garbage Collector?
Anonymous Quiz
39%
Да
40%
Нет
21%
Я упырь
Я очень давно не смотрел на YouTube новых видео о JS.

Для тех кто не знает, раньше, когда был порох в пороховницах и ягоды в ягодицах, я старался отсматривать все в русскоязычном сегменте.

Сегодня, прибываючи в пути на оплаченую вами процедуру, я решил повторить єтот героический поступок. И что вы себе думаете?

Я думаю что мы победили. Каждое третье видео стало ссылаться на спецификцацию. Люди стали говорить о том что var не depricated...

А некоторые, при анализе проблем, даже стали пытаться собирать логи из v8.

Минимум три года назад, лента видео о JS ничего подобного не содержала.

Следующий єтап - вопросы на собеседованиях без идиотии про контексты, передаче по ссылке и значению и null как ошибка в js
Понатыкали сегодня в меня всякого.
Врач рассказал 2 анекдота:

1) хорошо зафиксированный больной в анастезии не нуждается

2) я собираюсть жить вечно - пока получается.
шуточное задание про программирование:

что означает:
хоя ахах
И пол года не прошло, когда удалось получить второй финальный обжиг.

Гавнююшки!!!



Фото делали по сумеркам, потому не видно как они блестят, но все равно.
23-15 По Киеву
Смотрим вместе YT: Григорий Бизюкин - Продвинутый JS. ШРИ 2024
Если у кого-то есть хоть какие-то дела имеющие маломальский вес важности - настоятельно рекомендую заняться ими и пропустить это видео. Смотреть тут будет практически нечего.

https://www.youtube.com/watch?v=YLvbza4GtiM
Все мы (; знаем что
super()

єто не вызов функции. Для єтого достаточно обратиться к спецификации.

Попробуйте придумать еще, не менее двух доказательств тому, что super не является функцией.

например: typeof super

Таких доказательств есть минимум 6
Мне прислали маленький кусочек лекции с переводой, от автора книги - вы не знаете JavaScript.

Послушайте его.

https://youtu.be/OjsrG5eTYPM?si=CLedXE9dYoEljebI
Почему дружок? да потому...
Что я жизнь учил не по учебникам
Просто я работаю, просто я работаю,
Волшебником волшебником...

https://youtu.be/1SgfKzR9bUg?si=k8AjoYyu5FSWY4Gg
Кеширование байкода в 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% откомпилированную версию взятую из кеша байт кода.

Исключением является ситуации когда, файл, получивший кеш таким образом, будет подключен как модуль. В этом случае кеш аннулируется и вместо него создается новый с использованием типичных механизмов ленивой компиляции.
Как контролировать/изучать процесс
Наблюдать за всеми этими процессами частично можно в DevTools во вкладке Perfomance фильтруя процессы загрузки по конкретному JS файлу.

В подробном описании фазы, обязательно указывается откуда взят файл, в каком виде, и каков обьем байт код кешированной версии если взята она.

Наиболее подробный отчет можно получить используя механизм записи трейса работы браузера.


Выводы:
Любой современный проект, который опирается в своей работе на:
1) Большой обьем JS кода
2) работу которого обеспечивает браузер Google Chrome или любая другая технология, которая в качестве своей основы использует его (например Electron)
3) проект многократно используется пользователем повторно
4) производительность

обязан реализовывать стретегию, где сердцем работы проекта выступает Service Worker, гарантирующий 100% предварительную компиляцию ВСЕГо JS кода в байт-код.