javascript
Найдено: 33 записи
Javascript →
Оптимизация JavaScript: Scope, Low level ES vs ES5 Array methods
Сегодня мы будем тестировать 2 блока кода, выполняющие следующую операцию:
Дается массив, необходимо выбрать все элементы, степень 2 которых больше 5.
В синем углу Вариант А: Низкоуровневый код — старый и страшный (поддающийся частичной оптимизации)
В красном углу Вариант Б: Высокоуровневый код — молодой и красивый (не поддающийся частичной оптимизации)
Битвы будут происходить на 3 аренах.
1. AO args — Параметры объекта активации функции.
2. AO — Локальные переменные объекта активации функции.
3. Global — Глобальные переменные.
Дается массив, необходимо выбрать все элементы, степень 2 которых больше 5.
В синем углу Вариант А: Низкоуровневый код — старый и страшный (поддающийся частичной оптимизации)
- for (i = 0, res = []; i < c; i++) {
- t = a[i];
- if (t >= 2.236067) {
- continue;
- } else {
- res.push(t * t);
- }
- }
В красном углу Вариант Б: Высокоуровневый код — молодой и красивый (не поддающийся частичной оптимизации)
- a.map(function (t) { return t * t}).filter(function (t) { return t > 5});
Битвы будут происходить на 3 аренах.
1. AO args — Параметры объекта активации функции.
2. AO — Локальные переменные объекта активации функции.
3. Global — Глобальные переменные.
21.12.2010 01:50+0300
Ни о чём →
Javascript: Отправка изображения на канвасе на сервер
Здравствуйте хабровчане.
Решил я сделать отправку изображения с канваса на сервер.
А что из этого получилось смотрите под катом.
Решил я сделать отправку изображения с канваса на сервер.
А что из этого получилось смотрите под катом.
19.12.2010 22:16+0300
JQuery →
10 интересных jquery плагинов
Каждый веб-разработчик использует Javascript при создании веб-приложений, а когда дело доходит до отображения нескольких элементов на странице с акцентом на один элемент, без использование слайдеров не обойтись. Слайдеры можно использовать для отображения ленты новостей, изображений или продуктов в той форме, которая была бы удобна пользователям. Ниже представлены несколько интересных решений, которые помогут в создании веб-приложений.
06.10.2010 14:36+0400
Ни о чём →
fxCanvas 0.1a — релиз «эмулятора» тега Canvas для Internet Explorer
Вышла первая стабильная версия «эмулятора» тега Canvas для Internet Explorer — fxCanvas 0.1a `Mario`.
Самые вкусные особенности:
- в качестве выходного буфера для графики используется флеш, что дает высокую скорость отрисовки;
- близкая к совершенству реализация Canvas API;
- базовая поддержка текста;
- возможность работы с массивом пикселей;
- определение точки-в-контуре;
- возможность загружать картинки в формате
data:
;
fxCanvas практически полностью реализует Canvas API, но с некоторыми особенностями.
Цепочки комманд и метод invoke
В fxCanvas используется довольно хитрый способ общения с флешом, благодаря которому время, затрачиваемое для передачи буфера с командами, близко к нулю (не буду утомлять техническими подробностями, так как вы можете их узнать, заглянув в исходники). Но как недостаток этого способа — для получения результата контекстной функции нужно вызывать метод через обертку invoke. Взгляните на пример:
var canvas = document.getElementById("cv"),
ctx = canvas.getContext("2d");
ctx.setFillStyle("#ff0")
.setStrokeStyle("#0ff")
.strokeRect(10, 20, 30, 30)
.fillRect(30, 40, 50, 50)
.invoke("getImageData", 0, 0, canvas.width, canvas.height, function (imageData) {
// ... imageData - возвращаемые данные getImageData
});
В этом примере обработчик вызывается после того, как контекстные команды будут выполнены (и да, это цепочка команд).Картинки
Для предзагрузки картинок в fxCanvas добавлен метод loadImage:
var canvas = document.getElementById("cv"),
ctx = canvas.getContext("2d"),
image_src = "sample.jpg";
canvas.onload = function(img) {
if (img.src.indexOf(image_src) > -1) {
ctx.drawImage(img, 10, 10);
}
}
canvas.loadImage(image_src);
Кроме того, картинки могут быть в формате data:
URI.Карта пикселей
Карта пикселей (image data), вероятно, одна из самых интересных особенностей fxCanvas, так как эта штука предоставляет разработчикам возможность реализовывать различные эффекты «не выходя из браузера». Например вот так:
var canvas = document.getElementById("cv"),
ctx = canvas.getContext("2d");
ctx.invoke("getImageData", 0, 0, canvas.width, canvas.height, function(buf)
{
for (var y = 0; y < canvas.height; y++)
{
for (var x = 0; x < canvas.width; x++)
{
var ofs = y * canvas.width + x,
pixelValue = buf.data[ofs],
red = pixelValue.charCodeAt(0),
green = pixelValue.charCodeAt(1),
blue = pixelValue.charCodeAt(2),
alpha = pixelValue.charCodeAt(3);
buf.data[ofs] = String.fromCharCode(red % 32, green % 64, blue % 128, alpha);
}
}
ctx.invoke("putImageData", buf, 0, 0, function () {;
// ... и распечатаем буфер по завершении операции
console.log("Image data dump:" + buf);
// Заметьте, Internet Explorer не отображает текст с символом \x00.
});
});
И да, это работает достаточно медленно в Internet Explorer, в отличие от его конкурентов (хотя есть некоторое решение этой проблемы, оно будет добавлено в следующей версии).Кстати, как вы наверно заметили, структура данных отличается от той, что заявлена в спецификации. Новый формат более эффективен по времени обработки и занимаемой памяти.
Точка в контуре?
В Internet Explorer метод
isPointInPath(x, y)
возвращает положительное значение если x, y находится в границах контура. В остальных браузерах — если внутри заливки контура.Снимок холста
Можно получить через
toDataURL()
:var canvas = document.getElementById("cv");
var type = "image/jpg", quality = .4; // качество картинки - необязательный аргумент
canvas.toDataURL(type, quality, function (png_data) {
// следущий код будет рисовать кусок холста на том же самом холсте
var ctx = this.getContext("2d");
this.onload = function (img) {
ctx.drawImage(img, 0, 0, canvas.width - 100, 0, 100, 100);
}
this.loadImage(png_data);
});
Это похоже на вызов invoke, где возращаемое значение передается фунции-обработчику. Тип картики может быть «image/jpeg» или «image/png» (по умолчанию).
Пример работы с картой пикселей и снимком холста.
Операции смешивания пикселей (composite operations)
В fxCanvas реализованы только
source-over
и lighter
. Но в будущем будут добавлены остальные.Скачать исходники можно здесь, посмотреть примеры и тесты здесь.
15.04.2010 23:47+0400
Ни о чём →
Бухгалтерия онлайн для малого и среднего бизнеса
www.schetov.ru
Добрый день,
мы рады представить вам наш продукт. Его можно отнести к модному нынче течению — стартап. Я думаю в основе любого стартапа лежит ИДЕЯ. К этому мы подошли основательно. В нашей команде присутствовали люди разных сфер деятельности (дизайнер, программист, продавец компьютеров), что позволило взглянуть на систему с разных сторон. После довольно таки длительных обсуждений было составлено чёткое представление системы.
23.03.2010 12:31+0300
Подсознание →
Распределенные вычисления на javascript
На днях открыл для себя Life with Playstation, но суть не в нем, а в фоновом процессе Folding@home. Проект распределённых вычислений для проведения компьютерной симуляции свёртывания молекул белка. Пока мы читаем новости, смотрим погоду наша PS3 производит вычисления для Folding@home.
И тут мне пришла идея, а почему бы не производить вычисления в браузере, пока пользователь работает на нашем сайте, ведь загрузка процесора при просмотре сайта минимальна.
Долго не мог придумать, что же такое можно вычислять распределенно, дабы материализировать идею… Рендерить 3D сцену — не оправдано для теста и затратно по передаваемым данным. Вспомнилась простая лабораторная работа из студентческих годов по КМФП — визуализация потенциала поля с несколькими зарядами. Предельно просто, можно вычислять распределенно.
И тут мне пришла идея, а почему бы не производить вычисления в браузере, пока пользователь работает на нашем сайте, ведь загрузка процесора при просмотре сайта минимальна.
Долго не мог придумать, что же такое можно вычислять распределенно, дабы материализировать идею… Рендерить 3D сцену — не оправдано для теста и затратно по передаваемым данным. Вспомнилась простая лабораторная работа из студентческих годов по КМФП — визуализация потенциала поля с несколькими зарядами. Предельно просто, можно вычислять распределенно.
12.03.2010 14:00+0300
Веб разработка →
Многоуровневое дерево с маркерами (HTML, CSS, jQuery). Запоминаем выбранный узел
Это продолжение темы про дерево. Хочу его довести до ранга «готов к внедрению». Потому повозился с Javascript и сделал запоминание выбранного узла на основе адреса ссылки.
Если ссылка вложена в поддерево, дерево развернется до её уровня и, если у неё самой есть поддерево — оно тоже будет развернуто.
Javascript сделал как смог, т.к. давно не использовал. Прошу помощи в доработке и оптимизации.
Если ссылка вложена в поддерево, дерево развернется до её уровня и, если у неё самой есть поддерево — оно тоже будет развернуто.
Javascript сделал как смог, т.к. давно не использовал. Прошу помощи в доработке и оптимизации.
10.04.2009 00:16+0400
Javascript →
White IDE — Браузерная RAD среда разработки на JavaScript
Привет, хочу представить одну интересную разработку студии, в которой я работаю. И как ведущий разработчик буду её освещать :)
26.12.2008 19:32+0300
Javascript →
Выбор флага страны по коду.
19.12.2008 19:50+0300
Javascript →
GameBox — аркадная игрушка на JavaScript.
Привет.
Решил я познакомится с технологией canvas и написал ардкадную игрушку.
Использовал для старта руководство.
Решил я познакомится с технологией canvas и написал ардкадную игрушку.
Использовал для старта руководство.
27.11.2008 18:15+0300
JQuery →
jQuery для начинающих. Часть 3. AJAX
Представляю Вам третью статью из серии jQuery для начинающих. В этот раз я постараюсь рассказать о реализации AJAX запросов...
15.10.2008 12:32+0400
JQuery →
jQuery для начинающих
jQuery — это замечательный Javascript Framework, который подкупает своей простотой в понимании и удобством в использовании. Но изучение надо с чего-то начинать, и лично моё мнение — лучше всего начинать с наглядных примеров, и они далее…
27.12.2007 09:49+0300
humour →
Вернуться верно!
Гуглил я что-то по аяксу и наткнулся на некий линк. Захожу, ну там всё цивильно, описание, автор, листинг, комменты. И смотрю, вверху есть кнопочка "Translate". Ну, думаю, дай-ка на русском почитаю, выбираю русский, жму. Начинаю читать, и чувствую - что-то не то. Вчитался - и упал под стол =) JS\HTML переведён на русский, да как!
н var = 'ж' + Мат. слово (скромный случайная () * 99999);
и так далее.
Полностью здесь.
После прочтения вы поймёте смысл названия ;)
н var = 'ж' + Мат. слово (скромный случайная () * 99999);
и так далее.
Полностью здесь.
После прочтения вы поймёте смысл названия ;)
19.10.2007 14:14+0400