-Поиск по дневнику

Поиск сообщений в lj_david_m

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 18.06.2006
Записей:
Комментариев:
Написано: 0




Давид Мзареулян - LiveJournal.com


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://david-m.livejournal.com/.
Данный дневник сформирован из открытого RSS-источника по адресу http://david-m.livejournal.com/data/rss, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Такие дела

Пятница, 05 Октября 2018 г. 22:43 + в цитатник
Такие дела.

#2lj
Андор Якаб. Почему я не дам вам работу
Я мог бы взять на работу 12 человек, с зарплатой €760 на руки, но не буду. Объясню, почему.

Оригинал записи в Google+

https://david-m.livejournal.com/1310862.html


Метки:  

Иероглиф: [без названия] (Давид Мзареулян)

Понедельник, 17 Апреля 2017 г. 11:45 + в цитатник

Метки:  

Иероглиф: Рассвет (Давид Мзареулян)

Четверг, 30 Июня 2016 г. 12:58 + в цитатник

Метки:  

Иероглиф: Луна (Давид Мзареулян)

Воскресенье, 27 Марта 2016 г. 23:22 + в цитатник

Метки:  

Иероглиф: 2004 (Давид Мзареулян)

Понедельник, 07 Сентября 2015 г. 11:33 + в цитатник

Метки:  

Как отключить автоустановку обновлений в Windows 10

Пятница, 04 Сентября 2015 г. 20:41 + в цитатник

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

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

Ну ладно, к делу. Всё-таки есть способ контролировать алгоритм обновления Win10. Я его нашёл вот в этой статье.

Собственно, там описано несколько разных способов, самый красивый из них, на мой взгляд — способ № 4. К сожалению, он работает только при Wi-Fi-подключении. Оказывается, Windows не скачивает обновления, если подключение к интернету тарифицируемое. Это очень мило со стороны Microsoft (могла бы ведь и скачивать…).

Чтобы указать, что соединение тарифицируемое, надо открыть Settings -> Network & Internet, в списке Wi-Fi-сетей нажать на Advanced options, и там поставить галочку Metered connection (или Лимитное подключение в русской версии).

Но, к сожалению, при подключении по проводу так сделать не получится. Поэтому я лично применил способ № 5 / 6. Он использует кровавую энтерпрайз-магию.

Для начала надо запустить Group Policy Editor. Можно найти его поиском или набрать gpedit.msc в меню Start. Выглядит он так:

В нём надо найти папку Computer Configuration / Administrative Templates / Windows Components / Windows Update. В ней выбрать Configure Automatic Updates.

И выставить настройки вот так:

Там есть несколько вариантов настроек:

  • 2 - Notify for download and notify for install
  • 3 - Auto download and notify for install
  • 4 - Auto download and schedule the install
  • 5 - Allow local admin to choose setting

Я выбрал “3”, чтобы система скачивала обновления, но не устанавливала их. Можно выбрать “2” — тогда она и скачивать их не будет.

После применения этих настроек, надо пойти в Windows Update и нажать кнопку Check for updates. Только после этого Windows поймёт, что настройки изменены. В дальнейшем она будет приставать к вам с просьбами установить обновления, но сама их устанавливать (и перезагружать компьютер) уже не будет.


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

https://david-m.livejournal.com/1308890.html


Метки:  

Цепочки обработчиков в JS Promise

Воскресенье, 30 Августа 2015 г. 13:55 + в цитатник

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)

https://david-m.livejournal.com/1308551.html


Метки:  

Сегодня самая короткая ночь

Понедельник, 22 Июня 2015 г. 01:44 + в цитатник

Метки:  

Поиск сообщений в lj_david_m
Страницы: [4] 3 2 1 Календарь