Как стать автором
Обновить
21
0
Филипп Филиппак @xenohunter

Data scientist

Отправить сообщение

Читал про это, но решил не использовать, так как потом всё равно в zip-архив нужно упаковать, а я сомневаюсь, что PNG бы сильно сжался. К тому же, только в этом году разрешили эту фичу использовать.

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

В Arch по умолчанию нет bc.

Возможно, организаторы решили, что 13 Кб исходников — слишком мало для интересных игр. А было бы намного интереснее. Вон, люди пишут замечательные демки на JS в пределах 1 Кб.

Ну, лишнего кода там — три символа: две кавычки и плюс. А вот ерунду, к сожалению, писал изначально, так что версии без неё нет. Но на следующий раз принял к сведению, создам две версии и буду их при сжатии сравнивать.

В процессе минификации self превратится в s. То есть, полная цепочка будет выглядеть так:


this.x = 0; this.y = 1; this.w = 2; this.h = 3; // код с this
var self = this; self.x = 0; self.y = 1; self.w = 2; self.h = 3; // this заменили на self
var s=this;s.x=0;s.y=1;s.w=2;s.h=3; // при минификации self стал одним символом

Да, очень красивая игра. Но мой фаворит — Super Chrono Portal Maker.

В комментарии выше есть пример; self при минификации кода становится односимвольной переменной.

Первый кусок кода — только для сравнения длин строк. Это вообще не рассматривается как рабочий код. Смысл в том, чтобы наглядно показать, сколько символов будут занимать четыре обращения к this и четыре обращения к переменной.


this.x=0;this.y=1;this.w=2;this.h=3;
var s=this;s.x=0;s.y=1;s.w=2;s.h=3;

Вариант с переменной короче на один символ при четырёх обращениях к объекту. Каждое следующее обращение будет экономить ещё по три символа.

Такие условия слишком сложны для проверки. Нужно держать каждую игру запущенной (и играть в неё) довольно длительное время, чтобы удостовериться в объёмах используемой памяти. Что касается deflate, на сайте выкладывается разархивированная версия, так что в браузер попадает просто html-файл.

Важен размер именно zip-файла.

Да, я тоже думаю, что без архиватора, чистым текстом, было бы интереснее. Но — таковы правила, ничего не попишешь. Пробовал через packer, он сжимает до ~21 Кб, но с ошибками. Разбираться было некогда, да и есть опасения, что с такими наворотами может начать тормозить.

Если честно, вообще не понял, что за ModuleName_setSomeProp(itemObj, '..value..').

Да, возможно. Я об этом не подумал, так как интуитивно полагал, что архиватор просто создаёт словарь для сжатия, а уменьшение длины слов в этом словаре никак не повредит. В следующий раз попробую для эксперимента посжимать архиватором разные сборки: с подобными микрооптимизациями и без них.
Там и не используется gzip, финальный файл пакуется в zip-архив. Я написал в посте, что размер index.html был 31.9 Кб, а в виде архива занял 10.1 Кб.
Спасибо! Да, в минификации модулей есть и свои особенности. Здесь я, конечно, модули не использовал, чтобы не тратить место на require или что-то подобное: было ощущение, что каждый байт на счету.
Кстати, на эту тему есть неплохая статья, правда, совсем «лёгкая».
Моя цитата не об этом, хотя и в такой ситуации я предпочту правду «счастью».
Всё, что может быть разрушено правдой, должно быть разрушено.
Гениальные бизнесмены полностью проваливают личную жизнь.

Так и у Бэтмена всё плохо с личной жизнью, а богатство досталось от родителей.
Он умный, сильный и благородный — но к этому можно стремиться и без огромного наследства.
Тогда ясно, почему так, спасибо!

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Frontend Developer, Chief Technology Officer (CTO)
TypeScript
JavaScript
React
Redux
Node.js
Python
Pytorch
Keras
Computer Science