В новом учебном проекте под NestJS столкнутся с такой ошибкой в WebStorm - ESLint: TypeError: this.libOptions.parse is not a function.

Ошибка связана с Eslint - точнее, в багом в версии 8.0.1 этого пакета. Команда Eslint вроде как работает над ее исправлением и есть надежда, что в скором времени она пропадет.

Здесь и сейчас - баг лечится путем установки пакета eslint версии 8.22.0.

Быстрый способ

npm install eslint@8.22.0 --save-exact

Не быстрый способ

  • удалить папку node_modules
  • почистить кэш npm - npm cache clean –force
  • удалить файл package-json.lock
  • установить в package.json версию для пакета eslint - “eslint”: “8.22.0”,
  • заново установить все зависимости проекта - npm install

Суть вопроса - имеется личный ноутбук с Ubuntu Gnome 22.04 и есть рабочий ноутбук с Windows 10. Ради удобства работы - был приобретен KVM Switch - для подключения обоих ноутбуков - к одному монитору, клавиатуре и мыше; и удобного и быстрого переключения между ноутами.

Подключение было выполнено успешно. Однако, возникла небольшая проблема - если переключиться с работающего ноутбука Ubuntu на ноутбук с Windows, а затем - выполнить переход обратно - с ноутбука Windows на ноутбук Ubuntu, то в этом случае возникала следующая ситуация.

Ноутбук Ubuntu - к моменту переключения на него обратно - успевал “заснуть”; и заставить его “проснуться” можно было - только открыв крышку ноута. Весьма неудобно и теряется смысл существования kvm switch’а.

После некоторого изыскания и помощи на стороне reddit - решение было найдено. Оригинал помощи находится здесь - How to Change Lid Close Behavior in Ubuntu 20.04

Шаги исправления просты

В терминале нужно открыть для редактирования файл logind.conf:

sudo nano /etc/systemd/logind.conf

В открытом файле - найти строку HandleLidSwitch; по-умолчанию она будет иметь такой вид:

...
#HandleLidSwitch=suspend
...

Нужно ее раскомментировать - убрать символ #; и изменить значение на ignore. Итоговый вариант файла будет выглядеть так:

...
[Login]
...
#UserStopDelaySec=10
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
HandleLidSwitch=ignore
#HandleLidSwitchExternalPower=suspend
#HandleLidSwitchDocked=ignore
#HandleRebootKey=reboot
...

После этого - достаточно выполнить команду:

sudo systemctl restart systemd-logind.service

Сочетания клавиш для быстрой работы в Linux

Ниже представлен неполный список сочетания клавиш в Linux (Windows), позволяющие быстро вести разработку в этой ОС. В основном сочетания относятся к IDE Webstorm, но не только к ней - ко всему спектру процесса разработки.

  • Alt + 1 - открыть\закрыть панель проекта
  • Alt + 0 - открыть\закрыть панель коммитов
  • Alt + 9 - открыть\закрыть панель Git
  • Ctrl + Shift + K - push коммита

  • Alt + LeftArrow - перемещение влево по открытым вкладкам редактора
  • Alt + RightArrow - перемещение вправо по открытым вкладкам редактора
  • Alt + M - ammend commit
  • Alt + Enter - сделать импорт зависимости

  • Ctrl + F4 - закрыть активную вкладку
  • Ctrl + W - выделить все слово, на котором стоит курсор
  • Ctrl + Y - удалить активную строку

  • Ctrl + Shift + ArrowUp - переместить активную строку вверх
  • Ctrl + Shift + ArrowDown - переместить активную строку вниз

  • Ctrl + Alt + Z - откатить изменения

  • Ctrl + Shift + / - блочный комментарий
  • Ctrl + / - строчный комментарий

Настроить свои горячие клавиши

Переходим: Settings > Keymap

В панели поиска - ищем по словосочетанию; например - “Move Caret to Line End”:

Ниже - пример, как можно настроить свои сочетания (а-ля mac):

  • Move Caret to Line End: Alt + L
  • Move Caret to Link End with Selection: Alt + Shift + L

  • Move Caret to Line Start: Alt + J
  • Move Caret to Link Start with Selection: Alt + Shift + J

  • Add Selection for Next Occurrence: Alt + E
  • Unselect Occurrence: Alt + Shift + E

“Back-end for front-end” - сервис-прослойка между фронтом и бэком, который обращается к микросервисам и собирает из них данные в удобной для фронта форме. Сами же микросервисы - обычно представляют из себя CRUD API.

Repository в TypeORM - это отдельный специальный класс, менеджер для управления таблицами в базе данных.

Для каждой таблицы в БД - создается свой собственный repository для управления записями в этой таблице.

Каждый репозиторий имеет набор методов для чтения, создания, обновления, удаления и тп - записей в таблице.

В нем ещё могут быть дата мапперы, которые маппят данные, пришедшие из БД в тот вид, который требует сервис.

Здесь представлены все свойства и методы класса Repository.