Метель из картинок на javascript

Рецепт приготовления очень прост:

1) заходим на любую страницу, где побольше картинок
2) в строку адреса копируем код

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.getElementsByTagName("img"); DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=(Math.sin(R*x1+i*x2+x3)*x4+x5)+"px"; DIS.top=(Math.cos(R*y1+i*y2+y3)*y4+y5)+"px"}R++}setInterval('A()',5); void(0);

3) жмем ENTER и наблюдаем красивую метель из картинок )))

Выпущен phpDays 1.1 beta2

Сегодня вышел очередной релиз phpDays 1.1 beta2.

В данном релизе было исправлено множество ошибок и добавлены новые возможности, такие как Days_Event (observer), Days_Helper (помощники вида) и Days_Tool_AppGenerator (создает новое приложение в командной строке и в браузере).

Так же были созданы UnitTests (спасибо Letlite и Xaoc2007) и проведен
рефакторинг многих частей кода.

Наша команда улучшила приложения (смотрите директорию "apps").
Изменено приложение "apps/phpdays.org" (продолжается его улучшение для использования на официальном сайте).

Наши переводчики помогли перевести документацию на 6 языков (English, Русский, Deutsche, French, Italiano, T?rk?e). Спасибо Volkirik,
Cristian Giustini, Hilmar Ackermann, Plodski, Letlite, Informpro Erelis.

Спасибо Вам за хорошую работу! В данном году мы выпустим финальную версию phpDays 1.1. В нее войдут новые возможности и исправления для работы в реальных приложениях. Мы продолжаем привлекать новых людей в проект.

С наилучшими пожеланиями!
Антон Данильченко.

Полноценные классы в Javascript. ООП в javascript. Структуры в javascript

К сожалению, в своей практике освоения Javascript мне не приходилось встречать толковой реализации классов и механизмов наследования. Хотя сам язык достаточно гибок и имеет огромный потенциал. Не доводилось видеть и удобной организации приватных методов. Обычно для этого использую следующий трюк. В качестве приватного метода создают функцию прямо в конструкторе, где должны быть описаны и все методы использующие её:

    function MyClass() {
      function privateMethod() {
      }
      this.publicMethod = function() {
        // используем privateMethod();
      }
    }

Данный подход имеет недостатки, поскольку privateMethod в указанном примере грубо назвать «методом класса». Все публичные методы приходиться описывать прямо в конструкторе, а значит, они будут создаваться каждый раз при создании нового объекта.
Также невозможно вне конструктора дополнить класс новыми методами. Читать полностью »