roseandhabr, через RAG это вполне реализуемо. Например, можно воспользоваться https://github.com/langchain-ai/langchainjs и скормить ему ваши документы через loaders. Тогда LLM сможет использовать информацию из этих документов в качестве контекста.
Пакеты для multi tenancy смотрел, но, по-моему, это не мой случай, т.к. там приложения одинаковые для всех клиентов. Кастомизацию под конкретного клиента они не описывают.
Александр, не со всеми программами Option помогает. Например, Safari растянется только по вертикали.
Растягивание окна вручную до краев != разворачиванию на весь экран в Винде, потому что края окна остаются чувствительными к изменению размера. Например, если пытаешься мышкой кликнуть на скроллбар, скорее всего попадешь на ресайз окна. Или если нечаянно дернешь верхнюю панель браузера, промахнувшись по вкладке, сдвинешь весь браузер. Потом придется опять его аккуратно возвращать на место. Это очень неудобно, но многие вынуждены так делать, выбирая меньшее из зол. Даже в скринкастах крутых разрабов видно, что они растягивают окна на весь экран, а не пользуются полноэкранным режимом.
Полноэкранный режим в macOS плох тем, что, как уже сказали, нельзя положить никакое окно поверх имеющегося, не видно верхней панели и дока. Чтобы посмотреть время, придется подводить мышь к краю экрана.
Там несколько параллельных асинхронных запросов в ответ на событие от клиента, потому подход с одним экземпляром, очевидно, приведет к путанице токенов.
Да-да, на это не смотрите. Это результат невнимательности при подготовке к публикации на Тостере. Там более сложные операции на самом деле.
Спасибо за ответ! Единственное, что меня еще смущает - это то, что у меня несколько точек входа и при текущей организации кода в каждой создается экземпляр Api:
app.get('/forward_to_api1', function (req, res) {
let api = new Api(res.locals.token)
...
}
app.get('/forward_to_api2', function (req, res) {
let api = new Api(res.locals.token)
...
}
Большое спасибо за столь развернутый ответ! Все это время разбирался с duplicity и backupninja. Вроде разобрался, хотя сначала все это казалось ну очень уж запутанным :)
Если я правильно понял и настроил, действует все следующим образом:
Backupninja ежедневно запускает mysqldump, который создает бэкап БД под одним и тем же именем, затирая вчерашний;
Далее Backupninja запускает Duplicity, который сливает содержимое папки с бэкапами на FTP/WebDAV. При этом именно Duplicity следит за удалением старья из удаленного хранилища, а также отвечает за "инкрементность" бэкапов;
Жаль, в Duplicity нельзя полностью отказаться от шифрования.
Решил попробовать с Яндекс.Диском вместо FTP. Небольшой совет тем, кто будет делать то же самое: в Яндекс.Диске есть возможность создать пароль для приложения. Такие образом, в конфигах Duplicity не будет светиться ваш основной пароль на Яндекс-аккаунта. Пароль для приложения дает доступ только в определенный сервис Яндекса - в нашем случае в Диск. Надеюсь, в будущем они добавят возможность доступа только в определенные папки Диска.
SKS0000: https://goo.gl/Syr8os вот например, 29 баксов в год (~140 руб./месяц). Скорость точно не замерял, но сам для торрентов использую. Вроде хватает.