• Один или несколько серверов для бэкенда, фронтенда и базы данных?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Ну хотя бы примерные нагрузочные тесты есть?
    Заценить сколько вы ожидаете пользователей, какая будет нагрузка, запустить на минимальном оборудовании, посмотреть на сколько процентов оно занято. От этого и смотреть что лучше - на одном, или уже не вытягивает и надо разносить.

    При запуске сайта, в среднем достаточно очень небольших ресурсов, и даже в пределах одного провайдера можно просто менять тариф, добавляя CPU и RAM до определенного предела.

    Если же ожидается взрывной рост пользователей, то идеале написать так, чтобы в недалеком будущем было несложно разнести на разные машины, а желательно вообще архитектуру спланировать под горизонтальный рост.
    Но это такое. Если будет прям настолько взрывной рост, то и деньги должны пойти рекой, а там может быть проще и выгоднее будет взять еще пару людей и с нуля переписать уже под новые требования.
    Ответ написан
    1 комментарий
  • Один или несколько серверов для бэкенда, фронтенда и базы данных?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    насколько целесообразно бэкенд, фронтенд и бд распределить на разных машинах?
    Если одна машина не справляется, или есть другие причины - то очень целесообразно.

    Иначе нецелесообразно.

    Как в таких ситуациях чаще всего поступают и на что лучше ориентироваться?
    Запускают проект на том, что есть в наличии, и не сильно бъет по карману. А потом в зависимости от нагрузки подбирают железо и архитектуру.
    Ответ написан
    2 комментария
  • Как использовать общую бд для Django и Laravel?

    netpastor
    @netpastor
    Python developer
    Можно жестко завязаться на базу данных Laravel, снять оттуда схему данных, прописать модели у себя как managed=False и читать оттуда данные
    Минусы: если на Laravel тоже живое приложение, то оно будет меняться, вместе и с БД, плюс если данные не просто справочные (достаточно сделать выборку из одной таблицы), а связанные, то все эти связки вам тоже нужно будет у себя самим прописывать и следить за их актуальностью
    Я бы предложил со стороны Laravel сделать API для получения этих данных
    Ответ написан
    8 комментариев
  • Как правильно написать viewsets для своего класса в Django REST Framework?

    @szelga
    DRF из коробки рассчитано на работу с джанговскими моделями. соответственно, queryset должен быть queryset'ом из джанговского ORM или обладать точно же таким интерфейсом. кроме того, ViewSet'ы по самой своей природе используются для набора однотипных моделей, а не для одинарного объекта, как в вашем примере. для одинарного объекта надо использовать просто представления (т.е., View).
    если вы только начинаете разбираться с Django и DRF, то имеет смысл работать с Django ORM, а не с самостоятельно созданными классами.
    Ответ написан
    3 комментария
  • Как найти элемент массива удовлетворяющий условию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    a = [[x1, y1], [x2, y2], ...]
    val = min(a, key=lambda i: i[0] - i[1])
    Ответ написан
    1 комментарий
  • Что выбрать: Django или Flask?

    keine-lust
    @keine-lust
    Если писать большой сервис (такой как Хабр) - это джанго. Фласк - микрофреймворк, где все остальное подключается дополнительно, он нужен для небольших проектов.
    Ответ написан
    Комментировать
  • Что выбрать: Django или Flask?

    darqsat
    @darqsat
    PM
    Мне было проще на джанго, у него уже всё готово и остается только на практике смотреть метод за методом. А на фласке мне было сложно, так как требовало отдельно учить ту же sqlalchemy.
    Ответ написан
    Комментировать
  • Что выбрать: Django или Flask?

    @abbrakadabbra
    Flask, когда точно знаете, что вам не нужно то, что есть в Django.
    Flask, со всем необходимым для разработка вэб-проекта == Django. Т.е., чтобы не вылосипедить - берите Django.

    Django - многие вещи из коробки, быстрая разработка, отличный фреймворк с большими возможностями, комьюнити.
    Ответ написан
    Комментировать
  • Как можно сделать специализацию класса для нескольких типов?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Предположим, есть общий шаблон сериализации данных для работы с абстрактными потоками ввода-вывода.
    Обобщенный шаблон такой сущности может выглядеть вот так.
    template< typename TValueType >
    struct Serializer final
    {
    	static inline const bool Read( const BasicStream& stream, TValueType& value_storage );
    
    	static inline const bool Write( BasicStream& stream, const TValueType& value_storage );
    };


    У этого шаблона может присутствовать набор частных инстанцирований для простых и стандартных типов.
    Пример
    template<>
    struct Serializer<int8_t> final
    {
    	static inline const bool Read( const BasicStream& stream, int8_t& value_storage );
    
    	static inline const bool Write( BasicStream& stream, const int8_t& value_storage );
    };
    
    // ...
    
    template<>
    struct Serializer<float> final
    {
    	static inline const bool Read( const BasicStream& stream, float& value_storage );
    
    	static inline const bool Write( BasicStream& stream, const float& value_storage );
    };


    Любой пользователь библиотеки всегда может определить частное инстанцирование сериализатора для своего типа точно в такой же манере. А можно просто отдать свой пользовательский тип на откуп обобщенному шаблону.

    А теперь вкусненькое. Среди стандартных типов есть и std::string, и std::vector, и std::map. Если пользователь решит сериализовать весь контейнер своих пользовательских типов, нам не стоит обязывать его писать частное инстанцирование сериализатора для контейнера. Нам надо предусмотреть сериализацию любого стандартного контейнера с любым пользовательским типом.

    Мы это делаем с помощью частичной специализации шаблона сериализатора.
    Для произвольной строки
    template< typename TCharType, typename TCharTraits, typename TAllocator >
    struct Serializer<std::basic_string<TCharType, TCharTraits, TAllocator>> final
    {
    	static inline const bool Read( const BasicStream& stream, std::basic_string<TCharType, TCharTraits, TAllocator>& value_storage );
    
    	static inline const bool Write( BasicStream& stream, const std::basic_string<TCharType, TCharTraits, TAllocator>& value_storage );
    };
    Для std::vector
    template< typename TElement, typename TAllocator >
    struct Serializer<std::vector<TElement, TAllocator>> final
    {
    	static inline const bool Read( const BasicStream& stream, std::vector<TElement, TAllocator>& value_storage );
    
    	static inline const bool Write( BasicStream& stream, const std::vector<TElement, TAllocator>& value_storage );
    };
    Для std::pair
    template< typename TLeftElement, typename TRightElement >
    struct Serializer<std::pair<TLeftElement, TRightElement>> final
    {
    	static inline const bool Read( const BasicStream& stream, std::pair<TLeftElement, TRightElement>& value_storage );
    
    	static inline const bool Write( BasicStream& stream, const std::pair<TLeftElement, TRightElement>& value_storage );
    };


    И так далее.

    А вот как может выглядеть внешнее определение функции при частичной специализации.
    Пример чтения из стрима в вектор
    template< typename TElement, typename TAllocator >
    inline const bool Serializer<std::vector<TElement, TAllocator>>::Read(
    	const BasicStream& stream,
    	std::vector<TElement, TAllocator>& value_storage
    )
    {
    	size32_t stored_size;
    	Serializer<size32_t>::Read( stream, stored_size );
    
    	value_storage.resize( stored_size );
    	for( TElement& element : value_storage )
    	{
    		Serializer<TElement>::Read( stream, element );
    	}
    
    	return true;
    }
    Ответ написан
    8 комментариев
  • Как вернуть ссылку на объект?

    0xD34F
    @0xD34F
    Делайте return *this в конце нужных методов. Например:

    class XXX {
      double val;
    
    public:
      XXX(double v) {
        val = v;
      }
    
      XXX& add(double v) {
        val += v;
        return *this;
      }
    
      XXX& sub(double v) {
        val -= v;
        return *this;
      }
    
      friend std::ostream& operator <<(std::ostream &os, const XXX &x) {
        return os << x.val;
      }
    };
    
    ...
    
    std::cout << XXX(5).sub(1).add(2).sub(3).add(4) << endl; // 7
    Ответ написан
    1 комментарий
  • Что выбрать: Django или Flask?

    Для начала Django. Во первых генерируется базовая структура проекта, во вторых всё что нужно в комплекте.
    Научитесь писать на джанге- научитесь и на фласке, они очень похожи.
    А как только вы во фласке прикрутите орм, шаблонизатор, wtforms, разнесёте код по отдельным приложениям, то в итоге у вас получится Django
    Ответ написан
    Комментировать
  • Что выбрать: Django или Flask?

    planc
    @planc

    flask - книга Мигеля Гринберга


    там уже новая книга у него и статьи есть на русском на хабре
    https://habr.com/post/346306/

    делай на джанге, параллельно ковыряй фласк

    по джанге вот этот гайд нормальный(ссылка возможно немного роскомпозор):
    https://simpleisbetterthancomplex.com/series/begin...
    Ответ написан
    2 комментария
  • Что выбрать: Django или Flask?

    sim3x
    @sim3x
    джанго
    По книге: two scoops of django
    Или по туториалу
    Ответ написан
    7 комментариев