Programming

Алгоритм P: Перемешивание массива

Приветствую друзья.

Сегодня речь пойдет о перемешивании одномерно массива. Будем пользоваться Алгоритмом P, описанным Дональдом Кнутом (Искусство программирования. Том 2, с.163).

Для начала процитируем описание алгоритма.

Алгоритм P (Перемешивание). Пусть X1, X2, …, Xt – множество t чисел для перемешивания.

P1. “Инициализация”. Присвоить j <- t.

P2. “Генерация U”. Генерировать случайное число U, равномерно распределенное между 0 и 1.

P3. “Замена”. Присвоить j <- round(j*U) + 1, где round() – операция округления до целого числа. Заменим Xk <-> Xj.

P4. “Уменьшение j”. Уменьшить j на 1. Если j>1, возвратиться к шагу P2.

Читать далее…

Меняем значение переменных местами

Забавный факт. Сегодня узнал, что для того чтобы поменять значения двух переменных местами не обязательно пользоваться конструкцией:

tmp = var1;
var1 = var2;
var2 = tmp;

Можно просто выполнить три операции поразрядного исключающего ИЛИ:

var1 ^= var2;
var2 ^= var1;
var1 ^= var2;

P.S. Вспомнив азы булевой алгебры, проверил на листочке бумаги, таки работает =)

С днем рождения jQuery или релиз версии 1.4

Сегодня очередная годовщина jQuery. Разработчики jQuery решили приурочить к четвертому дню рождения этой замечательной библиотеки релиз новой версии 1.4.

В честь этого двойного праздника был открыт сайт 14 Days of jQuery, на котором в течении 14 дней будет анонсирована новая версия библиотеки.

Читать далее…

Бегущая строка на JavaScript своими руками

Сегодня речь пойдет о создании простого скрипта для имитации эффекта бегущей строки. Для начала, придумаем, как это будет работать. По идее должен быть внешний контейнер, который определит размеры блока бегущей строки и ее положение в пространстве на странице, назовем его marquee_container. Также должен существовать блок, содержащий “бегущий” текст, наречем его – marquee_text.

Теперь должно быть все просто, мы задаем родительскому блоку фиксированную ширину, position: relative (для того, чтобы мы могли абсолютно позиционировать блок с текстом относительно текущего), overflow: hidden (для того, чтобы “бегущий” текст скрывался за границами родительского блока). Далее пишем скрипт, который отодвигает текст вправо на ширину родительского блока (теперь он не видим) и потом перемещает его влево с заданной скоростью, пока текст не скроется полностью. И повторяем это действие снова и снова =).

Читать далее…

Знакомство с Google Maps API. Часть #2

Как я и обещал в первой части Знакомства с Google Maps API этого цикла, мы сейчас познакомимся с обработкой событий, добавлением/управлением объектами карты Google.

Как для регистрации обработчиков событий DOM и пользовательских событий, так и для их запуска в Google maps API есть пространство имен GEvent.  Сейчас мы воспользуемся для примера методом addListener(source, event, handler).  Этот метод регистрирует пользовательское событие event в источнике объекта source и вызывает обработчик handler.

Читать далее…

Знакомство с Google Maps API. Часть #1

Для того чтобы использовать карты Google на своем веб-ресурсе, необходимо получить ключ к API карте гугла. Для этого идем по этому адресу, соглашаемся с условиями использования, вводим URL своего сайта и жмем “Сгенерировать ключ к API”. На следующей странице получаем ключ.

Следующим шагом нам необходимо подключить саму библиотеку Google:

<script src="http://maps.google.com/maps?file=api&v=2.x&sensor=false&key=[здесь_код_к_API]" type="text/javascript"></script>

Читать далее…

Получаем список всех вложеных файлов и папок на php

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

Читать далее…

Время выполнения php скрипта

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

Читать далее…

В Firefox`е не работает innerHTML ?

Панацея здесь.

Читать далее…

Перехват (обработка, отключение) ошибок в JavaScript

Иногда все-таки возникает потребность перехватить ошибки при выполнении сценария JavaScript, с целью обработать каким либо образом сообщения об ошибке (например, через xHttprequest отправить на сервер и записать в .log файл) либо просто отключить вывод этих сообщений конечному пользователю.

Читать далее…