• Что лучше использовать для вебсокет-сервера на Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Могу посоветовать не использовать потоки. Используйте асинхронный aiohttp.
    Ответ написан
    3 комментария
  • Какую БД выбрать под node debian?

    Deissh
    @Deissh
    I like Python, Node.JS, Go, pain, bugs and my cat.
    Будет достаточно использовать MongoDb с кешированием в памяти, так как 1.5кк записей (по 200 байт) будет занимать не более 0.4 гб.
    Ответ написан
    Комментировать
  • Как увеличить производительность скрипта?

    @neol
    Самый очевидный вариант: сократить количество проходов по массиву.
    Второй проход вам совершенно не нужен, т. к. уже на первом можно подсчитать количество "закрашенных" точек (если точка ещё не закрашена - закрашиваем её и увеличиваем счётчик, иначе переходим к следующей). Имея количество "закрашенных" точек и площадь холста рассчёт сводится к одному действию, а сложность алгоритма уменьшается в два раза.

    Если я ничего не путаю, то получится как-то так
    w,h = input().split()
    w = int(w)
    k = 0
    h = int(h)
    canvasArea = w * h
    count = int(input())
    arr = [[0]*h for i in range(w)]
    for i in range(count):
      square = [int(l) for l in input().split()]
      for i in range(square[0],square[2]):
        for j in range(square[1],square[3]):
          if arr[i][j]==0:
            k += 1
            arr[i][j] = 1
      print(canvasArea - k)


    PS Маленький совет по поводу именования переменных: если вы когда-нибудь собираетесь заняться программированием за рамками олимпиадок, то вместо w,h,k и arr стоит использовать что-то типа width, height, filledCount, canvas. Так как в чуть более объемном коде будет значительно сложнее понять, что означают все эти однобуквенные переменные.
    Ответ написан
    1 комментарий
  • Может ли быть маркированый и не маркированый трафик на одном порту?

    Может.
    Ответ написан
    Комментировать
  • Зачем нужен Spring Cloud?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Spring Cloud нужен для автоматизации разворачивания сервисов на облачных платформах, типа AWS, Azure, GCP и прочем. Обычно он нужен тогда, когда система должна автоматически реагировать на изменение нагрузки и разворачивать новые инстансы десятками.
    Ответ написан
    4 комментария
  • С какой стороны подступиться к JAVA EE?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Последовательность изучения по этапам:

    Этап первый и решающий, на котором обучаюшийся осознает, что же именно называется JЕЕ (что речь не столько о конкретной версии каких-то бинарников, которые можно загрузить с сайта Оракла, если случайно кликнуть не на ту кнопку, а о стеке спецификаций, для каждой есть, как минимум, несколько имплементаций и т.д.)
    и по результатам определяется, с чего будет начинать, в свете свалившихся задачь. Скорее всего, начать придется с того, что такое контейнеры, в частности CDI, и провайдеры, в частности persistence API, он же JPA, он же ORM (что это такое, что называют application server, а что servlet-контейнером, или, грубо, в чем разница между, например, Wildfly и Tomcat, каким боком к ним относится Hybernate и нафига придумали Spring), а также, что такое модули и профайлы. Понимание принципиальной архитектуры JEE, хотя бы поверхностное - основа, без которой любое дальнейшее обучение будет бесполезным бубнением непонятных мантр.

    Этап второй, на котором обучающийся выбирает конкретную JЕЕ секту, вступает в нее и переписывает квартиру на имя гуру. Да, да - в JЕЕ все точно, как в жизни. Спецификация одна, но "самых правильных" имплементаций, разумеется, море... С какой-нибудь из них придетя начать (возможно, свалившиеся задачи уже как-то конкретизируют выбор). В любом случае, этап заканчивается загрузкой и установкой (сначала локальной, чтоб потыкать пальчиком, потом на серверах) какого-нибудь сервера/сервлет-контейнера, сервера БД и деплоя и запуска первого HelloWorld JЕЕ приложения по туториалу и с помошью большого количества такой-то матери (ибо придется разбираться с конфигурациями, дескрипторами, правами доступа и прочими настройками, которые все совершенно очевидны, когда уже понял, но похожи на магию, когда наступаешь на них впервые). На этом этапе самый главный вопрос, "почему именно оно заработало".

    Этап третий, наиболее драматический, на котором вопрос "а нафига оно вообще все нужно" может довести обучаюшегося до нервного срыва, когда он пытается "по-быстрому" допилить только что заработавший HelloWorld до нужного ему функционала. На этом этапе вспоминаются всякие JMS, JAX-RS, JAAS и прочие непонятные вещи, мелькавшие на первом этапе, ренее "маловажные нюансы" языка, вроде ClassLoader или сериализации, вдруг оказываются ключевыми и т.д. и т.п. Это наиболее важный и долгий этап обучения. Его можно считать пройденным, когда: А. разросшийся до размеров слона с одной ногой и тремя хоботами HelloWorld сносится, т.к. приходит понимание, что в JEE нельзя просто взять и от балды допилить... даже если кажется, что можно, расплата все равно придет. Б. перепробованы разные базы данных, разные имплементации и апдейты каких-то спецификаций, разные IDE и плагины к ним, и все бесполезно - нигде, даже в платных тулзах нет кнопки "сделать все феншуйно", и, наконец, В. обучающийся понимает, что вся эта ЕЕ хрень придумана с одной единственной целью - предотвратить использование сделанного "так, чтоб как-нибудь заработало", оставив только "сделанное правильно". Победить в этой битве, конечно, нельзя, но зато можно долго и интересно бороться разными хаками, эзотерическими фреймворками и вплоть до инструментализации байткода... предела фантазии нет. В этом и заключается суть обучения JEE - понять, как делать правильно, а как - себе дороже.

    Следующий этап уже, собственно, к обучению не относится - это практика. На нем выжившие начинают с нуля строить архитектуру приложения, выбирать решения в рамках предлагаемого EE набора технологий, постоянно задумываясь над масштабированием, отказоустойчивостью этих решений и т.д. и т.п. Основная мысль на этом этапе: "блин, как я вообще раньше мог делать по-другому"...
    Ответ написан
    5 комментариев
  • Как эффективно (время) записать огромное количество данных в файл?

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

    @m0nym
    Буфер. Ибо писать по байтику - это дико медленно.
    Ответ написан
    Комментировать
  • Благодаря какому HTTP заголовку можно на одном сервере разместить несколько сайтов с разными доменными именами?

    BuriK666
    @BuriK666
    Компьютерный псих
    https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D...
    Host - Доменное имя и порт хоста запрашиваемого ресурса. Необходимо для поддержки виртуального хостинга на серверах.
    Host: ru.wikipedia.org
    Ответ написан
    Комментировать
  • Как перезапустить службу без ввода пароля?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Раз уж Алексей Черемисин не сподобился.
    В /etc/sudoers добавить строчку:
    <username> ALL=(ALL) NOPASSWD: /bin/systemctl restart <service_name>
    Ответ написан
    Комментировать
  • Как создать подсеть в сети?

    @remzalp
    Программер чего попало на чем попало
    Классическая схема - отдельной группе компов отдельный VLAN на управляемом коммутаторе, он воткнут в маршрутер, который умеет понимать VLAN trunk и маршрутизировать между ними. Задача решена.

    Управляемые коммутаторы в разных зданиях соединены оптикой, оптика втыкается в SFP модуль, который воткнут в SFP порт коммутатора/маршрутизатора.
    5b3b5cda5fe07588857626.png

    VLAN100 - невидимые компы
    VLAN200 - все остальные.
    TRUNK - канал связи, по которому управляемые коммутаторы умеют пробрасывать сразу несколько сетей, не смешивая их между собой. Обратите внимание - все промежуточные устройства до выходного маршрутизатора должны уметь это делать, чтобы из 2-3 здания спец-компы суметь довести до интернета, никому их не показав при этом.

    Сложность в двух местах:
    1. все сети в итоге должен разруливать TP-LINK, а я только с паре с нестандартной прошивкой OPENVRT нашел упоминание, что вланы на нём можно делать и управлять. Стандартная прошивка позволяет только выделять IP/TV вланы, что для решения текущей задачи скорей всего окажется недостаточно.

    2. Проблема с wi-fi мостом - если убики умеют поднимать между собой trunk, то всё супер. Если нет - вопрос как две независимых локалки пропихнуть по общему каналу, чтобы они не пересекались.

    Потребуется в 1 и 3 здание управляемый коммутатор,
    tplink воткнуть для раздачи инета гостям, а разруливать все маршруты и вланы - поставить микротик или еще что достаточно умное.

    Нагрузку от пары десятков человек разрулит микротик достаточно компактный по мощности.

    Крутой вариант - циска. Даже б/ушные с авито. Только полистайте CCNA, чтобы понять всю логику.
    Ответ написан
    9 комментариев
  • Почему загрузка стала медленной или ошибка nginx 502 после loaddata в Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Запустить psql, включить тайминг и попробовать выполнить такой же запрос, какой выполняет Django. Если он будет медленным, запустить этот же запрос с explain analyze и посмотреть на что уходит время. Подозреваю, что индексы не построены.
    Ответ написан
    4 комментария
  • Как оптимизировать ответ сервера (Spring boot 2 API) в формате JSON?

    al_gon
    @al_gon
    class Response{
           private Integer id;
           private String quest1;,
           private Integer countTeams; 
           private Integer countStages;
           private Integer  check;
    }


    А почему не так?
    Ответ написан
    6 комментариев
  • Как получить дату начала и конца предыдущей недели?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    LocalDate now = LocalDate.now();
    LocalDate lastWeekStart = now.minusWeeks(1).with(DayOfWeek.MONDAY);
    LocalDate lastWeekEnd = lastWeekStart.plusDays(6);
    Ответ написан
    Комментировать
  • Как запихать 39 камер в 28 портовый коммутатор?

    @cssman
    только покупать ещё один коммутатор на недостающее + n количество портов.
    Ответ написан
    Комментировать
  • Аппаратный RAID-контроллер для Ubuntu - у кого из производителей лучше поддержка драйверами?

    @Wexter
    У LSI вполне нормальная поддержка контроллеров серии 92хх/93хх под линуксами.
    Ответ написан
    2 комментария
  • Как разделить буквы в словах на пары?

    @pcdesign
    >>> import re
    >>> re.findall('..?','Привет мир')
    ['Пр', 'ив', 'ет', ' м', 'ир']
    Ответ написан
    Комментировать
  • Как сделать двухстороннее общение приложений?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    ВебСокеты.
    Ответ написан
    5 комментариев