22 Ноября 2024, 12:39

JavaScript

Автор turbo, 15 Августа 2008, 19:07

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Zhek@Ch

27 Октября 2011, 18:42 #20 Последнее редактирование: 27 Октября 2011, 18:43 от Zhek@Ch
[size="3"]GitHub открыла код робота для корпоративного общения Hubot[/size]

 

[size="1"]Hubot в чате
 Иллюстрация с сайта Hubot.Github.Com[/size]

Авторы популярного хостинга для программных проектов GitHub опубликовали исходный код своего чат-робота Hubot.

Hubot позиционируется как «робот для вашей компании». Он был создан для чата самой GitHub Inc., где способствовал автоматизации некоторых операций и был «источником веселья в компании». Затем он стал довольно сложным и был переписан с нуля. Сейчас он публикуется как Open Source-продукт с небольшим количеством базовых скриптов, благодаря которым Hubot может публиковать изображения, переводить текст с разных языков, отвечать на простые запросы (например, по конвертированию разных величин, как это делает Google), взаимодействовать с картами из Google Maps.

Hubot написан на языке CoffeeScript, который можно скомпилировать в Javascript, для Javascript-сервера Node.js. Сообщается, что его легко запустить на таких облачных платформах, как Heroku. Предусмотрены расширения для участия робота в дискуссиях в IRC и Campfire (корпоративный онлайн-чат от 37signals). Разработчики утверждают, что подключение новых протоколов не составит большого труда.

 Исходный код Hubot распространяется под лицензией MIT. Подробности о роботе Hubot и ссылки на исходники можно найти на сайте hubot.github.com.

По материалам h-online.com.



Zhek@Ch

31 Октября 2011, 03:08 #21 Последнее редактирование: 31 Октября 2011, 03:09 от Zhek@Ch
[size="3"]pdf.js: просмотр PDF с использованием HTML5 и Javascript[/size]
 
Недавно программисты Mozilla анонсировали начало разработки PDF.js: проекта, позволяющего просматривать PDF-документы прямо в интернет-браузере. С его появлением пропала необходимость в использовании для этой цели внешних плагинов. После примерно месяца развития уже реализована базовая функциональность (поддержка шрифтов Type1, градиенты и т. д.).

PDF.js распространяется по трёхпунктовой лицензии BSD. Разработчики надеются, что им удастся привлечь сообщество к развитию проекта. Несмотря на то, что проект -- инициатива команды Mozilla, он никак не привязан к Firefox, и, будучи выполнен в соответствии стандартам, должен работать с любыми браузерами, совместимыми с ними.

>>> Обзор проекта

>>> Git-репозиторий с исходным кодом

>>> Wiki проекта, в которой можно посмотреть текущий статус работ

 >>> Подробности


Zhek@Ch

01 Ноября 2011, 02:18 #22 Последнее редактирование: 01 Ноября 2011, 02:18 от Zhek@Ch
[size="3"]Представлен декодировщик видео H.264, оформленный на языке Javascript [/size]

Один из разработчиков из проекта Mozilla представил результаты эксперимента, целью которого была демонстрация производительности современных Javascript-движков, способных справляться с выполнением ресурсоёмких задач. В качестве задачи было выбрано создание приложения для декодирования видеопотоков H.264, написанного целиком на Javascript.

Для реализации проекта был выбран готовый декодер H.264, написанный на языке Си, который был упрощён, преобразован в биткод LLVM и транслирован в Javascript при помощи компилятора Emscripten. Результат оказался впечатляющим - используя только штатные оптимизации Emscripten удалось достигнуть производительности декодирования видео в браузере с частотой около 30 кадров в секунду. По мнению разработчиков, применив дополнительные оптимизации, такие как задействование WebGL для обращения к средствам аппаратного ускорения и использование конструкций для параллельной обработки данных, можно достигнуть ещё более впечатляющих результатов.

Демонстрацию декодировщика H.264, который развивается под кодовым именем Broadway, можно посмотреть на данной странице. Код проекта опубликован на GitHub. Для запуска декодировщика достаточно клонировать Git-репозиторий Broadway и открыть файл Demo/broadway.html в свежей ночной сборке Firefox, в состав которой недавно включен улучшенный анализатор типов, существенно ускоряющий работу встроенного в Javascript-движок JIT-компилятора.

Майк Шевер (Mike Shaver), один из основателей проекта Mozilla, привел Broadway в пример, показав как используя новые техники оптимизации удалось достигнуть того, что ранее считалось невозможным. В отличие от таких методов, как использование Flash или GoogleNative Client для выполнения требующих интенсивных вычислений блоков кода или предложений по замене Javascript на языки подобные Google Dart, в Mozilla просто пытаются сделать Javascript более быстрым. Для этого, с одной стороны вносятся новые оптимизации в Javascript-движок, а с другой - добавляются новые возможности языка, такие как бинарные массивы, жестко структурированные типы, поддержка распараллеливания с задействованием инструкций SIMD, улучшение средств для прямого обращения к ресурсам GPU.


Zhek@Ch

07 Ноября 2011, 02:05 #23 Последнее редактирование: 07 Ноября 2011, 02:06 от Zhek@Ch
[size="3"]Релиз свободной Javascript-библиотеки jQuery 1.7 [/size]

Доступен релиз популярной Javascript-библиотеки jQuery 1.7. Код jQuery распространяется под двумя лицензиями: MIT и GPLv2.

Основные улучшения:

  • Унифицирован способ привязки событий к документу. Вместо набора близких по своей сути разрозненных методов отныне предлагается использовать два метода: ".on()" для активации привязки события и ".off()" для прекращения привязки. Ранее используемые для привязки/отвязки методы ".bind()/.unbind()", ".delegate()/.undelegate()" и ".live()/.die()" пока оставлены для обеспечения совместимости, но разработчикам рекомендуется перейти на использование пары ".on()/.off()";
  • Значительно увеличена производительность обработки делегированных событий - сокрость доставки делегированных событий увеличилась почти в два раза;
  • Улучшена поддержка элементов HTML5 для браузеров IE6, IE7 и IE8 (например теперь в методе .html() можно использовать не поддерживаемые в старых версиях IE теги, такие как "section");
  • Добавлена поддержка AMD API (Asynchronus Module Definition) для автоматической асинхронной загрузки дополнительных модулей;
  • В объект jQuery.Deferred добавлены обработчики статуса выполнения операций и методы нотификации;
  • Документирован метод jQuery.isNumeric(), выполняющих проверку цифровых значений;
  • Прекращена поддержка свойств event.layerX и event.layerY и недокументированных методов jQuery.isNaN() и jQuery.event.proxy().

Zhek@Ch

08 Ноября 2011, 01:03 #24 Последнее редактирование: 08 Ноября 2011, 01:03 от Zhek@Ch
[size="3"]Релиз серверной Javascript-платформы node.js 0.6 [/size]

Представлен третий стабильный релиз платформы node.js 0.6 (нечетные ветки - экспериментальные, а четные (0.2, 0.4, 0.6) - стабильные), предназначенной для обособленного выполнения высокопроизводительных сетевых приложений на языке Javascript. Функции платформы не ограничены созданием серверных скриптов для Web, платформа может использоваться и для создания обычных клиентских и серверных сетевых программ. Для обеспечения выполнения Javascript-кода используется разработанный компанией Google движок V8.

 Для обеспечения обработки большого числа параллельных запросов node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживается epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libev, для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe).

По своей сути node.js похож на фреймворки Ruby Event Machine и Python Twisted, но цикл обработки событий (event loop) в node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдет к дальнейшему коду, а результат запроса будет обработан по мере поступления данных. Ни одна функция в node.js не должна напрямую выполнять операции ввода/вывода - для получения данных с диска, от другого процесса или из сети требуется установка callback-обработчика.

Для расширения функциональности приложений на базе node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 серверов и клиентов, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (например, OAuth), XML-парсеры.

Ключевые новшества node.js 0.6:

  • Поддержка платформы Windows с задействованием API I/O Completion Ports для обеспечения высокопроизводительной асинхронной обработки большого числа одновременных сетевых соединений. Ранее доступный порт, работающий через систему Cygwin, больше не поддерживается. Портирование для Windows было не простой задачей и потребовало переработки большой части архитектуры ядра node.js, что положительно сказалось на производительности, в том числе и при работе на Unix-системах;
  • По сравнению с версией 0.4.12 в 0.6.0 увеличилась производительность операций чтения (io.js read), уменьшилось время запуска и возросла скорость выполнения некоторых других операций. Например, на платформе Linux тестовый скрипт http_simple.js способен выполнить 6263 запросов в секунду (в прошлой версии 5461 запросов в секунду). Пропускная способность операции io.js read возросла с 19.75 mB/s до 26.63 mB/s, а скоросоть запуска startup.js уменьшилась с 74.7 ms до 49.6 ms. Пропускная способность операций записи (io.js write) немного уменьшилась - с 21.60 mB/s до 17.40 mB/s;
  • Интегрированы средства балансировки нагрузки с её распределением на несколько процессов. Для более полного задействования возможностей многоядерных CPU поддерживается запуск кластера из отдельных процессов node.js;
  • Улучшена поддержка IPC-вызовов между несколькими экземплярами node.js, созданными при выполнении вызова fork;
  • Расширены возможности работающего в режиме командной строки клиента для работы со встроенным в V8 отладчиком;
  • Встроен модуль для обеспечения сжатия с использованием библиотеки zlib;
  • Незначительное изменение API. Например, удалены http.Agent.appendMessage(), http.getAgent(), net.Server.listenFD(), process.ENV, process.ARGV, process.binding('stdio') и т.д. Добавлены: child_process.fork(), crypto.createDiffieHellman(), crypto.pbkdf2(), crypto.randomBytes(), fs.utimes()/utimesSync(), fs.futimes()/futimesSync(), http.ClientRequest.setTimeout()/setNoDelay()/setSocketKeepAlive(), net.connect(), os.arch(), os.platform(), os.uptime(), os.networkInterfaces() и т.д.
  • Javascript-движок V8 обновлён с версии 3.1 до 3.6. Из наиболее заметный изменений: RegExp больше не является функцией, поэтому необходимо выполнять RegExp.exec(); строковые даты (например Date('2011-06-06 00:00:00')) теперь привязываются в GMT, а не к локальному часовому поясу (нужно указывать Date('2011-06-06 00:00:00 +09:00')).
В настоящее время ведётся работа по сокращению цикла подготовки релизов node.js. Следующий стабильный выпуск 0.8 запланирован на январь. В дальнейшем разработчики намерены синхронизировать процесс разработки с браузером Chrome и движком V8, перейдя к выпуску новых версий каждые 6 недель.


Zhek@Ch

20 Ноября 2011, 17:12 #25 Последнее редактирование: 20 Ноября 2011, 17:13 от Zhek@Ch
[size="3"]GPG4Browsers - открытая реализация OpenPGP на языке Javascript [/size]

В рамках проекта GPG4Browsers подготовлена написанная на языке Javascript реализация стандарта OpenPGP (RFC 4880). Поддерживаются все хэш-функции, асимметричные и симметричные шифры (кроме IDEA), определённые в стандарте и применимые для таких областей использования, как шифрование и расшифровка сообщений, создание и проверка цифровых подписей, импорт и экспорт сертификатов.

В настоящее время GPG4Browsers доступен только в форме дополнения для браузера Chrome и поддерживает интеграцию с Gmail (подписывание, шифрование и расшифрование сообщений). GPG4Browsers полностью совместим с GnuPG со стандартными настройками, за исключением поддержки сжатия (для создания совместимого с GPG4Browsers сообщения следует использовать опцию "--compress-algo none").

Код распространяется под лицензией LGPLv2.1 и при желании может быть портирован для других браузеров. Реализация каждого метода шифрования и хэшей, а также функции манипулирования с ключами и шифрами оформлены в виде отдельных Javascript-модулей, т.е. могут легко быть интегрированы в сторонние проекты.

Из возможностей, которые пока не реализованы в GPG4Browsers, отмечены:

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

  • Симметричные шифры: TripleDES (DES-EDE), CAST5, Blowfish, AES-128, AES-192, AES-256 и Twofish;
  • Асимметричные шифры: RSA, Elgamal, DSA (Digital Signature Algorithm, только для цифровых подписей);
  • Хэши: MD5, SHA-1, RIPE-MD/160, SHA256, SHA384, SHA512, SHA224.

Zhek@Ch

21 Ноября 2011, 21:37 #26 Последнее редактирование: 21 Ноября 2011, 21:37 от Zhek@Ch
[size="3"]BicaVM - написанная на Javascript виртуальная машина для запуска программ на языке Java [/size]

Представлен новый проект BicaVM, в рамках которого создана реализация Java VM (JVM), написанная на Javascript и способная выполняться в любом современном браузере.

Мотивом создания проекта послужило желание интегрировать в браузер виртуальную машину, в которой мог бы выполняться универсальный байткод. Суть идеи в том, что вместо поддержки какого определённого языка программирования в браузер предлагается добавить абстрактную виртуальную машину, которая позволяла бы организовать выполнение кода на различных языках программирования, не ограниченных одним Javascript. В качестве достоинств такого подхода называется автоматическая изоляция кода и возможность сохранения среза состояния JVM на сервере, что позволит обеспечить независимую от браузера персистентность. Другим плюсом является обеспечение выполнения Java-программ на платформах, изначально не поддерживающих Java, например, BicaVM успешно выполняется на iPad/iPhone.

В отличие от инструментов GWT (Google Web Toolkit) и Java2Script (Eclipse-плагин), которые транслируют исходные тексты на языке Java в Javascript, или j2js и Orto (копия на GitHub, которые преобразуют Java-байткод в Javascript, проект BicaVM занимается непосредственно выполнением байткода JVM. По заявлению разработчиков ещё совсем недавно написание интерпретатора байткода на языке Javascript трудно было себе представить, но бурное развитие Javascript-движков в направлении увеличения производительности, сделали казавшееся невозможным явью. Несмотря на то, что BicaVM в настоящее время выполняет байткод значительно медленнее нативного JVM, разработчики не видят преград, чтобы довести скорость работы до терпимой, реализовав поддержку оптимизации на этапе инициализации и JIT-компиляции в Javascript.

В настоящее время разработка носит главным образом концептуальный характер, но с некоторыми ограничениями уже может выполнять Java-код. В частности, поддерживается интерпретация примерно 60% байткода JVM и подготовлен интерфейс JNI для трансляции вызова Java-функций в Javascript. Для обеспечения запуска полноценных Java-проектов предстоит ещё проделать много работы, например, подготовить полноценное runtime-окружение и провести дополнительные оптимизации производительности.


Zhek@Ch

23 Ноября 2011, 02:30 #27 Последнее редактирование: 23 Ноября 2011, 02:30 от Zhek@Ch
[size="3"]Релиз jQuery Mobile 1.0 и минималистичного аналога jQuery - jQuip [/size]

Представлен релиз фреймворка jQuery Mobile 1.0, основанного на популярной Javascript-библиотеке jQuery и предназначенного для создания web-приложений для мобильных устройств с использованием технологий HTML5. jQuery Mobile позволяет создавать интерактивные web-приложения с унифицированным интерфейсом пользователя, работающим в большинстве мобильных браузеров, доступных для платформ Apple iOS, Android, Windows Phone, Blackberry, webOS, Bada, MeeGo и Kindle. Из особенностей библиотеки отмечается адаптация для управления через сенсорные экраны, обеспечение единого внешнего вида для разных типов браузеров и набор специализированных мобильных виджетов для построения интерфейса пользователя.

Фреймворк поддерживает автоматическую адаптацию интерфейса для различных размеров экранов, имеет базовые шаблоны для смартфонов и планшетов. Для упрощения создания индивидуального стиля может использоваться web-конфигуратор тем оформления ThemeRoller for Mobile. Для расширения возможностей jQuery Mobile подготовлена коллекций расширений и плагинов. Примеры готовых web-приложений можно посмотреть на данной странице.

Отдельно можно отметить проект jQuip, реализующий 90% от функциональности jQuery, занимая при этом по размеру кода почти в 8 раз меньше места (4.28 Кб в упакованном виде). Целью проекта является попытка реорганизации структуры кода jQuery и перевода его на модульную основу. Код проекта распространяется в рамках лицензии MIT.

Библиотека jQuip поддерживает синтаксис на базе селектора $(selector), поддерживающего около 40 методов, включая each, attr, bind/unbind, append/prepend, find*, html и т.п. Реализована поддержка около 25 типов событий (blur, focus, load, resize и т.п.) и набор из 22 статических методов ($.each, $.filter $.dir, $.attrs и т.п.). Дополнительные возможности jQuery, такие как documentReady, $.css, $.queryString и $.ajax могут быть подключены в виде плагинов. Сформировать Javascript-код jQuip, включающий только избранное число дополнительных плагинов, можно через специальный online-генератор.