• Как составить post запрос в python?

    valerium
    @valerium
    Изобретая велосипед
    Чтобы сделать POST запрос, используйте функцию requests.post().
    response = requests.post('http://example.com/', data={'key': 'value'})

    Через аргумент data передаёте словарь с переменными, если они нужны. В переменной response оказывается объект ответ, у которого есть атрибут cookies, который содержит словарь с куками. Передать эти куки в следующем запросе можно с помощью параметра (вот ведь неожиданно!) cookies.
    next_response = requests.post('http://example.com/', cookies=response.cookies)


    Вообще модуль request невероятно хорош, никогда не видел настолько интуитивного и удобного способа работы с HTTP. Чего только один метод .json() стоит!
    Ответ написан
    8 комментариев
  • Какой хороший мануал для настройки VDS ubuntu под веб-хостинг?

    valerium
    @valerium
    Изобретая велосипед
    sudo apt-get install nginx mysql-server php5-fpm php5-mysql
    Ответ написан
    Комментировать
  • Как отправлять данные с Arduino на сервер?

    valerium
    @valerium
    Изобретая велосипед
    Ищите по словосочетанию «arduino wi-fi sheild» или «arduino gprs sheild». Выбор довольно широк.
    Ответ написан
    9 комментариев
  • Gzip и кеширование в apache если уже есть ngnix?

    valerium
    @valerium
    Изобретая велосипед
    Если имеется ввиду ситуация, когда nginx стоит как фронтэнд к Apache, и оба они стоят на одной машине, то да, имеет смысл отключить. А то получается, что данные сжимаются, перекладывается из левого кармана в правый, распаковываются, потом снова сжимаются и отправляются клиенту. Если же серверы расположены на разных машинах, возможно, имеет смысл сжимать, нужно проверять на месте.
    Ответ написан
    3 комментария
  • Как будет правильно, грамотно на php?

    valerium
    @valerium
    Изобретая велосипед
    PHP сам по себе работает как шаблонизатор. То есть, если этот код вынесен в отдельный файл и не перемешан с логикой, и шаблон остаётся читабельным, то он вполне имеет право на существование.

    Главный плюс в таком подходе — быстродействие. Главный минус — потенциальная уязвимость, но её при должном навыке можно прикрыть.
    Ответ написан
    2 комментария
  • Bios состоит из последовательности команд из набора инструкций той машины, на которой он записан?

    valerium
    @valerium
    Изобретая велосипед
    Да, процессор при включении считывает содержимое BIOS в память и начинает его исполнять, то есть содержимое BIOS должно состоять из инструкций, которые этот процессор понимает. Ну и никто не отменял архитектуру фон Неймана, то есть BIOS содержит ещё и неисполняемые данные, вроде описания интерфейса и некоторого количества текстовых сообщений.

    Ещё стоит учитывать, что BIOS — это часть мира IBM PC совместимых компьютеров, у машин другой архитектуры плата с программой инициализации оборудования (и сама программа) обычно носят другое название и могут иметь немного иную структуру, например, не предоставлять API к оборудованию.
    Ответ написан
  • Есть ли нормальные глобальные объекты в python?

    valerium
    @valerium
    Изобретая велосипед
    Python — объектно-ориентированный язык. Почему бы не следовать этой парадигме?

    Создайте объект OMXPlayerWrapper, создайте ему атрибут player, в котором будет находиться плеер, и делайте с ним всё, что хотите, из любого метода этого класса. И никакие глобальные объекты (которые сами по себе зло) не нужны.

    И да, показать код (причёсанный) не помешало бы.
    Ответ написан
  • Как правильно использовать FIFO в линукс?

    valerium
    @valerium
    Изобретая велосипед
    Именованный канал (FIFO) — это такой виртуальный файл. Как и с любым файлом, в него можно писать, и из него можно читать. Особенность в том, что один процесс может или только писать, или только читать.

    С точки зрения программиста, достаточно просто открыть этот файл на запись и записывать туда то, что нужно. И всё.

    Из шелла писать в файл проще всего перенаправлением вывода. То есть, чтобы послать команду q нужно сделать
    echo q > /path/to/fifo

    В пайтоне можно обойтись встроенной функцией open(), нужно только знать путь к каналу, который открывает плеер.

    UPD. Но скорее всего, Вам нужны обычные неименованные каналы pipe. Для этого есть модуль subprocess, который может запустить указанное приложение и передавать ему команды на стандартный ввод. В документации к subprocess этот хорошо описано.
    Ответ написан
  • Как забэкапить линуксовый сервер?

    valerium
    @valerium
    Изобретая велосипед
    «Взрослое» решение — это система управления конфигурациями, вроде Chef, Puppet, Ansible и др. Учитывая, что кроме собственно конфигурации Вам ничего бэкапить не надо (машина не хранит данных), то это почти идеальное решение.

    Почти, потому что в некоторых случаях перекачать и записать на диск байт в байт сотню гигов может быть быстрее, чем скачать и установить сотню пакетов. Не говоря уже о нестандартном софте, который не пакетирован.
    Ответ написан
    Комментировать
  • Как в Django ошибку DisallowedHost сделать 400й вместо 500й?

    valerium
    @valerium
    Изобретая велосипед
    Попробуйте сделать 301-й («постоянный») редирект с www.cirk.irk.ru на cirk.irk.ru силами nginx. По идее это должно отвадить гуглобота. Кроме того, однозначно перестанете получать такие письма, потому что запросы на несуществующий домен не будут доходить до Django.
    Ответ написан
    2 комментария
  • Как выполнить shell при помощи php?

    valerium
    @valerium
    Изобретая велосипед
    Дело в обратных слэшах. Обратный слэш с последующим знаком переноса строки игнорируется, таким образом можно разбивать команду на несколько строк. Когда Вы записали команду в одну строку, обратные слэши стали самостоятельными аргументами, с которыми curl не знает что делать и выдаёт ошибку. Ошибка выдаётся на stderr, который игнорируется shell_exec, поэтому Вы ничего не видите. То есть, чтобы выполнить команду, нужно или вернуть переносы строк, или убрать слэши.

    Ну и закономерный вопрос. Зачем Вам дергать curl через shell_exec, если его можно дёрнуть средствами самого PHP?
    Ответ написан
  • Как удалить дубли во всех файлах в папке?

    valerium
    @valerium
    Изобретая велосипед
    Можно просто пройтись циклом по всем файлам в текущей папке.
    for i in *.txt; do sort $i | uniq > $i-sorted; done
    Ответ написан
    5 комментариев
  • Как вписать URL postgresql ghb ecnfyjdrt Django-CMS?

    valerium
    @valerium
    Изобретая велосипед
    Уберите jdbc, при чём здесь Java DataBase Connector?
    Ответ написан
    1 комментарий
  • В чем причина таких больших задержек в сети?

    valerium
    @valerium
    Изобретая велосипед
    Прежде чем грешить на провайдера, сделайте замер по кабелю. Если не прямое подключение к кабелю провайдера, то хотя бы кабелем к роутеру. Wi-Fi — это радио связь, а любая радио связь подвержена помехам. Телефон тоже может давать помехи по разным причинам: брак сборки, травма, особенности конструкции.

    А что за роутер?
    Ответ написан
  • Как именно в nginx limit_req burst "задерживает" запросы?

    valerium
    @valerium
    Изобретая велосипед
    Насколько помню по своему опыту, лишние запросы не задерживаются, а отклоняются с 500-й ошибкой.
    Ответ написан
    6 комментариев
  • Как настроить импорт прайсов из excel в БД?

    valerium
    @valerium
    Изобретая велосипед
    По всей видимости, файлы приходят из разных источников?

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

    Далее на каждый источник файлов пишется свой парсер, который разбирает файл на массив таких объектов и у каждого по очереди вызывает сначала метод проверить_наличие_в_базе(), и при отрицательном ответе вызывает записать_в_базу().

    Если нужно не только заносить новые объекты, но и обновлять старые, то логика второго пункта чуть усложняется, но не критично.
    Ответ написан
    4 комментария
  • Где можно почитать о бинарных данных и 16-ричных дампах?

    valerium
    @valerium
    Изобретая велосипед
    Вопрос исключительно общий. Начните с изучения самых основ, со способов представления информации и с систем счисления.

    Вообще, если говорить о целых числах, то нет никакой разницы между числами, записанными в двоичный, десятичной, шестнадцати- и шестидесятиричной системе счисления. Конкретно 16-ричная система в компьютерном мире пользуется популярность, потому что позволяет для записи числа использовать количество символов, кратное количеству символов в двоичной записи. Такой компромисс между краткостью и наглядностью. Например, для записи одного байта можно использовать 8 двоичных символов, четыре восьмеричных, три десятичных (при этом только три варианта в старшем разряде) или два шестнадцатеричных.

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

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

    Ручное создание бинарных файлов — это исключительно редкая ситуация в наше время. С файлами данных это и так очевидно (существуют редакторы на любой вкус и цвет). С исполняемыми файлами это тоже редко, так как существуют языки программирования высокого уровня, которые похожи на человеческий язык и переводятся в двоичные файлы компиляторами. Только в ряде особых случаев пишут на том самом ассемблере, который очень близок к машинным кодам и даёт возможность программисту практически однозначно определить содержимое итогового исполняемого файла.

    А чтобы узнать, какая команда ассемблера какому машинному коду соответствует, нужно читать спецификацию конкретной процессорной архитектуры.
    Ответ написан
    2 комментария
  • Есть ли решение для чтение больших прайсов xls,xlsx?

    valerium
    @valerium
    Изобретая велосипед
    Немного костыль, но
    libreoffice --headless --convert-to csv price.xls
    А дальше работать с 1—2 мегабайтным CSV, это уже не проблема.
    Ответ написан
    3 комментария
  • Как перехватить пакет?

    valerium
    @valerium
    Изобретая велосипед
    tcpdump, wireshark
    Ответ написан
    Комментировать