Да, жаль. Хотя бы отмена настолько нужна, что мне пришлось самому написать свою версию Promise с хорошей отменой (nano-promise). Суть в том, что стандартный промис лишь наблюдатель за асинхронной операцией. Промис не имеет "рычагов" управления для остановки операции. В nano-promise при создании "Обещания" можно вернуть конструктору объект с методом cancel:
function get(url) {
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
req.open('GET', url);
req.onload = function() {
if (req.status == 200)
resolve(req.response); /* ПРОМИС ВЫПОЛНЕН */
else
reject(Error(req.statusText)); /* ПРОМИС ОТКЛОНЁН */
};
req.onerror = function() { reject(Error("Network Error")); };
req.send();
// Самое главное
return { cancel: function () {
req.abort();
}};
});
var ps = get('/index.html');
ps.cancel(); // отменяем
Сама отмена не что иное, как вызов reject(Promise.CANCEL_REASON). Ко всему прочему, если есть цепочка из промисов важно корректно отменить всю цепочку с возможными ответвлениями. Т.е. отмена последнего промиса в цепочке порождает отмену до самого начала(при необходимости), а отмена первого спускает отмену (как reject) до самого конца.
Недавно познакомился с HTC Vive. Сразу удивили огромные пиксели про существование которых мои глаза уже давно забыли. Из-за зернистости графики складывалось впечатление, что я вернулся лет на 20 назад. Т.е. уровень требований к ней сразу понизился до PS2. Но, как правильно заметил автор статьи, наличие контроллеров полностью отвлекло от зернистости изображения. Целиться руками, а не джойстиком/мышкой/планшетом/клавиатурой очень приятно и практично. Т.е. мир именно поэтому стал таким интерактивным. Без контроллеров очки, мне кажется, скорее тянут на «стерео» монитор, где к миру нельзя прикоснуться, а лишь смотреть на него.
Абсолютно согласен. Являясь любителем поизобретать велосипеды как-то задумал написать парсер CSS с целью дальнейшей оптимизации. И столкнулся как раз тем же. Жуткий синтаксический бардак. Токенизатор должен слегка разбираться в синтаксисе, чтоб работать однозначно. Очень много ненужного. Такое впечатление, что это плод коллективного творчества. К имеющимся конструкциям прикручивают и прикручивают уродства. Т.е. изначальная идея была проста и практична, но то-что пытаются из CSS выжать сейчас — это даже эпичнее, чем апгрейд C в C++.
Супер! Я для собственных модулей подобные оптимизации проделываю. Т.е. this помещаю в self, лишь для того, чтобы uglifyjs мог эту переменную потом утоптать. При таком подходе код не теряет читаемость, но хорошо жмется. Общие функции забрасываю в области замыкания для того-же.
Да, тоже попытался, чтоб свой и без зависимостей сделать. Но из-за синтаксического бардака не стал. Мне хватило самописного токенизатора/детокенизатора с выбрасыванием комментариев/пробелов и оптимизацией единиц измерения и цветов. Серьезный парсер так и остался в планах.
Если вы одинаково владеете и мышкой и командной строкой, то последняя выигрывает. А для людей с ограничеными возножностями выбор, очевидно, может быть другим.
Очень интересно. Очень давно (лет 20 назад) сталкивался с этими «завитушками» и даже пытался как-то их воспроизвести в CorelDraw, но не справился. :)
По поводу проецирования на сложные контуры. Мне кажется, что декартовы координаты можно спроецировать на плавную кривую, где вектор нормали будет у нас за ось Y, а смещение вдоль кривой X. Тогда можно нарисовать почти произвольные формы.
+1 Если не можешь найти ошибку, значит ошибка и в тебе. :) Капитанская статья. И как-то поздно товарищ осознал, что с наскока многие проблемы не решаются. :)
Глядя на видео становится понятно, что время обновления несколько секунд. Т.е. такое годно только для статических картинок типа рекламных плакатов и схем метро.
Во всех, или почти во всех, примерах проблемы из-за неудачно выбранного в окнах разделителе файловых путей или ключей реестра. Может попробуете использовать более родной разделитель — '/'?
Давным давно, в стародавние времена, когда ещё не придумали http:// или ftp://, в адресной строке люди просто писали: www.site.com или ftp.site.com…
А на самом деле, это необязательное доменное имя третьего уровня для обозначения домена с сервисом WWW(World Wide Web, Всемирной Паутины или просто веба). Такие имена (ftp,ntp...) нужны чтобы можно было развести разные сервисы на разные адреса, но в пределах одного значимого домена.
Мне одному начинает казаться, что из JavaScript пытаются обратно сделать Java?
Да, жаль. Хотя бы отмена настолько нужна, что мне пришлось самому написать свою версию Promise с хорошей отменой (nano-promise). Суть в том, что стандартный промис лишь наблюдатель за асинхронной операцией. Промис не имеет "рычагов" управления для остановки операции. В nano-promise при создании "Обещания" можно вернуть конструктору объект с методом cancel:
Сама отмена не что иное, как вызов
reject(Promise.CANCEL_REASON). Ко всему прочему, если есть цепочка из промисов важно корректно отменить всю цепочку с возможными ответвлениями. Т.е. отмена последнего промиса в цепочке порождает отмену до самого начала(при необходимости), а отмена первого спускает отмену (как reject) до самого конца.Недавно познакомился с HTC Vive. Сразу удивили огромные пиксели про существование которых мои глаза уже давно забыли. Из-за зернистости графики складывалось впечатление, что я вернулся лет на 20 назад. Т.е. уровень требований к ней сразу понизился до PS2. Но, как правильно заметил автор статьи, наличие контроллеров полностью отвлекло от зернистости изображения. Целиться руками, а не джойстиком/мышкой/планшетом/клавиатурой очень приятно и практично. Т.е. мир именно поэтому стал таким интерактивным. Без контроллеров очки, мне кажется, скорее тянут на «стерео» монитор, где к миру нельзя прикоснуться, а лишь смотреть на него.
Спасибо за статью
Т.е. реальность не столь радужна. Чтож, маркетинг.
Да, я тоже за один общий таймер. А скорость объектов не дискретная.
Отличный настрой, отличный сайт, бодрая статья!
Абсолютно согласен. Являясь любителем поизобретать велосипеды как-то задумал написать парсер CSS с целью дальнейшей оптимизации. И столкнулся как раз тем же. Жуткий синтаксический бардак. Токенизатор должен слегка разбираться в синтаксисе, чтоб работать однозначно. Очень много ненужного. Такое впечатление, что это плод коллективного творчества. К имеющимся конструкциям прикручивают и прикручивают уродства. Т.е. изначальная идея была проста и практична, но то-что пытаются из CSS выжать сейчас — это даже эпичнее, чем апгрейд C в C++.
Супер! Я для собственных модулей подобные оптимизации проделываю. Т.е. this помещаю в self, лишь для того, чтобы uglifyjs мог эту переменную потом утоптать. При таком подходе код не теряет читаемость, но хорошо жмется. Общие функции забрасываю в области замыкания для того-же.
Да, тоже попытался, чтоб свой и без зависимостей сделать. Но из-за синтаксического бардака не стал. Мне хватило самописного токенизатора/детокенизатора с выбрасыванием комментариев/пробелов и оптимизацией единиц измерения и цветов. Серьезный парсер так и остался в планах.
Ну всё, довод про скорость меня убедил. Завтра же попробую это вписать в свою систему сборки.
По поводу проецирования на сложные контуры. Мне кажется, что декартовы координаты можно спроецировать на плавную кривую, где вектор нормали будет у нас за ось Y, а смещение вдоль кривой X. Тогда можно нарисовать почти произвольные формы.
А на самом деле, это необязательное доменное имя третьего уровня для обозначения домена с сервисом WWW(World Wide Web, Всемирной Паутины или просто веба). Такие имена (ftp,ntp...) нужны чтобы можно было развести разные сервисы на разные адреса, но в пределах одного значимого домена.