• Как открывать несколько окон PhpStorm с разными проектами?

    Дополню для PhpStorm 2021.3.3
    File->Settings→Appearance & Behavior →System Settings →”Project” → “Reopen projects on startup: Open project in”
    Ответ написан
    1 комментарий
  • Максимальный размер изображения opencv?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Размер изображения - width * height * байт на пиксель. Для грэйскейла это один байт на пиксел. Для BGR - 3 байта на пиксел (+ выравнивание? тут не вкурсе). Для rgba - 4 байта на пиксель.

    Ограничение - объем оперативной памяти или сколько памяти можно адресовать одному процессу. Уменьшить потребление памяти можно обрабатывая изображение по частям.

    Но по идее если говорить о размерах изображения то лимиты у нас предел для uint для ширины и высоты.
    Ответ написан
    1 комментарий
  • Как работает веб сервер?

    @vinca
    Поверхностно про сеть: ru.m.wikipedia.org/wiki/%D1%E5%F2%E5%E2%E0%FF_%EC%... - тут нужно уловить, что такое сигналы, что такое пакеты и что такое данные...

    Теперь, о том как пишется собственно сервер (приложение). ОС предоставляет 4-е системных вызова (про сетевую карту, драйвера и как ОС работает с erhernet не буду рассказыывать). Собственно системные вызовы:
    1) socket - создает сокет, для веб сервера, обычно это tcp;
    2) bind - привязывает сокет к локальному ip-адресу сервера (железки) и на определенный порт. Нужно из-за того, что на железке может быть много ip-адресов;
    3) listen - переводит сокет в состояние "слушать" (включает его на прием и передачу - если просто), это значит, что сокет готов принимать соединения от клиента (см tcp handshake) и ставить его в очередь ОС (очередь приложения backlog);
    4) accept - создает сокет к клиенту, позволяя уже с ним обмениваться данными. Accept вызывает само приложение, в зависимости от алгоритма, учитывая что есть ресурсы на обработку клиентского запроса. Если accept не сделать, то соединение повиснит в очереди (backlog) на время таймаута выставленного со стороны клиента или сервера.

    После accept, apache создает дочерний процесс, который уже и начинает из данных извлеченных из tcp "парсить" http по rfq (аля соглашению) и обрабатывать пользовательский запрос - разбирая зоголовки и выплевывая в сетевой буфер прочтенный с диска index.html с правильными заголовками http 1.0 или 1.1.
    Ответ написан
    Комментировать