?

Log in

[icon] Давид Мзареулян
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мои фотографии).
View:Иероглиф. hiero.ru/David. RSS2LJ. Здешние теги.
You're looking at the latest 10 entries.
Missed some entries? Then simply jump back 10 entries

Tags:
Security:
Subject:ПВНП — Постоянно висящий наверху постинг
Time:01:19 pm
случайное фото

© Давид Мзареулян
  • Мои фотографии (а также в этом журнале и немного избранного на фликре).
  • Я в Твиттере: @davidmz
  • Детища вне ЖЖ
  • Детища на стыке ЖЖ и не ЖЖ
  • Всякие истории
  • Поиск по моему ЖЖ
    Яндекс
    Яндекс (во френдленте)
    Google
  • Френдоскоп

    Красная полоска — это то, что вы берёте от мира, не давая ничего взамен.
    Синяя полоска — это то, что вы даёте миру, не требуя ничего взамен.
    Зелёная полоска — это то, насколько крепко вы связаны с этим миром.
.


А это то, чем я сейчас занимаюсь. Если вы фотограф или иллюстратор, а также если вам по работе нужны изображения — рекомендую:
Фотобанк Лори: лицензионные изображения и фотографии

Поделиться

Security:
Subject:Для писем и оффтопиков
Time:07:23 pm
Если вам позарез нужно что-то мне написать, то не пишите коммент в первый попавшийся постинг (всё равно ответа не будет), а пишите сюда. Они тут скринятся. Кстати, то, что я вам напишу в ответ, тоже будет скрыто, так что если у вас не включена присылка комментов по почте, то вы ответа и не увидите.

P. S. Про rss2lj писать сюда.
Комментарии: 8 комментариев или написать Поделиться

Tags:
Security:
Subject:Иероглиф (http://hiero.ru/): Рассвет (Давид Мзареулян)
Time:12:58 pm
Поделиться

Tags:
Security:
Subject:Иероглиф (http://hiero.ru/): Луна (Давид Мзареулян)
Time:11:22 pm
Луна

автор: Давид Мзареулян

Посвящается Serge N. Kozintsev:)

Поделиться

Tags:
Security:
Subject:Иероглиф (http://hiero.ru/): 2004 (Давид Мзареулян)
Time:11:33 am
Поделиться

Tags:,
Security:
Subject:Как отключить автоустановку обновлений в Windows 10
Time:08:41 pm

Самая мерзкая, наверное, особенность Windows 10 — это принудительная неотключаемая установка всех обновлений. Windows даже в 2015 году не может ничего установить, не перезагрузившись, поэтому юзеру, в общем, ничего не остаётся, как периодически перезагружаться. Максимум, что позволяет Microsoft — выбрать желаемое время перезагрузки, но и его бесконечно сдвигать нельзя.

Если вы утром включаете компьютер, а вечером выключаете, то всё нормально, и вы вряд ли заметите какое-то неудобство. Но у меня, например, вечером компьютер просто засыпает, а утром просыпается с тем же набором запущенных программ и открытых документов. Я так привык (и не только я, судя по отзывам в сети), а принудительная перезагрузка этот способ работы, разумеется, рушит. Я бы предпочёл вручную устанавливать обновления, когда это удобно мне.Читать дальше...Свернуть )

Этот пост в блоге POST /blog (20:28 04.09.2015)

Комментарии: 7 комментариев или написать Поделиться

Tags:,
Security:
Subject:Цепочки обработчиков в JS Promise
Time:01:55 pm

Promise — это относительно новая фича JavaScript-а, позволяющая выполнять отложенные действия — то, что раньше решалось коллбэками. Хорошее введение в эту технологию есть на сайте HTML5Rocks, не буду его пересказывать.

У Promise есть два (интересующих нас сейчас) метода — .then() и .catch(), в которые передаются функции-обработчики для состояний «выполнено» (fulfilled) и «отказ» (rejected) соответственно. Эти методы можно объединять в цепочки: prom.then().then().catch().then().catch().catch().…. Вопрос: в каком порядке вызываются эти обработчики, что они получают, и от чего всё это вообще зависит?

Читать дальше...Свернуть )

Для начала посмотрим на конструкцию prom.then().then() (здесь prom — это некоторый Promise). Что такое тут prom.then()? Очевидно, это Promise, раз у него есть методы .then() и .catch(). Каково значение этого Promise? «Естественным» может показаться предположение, что это тот же самый prom передаётся по цепочке, но на самом деле это не так (и хорошо, что не так).

Каждый обработчик .then() и .catch() возвращает какое-то значение. Даже если функция не возвращает значение явно, то результатом её всё равно является значение undefined. Далее действуют правила:

  • Если функция возвращает Promise, то именно он и становится новым Promise-ом в цепочке;
  • Если функция возвращает любое другое значение, то оно оборачивается в Promise.resolve(…) и становится Promise-ом в выполненном состоянии;
  • Наконец, если в функции произошло исключение, то значение этого исключения оборачивается в Promise.reject(…) и становится Promise-ом в состоянии отказа.

Самое полезное применение этих правил — возможность обработки данных в цепочке. Например, так:

get('data.json')  
    .then(function(response) {
        // response — текстовые данные
        return JSON.parse(response);
    })
    .then(function(response) {
        // а тут уже response — объект, полученный в предыдущем обработчике
        console.log("Yey JSON!", response);
    });

Но вернёмся к произвольным цепочкам. У нас есть Promise, в зависимости от его состояния, он вызывает .then() или .catch(), ближайшие к нему по цепочке. Вызванный обработчик возвращает новый Promise, который снова вызывает .then() или .catch(), ближайшие по цепочке. И так далее.

Приведём пример (писать буду в ES6-синтаксисе, он проще):

Promise.reject("A")  
    .then(x =>  { console.log("THEN1", x);  })
    .catch(x => { console.log("CATCH1", x); })
    .then(x =>  { console.log("THEN2", x);  })
    .catch(x => { console.log("CATCH2", x); });

Что мы получим в консоли? Вот что:

CATCH1 A
THEN2 undefined

Почему так? У нас есть Promise в состоянии «отказ», значит, он вызовет ближайший обработчик .catch() в цепочке, это CATCH1. Этот обработчик не возвращает ничего (т. е. возвращает undefined), значит, на выходе из него мы получаем выполненный Promise со значением undefined. Выполненый Promise вызывает ближайший к нему .then(), это THEN2.

Ещё пример:

Promise.reject("A")  
    .catch(x => {
        console.log("CATCH1", x);
        return Promise.reject("B");
    })
    .then(x =>  { console.log("THEN1", x);  })
    .catch(x => { console.log("CATCH2", x); })
    .then(x =>  { console.log("THEN2", x);  });

Результат (посчитайте сами, почему именно так):

CATCH1 A
CATCH2 B
THEN2 undefined
Тут, кстати, имеются некоторые подводные грабли. Пусть у нас цепочка prom.then().catch() и предполагается, что .catch() ловит отказ в prom. Если prom выполняется успешно, то вызывается .then(), но если в его обработчике случится какая-то ошибка или исключение, то он вернёт новый Promise в состоянии отказа, что вызовет исполнение .catch(), который, скорее всего, сработает неправильно т. к. ожидает совсем других данных.
Поэтому чтобы гарантировать, что и .then()- и .catch()-обработчики будут иметь дело только с заданным Promise, надо использовать не цепочку вызовов, а вызов .then() с двумя аргументами. Вот так: prom.then(onResolve, onReject). Тогда что бы ни случилось в onResolve, onReject вызван не будет.

Этот пост в блоге POST /blog (13:08 30.08.2015)

Комментарии: написать Поделиться

Tags:
Security:
Subject:Сегодня самая короткая ночь
Time:01:44 am

reinbach


Этот пост в блоге POST /blog (01:06 22.06.2015)

Комментарии: 3 комментария или написать Поделиться

Tags:
Security:
Subject:Фото
Time:05:24 pm
Кстати, а может быть, кто-то хочет у меня посниматься? Давно не спрашивал:)

Я снимаю так http://hiero.ru/David?gallery и так https://www.flickr.com/photos/david_m/. Москва. Снимаю в основном ню и портреты. Не снимаю постановку, не снимаю красивые платья™.

Если что, пишите на david@hiero.ru или сюда в комменты (они скринятся).

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

А., 2014
Комментарии: написать Поделиться

Security:
Subject:FriendFeed всё
Time:04:45 pm

Сегодня ночью, чуть позже полуночи, был выключен Френдфид. Выключен он был коварным Фейсбуком, который его (Френдфид) купил лет пять назад, потому что во Френдфиде были лайки, а в Фейсбуке, представьте себе, тогда их не было.

Френдфид изначально создавался как агрегатор расширенной френдленты. Вот есть у вас френд, и он есть в ЖЖ, в Твиттере, в Инстаграме, во Фликре, ещё в ста местах. Он заводит аккаунт во френдфиде, и импортирует туда все эти ленты. А ты там на него подписывашься, и всё это видишь. Так себе концепция, прямо скажем, в духе начала нулевых. Помните, тогда каждый сайт хотел быть «порталом» и собирать в себя всё на свете?

Но с момента покупки Фейсбуком Френдфид (как сайт) развиваться перестал, и в нём началась собственная жизнь, потому что помимо всей этой агрегации во Френдфиде можно было писать свои коротенькие посты, оставлять комментарии и лайкать.

Русское коммьюнити Френдфида мне напоминало одновременно сериал «Теория большого взрыва» и птичий рынок доперестроечных времён. ТБВ там была практически в чистом виде — такое общежитие, где у каждого IQ заметно выше 200, аналогичного уровня чувство юмора, речь, пересыпанная отсылками чуть ли не всю мировую культуру разом… и при этом совершенно непосредственные, детские реакции, обиды, радости и прочие эмоции.

Птичий рынок — это я там был посетителем птичьего рынка, со своим IQ << 200:) В старших классах школы я любил ездить на Таганку и бродить по рядам между рыбками, попугаями, какими-то хомячками и что там ещё было. Это был такой зоопарк, только без клеток и всякой несерьёзности типа мороженого — всё было гораздо ближе, интереснее и непонятнее. Вот я примерно с тем же чувством заходил во Френдфид и читал там всё это.

Хорошее, в общем, было место. Когда объявили о его закрытии (месяц назад), сразу же собралась инициативная группа и начала пилить запасной аэродром — http://freefeed.net/. Он пока не открылся, но я уверен, что откроется. Френдфид, конечно, прежним уже не будет, но прежним вообще ничего не бывает.

Прощай, фидик.


Этот пост в блоге POST /blog (16:05 11.04.2015)

Комментарии: 4 комментария или написать Поделиться

[icon] Давид Мзареулян
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мои фотографии).
View:Иероглиф. hiero.ru/David. RSS2LJ. Здешние теги.
You're looking at the latest 10 entries.
Missed some entries? Then simply jump back 10 entries