Маленькие программы на Javascript: куда податься

в 16:17, , рубрики: javascript, js1k, ненормальное программирование, метки: ,

Да, я про лавинообразный поток статей про программы на javascript в 30 строк, охвативший Хабр. Честно сказать, я и сам ярый любитель (специальной?) дисциплины код-гольфа на js, и провел не один выходной, пытаясь втиснуть функцию в твит. И хотя мне нравится дух тридцатистрочников, мне не по духу этот формат.

Почему? Ограничение в 30 sloc весьма и весьма размыто: a.pop();s+='foo' — скорее две строки, а a.pop(s+='foo') — скорее одна, хотя эти два куска кода делают абсолютно одно и то же. Да и практика показала, что даже 30 слоков — вовсе не обязательное ограничение, а HTML и CSS вовсе не считаются. Иными словами, слоками померить крошечность невозможно, да и это никому не нужно.

Господа, это не серьёзно.

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

js1k

js1k.com/

Это настоящее соревнование, с денежными и материальными призами, которое проводится с 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

140byt.es/

Экосистема js-код-гольферов, созданная Джедом Шмидтом (Jed Schmidt, jed.is/) в 2011. Экосистема в том смысле, что обычно автору помогают другие участники («кэдди»). Никаких призов и подарков тут Вы не получите. Более того, весь Ваш код должен быть под лицензией WTFPL (или аналогичной).

Тут, пожалуй, самые жесткие правила:

  • Код должен быть размером не более 140 байт,
  • Код должен быть выражением («Expression»), которое можно присвоить переменной. Т.е., функция — хорошо, for — плохо,
  • Скрипт не должен изменять какие-либо переменные во внешних областях видимости. Иными словами, var обязателен.

Сейчас весь проект выглядит немного заброшенным — сайт не обновляется давно, да и с тех пор на gist.github.com стало не так удобно работать с форками (самое главное, пожалуй, то, что отключили нотификации о комментариях), но жизнь на Марсе есть.

Поучастововать Вы можете, создав форк gist.github.com/140bytes/962807. Несмотря на то, что хостится все это на гитхабе, знать git не обязательно — всё через веб-интерфейс, и достаточно иметь гитхабовскую учетку. Но прежде, чем нажать на кнопку «Fork», прочитайте, пожалуйста, правила и напиште то, что хотите отослать — пустых форков уже предостаточно.

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

microjs

microjs.com/

В отличие от предыдущих сайтов, ориентированных на зрелищность или академический интерес, тут вещи максимально практичные. Microjs — это набор библиотек. размер которых после сжатия GZIP не превышает 5120 байт (5 КиБ). Многовато? Да, но ведь микробиблиотечка должна обладать всеми качествами взрослой библиотеки: она должна быть полезной, кросс-браузерной, без багов, протечек памяти и засорения глобала.

Несмотря на кажущуюся игрушечность, в этом репозитории есть Zepto, Modernizr, пара шаблонизаторов Mustache и прочие серьезные вещи. Так что если Вы хотите нести человеческву хлеб, а не зрелища, Вам точно сюда.

Вместо заключения

Я надеюсь, этот пост понравится скучающим js'никам среднего/старшего уровня, т.к. на них в общем-то и рассчитан. Да, я знаю, что дайджест сайтов для поста на Хабрахабре — недостаточно крутая штука, но просьба не закидывать палками. По крайней мере, сильно.

Автор: subzey

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js