• Как реализовать хранение изображений отдельно от кода и запрос нужного размера на лету?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    Можно поднять бесплатную версию imgproxy. Единственный затык - у них из облаков Amazon, Google и Microsoft. Но можно вполне накостылить что-то рядом, что будет хранить файлы локально и будет уметь работать с вашей основной системой.
    Ответ написан
    Комментировать
  • Как лучше хранить много изображений для веб-приложения?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Чтобы забыть о проблеме на долго конечно лучший выбор отдельное объектное хранилище. Не обязательно это должно быть облачное решение, можно организовать self-hosted S3-совместимое решение с использованием https://min.io/. Это позволит использовать любую готовую библиотеку s3-клиента для работы с файлами (upload/download/delete)

    Плюсы - при правильной настройке размер хранилища можно бесконечно расширять и масштабировать/реплицировать.

    Вопрос разграничения доступа можно решить тем что для доступа к файлу генерируется временная ссылка с ключем. Вариант хорош тем что раздачей файлов будет заниматься сервис хранения и не надо гонять данные между бэкендом и хранилищем. Бэкенд лишь при запросе файла проверяет права доступа и генерит секретную ссылку на скачивание.

    Другой вариант это проксировать все запросы на файлы через приложение: пользователь запросил файл -> бэкенд проверил права доступа -> бэкенд обратился к s3 хранилищу чтобы получить файл -> бэкенд передал файл пользвоателю. Это примерно как было у вас с хранением файлов в базе, пользователь не может напрямую скачать файл из базы, а это за него делает ваше бэкенд приложение.
    Ответ написан
    Комментировать
  • DevOps. Какие задачи являются типичными в повседневной работе?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    DevOps отличается от обычного сисадмина тем, что не может сказать "это задача программистов".
    Ответ написан
    2 комментария
  • Node.js: callback или deferred?

    Если я правильно понял вопрос, как удобно построить цепочку вызывающих себя через callback'и функций с передачей данных следующей функции, то с использованием async это пишется так:
    var async = require('async');
    
    async.waterfall([
    	function(callback){
    		setTimeout(function() {
    			console.log('f1 done');
    			callback(null, 'data from f1');
    		}, 100);
    	},
    	function(data, callback){
    		// работа с data
    		// или расширение цепочки через функцию f3, которая по окончании работы вызовет callback
    		// f3(callback);
    		console.log('f2 done');
    		callback(null, 'done');
    	}
    ], function (err, result) {
    	// result now equals 'done'
    	if (err) {
    		// единое место для отлова ошибок
    	}
    	console.log(result);
    });
    
    Ответ написан
    1 комментарий