- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

js1k

js1k.com/ [2]

Это настоящее соревнование, с денежными и материальными призами, которое проводится с 2010 года. Организатор, Peter van der Zee (@kuvos [3] предлагет на каждый конкурс какую-то тему, но она вовсе обязательна.

Зато обязателен набор правил [4], который с 2010 существенно не менялся:

  • Код должен быть размером не более 1024 байт.
  • Скрипт не может использовать внешние ресурсы.
  • Кроссбраузерность между последними версиями Firefox, Chrome, Opera. Оперу, возможно, уберут.

Взамен Вы можете рассчитывать на то, что на странице, куда будет встраиваться Ваш скрипт, будет заранее созданный элемент <canvas>, а переменные c, a будут ссылаться на этот канвас и его 2d-контекст соответственно.

Собственно, все условия намекают на то, что это компо рисования на канве. Однако это вовсе не обязательно, если есть желание, можно использовать голый DOM, благо, в переменной b предусмотрительно продублирован document.body. Раньше WebGL использовать было нельзя, однако со следующего года, похоже, что можно будет [5].

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

DemoJS

demojs.org/ [6], www.pouet.net/party.php?which=1570 [7]

Демопати, проводящееся с 2011 года во Франции. Да-да, это вроде Assembly, Breakpoint или Chaos Constructions, только вместо C, C++ и ассемблера тут джаваскрипт.

Собственно, соревнования проводятся по трём зачетам: 1K, 8K и Demo. В 1K и 8K суммарный размер кода (допускается несколько файлов) не может превышать 1024 и 8192 байт соответственно. В категории Demo такого ограничения нет.

Тут Вы можете выкладывать вообще что угодно, лишь бы оно запускалось в любом из известных науке браузеров без плагинов. Кстати, тут очень распространен упаковщик JSEXE [8], который читает «лишь бы запускалось» буквально, и упаковывает JS в PNG, давая внушительный запас места …но это отдельная тема.

Проходит демопати примерно в середине лета. Даже если Вы не можете поехать в Париж, вы сможете участвовать, прислав свой код организаторам. Несмотря на то, на конкурс в категориях 1K и 8K не запрещено выставлять игры, и Эксели, всё мероприятие ориентировано на зрелищность, и ждать от Вас будут всё-таки демо.

140 bytes

140byt.es/ [9]

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

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

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

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

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

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

microjs

microjs.com/ [15]

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

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

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

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

Автор: subzey

Источник [16]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/48830

Ссылки в тексте:

[1] код-гольфа: http://en.wikipedia.org/wiki/Code_golf

[2] js1k.com/: http://js1k.com/

[3] @kuvos: http://twitter.com/kuvos

[4] набор правил: http://js1k.com/2013-spring/rules

[5] похоже, что можно будет: https://twitter.com/js1k/status/337224996197904384

[6] demojs.org/: http://demojs.org/

[7] www.pouet.net/party.php?which=1570: http://www.pouet.net/party.php?which=1570

[8] JSEXE: http://www.pouet.net/prod.php?which=59298

[9] 140byt.es/: http://140byt.es/

[10] jed.is/: http://jed.is/

[11] WTFPL: http://ru.wikipedia.org/wiki/WTFPL

[12] Expression: http://es5.github.io/#x11

[13] gist.github.com/140bytes/962807: https://gist.github.com/140bytes/962807

[14] хостится: https://www.reg.ru/?rlink=reflink-717

[15] microjs.com/: http://microjs.com/

[16] Источник: http://habrahabr.ru/post/202944/