Все потоки
Поиск
Написать публикацию
Обновить
204.12

JavaScript *

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

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

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

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

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

Притча о перехвате ошибок

Время на прочтение4 мин
Количество просмотров2K
— Здравствуй, дружок. Хочешь, я расскажу тебе сказку? }:-]
— Конечно, дяденька, а какую? *_*
— Я расскажу тебе как делают детей ^_^'
— ого, как интересно! @_@
— Так вот, слушай. Дети появляются вследствие долгого и изнуряющего процесса разной степени нецензурности. Сейчас я поведаю тебе как появился на свет мой сын %-)
— А вы меня с ним познакомите? *о*
— Не торопи события. Обо всём по порядку. Однажды я наваял такой код:
  1. try {
  2.     throw new Error
  3. } catch( e ){
  4.     if( e != false ) throw e
  5. }
А далее идёт жёсткое порно...

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.

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

Практический опыт создания Dojo виджетов. Оптимизация производительности Javascript кода

Время на прочтение6 мин
Количество просмотров3.3K
Доброго времени суток, хабрасообщество.

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

image

image

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

dynaTrace AJAX — мощный профайлер JS

Время на прочтение3 мин
Количество просмотров7K
Недавно в обсуждении статьи шкала браузерности разговор зашел о том, что IE не так уж убог и его должен иметь на своем компьютере каждый уважающий себя веб-разработчик не только для того, чтобы смотреть не съехала ли там верстка, но и потому что для IE созданы, я считаю, лучшие на данные момент средства для дебага и профилирования JS.
Одно из таких средств — это dynaTrace Ajax, скачать который можно здесь.
Далее обилие скриншотов и небольшой рассказ о возможностях dynaTrace

Оптимизация JSON датасетов (массивов записей)

Время на прочтение11 мин
Количество просмотров9.2K
Под датасетом будем понимать массив записей JavaScript:

var dataset = [
  { foo: 'xxx', bar: xxx' },
  { foo: 'yyy', bar: 'yyy' },
  ...
  { foo: 'zzz', bar: 'zzz' }
];


Это обычное JavaScript представление некоторой части таблицы (или выборки) из реляционной базы данных: имена свойств соответствуют именам столбцов, значения свойств — значениям полей записи.

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

Google Code Playground — инструмент для совместного тестирования примеров на Javascript

Время на прочтение5 мин
Количество просмотров4.7K
Если знание начинают использовать
не по назначению —
это общественно полезное знание.


Прошёл год после открывания публике инструмента Google Code Playground. Времени прошло много, используется он мало. На самом же деле, у него есть всё, чтобы эффективно использоваться не по назначению.

Инструмент предназначен для демонстрации и онлайновой отладки примеров Гугл-кода (JS+HTML+CSS) в браузере. Старательно выложены сотни примеров и написана документация к ним. Сейчас нам всё это будет не нужно, кроме использования самого движка, позволяющего редактировать, тестировать и сохранять не чьи-нибудь, а свои примеры кода.
Читать дальше о достоинствах и недостатках сервиса

Асинхронное программирование: Примитивы высокого уровня

Время на прочтение2 мин
Количество просмотров3.1K
После появления асинхронного каркаса Twisted концепция отложенного результата (continuable) стала очень популярной.

Прежде всего рекомендую прочитать статьи: Асинхронное программирование: концепция Deferred, Deffered для JavaScript.

Но пользоваться отложенными результатами не очень удобно без абстракций более высокого уровня. И теперь у нас есть каркас Do.
Читать дальше →

Маленький тест на знание 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.
Читать дальше →

Javascript Templater ноль.два

Время на прочтение10 мин
Количество просмотров1.2K
Нашел в закромах свой старый JavaScript шаблонизатор, почитал отзывы в прошлой статье и решил кое-то переделать, изменений не так много, но они вполне существенны, добавил поддержку функций и методов в шаблонах…
кому интересно, идем дальше

Bacon And Eggs. Велосипед с яйцами и линейной алгеброй!

Время на прочтение1 мин
Количество просмотров2.4K
Недавно у меня появился ряд задач, связанных с процедурной графикой в вебе, анимацией и механикой.
Став искать простые пути там, где их обычно нет, я наткнулся на чудненькую библиотеку «Bacon And Eggs» от Эндрю Хойера.
Красную или синюю?

Мастер-классы по javascript в Москве и Санкт-Петербурге

Время на прочтение1 мин
Количество просмотров566
В феврале пройдут мастер-классы по javascript в Москве и Санкт-Петербурге.
Даты — 20 и 21 февраля для Москвы, 27 и 28 февраля для Санкт-Петербурга.
  • Профессиональное javascript-программирование.
  • Сложный AJAX и COMET: тонкости Web 2.0.
  • Мастер-класс по клиентской оптимизации.
  • Секреты jQuery.
На мастер-классы приходят как начинающие, но желающие вырасти побыстрее, так и ведущие специалисты серьезных компаний.
Все говорят спасибо. Это не шутка, материала много и он интересный.

Мероприятие платное, но цена очень доступная. Приходите, узнаете много нового.

Регистрация открыта на javascript.ru/mk, там же больше информации о мастер-классах.

Викторина для тех, кто любит Javascript больше ECMAscript

Время на прочтение2 мин
Количество просмотров3.6K
Викторина для тех, кто любит JavaScript больше ECMAScript. Главный приз: пирожок на полке.

Update: Пояснение. Для тех кто совсем не в теме. ECMAScript — это стандарт языка, на котором основаны реализации JavaScript в современных браузерах. Именно этот стандарт определяет поведение программ в этой статье. JavaScript является «надстройкой» над ECMAScript.

Пояснение номер 2. Глюки IE не имеют прямого отношения к викторине поскольку это ошибки (ну или «особенности») реализации стандартов.

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

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