- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
function call_func_1(
f: () => void
) {
f();
}
function call_func(
f: (o: object) => void,
user: { firstName: string }
) {
f(user);
}
function main() {
const user = {
firstName: "World",
sayHi() {
print(`Hello ${this.firstName}`);
},
};
user.sayHi();
const hi = user.sayHi;
hi();
let hi2 = user.sayHi;
hi2();
call_func_1(() => {
hi2();
});
call_func(user.sayHi, user);
print("done.");
}
лайкнул, подписался, нажал на колокольчик и включил все уведомления
А кстати в js не завозили такой штуки, чтобы указать чтоб функция не видела, и не хватала внешние пельменные.
А коли встретит такую пельменную вываливась в райнтайме?
Про static я знаю, но ему нужны классы и это какая-то Йажа.
Пункция самозахватывает кложай любое переменную, которую ты потрогал.
Отказаться от такого сервиса можно в С++ и PHP, вроде больше нигде нельзя
Но это нормально: GCшники должны страдать
Оно же всё-равно лолжно тянуть и хранить внешний конь-текст.
Функция захватила пельменные и пока мы держим ссылку на функцию gc не может собрать захваченную питушню. Или нет?
Вот именно поэтому я за С++.
А в PHP как делать?
Реальный пример:
https://ideone.com/qiJZcV
https://youtu.be/dJ9hJ55hHzs?t=122
Кстати, "сорокоманы" это питерское. Была такая газета "Сорока", у неё было приложение "клуб 801".. Или я рассказывал уже?
Некоторые сороки ещё, как и другие врановые, умеют пародировать других птиц и людей.
Врановые много чего могут, он вообще очень умные
Сорока проходит "зеркальный тест"
фон заебис
Опять роутеры угоняешь?
Явное лучше неявного, особенно когда из огромного контекста нужно захватить 1 пельменную.
А есть use(*), ну вроде крестового [=]?
https://www.php.net/manual/ru/functions.anonymous.php
А нет, в «PHP 7.4» добавили стрелочные функции, как в новом «JS», они затягивают весь контекст:
https://www.php.net/manual/ru/functions.arrow.php
Вот взяли и всё испортили.
А мне нравится.
Для быстрого и бездумного скриптушения зделали стрелки.
Но при этом остаётся чуть более длинный advanced синтаксис, в проблемных местах можно оптимизировать.
Немного неконсистентно, но это же рнр…
При этом функции по умолчанию чистенькие и не хватаются за внешние контексты.
В «Питоне» есть слова «global» и «nonlocal», но я не помню, в каких ситуациях они могут помочь.
https://blog.meteor.com/an-interesting-kind-of-javascript-memory-leak-8b47d2e7f156
Меня в «Medium» уже больше года «Cloudflare» не пускает.
Как там в 2010?
Кстати, ещё один интересный момент: помнится, год-полтора назад Павлик Дуров объявлял конкурс на разработку нового веб-клиента Telegram, и объявлял не как-нибудь, а с понтом - особо подчеркнул, что новый клиент не должен использовать какие-либо сторонние библиотеки и должен использовать исключительно мощь чистого JS и CSS.
И что? Сейчас открываю новый веб-клиент - а там WebPack... А вместе с ним - и тонны ненужного мусора. И в чём был смысл такого требования?
Пока эти светлые времена не настали, приходится ебаться с вебпаком
Даже 200 из них качать заебешься
В http2 ебаться не надо и я бы не ставил вебпак
Вообще нет причины НЕ использовать HTTP2, кроме пизданутых фронтов в облаках
Какое зожатие )))
может, уже исправили?
Может уже нашли новые, но ещё не сообщили о них лалкам?
Опять мы приходим к тому о чём я уже говорил:
https://govnokod.ru/26767#comment555379
Но если выбирать между 1.1. и 2, то я за 2, особенно когда надо скачать 200 файлов
In hpack_dht_insert in hpack-tbl.c in the HPACK decoder in HAProxy 1.8 through 2.x before 2.1.4, a remote attacker can write arbitrary bytes around a certain location on the heap via a crafted HTTP/2 request, possibly causing remote code execution.
Блять, ну вот как так, а?
А что вообще случилось? Код для работы с HTTP стали писать вчерашние школьники, изучившие малёха веб-программирование?
> In hpack_dht_insert in hpack-tbl.c in the HPACK decoder
> via a crafted HTTP/2 request, possibly causing remote code execution.
А главное, я же сразу писал, ну сделайте бинарный прот.
Перенумеруйте все частоиспользуемые заголовки и реализация этого говна упростится в сотни раз. Нет, нужно выдумать сложную питушню и десяток раз в ней обосраться.
Как будто это поможет. Набежавшие обезьяны всё равно будут парсить.
Именно в них причина, а не в оверинжирном проктоколе.
ну как насрал?
Мы сначала делаем из веточек шалаш, потом мажем его какашками, потом пытается сделать так, чтобы он выдержал ядерный взрыв: изобретаем специальную еду, после которой какашки более крепкие
А ты предлагаешь сразу бункер строить
Ня! ietf.org по-прежнему отдаёт всем 1.1
статику нет
да и ты сам попросил))
проверь в хоме в дев туулс в нетворк
https://postimg.cc/wtny4m7W
Там вся полезная инфа выведена не картинками, а псевдографикой.
Потому картиночки и минифицированные жсы они на работоспособность этого сайта не влияют вообще никак (зашёл с noscript).
Оказывается анскилябры сделали вот что.
Почему-то в стандарте единый словарь для запросов и ответов.
То есть даже здесь обосрались, т.к. статический словарь зделан плохо, тупо: разосрали пространство кодов.
Логично что при запросе нам бесполезны записи в словаре :status 200 или хедеры вроде content-type.
А при парсинге ответа зачем хранить :path /index.html, :method GET, :method POST и accept хедеры.
Они практически НИКОГДА не встретятся.
Во всех стандартах вроде видео-кодеков используется контекстное зожатие, когда есть несколько моделей/контекстов и выбирается самая подходящая (CABAC).
А тут запрос/ответ, форматы разные. Оно само собой напрашивается.
Они хоть веса этим хедерам присвоили? Или все равновероятны?
По-моему равновореанты. В таблице 61 элемент, почему именно 61 я не помню, вроде им кодового пространства не хватало.
Но потом каждая запись из таблицы проходит статического хаффмана.
Это чтобы протокол был человекочитабельнее )))
И превращается в 1 бат зожатия информации.
А, ну может на этом уровне вносится разница между запросом и ответом и некоторые значения остаются без кодов?
Или хаффман там одинаковый и туды и сюды?
Да. И выровненный по батам.
0x82 — это всегда method GET
0x88 — status 200
То есть они кодовое пространство этого бата использовали нихуя не оптимально.
Хаффман там больше для того чтобы зожимать цифробуквы, которых нету в словаре.
Какой анскилл )))
Карго-культ 99лвл. Интересно, чуваки вообще задумывались, зачем им хаффман?
Пушо оно может работать и без хаффмана, только со словарём.
Тогда получается бинарная питушня с вкрапленями текста. Ну как орешки в говнеце.
Так всё-таки на 1 бат равняется каждый код или весь заголовок в конце?
Всё что мимо словаря может идти плейнтекстом или опционально зожато фофманом.
Принцимп мухи )))
Тут и паддинг по октетам и EOS.
> rfc'шку на это говно.
Кстати я наконец-то понял Юрца, почему именно «мухи».
Там нет lz.
Даже в сраном DNS есть зайчатки lz с отсылками к предыдущим полям. А тут нету. А ведь можно было на старые запросы ссылаться, в них половина хедера повторяется, такой простор для зожатия...
Уже обосрались в SPDY c CRIME.
https://govnokod.ru/26767#comment555379
http://netifera.com/research/crime/CRIME_ekoparty2012.pdf
и они статические
Зачем? Зачем? Из-за длинных заголовков «content-security-policy» и «X-Frame-Options»?
https://youtu.be/Vq0bKROEm-c
А Node.JS тут причём? Он не ворует память на клиенте.
А сколько он займёт на сервере - дело программиста. Если программист не смузихлёб, то целый сервер будет жрать памяти меньше, чем одна вкладка типичного сайта в браузере.
Как это нят?
https://gcode.space/ngk.js
(@^◡^)
Но сам факт что каждому кто реализует язык нужно пердолиться. Потому мне интересно как эта питушня реализована в компиляторе у ОПа?
I'm a very lazy (oops) language implementer. Every time but one when I've implemented closures, I took the quick approach of just copying the entire frame to the heap.
The other time, I was able to do more data flow analysis, but it also resulted in a bunch of annoying fiddly bugs and took more maintenance.
I'm not suggesting the v8 team took the 'easy way' out, but doing the deep introspection is hard, and in an environment such as a browser, I can see trading a pathological case such as this for what must be 1,000,000,000 inappropriate aggressive gc bugs.
Крестоблядь хотя-бы понимает что у нее где лежит.
А GC-блядь да еще и с неявным захватом кложей может запутаться и узнать о лике через пол года, когда случится ООМ
Как видня, замыкание захватывает только те локальные переменные, которые в нём упомянуты.
При зохавывании по значению достаточно просто скопировать нужные переменные в контекст лямбды.