Да, я про лавинообразный поток статей про программы на javascript в 30 строк, охвативший Хабр. Честно сказать, я и сам ярый любитель (специальной?) дисциплины код-гольфа на js, и провел не один выходной, пытаясь втиснуть функцию в твит. И хотя мне нравится дух тридцатистрочников, мне не по духу этот формат.
Почему? Ограничение в 30 sloc весьма и весьма размыто: a.pop();s+='foo'
— скорее две строки, а a.pop(s+='foo')
— скорее одна, хотя эти два куска кода делают абсолютно одно и то же. Да и практика показала, что даже 30 слоков — вовсе не обязательное ограничение, а HTML и CSS вовсе не считаются. Иными словами, слоками померить крошечность невозможно, да и это никому не нужно.
Господа, это не серьёзно.
Но это не значит, что нужно прямо сейчас бросить недописанный к пятнице тридцатистрочник. Но когда наиграетесь, добро пожаловать в высшую лигу!
js1k
Это настоящее соревнование, с денежными и материальными призами, которое проводится с 2010 года. Организатор, Peter van der Zee (@kuvos предлагет на каждый конкурс какую-то тему, но она вовсе обязательна.
Зато обязателен набор правил, который с 2010 существенно не менялся:
- Код должен быть размером не более 1024 байт.
- Скрипт не может использовать внешние ресурсы.
- Кроссбраузерность между последними версиями Firefox, Chrome, Opera. Оперу, возможно, уберут.
Взамен Вы можете рассчитывать на то, что на странице, куда будет встраиваться Ваш скрипт, будет заранее созданный элемент <canvas>
, а переменные c
, a
будут ссылаться на этот канвас и его 2d-контекст соответственно.
Собственно, все условия намекают на то, что это компо рисования на канве. Однако это вовсе не обязательно, если есть желание, можно использовать голый DOM, благо, в переменной b
предусмотрительно продублирован document.body
. Раньше WebGL использовать было нельзя, однако со следующего года, похоже, что можно будет.
Сбор кода с конкурсантов проводится примерно с начала апреля до конца марта, возможно отправить несколько своих работ на конкурс, но участвовать будет только последняя.
DemoJS
demojs.org/, www.pouet.net/party.php?which=1570
Демопати, проводящееся с 2011 года во Франции. Да-да, это вроде Assembly, Breakpoint или Chaos Constructions, только вместо C, C++ и ассемблера тут джаваскрипт.
Собственно, соревнования проводятся по трём зачетам: 1K, 8K и Demo. В 1K и 8K суммарный размер кода (допускается несколько файлов) не может превышать 1024 и 8192 байт соответственно. В категории Demo такого ограничения нет.
Тут Вы можете выкладывать вообще что угодно, лишь бы оно запускалось в любом из известных науке браузеров без плагинов. Кстати, тут очень распространен упаковщик JSEXE, который читает «лишь бы запускалось» буквально, и упаковывает JS в PNG, давая внушительный запас места …но это отдельная тема.
Проходит демопати примерно в середине лета. Даже если Вы не можете поехать в Париж, вы сможете участвовать, прислав свой код организаторам. Несмотря на то, на конкурс в категориях 1K и 8K не запрещено выставлять игры, и Эксели, всё мероприятие ориентировано на зрелищность, и ждать от Вас будут всё-таки демо.
140 bytes
Экосистема js-код-гольферов, созданная Джедом Шмидтом (Jed Schmidt, jed.is/) в 2011. Экосистема в том смысле, что обычно автору помогают другие участники («кэдди»). Никаких призов и подарков тут Вы не получите. Более того, весь Ваш код должен быть под лицензией WTFPL (или аналогичной).
Тут, пожалуй, самые жесткие правила:
- Код должен быть размером не более 140 байт,
- Код должен быть выражением («Expression»), которое можно присвоить переменной. Т.е., функция — хорошо,
for
— плохо, - Скрипт не должен изменять какие-либо переменные во внешних областях видимости. Иными словами,
var
обязателен.
Сейчас весь проект выглядит немного заброшенным — сайт не обновляется давно, да и с тех пор на gist.github.com стало не так удобно работать с форками (самое главное, пожалуй, то, что отключили нотификации о комментариях), но жизнь на Марсе есть.
Поучастововать Вы можете, создав форк gist.github.com/140bytes/962807. Несмотря на то, что
Резюмируя, если Вы хотите подготовиться к js1k, или просто порезать байты для удовольствия, лучше места не найдешь.
microjs
В отличие от предыдущих сайтов, ориентированных на зрелищность или академический интерес, тут вещи максимально практичные. Microjs — это набор библиотек. размер которых после сжатия GZIP не превышает 5120 байт (5 КиБ). Многовато? Да, но ведь микробиблиотечка должна обладать всеми качествами взрослой библиотеки: она должна быть полезной, кросс-браузерной, без багов, протечек памяти и засорения глобала.
Несмотря на кажущуюся игрушечность, в этом репозитории есть Zepto, Modernizr, пара шаблонизаторов Mustache и прочие серьезные вещи. Так что если Вы хотите нести человеческву хлеб, а не зрелища, Вам точно сюда.
Вместо заключения
Я надеюсь, этот пост понравится скучающим js'никам среднего/старшего уровня, т.к. на них в общем-то и рассчитан. Да, я знаю, что дайджест сайтов для поста на Хабрахабре — недостаточно крутая штука, но просьба не закидывать палками. По крайней мере, сильно.
Автор: subzey