Обновить
196.01

JavaScript *

Прототипно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Притча о шаблонах

Время на прочтение8 мин
Количество просмотров1.9K
 — Здравствуй *с широко развевающейся по лицу улыбкой* дружок.
 — Ваа! *с ярким блеском в широко распахнутых глазах* Тётя Ася приехала!
 — Да, и у меня есть для тебя новая сказка *присела и взяла малыша за руки* хочешь послушать?
 — Конечно! *слегка смутился и отвёл взгляд* Мне тут дядя такие страшные истории рассказывал…
 — Ну, надеюсь моя история тебя не испугает *потрепала его по волосам* Она должна научить тебя мыслить шаблонно.
 — Эээ? *лицо перекосилось от недопонимания* Это как?
 — М… сейчас узнаешь *подмигнула и взяла на ручки* Вот когда тебе нужно вставить переменные в строку — ты как поступишь?
 — Ну… *взял карандаш и чирканул на лежащей рядом бумажке* примерно так:
var query= 'xxx'
var resultCount= 512
var message= 'По запросу <kbd>' + query + '</kbd> найдено страниц: ' + resultCount

 — Ты ничего не забыл? *победоносно подняла голову*
 — Да вроде нет… *уткнулся носом в код, ещё раз внимательно его проверяя*
 — Что, если пользователь введёт… *выдержала многозначительную паузу и добавила*
какого же порева она там добавила?

Немного шаблонизирования

Время на прочтение2 мин
Количество просмотров1.6K
Не так давно из лекции Дугласа Крокфорда я узнал об очень интересной технике «шаблонизирования» в JavaScript. Основная цель техники заключается в том, что мы получаем с сервера JSON и потом как-то формируем из этого HTML. Во многих ситуациях этот процесс оставляет желать лучшего потому, что формирование HTML происходит или с помощью конкатенации строк или ряда операций createElement, appendChild и т.п. Возможно многие уже знают об этом решении, но для тех кто не знал надеюсь будет полезно.
Читать дальше →

Smokescreen — «Flash-плеер, написанный на Javascript»

Время на прочтение3 мин
Количество просмотров2.3K
Увидел недавно топик-ссылку Smokescreen — конвертер flash в html5\js, решил сделать перевод той информации, которую я уже читал в сети про этот новый инструмент. Если коротко: Smokescreen — новый проект с открытыми исходниками, направленный на преобразование Flash в JavaScript/HTML5 для лучшего взаимодействовия с веб-страницей там, где раньше это было невозможно.
С его помощью вы можете расширить поддержку своего проекта на новые платформы без изучения новых инструментов, Flash автоматически преобразуется в JavaScript/HTML5. Smokescreen будет выпущен под open source лицензией и будет распространяться бесплатно. Стоимость поддержки и обслуживания будет низкой, чтобы вы могли убедиться, что Smokescreen работает именно так, как вам необходимо. Библиотека даст вам широкий выбор инструментов для разработки, включая разработку на JavaScript, без использования ActionScript, и разработку с подключением Flash к HTML-страницам проекта.
Читать дальше →

Appcelerator Titanium — что это и как оно там

Время на прочтение3 мин
Количество просмотров40K
Данная статья посвящена Appcelerator Titanium — платформе для создания мобильных и десктопных кроссплатформенных приложений на JavaScript (HTML+CSS в придачу). Развитие платформы, особенности, варианты использования, личный опыт
Читать дальше →

3D №2 или Illustrate! своими руками

Время на прочтение1 мин
Количество просмотров2K
Некоторое время назад, я публиковал топик про 3D с z-buffer-ом, субпиксельной точностью и освещением по Гуро на javascript с использованием канвы.

Сегодня я представляю вашему вниманию вариант без канвы (да и без gouraud shading, чего уж тут).



Это всего-лишь тестовые наработки, но, тем не менее, они работают (а лучше посмотрите сами).
Читать дальше →

Классы и метаклассы в Javascript

Время на прочтение3 мин
Количество просмотров3.1K
Хочу рассказать о решении, которое я использую для одиночного наследования в JavaScript. Оно настолько маленькое, что наверняка в том или ином варианте встречается где-нибудь еще. Надеюсь, кому-то из читателей оно окажется полезным.

Это часть фреймворка, который я сделал для своей платформы Akshell, вот полный код решения и документация. Однако оно может пригодиться в любой Server-Side JavaScript среде, на стороне сервера удобное создание иерархий классов особенно актуально. Его можно использовать и на клиенте, если заменить работу со свойством __proto__ оператором new.
Читать дальше →

Распознание речи из Javascript

Время на прочтение1 мин
Количество просмотров6.1K
image

Недавно Гугл позволил проговаривать текст с помощью Text-To-Speech API. Теперь возможно и обратное преобразование речи в текст.

Используя speechapi.com возможно построение интересных речевых веб-ресурсов включающих двустороннее текст-в-речь и речь-в-текст (speech-to-text as и text-to-speech) преобразования.

Это стало возможным благодаря использованию различных технологий: flash используется для доступа к микрофону и потоковому аудио, Red5 — как разносторонний медиа сервер с открытым исходным кодом.

(Ссылка на оригинал)
UPD: перенес в Javascript

Пример использования API:

Читать дальше →

Притча о потерянном состоянии

Время на прочтение5 мин
Количество просмотров1.3K
— Здра…
— А-а-а!
— Ну ты чего?
— Я вас боюсь!
— Чего это?
— Вы вечно меня унижаете…
— Хех, ну ладно, больше не буду.
— Правда?
— Доо, хочешь конфетку с аяксом?
— Конечно!
— Тада давай, лети к нам в Питер. Вот список авиарейсов на которые есть билеты отсортированный по цене: rasp.yandex.ru/search?cityFrom=Санкт-Петербург&cityTo=Москва
— Эм… что-то вы наврали дяденька — там вообще все рейсы из Москвы в Питер, отсортированные по времени отправления.
— Гм… действительно, не хорошо получилось… а значешь почему?
— Нэ?
— Потому что состояние приложения не отражается на uri. Поэтому каждый раз заходя на эту страницу из закладок, тебе придётся заново устанавливать фильтрацию и сортировку.
— Блоо, как же быть?
а далее самые жёсткие порносцены

Привязка модели данных к представлению на javascript

Время на прочтение7 мин
Количество просмотров3.1K
Я думаю многие пользуются DataBinding`ом в .NET, она же привязка данных. Она позволяет, при выделенной модели данных и независимом визуальном представлении, забыть о синхронизации данных с формой. Привязав один раз properties модели к элементам представления, мы избавляемся от десятков обработчиков onChange и подобных для изменения полей модели, а в случае изменения поля вне gui-интерфейса (например синхронизация модели с базой), мы не будем мешать уровни абстрации, чтобы обновить textBox.text. Давайте данные будут отдельно, gui отдельно. Плюс мы получаем наглядный, легко переносимый код на asp.net или даже на другой язык/платформу.

 databinding

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

Вызов метода Javascript без его вызова фактически

Время на прочтение2 мин
Количество просмотров3.4K
imageИногда мы бываем просто ленивыми. Особенно, когда доходит дело до написания кода. И хоть круглые скобки в вызове функции не приводят к избыточности, иногда все же они могут утомлять, особенно когда javascript-метод не нуждается в передаваемых ему аргументах. Иногда это просто надоедает.
Читать дальше →

Притча о пропавшем Стэке

Время на прочтение3 мин
Количество просмотров997
— Здравствуй, дружок…
— Дяденька, вы снова расскажете мне сказку?
— Конечно! Какой умненький мальчик!
— А про что?
— М… сегодня я расскажу тебе о том, куда пропадают чересчур самостоятельные мальчики вроде тебя…
— Э! Что значит пропадают?
— Вот то и значит… На, держи огнелиса *протянул, держа за хвост, пылающее пламенем животное* Только осторожно — он горячий!
— Ай-ай-ай! Он брыкается!
— Посади на него огненного жука — мигом успокоится.
— Класс! Действует!
— Ато! Теперь скажи ему:
function throwException( ){
    (void 0)()
}
throwException()

А дальше идёт жёсткое разоблачение

Javascript для Notepad++

Время на прочтение4 мин
Количество просмотров32K
Здравствуй Храбрачеловек,

сегодня я решил поделиться с тобой Plugin'ом для Notepad++, который позволит тебе спомощью JavaScript автоматизировать некоторые действия над текстом
и не только

Перегрузка функций в JS

Время на прочтение4 мин
Количество просмотров57K
Как известно, в JavaScript нельзя создать несколько функций, различающихся только списком параметров: последняя созданная перезапишет предыдущие. Про различие на уровне типов параметров говорить не приходится вообще. Обычно, если программист хочет создать функцию с множественным интерфейсом, он пишет что-то вроде такого:
  1. // getRectangleArea(x1, y1, x2, y2) или
  2. // getRectangleArea(width, height)
  3. function getRectangleArea(x1, y1, x2, y2) {
  4.   if(arguments.length==2) return x1*y1;
  5.   return (x2-x1)*(y2-y1);
  6. }
* This source code was highlighted with Source Code Highlighter.

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

Ближайшие события

Маленький тест на знание JS

Время на прочтение2 мин
Количество просмотров32K
Пост про (вполне логичные) особенности javascript ( habrahabr.ru/blogs/javascript/84311 ) вызвал бурное обсуждение. Я вслед за автором WTFJS.com сильно облажался, считая эти странности действительно чем-то мистическим ) Большое спасибо всем тем, кто объяснил, почему так происходит на самом деле или для чего так сделано. Понимание таких тонкостей позволяет перейти в общении с языком на «ты». Кто-то скажет, что это должен знать любой программист, хоть как-то владеющий JS? Возможно. Но, как оказалось, многие не знали, и я в их числе.

Простите, но кат здесь стоит только потому, что пост чуть больше, чем нужно

Ох уж этот javascript

Время на прочтение1 мин
Количество просмотров17K
Считаете себя гуру JS'а? Попробуйте предсказать результаты следующих операций:

Number.MIN_VALUE > 0; // true or false?

typeof null; // what type?
null === Object; // true or false?

// и самый сок

NaN === NaN; // true or false?

typeof NaN; // what type?


* This source code was highlighted with Source Code Highlighter.


Сомневаетесь? Тогда именно для вас Брайан Леру (Brian Leroux) создал WTFJS — сайт, содержащий коллекцию странностей JS. «JavaScript — это язык, который мы любим несмотря на все его ненавистные особенности».

Для нетерпеливых ответы под катом.

Подглядеть

nodeJS и nonblocking I/O

Время на прочтение5 мин
Количество просмотров9.7K

Добрый вечер уважаемые читатели,


На хабре последнее время проскакивало несколько упоминаний о node, быстрой платформе для создания вэб приложений на javascript, обладающей довольно уникальной на сегодняшний день особенностью, неблокирующим I/O (вводом/выводом).

Для начала о nodeJS:


1) В качестве языка используется JavaScript
2) Для выполнения JavaScript используется движок V8 от Google, который работает довольно быстро благодаря компиляции в машинный код перед выполнением.
3) Для реализации неблокирующего I/O используются libev и libeio, (libev показывает более хорошие результаты по сравнению с libevent)
4) Для реализации подключения библиотек выбран синтаксис commonJS
5) Есть возможность писать модули ещё и на C/C++, при этом подключаются они точно так-же как и js модули, это позволит Вам, к примеру, любое узкое место в вашем приложении переписать на C++ без каких либо трудностей.

В процессе изучения данного момента, что в итоге привело к написанию этой статьи я успел довольно неплохо поиграться с этой особоенностью. И могу сказать, что неблокирующий ввод/вывод очень и очень позитивно сказывается на производительности и устойчивости к нагрузкам.
Читать дальше

iLoad 3 — javascript галерея изображений

Время на прочтение1 мин
Количество просмотров13K
Я разработал хорошую на мой взгляд галерею изображений под названием iLoad. Сегодня опубликовал уже 3 версию. Галерея может достаточно много всего, хотя и работает только с изображениями. Подробнее можно прочитать в большущем посте вот тут или посмотреть на работу галереи на странице скачивания. Надеюсь, вы оцените.

UPD

Подготовил версию 3.2.5. Теперь галерея стабильно работает в IE9. Пофиксены все найденные баги.

Конструктор/редактор Яндекс.Карт

Время на прочтение1 мин
Количество просмотров14K
Внезапно потребовалось выводить на странице виджет Яндекс.Карт с какими-то накладываемыми слоями. Проблема заключалась в необходимости дать пользователю редактировать эти слои.

Быстрый поиск редакторов накладываемых примитивов дал только конструктор схем проезда от Яндекса и какой-то убогий php'шный конструктор карт (к тому же ещё и платный). А редактор был нужен. По этому пришлось сесть и быстренько написать.


Читать дальше →

QUnit. Тестирование javascript кода

Время на прочтение5 мин
Количество просмотров64K
Наткнулся вчера на этот инструмент и не смог пройти мимо, провел ночь за написанием тестов, а теперь хочу поделиться находкой. QUnit — это библиотека от разработчиков jQuery, позволяющая писать unit-тесты для кода на javascript. Удобна в использовании, ничего лишнего, осваивается за 20 минут, выгода от применения — колоссальная.

Самым нетерпеливым сразу ссылки:
Официальная документация на сайте jquery: docs.jquery.com/QUnit
Реальные примеры тестов (для модулей jquery): view.jquery.com/trunk/jquery/test/unit
Руководство для начинающих (англ): www.swift-lizard.com/2009/11/24/test-driven-development-with-jquery-qunit
Система распределенного тестирования (гениально и просто): testswarm.com

Под катом информация о преимуществах юнит-тестирования применительно к js и разбор возможностей библиотеки на примерах.
Читать дальше →

String.Format

Время на прочтение3 мин
Количество просмотров71K
Те, кто пишут на C# очень хорошо знают и часто используют механизм String.Format, которого сильно не хватает в JavaScript. Несмотря на его простоту и удобство, на просторах Сети мало что можно накопать, в основном вариации на тему sprintf (привет сишникам). Достаточно давно был написан скрипт, который позволял форматировать строки на JavaScript и был похож на String.Format C#. Форматирование стало использоваться коллегами достаточно плотно в скриптах и я решил немного причесать код и опубликовать для тех, кто хочет получить String.Format в JavaScript.
Читать дальше →

Вклад авторов