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

JavaScript *

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

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

Школа программирования Codecademy получила $2,5 млн

Время на прочтение1 мин
Количество просмотров2.9K
Компания Codecademy выполнила операцию Codecademy.add(investors) на сумму 2,5 миллиона долларов США. Кстати, одно из новых свойств объекта — Юрий Мильнер.

Напомним, что уникальный в своём роде стартап Codecademy обучает новичков JavaScript с помощью бесплатных интерактивных упражнений. Он открылся два месяца назад: за первые 72 часа работы сайт посетили 200 тыс. начинающих программистов, которые выполнили 2,1 млн уроков.

После получения такой значительной суммы инвестиций Codecademy может ещё долго работать бесплатно (в будущем они всё-таки планируют придумать какую-то бизнес-модель), а также может нанять контент-органайзеров и увеличить количество уроков на сайте. Новый контент будут добавлять силами коммьюнити по модели UGC. Например, недавно был запущен первый такой курс «Функции в JavaScript», написанный Альбертом Венгером.

accounting.js — форматирование чисел и валют

Время на прочтение2 мин
Количество просмотров28K
В одном из проектов мне понадобилось реализовать переключение валют с последующим реформатированием значений денежных сумм, встречающихся на странице.Как это у меня часто получается, я это реализовал и через пару недель наткнулся на небольшую библиотечку, которая позволяет довольно удобно выполнить именно эту операцию.
Читать дальше →

Паттерн «Обозреватель» и контекст вызова в Javascript

Время на прочтение3 мин
Количество просмотров13K
Хотя про паттерн «Обозреватель (Наблюдатель, Observer)» сказано достаточно, в том числе и на Хабре, вкратце повторюсь. Суть паттерна в наблюдении за состоянием неких субъектов системы и соответствующей реакции наблюдателей на изменения этих состояний. За одним субъектом может следить несколько наблюдателей, причём сам он об этом не знает (слабое связывание), но исправно оповещает всех об изменении состояния.

Удобно использовать Обозревателя на сайтах и в веб-приложениях, поэтому логично реализовать его с использованием самого популярного языка для веб-среды — Javascript.
Читать дальше →

Поиск, сортировка и фильтры для списков в HTML

Время на прочтение2 мин
Количество просмотров31K
Простой мини-скрипт List.js размером 7 КБ добавляет интерактивности маркированным спискам в HTML. С помощью скрипта можно сделать удобный поиск, сортировку, редактирование списка с добавлением или удалением новых элементов (например, адресная книга на странице) и т.д. Чем-то напоминает Chosen, только там модифицировались выпадающие списки.

List.js — обычный JavaScript, который не требует jQuery, работает без проблем во всех браузерах. Пару примеров см. здесь и здесь.

List.js опубликован под открытой лицензией MIT.
Читать дальше →

Userscripts. Кроссдоменные запросы

Время на прочтение5 мин
Количество просмотров51K
Доброго времени суток.
Сегодня мы рассмотрим варианты организации кроссдоменных запросов в юзерскриптах.
В подробности реализации того или иного механизма я вдаваться не буду, но приведу пример кроссбраузерной оболочки для кроссдоменных запросов.
Приступим

Серия 2. Как выполнять методы предков в модификации прототипного наследования

Время на прочтение15 мин
Количество просмотров2.7K
imageОформим начатое в habrahabr.ru/blogs/javascript/130495 в удобный для использования метод .inherit4 конструктора Constr, чтобы, фактически построить модель классов и наследования (она будет более мощной, чем классическая, но это побочный эффект). Если у Вас нет желания подключать Mootools с аналогичной моделью, будет достаточно этого метода на 2 КБ несжатого кода, чтобы нормально работать с прототипным наследованием и иметь пару дополнительных методов: доступ к методам предков .ancestor('имя_метода', номер_поколения_предка) и расширение хешей. Применение всех 3 методов позволяет исключить из лексикона слова prototype и constructor, продолжая работать с тем и другим, и делает код легко читаемым.
Читать дальше →

Блеск и нищета GWT (или почему я не верю в Dart часть 2)

Время на прочтение6 мин
Количество просмотров11K
Одной из самых обсуждаемых тем на Хабре стало объявление Гугла о создании нового языка Dart, претендующего на то, чтобы полностью заменить Javascript.
Для Гугла это не первый проект подобного рода. С 2006 года существует Google Web Toolkit, позволяющий создавать веб-приложения полностью на Java. На нём, например, работают Adwords и Google Wave.
Но, не смотря на красивые обещания и очень серьезные, особенно по меркам 2006 года, возможности, GWT так и «не взлетел». Да, проект поддерживается и развивается, но сообщество разработчиков так и не сложилось. Сторонних компонентов мало, они не поддерживаются, знакомых с системой программистов найти сложно.
Практически все «плюшки» языка Dart, которые сейчас рекламирует Google, уже были реализованы в Webtoolkit-е. В этой статье я хочу проанализировать достоинства и недостатки GWT в попытке рассмотреть мутные очертания будущего Dart.
Читать дальше →

Почему я не верю в Dart

Время на прочтение4 мин
Количество просмотров8.7K
Признаться, сообщение о разработке в Google языка Dart я встретил с недоумением. Если coffeescript и прочие надстройки я считал просто чьим-то развлечением на досуге, то к Dart-у при всём желании не получается относиться как просто ещё к одной гиковской игрушке.

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

«Нужна полная замена JS — язык широкого профиля: от простых скриптов, для сложных приложений»

Что в ней не так? Да то, что JavaScript и есть язык широкого профиля, от сложных скриптов до сложных приложений. JavaScript — высокоуровневый и чрезвычайно мощный объектно-ориентированный язык, и именно поэтому все попытки его «улучшить» проваливаются с треском (ну, пока, по крайней мере).

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

Как выполнять методы предков в реализации прототипного наследования

Время на прочтение8 мин
Количество просмотров12K
При работе с наследованием иногда возникает желание иметь функцию доступа к методу предка (методу родительского класса) — в конструкторе (аналоге класса для Javascript) или в методе-потомке, потому что, бывает, что новый класс переопределяет его. Не просто какую-нибудь функцию (метод), а с совершенно понятной записью, чтобы название говорило само за себя, и имеющую доступ к указанному поколению предков (не «пра-пра-пра-», а «пра- 3 раза»).

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

Компиляция JavaScript проекта с помощью Maven и Closure Compiler

Время на прочтение6 мин
Количество просмотров8.9K
Добрый день, коллеги!

Хотел поделиться своими наработками в области автоматизации процесса сборки javascript проекта использующего Google Closure Compiler и Google Closure Library при помощи Apache Maven. Страничка проекта https://github.com/urmuzov/closure-maven, там же лежит документация по каждому из компонентов проекта.

О проекте


Главный компонент проекта — это архетип. Архетип объединяет в себя все остальные компоненты проекта, которые при желании могут использоваться отдельно от него.

Архетип предоставляет средства для решения самых часто встречающихся задач при разработке, а именно:
  • Запаковывает javascript код в maven артефакты для распространения (такие артефакты содержат помеченные пакеты специальной структуры, названные closure-packages);
  • Распаковывает closure-packages из подключенных в <dependencies> артефактов для компиляции;
  • Помогает в объединении и оптимизации js и css файлов при помощи Web Resource Optimizer for Java (wro4j);
  • Предоставляет 5 профилей компиляции для разных целей:
    • compiled — для «боевой» сборки проекта. Уровень компиляции ADVANCED_OPTIMIZATIONS;
    • merged — для склеивания всех исходных js файлов в один, фактически без компиляции. Уровень компиляции WHITESPACE_ONLY, форматирование PRETTY_PRINT;
    • sources — для дебага javascript файлов в бразуере. Компиляция происходит как и в профиле compiled, но в html будут подключены файлы с исходными кодами;
    • sources-no-compile — для дебага html/css файлов. Компиляции не происходит, просто в html подключаются файлы с исходными кодами;
    • jar — для сборки jar-архива для распространения;

  • Генерирует jsdoc и jslint отчеты при выполнении mvn site.

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

Userscripts. Упаковываем юзерскрипт для Chrome

Время на прочтение5 мин
Количество просмотров37K
Доброго времени суток, уважаемые хабражители.

Сегодня мы поговорим подробней об упоминавшейся вскольз технологии написания кроссбраузерных юзерскриптов, а именно об упаковывании юзерскрипта в простейшее расширение для Google Chrome.

Ниже я постараюсь овтетить на вопросы «зачем ?» и «как ?».
Утолим жажду знаний

Объединение javascript файлов

Время на прочтение4 мин
Количество просмотров40K
Эпоха тёплого лампового WEB 1.0 давно прошла, и в последнее время мы имеем дело со страницами, которые кишат так называемой динамичностью. Динамичность может быть обеспечена при помощи JavaScript, VbScript и плагинами вроде Java, Flash, Silverlight. В этой статье я хочу затронуть одну из возможных оптимизаций web-сайта — объединение всех javascript файлов в один.

Зачем?


Основных причин две:
  1. Повышение скорости загрузки страницы.
  2. Снижение нагрузки на сервер.

Начнём с «повышения скорости загрузки». Зачастую web-сайт просто пестрит скриптами и их общее число может перевалить за 50. Впрочем, это уже будет «клинический случай». Но хотя бы 15-30 встречается регулярно. На каждый чихскрипт браузер посылает запрос и, в зависимости от ответа, либо грузит его полностью, либо забирает из кеша. 15 запросов это много. На это нужно время. Да, все современные браузеры загружают файлы параллельно, но это не повод их так эксплуатировать. В моём случае скорость загрузки страницы возросла в несколько раз.

Касательно снижения нагрузки на сервер — всё сложнее. Снижение числа запросов в любом случае улучшает ситуацию, но вот насколько — я сказать затрудняюсь, т.к. я не админ. Я полагаю, что для снижения нагрузки можно найти массу более простых и действенных решений. Возможно, это, так называемая, экономия спичек на фоне пожара. Но в качестве побочного эффекта — сгодится.
Читать дальше →

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

Базовая архитектура веб-приложения на Backbone.js

Время на прочтение2 мин
Количество просмотров22K
Разработчики часто просят рассказать о моём опыте использования Backbone.
Многие слышали об этом MVC-фреймворке, смотрели примеры и документацию, но не решаются начать с ним работать. Поэтому вчера я сделал мини-доклад на встрече MoscowJS, призванный рассказать о том, как мы построили базовую архитектуру и какие получили плюсы. И сегодня в этой статье я публикую слайды, схемы и краткое описание.


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

Userscripts. Углубляемся

Время на прочтение6 мин
Количество просмотров46K
Как упоминалось в предыдущей статье, юзерскрипты поддерживаются всеми современными браузерами. И даже кое-как поддерживаются в IE7 и выше.

В этой статье мы поговорим о браузерах:
  • Ограничения
  • Проблемы
  • Расширения для запуска юзерскриптов
  • Установка юзерскриптов


Приступим-с

Азы Dojo на примере самодельного Хабра-парсера

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

Введение


image
Приветствую читателей.
В ходе разработки проекта, мне понадобилось сделать небольшой парсер для смежного сайта.
Незадолго до этого командой было принято решение использовать фреймворк Dojo
В результате размышлений родилась идея сделать красивый парсер Хабра, заодно осовоив Dojo и решив проблему экономии трафика для мобильного (часто читаю в пути).
Данное руководство несёт чисто практический характер и не претендует на идеальность исполнения.
Читать дальше →

Учимся писать userscript'ы

Время на прочтение7 мин
Количество просмотров295K
Доброго времени суток всем желающим приобщиться к миру пользовательских скриптов (они же userscript, userJS, юзерскрипты).

В этой статье я хочу поведать о том, что такое юзерскрипты, c чем их едят и, главное, как их готовят!

Внимание: предполагается минимальное знание javascript.
На практике доказано: юзерскрипты может писать человек, не знакомый с программированием, но обладающий усидчивостью и желанием изучить javascript!
О том, что такое javascript и как с ним обращаться, можно узнать на javascript.ru.
Поехали!

Dojo-виджет своими руками

Время на прочтение3 мин
Количество просмотров2.9K
Доброго времени суток всем читателям! В данном топике я поделюсь своим опытом создания виджетов на Dojo на примере числового LED-индикатора (часов, таймера и пр.). Я не буду углубляться в историю создания фреймворка и теорию — топик носит практический характер.
Итак, начнём.
Читать дальше →

Работа с last.fm API на JavaScript

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

С ходом времени автор понял, что ниженаписанное — полная глупость


Для тех, кому не хочется читать


Страничка, на которой всё нижепроделанное в примере (включайте alert).
Онлайн плеер, который и заставил меня дойти до этого топика.

Введение


Доброго времени суток! Не так давно затронул тему «Онлайн-плееров» и им подобных. Их много, очень я бы сказал. Я захотел сделать аналог, в первую очередь для себя. Захотел по стандарту — база vk.com, скробблинг last.fm (позже ласт), альбомы с него же, плейлисты, сердечки и так далее. Сразу вытекла проблема — мой хостинг очень плох для постоянных запросов на него. Ничего не оставалось, как перейти почти полностью на javascript (позже js). Итак, коль русского описания «Как работать с last.fm api javascript» я так и не нашёл, а потратил много нервов и времени на решение этой проблемы, то начнём, пожалуй.
Читать дальше →

Кроссбраузерный вызов методов Flash из JavaScript

Время на прочтение3 мин
Количество просмотров4.8K
Неделю назад в одном из моих проектов возникла задача заменить существующее слайд-шоу, реализованное на JavaScript более красивым, сделанным на Flash. При минимальном изменении кода требовалось вставить флеш-ролик и наладить передачу данных и обработку событий на страничке так, чтобы она и дальше продолжала работать корректно.

Русскоязычные статьи на тему передачи данных в связке JavaScript—Flash дают общее представление о процессе, но не учитывают одну важную деталь: в разных браузерах следует использовать различные объекты для выбора флеш-ролика. Наиболее часто предлагаемое решение работает в Chrome, но отказывается работать в Firefox, и уж тем более в IE.

Ввиду неполноты большинства статей на тему передачи данных между JavaScript и Flash, я считаю целесообразным подробнее рассмотреть этот вопрос.

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

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