• Как работает отправка заголовков в PHP?

    DevMan
    @DevMan
    ответ состоит из заголовков и содержимого. и именно в таком порядке.
    заголовок1
    заголовок2
    .....
    заголовокX
    
    данные
    поэтому если начался вывод данных, заголовок уже не отправить.

    и это не конкретно PHP, так работает HTTP.
    Ответ написан
    6 комментариев
  • В каких сферах перспективно использовать C#(сравнение с python)?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Владислав Лысков Аноним
    Рука лицо. C# и в особенности его модификация core это язык общего назначения, с отличной поддержкой, огромной кодовой базой, легкостью интеграции с windows инфраструктурой и легаси кодом.
    По скорости работы и разработки он на одном уровне с java и php.

    @wideShift

    Хорошая штука, у вас сразу куча мелких приятностей и поддержка со всех сторон. Web, Mobile, Desktop из коробки и на высоком уровне. Впрочем для веба нужно выбрать фронт, возможно angular или vue в связке с net core
    Ответ написан
  • Где плотно используется Python в вебе?

    EvgenyMamonov
    @EvgenyMamonov
    Senior software developer, system architect
    Например Python+Django используется в Instagram
    https://instagram-engineering.com/web-service-effi...

    YouTube, DropBox, Uber, Pinterest, Яндекс, Facebook - все они используют Python.

    Знаменитая фраза разработчиков Google: «Python where we can, C++ where we must», переводится как: используем «Python ― где можем, C++ ― где должны»

    Да, переписывать части на Си можно, делается это достаточно редко.

    Если будете писать под большие нагрузки - можно посмотреть в сторону Go lang.
    Ответ написан
    5 комментариев
  • Python и чтение из excel с записью в mysql как ускорить?

    @o5a
    Для массовой вставки строк лучше использовать executemany, а не делать execute в цикле.
    https://dev.mysql.com/doc/connector-python/en/conn...
    Т.е. сформировать вложенный список строк, затем массово его вставить, например так:
    # формируем вложенный список всех строк данных
    data = [[
        sheet[f'A{i}'].value, #id
        sheet[f'B{i}'].value, #имя
        sheet[f'C{i}'].value, #фамилия
        sheet[f'D{i}'].value, #отчество
        sheet[f'E{i}'].value, #Водительские права(Есть/Нет)
        sheet[f'F{i}'].value, #Семейное положение(Да/Нет)
        sheet[f'G{i}'].value] #Профессия
        for i in range (2, 500002)
        ]
    
    # массово вставляем все данные
    cursor.executemany("""insert into table1(id, name, fam, otch, vod_pr, sem_pol, prof)
                  values(%s, %s, %s, %s, %s, %s, %s)""", data)


    Но раз уж мы массово вытаскиваем данные, то лучше переделать выборку, например так:
    # формируем вложенный список всех строк данных (тут подставить свои значения min/max row/column если потребуется)
    data = list(sheet.iter_rows(min_row=2, max_row=500002, max_col=7, values_only=True))
    
    # массово вставляем все данные
    cursor.executemany("""insert into table1(id, name, fam, otch, vod_pr, sem_pol, prof)
                  values(%s, %s, %s, %s, %s, %s, %s)""", data)

    Хотя возможно есть более быстрый способ массово выбирать данные строк в openpyxl, я не знаю.

    P.S. можно сразу почистить данные от пустых строк, например так
    data = list(filter(lambda x: any(x), data))
    Ответ написан
    Комментировать
  • Почему кнопка выезжает за пределы колонки (Bootstrap)?

    y0u
    @y0u
    dev
    Во первых, row - это строка, а не колонка. То, что у вас выделено синим - строка.
    Во вторых - ширина кнопки в данном примере больше, чем ширина колонки, потому и вылезает.

    Увеличьте размер колонки.

    А лучше всего используйте правильный компонент для такого случая:
    https://getbootstrap.com/docs/4.4/components/input...
    Ответ написан
    2 комментария
  • Зачем закрывать курсор и соединение к БД?

    @Stormx480
    Python Backend Developer
    Это называется устойчивой хорошей практикой, которая позволяет в будущем избежать большого кол-ва ошибок.

    Для начала надо определится с терминологией:

    cursor - Класс драйвера, через который происходит взаимодействие с базой данных.
    connection - Класс подключения к базе данных.

    У любой базы данных есть максимально допустимое кол-во подключений. Как и максимально допустимое кол-во открытых курсоров.

    Если не закрывать - вы рано или поздно упретесь в лимит.

    Так же, следует помнить, что транзакция начинается до выполнения запроса, и при определенных настройках бд, на момент выполнения транзакции таблицы лочатся, и не дают другим потокам или программам ими воспользоваться. По умолчанию транзакция создаётся до выполнения первого запроса к БД, и все последующие запросы выполняются в контексте этой транзакции. А длительные транзакции ни к чему хорошему не приводят.

    Так же нужно понимать что при создании подключения к базе данных у вас отжирается определенное кол-во оперативной памяти которое для этого необходимо. Если плодить много подключений - можно сожрать всю память.

    Так же в случае большой нагрузки и большого приложения, может закрасться какой нибудь баг и не закрываемые соединения могут попортить достаточно нервов.

    Если вы не хотите постоянно закрывать подключение и курсоры - вы можете оформить код через конструкцию with. Тогда подключение и курсор будут закрывать автоматически, после выполнения блока кода в конструкции.

    Как итог:

    1) Закрытие позволяет избежать ошибок, связанных с использование одних подключений в разных потоках.
    2) Не расстрачивает вашу оперативную память для создания ненужных подключений.
    3) Не забивает базу ненужными подключениями.
    4) Позволяет правильно распоряжаться транзакциями, и делать в определенной транзакции только определенные действия, а не пихать все в кучу.
    5) Вы не упираетесь в лимит подключений и не получаете ненужных об этом ошибок.
    6) Вы не получаете ошибок о том, что одно подключение пытается взаимодействовать с таблицей или данными, созданными в другом подключении, и залоченными или не расшаренными на данный момент.
    Ответ написан
    5 комментариев
  • Не понимаю паттерн MVC. Что почитать/посмотреть?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда, набежало "специалистов"-попугаев, повторяющих заученные фразы, но так и не понявших ни что такое сам паттерн, ни вопроса, который был задан.

    Хотя ответ очень простой и первый вопрос автора даёт очень простую подсказку.

    Вся суть эмвэцэ в том, что это всего лишь интерфейс. Штепсель. Розетка, через которую твое приложение подключается к веб. Веб-интерфейс твоего приложения.

    То есть к самому приложению, если подумать, отношения не имеет.

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

    При этом модель - это не убогий интерфейс к таблице в бд, как думают все попугаи. А собственно все приложение и есть. Это ещё называется бизнес-логикой.

    Из всего этого становится очевидно, что этот загадочный паттерн в сущности составляет мизерную долю кода. И понимание эмвэцэ никак не поможет написать само приложение. он вообще не про это. Понимание поможет только меньше накосячить, перемешав веб-интерфейс и бизнес-логику.

    Ответ с картинками и видео с ютюбе https://qna.habr.com/answer?answer_id=1475989#answ...
    Ответ написан
    1 комментарий