As For JS
3.45K subscribers
127 photos
12 videos
4 files
362 links
As For JavaScript...
Обсуждения — @AsForJsTalks
Download Telegram
Задача для Senior JS Developer
из моих архивов собеседований

Напишите код (или опишите принцип), который бы запретил выполнение любого метода любой функции кроме заданного. Например кроме console.log.

Например:
// Ваш код 
{
// внутри этого блока можно вызвать ТОЛЬКО console.log
// и не существует никакой возможности вызвать что-то еще
console.log("Start"); // Работает как ожидается
alert("Yo"); // игнорируется
new Promise(); // игнорируется
setTimeout( ()=>{}); // игнорируется
console.log("End"); // Работает как ожидается
}


То есть при выполнении вышеобозначенного примера, мы увидим в коносли:
Start
End


Подчеркиваю, ограничений на использование любых вызовов не существует. То есть внутри блока допускается использование любой функции или любого внешнего API.

Существует только условие, которое определяет - ЧТО именно разрешено использовать (white list методов или функций) .

Использовать Shafow Realm запрещено. Тогда его просто не было. Да и сейчас он под галкой.
👍12🔥62🐳2👎1
Отгадка на задачу Задача для Senior JS Developer
Напишите код (или опишите принцип), который бы запретил выполнение любого метода любой функции кроме заданного. Например кроме console.log.

// Ваш код 
{
// внутри этого блока можно вызвать ТОЛЬКО console.log
// и не существует никакой возможности вызвать что-то еще
console.log("Start"); // Работает как ожидается
alert("Yo"); // игнорируется
new Promise(); // игнорируется
setTimeout( ()=>{}); // игнорируется
console.log("End"); // Работает как ожидается
}



Решение задачи возможно в non strict mode, с использование with и Proxy:

var theWhiteList = {
console
// , Promise
// , setTimeout
// , alert
};

var doNope = function(){};

var theObj = new Proxy(
theWhiteList
, {
get: ()=> doNope
, has: (theObj, theKey)=>!( theObj[theKey] )
}
);


with ( theObj )
{
console.log("Start"); // Работает как ожидается
alert("Yo"); // игнорируется
new Promise(); // игнорируется
setTimeout( ()=>{ console.log("time"); }); // игнорируется
console.log("End"); // Работает как ожидается
}


Обозначенный выше proof of concept легко адаптируется не только для функциональных обьектов, но и для идентификаторов связанных с прочими типами.

В настоящий момент в спецификацию продвигают Shadow Realm, которые позволят создавать подобные песочницы намного более простым способом.

А так же активно обсуждается тема адаптации with для use strict

with - это единсвенный способ прямой манипуляции контекстом исполнения.


Для чего использовались подобные решения?
для создания песочниц, где необходимо было наложить ограничения на выполнение кода третьих лиц.
👍455👎3🤯2
Не про JS и не про программирование

Внимание:
Для адекватного восприятия следующего - обязательно наденьте шапочку из фольги.

Можно этого и не делать - если Вам нечего защищать.
(Для тех кто не понял - я уже начал и шапочка нужна)


Трудности перевода или Оппенгеймер
Если у Вас есть около 9 часов, когда Ваш моск бесполезен, и вы знаете русский и Украинский, или по крайней мере Английский и русский, очень рекомендую посмотреть фильм Оппенгеймер в двух переводах.

Особенно обратите внимание на сцены, где идет речь о коммунистах и ссср. Отдаю должное воображению авторам русского перевода.

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

Кстати, крайне всем рекомендую послушать пару лекций Семихатова на YouTube. Откроете для себя много нового. Ну например, что кот Шредингера это не про то, что кот находится в двух состояниях одновременно, но про неудачную аналогию, где речь идет о том, как в квантовом мире, процесс измерения, может повлиять на результат самого измерения. Впрочем как и в случае JS. С аналогиями все очень сложно.

Вернемся к квантовой механике. В фильме переодически звучат очень простые термины или концепции отсылающие к ней самой. Так вот, по какой-то мне неведомой причине, русский перевод эти концепции упрощает до уровня плоской земли.

Поверьте мне, я просмотрел три русских перевода. Официальный и два любительских.
Самый простой пример - сцена где Оппенгеймер знакомится с Гезинбергом. И последний сообщает что знаком с монографией Оппенгеймера по молекулярной физике. Русский перевод звучал как - я прочитал вашу статью про молекулы.

Монография и статья.
Молекулярная физика и молекулы.


И такие ляпы на протяжении всего фильма. Почти вся терминология, в русском переводе упрощена до уровня плинтуса. Хотя в оригинале как и в Украинском переводе ничего подобного нет.

Ну да черт с ней с пропагандой и физикой. По сути это же одно и тоже - так ведь?

Больше всего доставил сухой песок, после минимум 48 часового дождя.


*Шапочку из фольги можно снять*

Рискну предположить, что Оппенгеймер, Энштейн, Гейзинберг это не те люди которые не понимали того простого факта, что ядерный синтез будет понятен любому студенту с физтеха.

Создание ядерной бомбы вопрос не Гения, а времени. Современность тому пример. И потому, подавать историю Оппенгеймера как историю человека который переживал о том, что он приложил руку к БИМБЕ - это не уважать этого человека.

Когда Оппенгеймер говорил в фильме Энштейну, о цепной реакции которая уничтожит весь мир - он говорил не о ядерной бимбе. Оппенгеймер вообще об этом никогда не переживал. Он переживал о том, что не смог найти способа, при всем своем влиянии, выстроить этот мир так, чтобы агрессивное невежество, которое получает в руки такой инструмент - не могло его(мир) разрушить.

Оппенгеймер переживал до конца дней, что человечество подошло к той черте, когда плоды научного прогресса могут в секунду уничтожить все человечество и при этом остановить этот самый прогресс теперь, можно только сделав тоже самое - уничтожив все человечество.

А ядрёно-атомная бимба это пшик. Это вам не гипотезу Пуанкаре доказать. Где только разобраться в том, что написано может 5 человек на всей земле. Не говоря уже о том, чтобы понять.

Да и страна, которая прокакала такого гения - вызывает у меня опасения силой до поноса.


Дискас.
👍623🤯3😁2🤡2👎1
Не про JS и не про программистов.
но про хорошее настроение от рассово верной группы - пневмослон.

почему все рассово верные группы пишут такие хорошие песни?

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

свято место пусто не бывает: пневмослон!

https://youtu.be/-6An7luR9_Q?si=dDlte1_ctTXQdkuO
16🤡9🔥4😁2👍1
Как в вашей душе откликается такая обложка?
🔥91👍22🙏2🤡21🕊1
As For JS
Как в вашей душе откликается такая обложка?
Это обложка не просто так.
Это обложка под рубрику, где нужно будет решить неординарную задачу.

Решение которой зависит от того, насколько человек мыслит нестандартно, или насколько глубоко знает архитектуру языка JS
👍23🔥7🌚1
ша!

с єтого момента я ввожу диктатуру,
и назначаю себя диктатором єтого чата.

всенародно избранным и пожизненно.

как следствие начинаю репрессии в соответствии с тем как зачесалась моя левая пятка


левая пятка у меня чешется от
1) любого упоминания в уничижительной форме Украины, и ее нации

2) языками общения в группе заявляются все которые лично я могу понять. Если я не понимаю - репрессирую

3) писать претензии можно в лигу сексуальных реформ организации озабоченых наций
👌62🤡31🔥19👍17😁1411🕊5👨‍💻2❤‍🔥1🤯1🙏1
As For JS pinned «ша! с єтого момента я ввожу диктатуру, и назначаю себя диктатором єтого чата. всенародно избранным и пожизненно. как следствие начинаю репрессии в соответствии с тем как зачесалась моя левая пятка левая пятка у меня чешется от 1) любого упоминания в уничижительной…»
Предварительно в 17-00 по киеву, будет спонтанная трансляция по поводу вопроса:
господа джсеры, у меня к вам вопрос перфа. на стеке с php у меня есть дефолтные текста в элементах при изначальном рендере страницы. при выборе тарифа, мне надо менять текста на значения взятые из дата-атрибутов кнопки активного тарифа.

но если сняли активное состояние с тарифов, то не выбрано ничего и мне надо вернуть дефолтные значения.

лучше это эти первоначальные текста хранить в отдельном объекте зарендерив inline <script> на бекенде php или брать на js из data-attribute.

Минимальная схема того [...]

https://t.me/AsForJsTalks/75757


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

Речь пойдет о:
1) http кеширование
2) особенности кешированя js кода браузером
3) service worker-ы
4) json
👍51🔥28
Что сегодня посмотреть
Life of a Script [eng]

английский простой.
очень рекомендую к просмотру.

делается вводная в общий процесс работы с JS кодом.

о том что все обьект,
о байткоде
о гарбаж коллекторе
введение в оптимизации turboFan
...

свидетелям однопоточного JavaScript особенно доставит в конце ремарка о работе над спецификацией с целью улучшения паралелизма в JavaScript

https://youtu.be/veYjbF1rt5o?si=xjEf5IRfUxTzLkH0
🔥33👍63🌚1
Сегодня отмечается День уважения к кошке - этот праздник призван отметить роль, которую котярышники играют в жизни людей 👀

Моделечка: Туча - кот.
67👍6👨‍💻2
Удивительное открытие сегодняшнего утра - группа folkulaka

Удивительно в двойне то, что один из ее лидеров Саша Кладбище. Ну та самая - которая пела Оооуооо на мою девушку упал космодесантник.

https://youtu.be/UnceICPij4M?si=hWF6kSdsYa7aWdkQ
❤‍🔥12👎7🔥2🤯2
Хочу выразить безграничную благодарность братьям россиянам, за то что успешно поразили очередной гражданский обьект города Одессы.

Бабахнуло знатно. Начинаем искать выживших.

Так держать!!!

С вашей точностью все больше верю в то, что не зсу вам козью рожицу сделают а вы уебете себя сами.

Лихие вы пролежни не интерисующиеся политикой, свидетели всея неоднозначности да неисповедимых путей правды.
67👍21🕊17👎15🤣9🙏6🌚6🤯3🔥2
21-00 По Киеву
⎡perf:5⎦ Производительность JavaScript Exotic Object Array в V8.
Разберем основные аспекты, влияющие на производительность работы с JavaScript Exotic Object Array в V8:
1) Какие существуют виды Array на уровне внутренней реализации V8
2) Что такое holes
3) Что такое slots
4) Что такое Fast or Dictionary Elements
5) Что такое Elements Transitions
6) Аллокация слотов при увеличении количества элементов
7) Аллокация слотов при уменьшении количества элементов
8) К каким последствиям приводят вызовы Array(), new Array(), Array.from, Array literal


https://www.youtube.com/watch?v=fWqOswHMjEo
🔥41👍85👎1
По преченческим технинам, трансляция переноситься на 22-00 по Киеву
👍14👌8👎2😍1🤣1👀1
Ссылка на слайды вчерашней трансляции.
В слайды добавлены ссылки на полезные материалы и на исходники непосредственно V8

https://docs.google.com/presentation/d/1WoDvQ0tWZ4mrZs8D6nwUnytGklI0R4NKTGhLvMenQRo/preview?slide=id.g23ce763670e_0_2
🔥31👍95
Хлебные новости

Члены секты Свидетелей Одно-поточного JavaScript,
ссылаясь на оскорбление чувств староверов,
блокировали комитет TC39
выдвинув требования -
о немедленном исключении из ECMA Specification всех признаков богопротивной много-поточности.

Ведутся переговоры.
😁46🤯4🤣4😎2