Доброго времени суток! Напишем простой компилятор в js с отладкой. Это первая (вводная) часть, в которой будет описана структура. С каждой частью будем добавлять новые фичи к компилятору и усложнять его.
Читать полностью »
Рубрика «javascript» - 369
Компилятор на js. Часть 1
2015-02-22 в 16:32, admin, рубрики: compilers construction, html, javascriptOData REST API и рекурсивные запросы
2015-02-22 в 12:26, admin, рубрики: javascript, odata, rest, rest api, RESTful, restful api, Веб-разработка, интерфейсы, Программирование, рекурсивные запросы, рекурсияВ дискуссии к предыдущей статье dezconnect поднял интересный вопрос о возможностях OData выполнять рекурсивные запросы (по аналогии с SQL CTE).
В документации OData в разделе 11.2.4.2 описывается опция запроса $expand. Эта опция позволяет получать объекты вместе со связанными объектами. Например, Вы можете получить данные о компании вместе со всеми данными о ее президенте:
http://nitrosdata.com/service/testdb/company(company1)?$expand=president
Без опции $expand результат будет включать только id президента компании (или ссылку при других настройках).
http://nitrosdata.com/service/testdb/company(company1)
В 4й версии OData существенно расширены возможности опции $expand для выполнения рекурсивных запросов.
Решение задачи сброса тяжелой логики на одну из множества открытых вкладок
2015-02-21 в 23:50, admin, рубрики: dueljs, javascript, tabninja, window broadcast, Веб-разработка, метки: dueljs, tabninja, window broadcastНе так давно я начал разрабатывать библиотеку DuelJS, которая предоставила удобный интерфейс для определения состояния вкладки Master (активная) или Slave (неактивная). Однако позже мне начали поступать предложения для оптимизации соединений по веб-сокетам. Подход DuelJS: если вкладка активна -> держать соединение, если неактивна -> ложить является не продуктивным. На помощь приходит расширение TabNinja.
Самые нужные плагины для Grunt
2015-02-21 в 15:30, admin, рубрики: css, grunt, html, javascript, node.js, Веб-разработка, плагины, метки: Grunt
Доброго времени суток, всем! Кто-то умный, не помню в какой статье именно на Хабре, буквально недавно размышлял о процессе разработки с явным призывом автоматизировать все, что только можно автоматизировать. И лучше один раз потратить время на автоматизацию, чтобы потом экономить его на протяжении всего проекта.
У веб-разработчиков есть прекрасный инструмент для автоматизации массы задач, который называется Grunt. И моя страсть к таксономии заставила себя собрать огромную коллекцию почти из 100 ценных плагинов для этого сборщика. Думаю многие кто уже использует Grunt найдут для себя что-то нужное, а кто нет, глядя на возможности, получит хорошую мотивацию установить его и понять как эта штука работает.
А еще я выложил подборку на GitHub, чтобы каждый мог пополнить коллекцию.
SummaryJS, выпуск 2
2015-02-20 в 9:11, admin, рубрики: angular.js, AngularJS, javascript, react.js, ReactJS, summaryjs, Веб-разработка, разработка, метки: summaryjsСМС-рассылка с Google Sheets API
2015-02-18 в 12:06, admin, рубрики: Google API, google apps script, Google Docs, Google Sheets, google spreadsheets, HTTP-запрос, javascript, отправка cмс, метки: google api, google api, google docs, google docs, google spreadsheets, http-запрос, отправка cмсНедавно от знакомого фриланс-работодателя поступило предложение о небольшой работе, связанной с организацией смс-рассылки, данные для которой должны браться из .xls-таблицы. Плюс к этому было необязательное пожелание вынести эту же таблицу на корпоративный веб-сайт с обязательной возможностью её редактирования. При этом был озвучен весьма малый бюджет максимум на два человеко-дня.
Минимальное исследование существующих веб-инструментов работы с электронными таблицами показало, что разработка на их основе потребует времени в разы больше. Например, связка PHPExcel и какой-нибудь AJAX-таблицы выливалась в разработку функционала полноценного сайта. К тому же требующего отдельного хостинга в целях безопасности. Теоретически рассматривался вариант MS Excel + VB script, но и тут были свои подводные камни. В итоге выбор пал на Google Sheets.
Читать полностью »
Управление данными с помощью протокола OData
2015-02-18 в 8:34, admin, рубрики: javascript, json, odata, rest, rest apiful api, RESTful, Веб-разработка, интерфейсы, ПрограммированиеOpen Data Protocol (OData) – это открытый веб-протокол для запроса и обновления данных. Протокол позволяет выполнять операции с ресурсами, используя в качестве запросов HTTP-команды, и обмениваться данными в форматах JSON или XML.
OData является одним из лучших стандартов для создания RESTful API.
Вы можете запрашивать данные используя простые HTTP запросы, например:
http://nitrosdata.com/service/testdb/person?$filter=firstname eq «Lamar»
Найти всех людей по имени Lamar.
OData позволяет задавать огромное число параметров, которые позволяют сформировать очень сложные запросы к источнику данных, например:
http://nitrosdata.com/service/testdb/book?$filter=publisher/president/likes/author/firstname eq 'Georgie'&$top=10&$orderby=title
Выбрать все книги, удовлетворяющие следующему условию: президент издательства в котором издана книга, любит книги некоего автора с именем “Georgie”. Результат запроса необходимо отсортировать по названию, выдать первые 10 книг.
Язык запросов OData сопоставим по мощности с SQL.
Читать полностью »
Konva.js — HTML5 2d canvas framework
2015-02-18 в 0:39, admin, рубрики: canvas, github, html, html5, html5 canvas, javascript, open sourceПриветствую. Представляю сообществу проект Konva.js.
Konva.js — это фреймворк, который позволяет работать c canvas 2d в объектном стиле с поддержкой событий.
Кратко список особенностей выглядит так:
- Объектное API
- Вложенные объекты и «всплытие» событий
- Поддержка нескольких слоёв (нескольких canvas элементов)
- Кэширование объектов
- Поддержка анимаций
- Настраиваемый drag&drop
- Фильтры
- Готовые к использованию объекты, включая прямоугольник, круг, изображение, текст, линия, SVG путь, ..
- Простое создание собственных фигур
- Событийная архитектура, которая позволяет разработчикам подписываться на события изменений аттрибутов, отрисовки, и так далее
- Сериализация и десериализация
- Продвинутый поиск с помощью селекторов stage.get('#foo') и layer.get('.bar')
- Десктоп и мобильные события
- Встроенная подержка HDPI устройств
- и еще много разного
Далее подробней рассмотрим возможности фреймворка с примерами кода.
Читать полностью »
Общение скриптов из разных вкладок браузера
2015-02-17 в 22:56, admin, рубрики: javascript, sharedworker, websockets, браузеры, вкладкиМне захотелось наладить общение скриптов из разных вкладок браузера. Будущий API SharedWorker позволяет передавать данные между разными iframe и даже вкладками или окнами. В Chrome он работает давно, в Firefox — Firefox – недавно, а в IE и Safari его не видать. Но существует кроссбраузерная альтернатива, о которой мало кто знает. Давайте разбираться.
Представьте, что на одной вкладке человек залогинился, затем открыл другую, и там разлогинился. На первой он вроде как залогинен, но когда он сделает там что-либо, ему выдадут ошибку. Хорошо было бы хотя бы показать ему диалог о том, что он разлогинился и ему надо войти ещё раз.
Читать полностью »
Визуальный брутфорс на примере решения 3D-головоломки
2015-02-17 в 9:26, admin, рубрики: javascript, брутфорс, визуализация, головоломкаКогда-то давно друзья подарили вот такую головоломку:
Собрать её самостоятельно я так и не смог (всегда оставался один фрагмент). Посему было решено написать программу.
Для тех, кто не любит читать, решение доступно по ссылке (внимание, сильно нагружает процессор).
Читать полностью »