SQL-команда для создания дампа структуры базы, без данных pg_dump --schema-only my_super_database > /tmp/my_super_database.schema_only.dump Что тут что? pg_dump — это название утилиты(программы), которая делает дамп. —schema-only — это ключ, который говорит утилите pg_dump, что нужно выгружать только определения объектов (схемы), без данных. my_super_database — это ваше название базы данных, из которой […]
Модуль «pm2-logrotate» может вызывать загрузку процессора для NodeJS приложения более 100 процентов. Из-за этого приложение начинает медленнее работать. Вычисления производятся дольше чем обычно. Если для вас в приоритете работа приложения, а не ведение логов (журналов), тогда модуль «pm2-logrotate» нужно отключить. pm2 uninstall pm2-logrotate При помощи этой команды вы отключите продвинутое […]
В консоли Linux (в терминале) переходим в нужную директорию с файлами приложения, командой «cd«. Вводим команду: npm list jsdom После этого мы сможем увидеть установленную версию нашего npm пакета «jsdom«.
Нам нужно регулярное выражение, которое просто говорит есть ли заглавная буква в строке или её там нет. Для этого нужно использовать дополнительный синтаксис шаблона для работы с пространством UNICODE. RegExp(/\p{Lu}/,'u').test("http://Forumserver.twoplustwo.com") true RegExp(/\p{Lu}/,'u').test("http://forumserver.twoplustwo.com") false Подробнее функционал дизъюнкции описан в публикации «JavaScript | Проверка на символ алфавита человеческого языка«. Информационные […]
И вот однажды ты можешь задаться именно этим вопросом: «Как вручную разрешить JavaScript Обещание (Promise), не прописывая заранее логику в функции исполнителя?». Всё что тебе нужно, это вытащить наружу функцию разрешения из функции исполнителя для конкретного объекта Обещания. Для этого нужно создать любой внешний контейнер, будь то имя переменной или […]
Как приостановить выполнение алгоритма функции на некоторое время? В JavaScript можно создавать «ждущие функции». Это такие функции, которые умеют останавливать свою работу в определённых местах своего тела, ожидая следующей команды (события) или результата Обещания. Одной из реализаций «ждущей функции» в JavaScript является использование ключевого слова «async» перед ключевым словом «function«. […]
Как в редакторе Visual Studio Code с клавиатуры ввести символ табуляции вместо четырёх пробелов? Удерживая клавишу ALT нужно на мини-клавиатуре с цифрами (NUMPAD) нажать последовательно клавиши «0», «9». После этого появится стрелочка, смотрящая вправо, вместо четырёх точечек.
Замедление из-за предложения CONCURRENTLY Создание индекса с использованием слова «CONCURRENTLY» ровно в два раза замедляет процесс. Почему? Потому что на создание такого индекса нужно будет затратить два последовательных сканирования всей таблицы. Если у вас есть возможность заблокировать таблицу на какое-то время, то можете смело создавать индекс без слова «CONCURRENTLY«. Имейте […]
Асинхронный цикл — это то место, где можно попасть в ситуацию замедления работы приложения на JavaScript. Неправильное использование языковых конструкций async await может увеличить время ответа приложения, при «ждущих» запросах в базу данных, например. В результате пользователь долго будет ждать свой контент и возможно вы потеряете его, вместе с его […]
Есть массив из чисел (идентификаторов), в котором значения элементов упорядочены по возрастанию: let arr = [1,2,3,4]; Мы хотим создать все возможные пары чисел и сложить их в новый массив: let new_arr = []; Делаем генерацию через цикл: for(let x of arr){ for(let y of arr){ new_arr.push([x,y]) } } В первом […]
Текст в массив слов при помощи JavaScript Представим себе такую задачу. У нас есть текст на HTML-странице (в документе). Мы хотим получить этот текст силами JavaScript, а потом достать из текста слова и разложить их как элементы массива. Мы знаем, что слова в текстах отделяются друг от друга пробелами (минимальное […]
Работая с JavaScript или NodeJS важно понимать как себя ведут «Отклонённые Обещания». Я говорю о таких объектах Promise, где в переданной функции «Исполнитель» была вызвана функция отклонения — reject(). То есть когда ветвление алгоритма привело нас к reject(), а не к resolve(). Называть функцию «Исполнитель» мы можем как угодно (здесь […]
Самый простой способ — это использовать рекурсивную функцию с гарантированным условием выхода через 100000 итераций. Функция вызывает сама себя. function f(x){ x > 100000 ? console.log('Готово') : f(x+1) } f(1) Мы используем «Условный Оператор» для возвращения из функции результата. Результат работы — Ошибка «RangeError: Maximum call stack size exceeded» : […]
Как проверить, является ли символ строки буквой какого-либо алфавита любого человеческого языка? В какой-то момент работы с регулярными выражениями появляются задачи по определению принадлежности символа строки к букве какого-то языка. Причём хочется анализировать любые строки, без акцента на какой-то конкретный язык. Ведь в современных публикациях в сети интернет легко можно […]
Basic Multilingual Plane (BMP) — Базовая многоязычная плоскость. Встречается в подразделе «Pattern Semantics» у раздела «RegExp (Regular Expression) Objects«. В общем нужно знать то, что есть два вида написания шаблона регулярного выражения в JavaScript: BMP pattern Unicode pattern Примечание 2 Например, рассмотрите шаблон, выраженный в исходном тексте как один символ […]
Знак доллара «$» в JavaScript может использоваться в разных ситуациях. Самое простое — им можно называть имена переменных. Глобальный объект и ключ знак доллара в свойстве, объявленный через var JavaScript позволяет задавать имена переменных, используя в качестве первого символа знак доллара — «$«. В результате, если мы объявляем переменную […]
Оглавление Введение Где можно найти документацию по работе оператора typeof из JavaScript? typeof — это зарезервированное слово в JavaScript Оператор typeof и примитивные значения в JavaScript? Главная особенность работы оператора typeof в JavaScript Оператор typeof и функция в JavaScript? constructor.name вместо typeof Введение Полезность или бесполезность оператора typeof в […]
Введение Прежде чем проверять существование имени переменной, нужно чётко понимать разницу между способами объявления этой переменной. Если говорить точнее, то нужно различать способы регистрации нового идентификатора привязки. Я говорю о таких словах как var, let, const. Учитывайте то, что только слово var является зарезервированным словом, а слова let и const не […]
Оглавление Вступление к публикации Как удалить собственное свойство объекта с строковым ключом JavaScript? Как удалить собственное свойство объекта с символьным ключом JavaScript? Как удалить наследованное свойство объекта JavaScript? Какое собственное свойство объекта JavaScript нельзя удалить? Код в строгом режиме и удаление собственного свойства объекта JavaScript Как использовать логические ответы оператора […]
Как отцентровать блок DIV внутри другого DIV по вертикали и горизонтали силами JavaScript? Идея именно в том, чтобы сделать это при помощи языка программирования JavaScript, а не через HTML-разметку или CSS-разметку. Так как мы работаем с JavaScript, то нас будут интересовать объекты интерфейсов прикладного программирования, которые встроены в браузер. Они […]
Когда мы переходим на уровень языка программирования JavaScript с уровня HTML, то все манипуляции для динамического формирования разметки ложатся на знание прикладных интерфейсов программирования и их объекты (классы объектов). Многие начинающие разработчики приходят к JavaScript из обычной вёрстки HTML. Это значит, что они уже касались стандарта, который отвечает за стилевое […]
Оператор return относится к операторам «внезапного завершения» функции. Это значит, что кроме return существуют другие операторы, которые могут внезапно завершить выполнение функции. Список операторов «внезапного завершения» по стандарту ECMAScript: break continue return throw Пример функции, которая завершается из-за оператора throw перед оператором return. function f_throw(){ throw(10); return 20; }; Скриншот […]
SQL-команда, при помощи которой можно получить информацию о количестве созданных временных файлов, а также о их суммарном общем размере. select sum(temp_files) as temp_files, pg_size_pretty(sum(temp_bytes)) as temp_size from pg_stat_database; В результате можем получить что-то подобное: Мы используем встроенное системное представление «pg_stat_database«. Оно содержит по одной строке со статистикой уровня базы […]
Какой первичный ключ таблицы является «следующим» для «текущего» в PostgreSQL? Очень часто приложения (сайты) с клиентской стороны требуют формирования страниц пагинаций или кнопок «следующая страница» / «предыдущая страница». Как правило они оформляются с адресами, в которые входит значение текущего идентификатора. Это число (первичный ключ) берётся из таблицы и просто транслируется […]
В PostgreSQL для создания индекса таблицы (и её столбцов) предусмотрен оператор CREATE INDEX. Создать индекс можно как по одному столбцу, так и по нескольким. Создавая индексы по нескольким столбцам важно соблюдать последовательность столбцов. Разная последовательность столбцов в индексе, может давать разный результат по обработке запросов на выборку данных через оператор […]
Для обновления индекса нужно точно знать его имя и имя схемы данных. Таблица может содержать большое количество индексов, как по полным столбцам, так и по их частичным значениям (по диапазонам значений в столбце). Обновление индекса по сути является его полным перестроением. Можно сказать, что мы производим две операции: Удаляем существующий […]
Получение последнего элемента массива без подзапросов и переворотов — вариант для вычисляемых столбцов GENERATED ALWAYS AS STORED Пример на литеральном обозначении массива: SELECT (ARRAY[11,22,33,44])[(array_length(ARRAY[11,22,33,44], 1))]; Пример на ссылочном обозначении массива: SELECT (arr)[(array_length(arr, 1))]; Вместо «arr» нужно подставить своё выражение до массива. SQL-запрос на переворот массива и получение первого элемента […]
Что нужно знать до создания HTML-таблицы силами JavaScript? Так как мы хотим создавать таблицу в браузере, то по сути у нас есть два пути к решению задачи: Либо мы пытаемся создать СТРОКУ, которая будет написана синтаксисом HTML и которая будет представлять из себя строковый вид таблицы в HTML-разметке. Либо мы […]
Прежде всего нужно помнить, что функции в JavaScript могут быть двух видов: Обычные функции (нормальные, которые оформляются через ключевое слово function) Стрелочные функции (с урезанными возможностями, которые оформляются в виде ()=>1) На что это влияет? В стрелочных функциях не определяются локальные привязки для arguments, super, this, or new.target. Для получения имени функции […]
Обращение к любому элементу массива осуществляется при помощи квадратных скобок и целочисленного значения индекса элемента. Очень часто в программировании на JavaScript нужно получать первый элемент массива или последний элемент массива. Это популярные задачи т. к. на них работает большое количество логики алгоритмов. Но как обратиться к любому элементу массива? Например, […]
В JavaScript можно деструктурировать не только объекты, но и массивы. Существует формат присвоения, при помощи которого можно создавать имена новых переменных так, чтобы значения в этих переменных подхватывались из значений самого массива. В данном случае последовательность будет иметь значение. Это накладывает ряд ограничений на использование деструктуризации массива. let arr = […]
У нас есть строка с пробелами, написанная на JavaScript: let str = ' оди н д ва т ри '; Нам нужно удалить все возможные пробелы из этой строки, чтобы оставшиеся символы слиплись в одну последовательность. Как это сделать? Проще всего воспользоваться регулярным выражением и написать шаблон для сопоставления […]
Обычный вариант записи присвоения имён переменных В JavaScript существует формат присвоения, при помощи которого можно получать имена новых переменных так, чтобы значения в этих переменных подхватывались из одноимённых ключей самого объекта. В чём суть? Представим, что у нас имеется объект вида: let obj = {aa: 1, bb:2}; В обычной ситуации, […]
У языка JavaScript существует возможность преобразовывать разные типы данных друг в друга. Чтобы превратить объект на массив нужно обратиться к конструктору класса Object и вызвать у него метод entries(), где в качестве параметра передать интересующий нас объект. Пусть у нас будет такой объект для трансформации: let obj = {a:2.3, b:["efim","360","ru"], […]
Представим себе такую задачу. Мы хотим передавать в функцию одно число. Внутри тела функции мы хотим получить: сначала результат сложения этого числа с числом 10, а потом хотим получить результат умножения этого числа на число 3. Как это сделать в JavaScript? В чём может быть трудность возвращения нескольких результатов […]
В логах работы NodeJS приложения можно увидеть ошибки, где в качестве сообщения выступает строка «socket hang up«. Дословно на русский язык это можно перевести как «розетка повесить трубку«. Если по простому, то это означает, что мы сами остановили выполнение нашего HTTP-запроса методом destroy(). По какой причине? Причин может быть масса: […]
Прежде чем погружаться в тему публикации, давайте проясним два момента: Функция может не иметь оператор return в своём теле Функция может иметь хотя бы один оператор return в своём теле То есть, существует всего два варианта. Функция что-то возвращает в определённый момент своей работы или не возвращает. Видео про […]
console.log() неправильно работает? Клиентский console.log() не сильно отличается от серверного. Иногда в логах можно получить неожиданные результаты: console.log('%data%', []) NaNata% Обратите внимание, мы передали два параметра в метод log(). Мы хотели вывести сначала строку, а потом массив. Но вместо вывода двух элементов мы получили одну странную строку на выходе. Что […]
У нас есть NodeJS сервер, с которого мы отправляем запросы на разные сайты сети интернет. Мы получаем полезные данные и публикуем аналитику. В некоторых задачах мы хотим собирать IP-адреса, на которых располагаются ресурсы тех или иных сайтов. Работа с системой доменных имён В NodeJS есть модуль, который отвечает за […]
Как узнать общее количество записей в какой-то таблице в PostgreSQL через агрегатную функцию count()? SELECT count(*) FROM a.t_d; Результат работы выражения: Мы используем команду SELECT, для того, чтобы получить какой-то результат. После команды мы указываем агрегатную функцию count() внутрь которой передаём символ звёздочки. Смысл функции — подсчитывать общее количество записей. […]
Есть набор символов, которые лежат в массиве: let myarr = ['а','б','в','г','д','е','ё','ж']; Нам нужно создать такую функцию при помощи JavaScript, чтобы она могла принимать этот набор символов и нужную длину слова. На выходе функция должна возвращать случайное слово. Решение задачи Нам нужна внутренняя функция, которая будет возвращать из передаваемого массива […]
Зачем переписывать детей HTML-элемента в DOM? Речь идёт о перемене мест детей между друг другом или полная их замена. У нас есть какой-то HTML-элемент на странице в браузере. У этого элемента есть несколько детей одного типа. Для простоты восприятия, представьте себе таблицу у которой есть столбцы и записи. Так вот, […]
Список плохих сайтов от 2023-01-19 «Плохие» сайты это какие? Собирая адреса сайтов из интернета, первым делом сталкиваешься с неожиданными ситуациями, когда на доменах второго уровня висят десятки тысяч доменов третьего. Сначала думаешь, что информация на них чем-то отличается, но прокликав пару десятков из них, понимаешь, что контент перетасовывается в […]
Как сделать SQL-дамп данных одного столбца таблицы PostgreSQL на ПК в отдельный файл? У нас есть таблица с несколькими столбцами и несколькими записями. Мы хотим сохранить на компьютер данные только из одного столбца этой таблицы, чтобы у нас получился файл с расширением «.sql«. Этот файл нам нужен для хранения наиболее […]
Если не выполняются команды из редактора в веб-интерфейсе pgAdmin 4, то вероятнее всего исчерпаны все свободные подключения клиентов для СУБД PostgreSQL. Куда смотреть? В первую очередь нужно заглянуть на главную панель pgAdmin 4 у нужной базы данных. Раскрываем слева меню напротив нужного сервера. Выбираем нужную базу данных по имени. […]
У нас есть строка: let str = `йц3уке рпар фыв3йцу иа яы1у й1ыс ыв4 аватц` Мы хотим удалить из этой строки символы «й«, «3» и «ц«. Как это сделать? Удаление определённых символов строки через регулярное выражение в JavaScript Мы можем литерально записать наше регулярное выражение и передать его в […]
Работая с данными, в какой-то момент понимаешь, что не всё можно представить в виде линейной информации. Например, если мы говорим о текстах, то это обычные строки JavaScript. Что я имею ввиду? Смысл строк в том, что есть какой-то символ(или символы) и есть какая-то определённая последовательность этих символов. По сути, это […]
По стандарту HTML мы знаем, что в браузере можно рисовать любую графику. За это рисование отвечает HTML-элемент canvas. Для манипулирования с пикселями, текстами, линиями и путями мы используем JavaScript. Холст canvas представляет собой некоторое пиксельное пространство на котором размещаются «контексты рисования». По сути все изображения состоят из разных «контекстов рисования». […]
Что такое массив из массивов? Если смотреть на задачу со стороны визуализации, то массив из массивов представляет собой таблицу со столбцами и записями. Поэтому когда мы хотим перевернуть массив из массивов на девяносто градусов, то фактически мы хотим наклонить таблицу в правую или левую сторону — повернуть по часовой стрелке […]
Мы работаем с HTML-страницей в браузере и хотели бы в HTML-элементе «canvas» нарисовать красную линию, которая расположена диагонально относительно самого блока холста. Как это сделать? Для создания объектов мы используем язык JavaScript и интерфейсы объектной модели документа DOM. Пример HTML-файла с JavaScript кодом, который рисует красную диагональную линию на […]