avva: (moose)
[personal profile] avva
Красивый эффект "Матрицы" в минимальном Джаваскрипте, меньше 600 байт:


<body style=margin:0 onload="for(s=window.screen,w=q.width=s.width,h=q.height=s.height,m=Math.random,p=[],i=0;i<256;p[i++]=1);setInterval('9Style=\'rgba(0,0,0,.05)\'9Rect(0,0,w,h)9Style=\'#0F0\';p.map(function(v,i){9Text(String.fromCharCode(3e4+m()*33),i*10,v);p[i]=v>758+m()*1e4?0:v+10})'.split(9).join(';q.getContext(\'2d\').fill'),33)"><canvas id=q>


Чтобы разобраться в том, как это сделано, я немного развернул и и прокомментировал текст, не меняя основную логику.

(уже после того, как я это сделал, обнаружил другое объяснение, более подробное и развернутое).

Date: 2013-03-17 11:44 am (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Код в посте не запустился.
Браузер пожаловался на string которая разнесена на отдельные lines, ( "unterminated quote" ) и на пропущеный 0 в 1e4?:v+10})


Попробуйте вместо <pre> - <font face="consolas,monospace">




Авва, какие у вас ощущения от де-обфускации кода?

Date: 2013-03-17 12:04 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
цифры:
context.fillText(String.fromCharCode(48+m()*10),i*10,v);

катакана, как оно в матрице и было:
context.fillText(String.fromCharCode(0x30A0+85*m()),i*10,v);


русские буквы:
context.fillText(String.fromCharCode(1040+32*m()),i*10,v);

иврит:
context.fillText(String.fromCharCode(0x05D0+26*m()),i*10,v);

арабский:
context.fillText(String.fromCharCode(0x620+m()*60),i*10,v);

тайский:
context.fillText(String.fromCharCode(0x0E50+m()*12),i*10,v);


Date: 2013-03-17 04:08 pm (UTC)
From: [identity profile] herr-sgor.livejournal.com
В катаканe направление письма сверху вниз, поэтому буковки "падают".

В русском направление письма слева направо, поэтому буковки должны двигаться в том же направлении. Для этого нужно в коде поменять "i*10,v" на "v,i*10".

А в иврите буковки должны двигаться справа налево. Для этого в коде "p[i++]=1" меняется на "p[i++]=758", а "p[i]=v>758+m()*1e4 ? 0 : v+10;" на "p[i]=v<-m()*1e4 ? 758 : v-10;".

Date: 2013-03-17 01:52 pm (UTC)
From: [identity profile] avva.livejournal.com
Спасибо, исправил пост.

Не знаю, а какие должны быть ощущения? Красивая штука, я бы сам не додумался так написать, потому что плохо знаю платформу и не знал, что можно постепенно затемнять экран, используя заполнение с альфа-каналом.

Date: 2013-03-17 03:41 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Я имел ввиду удовольствие от расшифровки. Как здесь - http://avva.livejournal.com/2554966.html

Date: 2013-03-17 05:03 pm (UTC)
From: [identity profile] avva.livejournal.com
Мне понравились трюки для сокращения текста, типа остроумный split(9) или использование join, но сам процесс расшифровки был простым и не требовал особых усилий.

Date: 2013-03-17 02:36 pm (UTC)
From: [identity profile] kitchengoo.livejournal.com
тег font нельзя использовать вместе с тегом canvas, потому что в html5 больше нет такого тега (http://www.w3schools.com/html/html5_new_elements.asp)

Date: 2013-03-17 03:39 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Можно, только заескейпить < и >:

Смотрите:
<font ...> &lt;canvas&gt; </font>

Date: 2013-03-17 12:34 pm (UTC)
From: [identity profile] yoksel-moksel.livejournal.com
Это с точки зрения программиста красиво. А с точки зрения пользователя - поубивал бы за все эти матрицы-шматрицы, снежинки поверх страниц, видеорекламу и выскакивающие окошки-чятики «наш консультант будет рад ответить на Ваши вопросы!»

Date: 2013-03-17 01:42 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Оригинал красивее гораздо.

Date: 2013-03-17 03:06 pm (UTC)
From: [identity profile] winpooh.livejournal.com
Кроме потемнения экрана, никакого эффекта не наблюдаю. Windows, Firefox 19.0.2.

Date: 2013-03-17 05:01 pm (UTC)
From: [identity profile] avva.livejournal.com
И по ссылке, которая в первой строке записи, тоже?

Date: 2013-03-17 05:14 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Автор хак-демки переборщил с невалидным html, в результате оно по рандому не работает в зависимости от браузера и плагинов

Date: 2013-03-17 05:53 pm (UTC)
From: [identity profile] winpooh.livejournal.com
Не работает. Ни в FF, ни в IE 8.

Date: 2013-03-17 05:58 pm (UTC)
From: [identity profile] avva.livejournal.com
Ну как минимум ссылка "объяснения" на jsfiddle должна работать. У меня в FF работает, я проверил.

Date: 2013-03-17 06:02 pm (UTC)
From: [identity profile] winpooh.livejournal.com
Ни одна из трёх не работает. Нажимаю Run - окошко справа темнеет, и всё. Думаю, дело действительно в плагинах или расширениях.

Date: 2013-03-18 01:15 pm (UTC)
From: [identity profile] winpooh.livejournal.com
В том же FF с теми же дополнениями на рабочем компе всё работает. Отличия: дома WinXP SP3 32-bit, на работе Win7 64-bit.
Может быть, дело ещё в наличии соответствующих шрифтов?

Date: 2013-03-17 03:07 pm (UTC)
From: [identity profile] soloviewoff.livejournal.com
Красиво. Не уверен, что в оригинальном эффекте на каждой вертикали только один фронт.

Date: 2013-03-17 06:14 pm (UTC)
From: [identity profile] asox.livejournal.com
У ёлки, и вправду работает.
Opera + Mint

Date: 2013-03-17 06:42 pm (UTC)
From: [identity profile] rejneke.livejournal.com
как жаль, что с одной скоростью падают :)

Date: 2013-03-18 09:24 am (UTC)
From: [identity profile] bamsic.livejournal.com
Игра с палитрой (тут можно сравнить) была популярна в старых играх.
Даже "бегущая" полоска при загрузки Windows 95 была реализована похожим образом.

:)

Date: 2014-01-07 04:11 am (UTC)
From: [identity profile] nidje994.livejournal.com
В принципе, написавший необычно опубликовал.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 05:29 pm
Powered by Dreamwidth Studios