Элемент Details

Мало кто из нас использует элемент details. А между тем он хорошо работает и притом почти везде.

Отмена запроса fetch

Существует ошибочное мнение, что запрос с помощью fetch нельзя отменить, так как он возвращает, как известно Promise, у которого в интерфейсе не предусмотрено никакой отмены. На самом деле можно. Для этого используем AbortController. Помечено, как экспериментальное, но на текущий момент времени работает везде, кроме IE. Это объект с простейшим интерфейсом:

  • signal: AbortSignal Это EventTarget с одним событием abort
  • abort() возбуждает событие abort на signal

signal подкладываем в параметры fetch, и когда надо "сигналим", что запрос надо отменить. При этом промис будет фейлиться с исключением AbortError.

const abortController = new AbortController();
const promise = fetch(url, {
    method: 'GET',
    signal: abortController.signal,
})
.then(null, err => {
    if (err instanceof DOMException && (err as DOMException).code === DOMException.ABORT_ERR) {
        // request canceled with AbortController
        return false;
    }
    throw err;
});

// cancel request:
// abortController.abort()

Один signal можно дать более чем одному fetch. Все вместе прекрасно отменятся.

Статья с историей AbortController'а.

Перенаправление в nginx'е с переписыванием параметров

Рецепт для конфига nginx'а, чтобы он перенаправлял запросы на заданный бэкенд и добавлял заданные параметры в запрос (чтобы, например, не светить всему интернету токены апи сервисов)

location ~ ^/(?<apiservice>(api.service.com|another.service.com))/(?<pathservice>.*)$  {
    set $token ""; 
    if ($is_args) {
        set $token "&";
    }
    set $args "${args}${token}service_token=secrettoken"; # update args

    resolver 8.8.8.8;
    proxy_pass https://$apiservice/$pathservice$is_args$args;
    proxy_set_header Host $host;
    proxy_redirect off;

}

Перехостился

Так и вынудил в результате Роскомнадзор переехать из https://www.digitalocean.com/, услугами которого я пользовался долгое время и ещё бы попользовался, но перекрыли все: я перепробовал уже все площадки вплоть до Бангалора и Сингапура — всё закрыто. Надо ли говорить, что Телеграм — цель этих мер — отлично работает.

Без всякого удовольствия перенес всё в https://cloud4box.com/. Что про него сказать? Очень дёшево.

8G

Оплата мутная, похожи на мошенников, но все так и есть: и 8G памяти и два CPU. Диск медленный, машина разворачивается неспешно, за dns просят немного денег.