Обновить
256K+

JavaScript *

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

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

Букмарклеты в Internet Explorer 11: формат хранения, лимиты и негласные правила, коварный баг

Время на прочтение9 мин
Охват и читатели6.4K
После того, как сразу два букмарклета, работавшие в Google Chrome и Firefox, отказались работать в Internet Explorer 11, причём не выдавали в консоль никаких сообщений об ошибках и вообще не подавали признаков жизни, я стал разбираться, в чём же дело.

Сначала я решил, что дело в лимите на длину URL и тем самым на длину букмарклета. В IE 7 ограничение было в 2083 символа, в IE 11, по уверениям экспериментировавших пользователей, лимит увеличили. Нужно было выяснить опытным путём, какова теперь эта граница.

Но сперва небольшое предисловие.

Google Chrome хранит закладки в JSON, Firefox — в базе данных sqlite. Поэтому названия у закладок могут быть произвольные. IE хранит каждую закладку как отдельный файл, например, в папке %userprofile%\Favorites\Links. Поэтому браузер будет корректировать названия закладок, чтобы они подходили под нормы файловой системы (заменять знаки вопроса, например). Поэтому же в IE не могут быть в одной папке две закладки с одинаковым именем, а в Google Chrome и Firefox — могут (закладки в них могут быть даже вообще без имени, только со значком сайта или стандартным заменителем).
Читать дальше →

OData REST API — мелкие хитрости (часть 3)

Время на прочтение3 мин
Охват и читатели5.8K
Продолжаем серию постов об особенностях использования протокола OData (см. часть 1, часть 2 ).
Читать дальше →

Особенности withCredentials

Время на прочтение2 мин
Охват и читатели38K
Многие знакомы с таким флагом XmlHttpRequest как withCredentials, знают для чего он нужен, какие заголовки нужно использовать с ним в паре, чтобы браузер нормально обрабатывал ответы сервера. И я вроде тоже знал, а что не знал — нагугливал, и всё работало как надо. Но однажды столкнулся с неожиданным поведением, о чём и хочу поведать.
Интересности

Что нового в Visual Studio 2015 для JS-разработчиков

Время на прочтение5 мин
Охват и читатели34K


20 июля вышла финальная версия Visual Studio 2015 RTM, несущая в себе, в том числе, много нового для веб-разработчиков, специализирующихся на JavaScript: улучшения в редакторе, поддержка популярных библиотек и систем управления пакетами и сборки кода, возможности ES6, а также обновление поддержки Apache Cordova и Node.js.
За подробностями прошу под кат.

OData REST API — мелкие хитрости (часть 2)

Время на прочтение1 мин
Охват и читатели5.3K
Продолжаем серию постов об особенностях использования протокола OData (см. предыдущий пост).
Читать дальше →

Еще один способ приготовления одностраничных приложений

Время на прочтение14 мин
Охват и читатели22K
Авторы статьи: Борис Солдовский SoldovskijBB, Шевцов Сергей s_shevtsov.

Приветствуем всех, кто читает этот пост! Мы — команда front-end разработчиков Targetix. В этой статье расскажем вам о том, как устроена клиентская часть сервиса Hybrid — веб-интерфейса для взаимодействия с нашим TradingDesk и DSP.

Картинка для привлечения внимания

Введение


Еще до начала работы над Hybrid, когда формировался наш отдел по разработке клиентских приложений и обсуждались возможные варианты реализации этих самых приложений, под влиянием трендов выбор пал на одностраничные приложения, привлекшие тем, что при таком подходе нет необходимости постоянно грузить один и тот же контент, можно быстро манипулировать отображением страницы и при желании организовать офлайн работу. К тому же минимальная зависимость от групп разработки back-end. Со временем этот подход обрел форму и используется для многих наших веб-интерфейсов.

Каркас наших приложений основан на AMD-модулях, которые позволяют ограничивать область видимости, многократно использовать код и делают его структурированным. Например, у нас есть модуль станицы и модуль какого-нибудь popup-окна, а в модуле popup-окна используется какой-нибудь widget-модуль. При этом модуль popup-окна может быть использован на нескольких страницах. В этом и подобных случаях удобно использовать AMD-модули, а в их подключении и управлении зависимостями нам помогает библиотека RequireJS.

Для отображения данных используется Knockout.js — библиотека, которая реализует mvvm-патерн и позволяет динамически менять страницы благодаря шаблонизатору и наблюдаемым переменным.
Читать дальше →

Вместе с Visual Studio 2015 состоялся релиз TypeScript 1.5

Время на прочтение2 мин
Охват и читатели18K
Как вы знаете, вчера вечером состоялся релиз Visual Studio 2015. Одновременно Microsoft представила финальную версию TypeScript 1.5, включив его в состав новой Visual Studio. Также его можно скачать отдельно для предыдущих версий VS или же установить с помощью npm. Под катом — краткий список что интересного в новом релизе.

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

Пришла беда откуда не ждали, уязвимость XSS в сервисе Яндекс.Метрика

Время на прочтение1 мин
Охват и читатели29K
Доброе время суток хабравчане! Буквально на днях я опубликовал статью по документации Web API и нашлись люди, которые попробовали применить XSS на сервисе, который был на этом же домене. Но особо не получилось это сделать. Точнее получилось, но не на этом сервисе. За подробностями прошу под кат.


Подробности

$mol_time — работаем с датами и временем правильно

Время на прочтение5 мин
Охват и читатели12K
Здравствуйте, меня зовут Дмитрий Карловский и я… очень стар. Годы уже не те, чтобы с лёгкостью разбираться в хитросплетениях мудрёных интерфейсов. Хочется чего-то относительно простого, но и достаточно мощного, чтобы не чувствовать себя калекой, который еле-еле пишет простейшую программу.

В любом приложении рано или поздно появляется необходимость работы со временем: распарсить, как-то модифицировать, что-то вычислить, сериализовать. Дата и время — это довольно сложные штуки, которые подстраиваются под солнечные, лунные и земные циклы одновременно. При этом в году может быть разное число дней, а в дне — разное число часов, даже в минуте не всегда 60 секунд. Из-за этого работа со временем требует от программиста повышенной аккуратности и всё-равно баги будут всплывать ещё очень долго.

Нет, я слишком стар для того, чтобы считать года миллисекундами — скоро мой возраст будет исчисляться уже миллиардами секунд. Пришло время воспользоваться чем-то более высокоуровневым. Тем, что наши предки называли стандартом ISO8601, но многие до сих пор не в курсе что это такое и через какое место это стоит употреблять.

Далее вы узнаете, как я избавился от геморроя путём смены городского минивена на спортивный велосипед :-)
Читать дальше →

Дайджест интересных материалов из мира веб-разработки и IT за последние две недели №168 (5 — 19 июля 2015)

Время на прочтение6 мин
Охват и читатели31K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


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

Тонкости работы с PassportJs

Время на прочтение2 мин
Охват и читатели11K
Недавно работая над очередным проектом, который использует passporjs, наткнулся на несколько проблем, с которыми в интернете сталкивались и другие разработчики. Но ответов в интернете я не нашел (возможно плохо искал).

Расскажу об этих проблемах и как их решал.
Подробности

Итоги летнего конкурса Hola по программированию на JS

Время на прочтение2 мин
Охват и читатели6.6K
Спасибо всем, кто участвовал в нашем конкурсе по программированию! Мы подвели его итоги и наградили победителей.

Задача состояла в том, чтобы улучшить реализацию двусвязного списка из исходников Node.js. Этот код быстрый и эффективный, но он был написан под конкретное применение — хранение списков неактивных таймеров. Поэтому прямо в хранимые объекты там добавляются поля idleNext и idlePrev. Перед участниками конкурса стояла задача сделать код универсальным (так, чтобы один элемент мог принадлежать одновременно нескольким независимым спискам) без потери производительности.

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

OData REST API — мелкие хитрости (часть 1)

Время на прочтение2 мин
Охват и читатели13K
Протокол OData имеет множество скрытых достоинств (хотя и недостатков хватает). Начиная с этой статьи, мы хотели бы поделиться мелкими полезными хитростями использования протокола OData.
Читать дальше →

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

Букмарклеты: если XPath недоступен, а селекторов и методов навигации по DOM не хватает

Время на прочтение5 мин
Охват и читатели6.4K
Недавно я пытался написать несколько условно кроссбраузерных букмарклетов с выборками и навигацией средней сложности. Решил ограничиться последними версиями Google Chrome, Firefox и Internet Explorer. Приступив к проверке в последнем браузере, с грустью обнаружил, что даже в IE 11 всё ещё нет поддержки XPath.

Вроде бы полная поддержка обещана в Edge: «Microsoft Edge supports the XML Path Language Version 1.0 with no variations or extensions». И уже даже, кажется, реализация добавлена в Internet Explorer Developer Channel (никто не проверял?). Но это пока недостаточное утешение.

(P.S. Проверка через виртуальную машину подтверждает реализацию XPath в MS Edge версии 11.00.10240.16397 от 7.22.2015 (по версии файла), она же 20.10240.16384.0 (по информации в настройках)).

Следующим шагом стало обнаружение библиотеки от Google. Я даже для очистки совести проверил способ с вживлением библиотеки на странички в IE 11 (по описанному здесь методу) — всё замечательно работает даже на параноидальных сайтах вроде Твиттера (к слову, если вы вдруг не знали, в Firefox всё ещё нельзя запустить букмарклет в Твиттере или, например, в Гитхабе, из-за до сих пор не исправленного бага). Но метод этот очень громоздкий. Он хорошо подходит для разработки сайтов, но маленькие пользовательские букмарклеты он отягощает лишней асинхронностью, усложнением логики и дополнительным временем на загрузку файла.

Пришлось искать более простые замены для некоторых не хватавших мне инструментов XPath.
Читать дальше →

Опубликованы jQuery 3.0 alpha и jQuery Compat 3.0 alpha

Время на прочтение18 мин
Охват и читатели24K
(Перевод этого рассказа от авторов популярнейшей библиотеки будет весьма поучительным для всех, кто хотел бы держать руку на пульсе тектоники браузеров в свете решаемых проблем с парсингом DOM на данном этапе.)

Много воды утекло со времени последнего крупного релиза, и вы, конечно, заслуживаете обновлений. Поэтому мы рады объявить о выходе первой альфа-версии jQuery!

Несмотря на номер версии 3.0, мы ожидаем, что этот выпуск не доставит слишком много неприятностей при модернизации кода. Да, есть несколько критичных изменений, что оправдано сменой старшего индекса версии, но, надеемся, что эти переделки не повлияют на многих. Плагин jQuery Migrate поможет выявить проблемы совместимости кода. Также, ваши мнения об этой альфе нам сильно помогут, поэтому, пожалуйста, попробуйте её на существующем коде и плагинах!

Первый из релизов, jQuery 3.0, поддерживается новыми браузерами и IE 9+. Второй, jQuery Compat 3.0, поддерживается в IE 8+. Как бонус, оба релиза будут поддерживаться Яндекс-браузером, выпущенным в 2012-м.
Читать дальше →

Что выбрать для 3D сайта – Three.js или Blend4Web?

Время на прочтение11 мин
Охват и читатели34K
Я знаю Blender много лет, использую Unity для своих игр, но полный новичок в WebGL. Однако, будущее именно за этой технологией, и неплохо было бы разобраться с ее использованием. К сожалению, экспортер Unity для WebGL пока не рабочий и нужен иной инструмент.

Я не люблю изобретать велосипед и предпочитаю готовые решения. Найденный ранее Blend4Web выглядит очень заманчиво (интеграция с Blender, качественный экспортер и т.д.), но ведь существует немало других библиотек и платформ для работы с WebGL.

Извечный вопрос: что выбрать новичку? Я поработал с платформами Blend4Web и Three.js. Что из этого вышло — читайте дальше.
image
Читать дальше →

Билайн автоматически добавляет тулбар и изменяет дизайн сайтов

Время на прочтение13 мин
Охват и читатели68K




Не так давно я написал топик про Билайн и их автоматическое добавление тулбара с поиском mail.ru. Тогда в html код добавлялся java-script файл, который в свою очередь добавлял плашку с реферальным поиском mail.ru. Прошло 2 месяца и Билайн решил делать все по-другому.

Вчера, просматривая сайты через мобильный интернет, я увидел, что на них стал отображаться обновленный тулбар от Билайн. Как его отключить было непонятно: кнопки закрытия не было, можно было только убрать его наверх, но все равно он виднелся на экране. Пришлось принять соглашение на продажу своих органов и только после этого появилась волшебная кнопка «Удалить тулбар навсегда».

Я подумал, что на этом все закончилось, но как оказалось — я ошибся.
Читать дальше →

Все дело не в количестве строк кода. От серийного разработчика модулей

Время на прочтение3 мин
Охват и читатели18K
Синдре Сорхус — автор более, чем 600 модулей npm (666, Карл!). В недавнем AMA (кто не знает, это такой формат, когда кто-либо известный/интересный предлагает позадавать ему вопросы, например, в виде тикетов к гит-репозиторию, хотя, конечно, известнее /r/AMA и фуршет у Лебедева) он пояснил свою позицию по поводу модулей-однострочников, которые зачастую вызывают критику в адрес node.

Я собирался написать пост в блоге на эту тему, но, к сожалению, в этом я не так продуктивен, как в написании кода.

tl;dr Небольшие специализированные модули нужны для повторного использования и для того, чтобы делать большие и сложные штуки, которые легко понять.

Люди слишком озабочены количеством строк кода. LOC вообще не имеет никакого значения. Не важно, состоит модуль из одной строчки, или из сотен. Все дело в сокрытии сложности. Думайте о модулях node как о кубиках лего. Вас не интересует, из чего и как они сделаны. Все, что вам требуется знать — как использовать эти кубики для постройки своего лего-замка. Делая маленькие и специализированные модули, вы можете легко строить большие и комплексные системы без контроля за тем, как каждая отдельная деталь работает. Наша кратковременная память конечна. Эти модули могут повторно использовать другие люди и каждое улучшение и исправленный баг получат все из них.

Представьте себе, если бы производители ПК производили процессоры сами. Большинство делали бы это плохо. Компьютеры были бы дороже, а инновации происходили бы медленнее. Вместо этого большинство использует Intel, ARM и прочие.
Читать дальше →

Что нового в Babylon.js

Время на прочтение4 мин
Охват и читатели18K

Недавно команда разработчиков babylon.js выпустила новую версию одноименной библиотеки (v2.1) с множеством усовершенствований, а также новых инструментов для создания 3D в браузере, уже имея опыт создания таких игр как Flight Arcade и Assassin’s Creed Pirates . В этой статье будет рассказано о некоторых из основных обновлений, а также будут даны ссылки на демки и песочницу, чтобы можно было самостоятельно попробовать.
Читать дальше →

Перевод документации RivetsJS

Время на прочтение12 мин
Охват и читатели12K

Немного о мотивах


Доброго времени суток, уважаемые хабровчане. Некоторое время назад, я познакомился с библиотекой RivetsJS. Она мне пришлась по вкусу, хотя содержит в себе только инструменты для data-binding. Сразу хочу сказать, что даже не собираюсь спорить, для этих вещей есть замечательные AngularJS и др. фреймворки, но лично я не вижу смысла подключать такой мощный инструмент, как Angular, если мне требуется только малая толика его возможности. Поэтому, для этих целей, я выбрал именно RivetsJS. И вот, воодушевленный идеей перевести его документацию на русский, я пишу эту статью. Мотив простой — рассказать об этой библиотеке, и я не нашел ничего лучше, чем просто перевести её документацию, которая, возможно только на мой взгляд, написана на немного «ломаном» английском. Итак, поехали.

P.S. Сразу попрошу прощения, это мой первый перевод, возможно я не супер-пупер переводчик. Если вам что-то покажется нелепым или вы найдете ошибку — прошу сообщить об этом мне, я сразу же её исправлю. Заранее, спасибо.

Документация RivetsJS



Гайд



  • Установка
  • Использование
  • Биндинг
  • Форматеры
  • Компоненты
  • Адаптер
  • Свойства
  • Итерации биндинга


Справочник



  • text
  • html
  • show
  • hide
  • enabled
  • disabled
  • if
  • unless
  • value
  • checked
  • unchecked
  • on-[event]
  • each-[item]

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