-
От сервера до клиента
Прежде, чем в браузере что-то произойдет, он должен понимать куда отправиться. Есть множество способов добраться куда-либо: ввести адрес в поле навигации, кликнуть (или нажать) на ссылку на веб-странице или другом приложении, выбор из Избранных. Это всегда самый первый шаг в цепочке событий, которая приводит к генерации веб-страницы. Инициация запроса. Когда браузеру предоставлен адрес, под капотом
-
Кратко об IPv6.
Что не так с IPv4? Самая большая проблема IPv4 сязана с относительно небольшим пространством IP адресов. IPv4 использует 32-х битные адреса, что ограничивает количество доступных адресов до 2 в 32 степени — 4 294 967 296 уникальных адресов. На первый взгляд это довольно много, но большая часть из этого используется в APIPA, локальных сетях и так далее,
-
Алгоритмы. Обратная строка (reverse string).
Описание проблемы. При вызове функции reverse мы должны получить переверную строку, например apple === elppa, Greetings! === !sgniteerG. Решение 1. Решение 2. Решение 3.
-
Алгоритмы. Палиндром.
Описание проблемы. При вызове функции isPalindrome(string) мы должны возвращать true если строка является палиндромом (civic, kayak, level, radar, rotor) и false если строка не является палиндромом. Решение 1. Решение 2.
-
Масштабируем приложение от 0 до 100 тысяч пользователей.
Многие стартапы были в этой ситуации — кажется, что легионы новых пользователей создают учетные записи каждый день, и инженерная команда изо всех сил пытается поддерживать работу. Это хорошая проблема, но информация о том, как масштабировать веб-приложение от 0 до сотен тысяч пользователей, может быть скудной. Обычно решения приходят либо в результате массовых проблем, либо путем
-
Генераторы в JavaScript. Часть 2.
Замена встроенному циклу for. Так как генератор возвращает iterable и yeild* может вернуть каждый отдельный элемент iterable, мы можем создать второй генератор и yield его из второго генератора. Например, создадим такой генератор И будем использовать его внутри другого генератора: Что даст нам примерно такой результат: В консоли: Такой же результат мы могли бы получить с помощью встроенного цикла for
-
Генераторы в JavaScript. Часть 1.
Если мы посмотрим что выводит в терминал console.log(Array.prototype) мы увидим, что одно из свойств прототипа — Symbol.iterator, это функция, которая вернет нам итератор. Например, вызов этой функции на массиве вернет нам Array Iterator {}. У итератора есть метод .next(), который вернет нам первый элемент массива {value: «A», done: false} и указание на то остались ли элементы массива, который итератором еще не
-
Немного о JSON.stringify API
Как вы знаете, для того, что бы успешно сохранить объект для временного хранения в localStorage или пересылки на сервер, нам нужно сериализовать его в строку. Для этого используется метод stringify. Параметр space В качестве параметра свойства space можно передать не только число, которое задает количество отступов, но так же строку или символ табуляции \t. Параметр replacer В этот параметр
-
В чем разница между HEAD и ORIG_HEAD?
Разница заключается в том, что HEAD это сылка на последний коммит в текущем бранче и git commit запишет изменения поверх него. ORIG_HEAD — это предыдущее состояние HEAD, которое появилось в результате теоретически опасных действий, для того что бы можно было ревертнуть это опасное состояние. Но, теперь у git есть рефлог HEAD@{1} который всегда будет указателем на последнее состояние HEAD. Так же напомню, что reflog — это
-
Автоматизация ежедневных задач програмиста с bash
1. Скрипт, который автоматически создает Pull Request. Создадим следюущий скрипт: rev-parse — это вспомогательгная команда, используемая для различных манипуляций с помощью дополнительных флагов, преобразуя эти данные в SHA1 хэш. Отправление и получение данных из Node.js в Bash с помощью process. Создадим JavaScript файл (не забудьте дать ему разрешение на исполнение — chmod +x) таким сожержанием:
