• Почему не могу авторизоваться через cURL?

    Воспользоваться сниффером и посмотреть какие параметры хочет от вас сайт. Для авторизации и прочего используйте docs.guzzlephp.org/en/stable/index.html

    Можно ещё так запросы посмотреть:
    1) Нажимаем prntscr.com/fvyaj3
    2) Отправляем форму на сайте prntscr.com/fvyanx
    3) Получаем данные prntscr.com/fvyaug
    Ответ написан
    Комментировать
  • Как узнать статистику чужого сайта по месяцам?

    dom1n1k
    @dom1n1k
    Ну если у вас сайт большой и популярный, они могут оценить вашу посещалку по рейтингу Алексы.
    Если ваш сайт мелкий и мало кому известный - почти наверняка это 3,14здеж продажника, чтобы польстить, завязать таким образом разговор и в ходе него впарить свои услуги.
    Ответ написан
    Комментировать
  • Где можно найти список всех производителей видеокарт со всеми моделями?

    Stalker_RED
    @Stalker_RED
    Вы наверняка встречали такие понятия как Vendor ID и Device ID. Они есть практически у каждого более-менее приличного устройства подключаемого к компьютеру.
    Это идентификаторы в пространстве PCI, и есть базы данных со списками всех устройств.
    Nvidia, например: pci-ids.ucw.cz/read/PC/10de
    AMD/ATI: pci-ids.ucw.cz/read/PC/1002
    И так далее.

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

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    У Wi-Fi нет такого параметра как "максимальное количество устройств", всё это высчитывается для конкретных устройств в конкретной обстановке.

    Влияет:
    - Растояние между клиентом и ТД
    - Растояние между клиентами
    - Радиопомехи
    - Тип антенны
    - погода на марсе

    На вскидку могу порекомендовать MikroTik cAP (из дешовых вариантов), но количество и расположение вам никто не скажет без планов помещений и радиоразведки.
    Ответ написан
    Комментировать
  • Как в python сложить два слова?

    Astrohas
    @Astrohas
    Python/Django Developer
    new = ["great" + name for name in names]
    Ответ написан
    Комментировать
  • Есть ли в других языках уязвимость вроде sql инъекции?

    @nirvimel
    Во всех языках, в которых существуют функция eval, возможна инъекция чего угодно через нее. И если в SQL еще можно как-то решить эту проблему при помощи правильного экранирования символов, то в Тьюринг-полных языках отличить зловредный код то безопасного теоретически возможно только одним способом: исполнив его в том же окружении и с теми же входными данными, что и в реальных условиях.
    Поэтому большинством сoding conventions (кстати, как это будет по-русски?) использование eval запрещено полностью. Code review в большинстве крупных компаний и крупных open-source проектах завернет любой pull-request, в котором будет обнаружен eval, и после этого, скорее всего, даже не станет рассматривать последующие реквесты от того же автора.
    Еще у многих антивирусов эвристический анализатор заточен на поиск eval в скриптах (включается после того как определен язык).
    Ответ написан
    Комментировать
  • Данные постоянно растут. Как быть?

    sim3x
    @sim3x
    Как рассчитать предельную допустимую нагрузку на сервер?
    Нагрузочное тестирование

    Данные постоянно нарастают. Скоро закончится место на харде сервера.
    Volume testing

    Что изучить чтобы разобратся как распределять данные между множеством серверов и хардов?
    Отправляем клиентов на разные сервера
    Ответ написан
    Комментировать
  • Демон в celery для django: какнастроить?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Прежде всего хочу обратить внимание вот на это:
    Выбрал вариант с celeryd

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

    Теперь немного ответов на вопросы.

    CELERY_APP - что сюда вписывать?

    Это экземпляр класса celery.Celery, вот путь до него и надо прописать, в формате package[.subpackages].module:variable. Например, у меня есть файл project/celery.py, в котором создаётся экземпляр таким образом:
    from celery import Celery
    
    app = Celery('project')

    И я впишу в CELERY_APP значение project.celery:app
    У вас наверняка подобный код тоже есть в проекте, если вы делали по документации

    И как создать celery-пользователя? Погуглил, но не понял ответа.

    Я для всего проекта использую одного пользователя, того, под которым django выполняется (у меня webapp)

    И почему CELERYD_CHDIR="/opt/Myproject/"? Так и не понял, зачем нужен редирект куда-то (а я так понял, это адрес, куда переместиться во время работы). Зачем это нужно и помешает ли сохранять получаемые данные (сохранять изображения в папках) по относительным адресам в django-проекте?

    Эту опцию не использую, вместо неё у меня используется WorkingDirectory на уровне systemd, но смысл абсолютно тот же.
    Это не редирект, это просто указание рабочей папки, относительно которой будет запускаться ваш демон. При правильной настройке работа проекта в режиме celery-воркера ничем не должна отличаться от работы проекта в веб-режиме. На уровне кода никаких ветвлений на тему "если я демон - то делай так, а если нет - делай эдак" быть не должно (и я даже не знаю, как их вообще делать).

    CELERY_BIN="/usr/local/bin/celery"
    Прошел по пути, никакого celery там не увидел.

    Ну блин, куда вы установите celery, там его исполняемый файл и будет. Например, у меня все python-зависимости, куда входит и celery, установлены в virtual env'е, и путь до него такой: /home/webapp/Env/project-backend-3.5/bin/celery

    2. Что делать после настройки? В документации указано что-то про django-настройки и пояснено значение переменных, прилагается несколько кусков кода, но даже с переводчиком не могу понять их назначения.

    Что делать после того, как я сделаю оба файла celeryd пригодными для работы?

    После настройки - запускать, тестировать, отлаживать. Всё как обычно.

    CELERYD_SU_ARGS="-l"
    Что это? Зачем это?

    Не знаю, и видимо, не нужно. Там даже написано, что не рекомендуется.

    Вот мои конфиги (для systemd), делал на основе конфигов из официальной репы celery.

    Файл сервиса celeryd (/etc/systemd/system/celery.service):
    [Unit]
    Description=Celery Service
    After=network.target redis.target
    
    [Service]
    Type=forking
    User=webapp
    Group=webapp
    EnvironmentFile=-/etc/systemd/celery.conf
    WorkingDirectory=/home/webapp/project_dir/project/src
    PermissionsStartOnly=true
    ExecStartPre=-/bin/mkdir -p ${CELERYD_STATE_DIR}
    ExecStartPre=/bin/chown -R ${CELERYD_USER}:${CELERYD_GROUP} ${CELERYD_STATE_DIR}
    ExecStart=/bin/sh -c '${CELERY_BIN} multi start \
        ${CELERYD_NODES} \
        -A ${CELERY_APP} \
        --pidfile=${CELERYD_PID_FILE} \
        --logfile=${CELERYD_LOG_FILE} \
        --loglevel=${CELERYD_LOG_LEVEL} \
        ${CELERYD_OPTS}'
    ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait \
        ${CELERYD_NODES} \
        --pidfile=${CELERYD_PID_FILE}'
    ExecReload=/bin/sh -c '${CELERY_BIN} multi restart \
        ${CELERYD_NODES} \
        -A ${CELERY_APP} \
        --pidfile=${CELERYD_PID_FILE} \
        --logfile=${CELERYD_LOG_FILE} \
        --loglevel=${CELERYD_LOG_LEVEL} \
        ${CELERYD_OPTS}'
    
    [Install]
    WantedBy=multi-user.target


    Файл сервиса celerybeat (/etc/systemd/system/celerybeat.service):
    [Unit]
    Description=CeleryBeat Service
    After=network.target redis.target rabbitmq.target
    
    [Service]
    Type=simple
    User=webapp
    Group=webapp
    EnvironmentFile=-/etc/systemd/celery.conf
    WorkingDirectory=/home/webapp/project_dir/project/src
    PermissionsStartOnly=true
    ExecStartPre=-/bin/mkdir -p ${CELERYBEAT_STATE_DIR}
    ExecStartPre=/bin/chown -R ${CELERYD_USER}:${CELERYD_GROUP} ${CELERYBEAT_STATE_DIR}
    ExecStartPre=/bin/rm ${CELERYBEAT_SCHEDULE}
    ExecStart=/bin/bash -c '${CELERY_BIN} beat \
        -A ${CELERY_APP} \
        --workdir=${CELERYBEAT_WORKDIR} \
        --pidfile=${CELERYBEAT_PID_FILE} \
        --logfile=${CELERYBEAT_LOG_FILE} \
        --loglevel=${CELERYBEAT_LOG_LEVEL} \
        --schedule=${CELERYBEAT_SCHEDULE}'
    ExecStop=/bin/systemctl kill celerybeat.service
    
    [Install]
    WantedBy=multi-user.target


    Файл конфигурации сервисов celeryd и celerybeat (/etc/systemd/celery.conf):
    # See
    # http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#available-options
    
    # Common Celery Settings
    CELERY_BIN="/home/webapp/Env/project-backend-3.5/bin/celery"
    CELERYD_USER="webapp"
    CELERYD_GROUP="webapp"
    CELERY_APP="project.celery:app"
    
    # Common env settings
    DJANGO_SETTINGS_MODULE=settings.production
    LC_ALL=ru_RU.UTF-8
    LC_LANG="ru_RU.UTF-8"
    LANG=ru_RU.UTF-8
    
    # Worker settings
    CELERYD_NODES="w1 w2 w3 w4 w5 w6"
    CELERYD_OPTS="-Q:w1 default --autoscale:w1=8,4 \
    -Q:w2 queue2 --autoscale:w2=6,2   \
    -Q:w3 queue3 --autoscale:w3=8,2 \
    ....................
    -Q:w6 queue6 --autoscale:w6=6,2       "
    
    CELERYD_MULTI="multi"
    CELERYD_STATE_DIR="/var/run/celery"
    CELERYD_PID_FILE="/var/run/celery/%n.pid"
    CELERYD_LOG_FILE="/var/log/celery/%n.log"
    CELERYD_LOG_LEVEL="INFO"
    
    # Beat settings
    CELERYBEAT_STATE_DIR="/var/run/celerybeat"
    CELERYBEAT_PID_FILE="/var/run/celerybeat/beat.pid"
    CELERYBEAT_LOG_FILE="/var/log/celery/beat.log"
    CELERYBEAT_LOG_LEVEL="INFO"
    CELERYBEAT_SCHEDULE="/var/run/celerybeat/schedule"
    CELERYBEAT_WORKDIR="/home/webapp/project_dir/project/src"
    Ответ написан
    5 комментариев
  • Как перенести контент и БД на Django-сайт более новой версии?

    sim3x
    @sim3x
    Делаем новый вирт енв с питон3+джанго1.6
    Стартуем тесты
    Фиксим баги
    Коммитим фиксы

    Ставим джанго1.7
    Тесты
    Фиксим
    Коммитим

    И так до 1.11

    БД вообще незачем трогать
    Модели - тем более незачем трогать
    Ответ написан
    Комментировать
  • DLL библиотека на питон?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Транслировать в С-шный код с помощью Cython, а потом скомпилировать в dll каким-нибудь из С-шных компиляторов.
    Ответ написан
    2 комментария
  • Возможна ли загрузка с лайв дистрибутива на компьютере с Windows без следов?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Если не будете пытаться из-под linux лезть на диски винды то нет, и то это будет только очень косвенное доказетельство и доказать что что дата доступа к файлам изменена из под линуха и не винды практически невозможно.
    Если вы будете допустим редактировать microsoft office файлы из под линуха и сохранять их на диск ноута то в общем в метаданных будет свититься что файл был создан/редактировался допустим в Libreoffice и то это можно зачистить всё.

    В общем - если вы грузитесь с флэшки и не лезите к диску ноута то что либо доказать нереально.
    Ответ написан
    Комментировать
  • Как сменить ip на заданный статический?

    @nirvimel
    Это просто, достаточно сменить адрес проживания на нужный город и подключить себе интернет по новому месту жительства.

    Если чуть умерить аппетиты и поставить задачу несколько по-другому, то вместо "смены" IP можно пропускать свой трафик через другой узел для создания видимости нахождения в другом городе. Для этого потребуется приобрести VPN в этом городе любым способом.
    Ответ написан
    Комментировать
  • Можно ли в python подключать модули runtime?

    @nirvimel
    Еще так можно:
    (_file, pathname, description) = imp.find_module('my_module', ['./path/to/my_module'])
    my_module = imp.load_module('my_module', _file, pathname, description)
    Ответ написан
    Комментировать
  • Как процессор работает с памятью?

    @Mercury13
    Программист на «си с крестами» и не только
    1. Для косвенной адресации. Мы не просто обращаемся к 325-й ячейке, а проводим вычисление, получаем 325 и обращаемся к ячейке с этим номером. Получили бы 456 — обратились бы к 456-й.
    Это даёт кучу интересных структур данных, и самая простая из них — массив.

    Многоуровневый указатель — это уже дело более высокого уровня. Пока указателем я называл просто адрес в памяти. Но, извините, в памяти хранятся однобайтовые целые, двухбайтовые целые, дробные, массивы, строчки, другие указатели — в общем, на более высоком уровне появляется понятие «тип данных». И указатели бывают на целое, на дробное — и на указатель!

    2. Разница между каким-то адресом и началом структуры данных. Например, у нас есть такая структура данных (для простоты без выравнивания).
    a : word
    b : dword
    c : byte

    Тогда поле c находится по смещению 2+4 = 6, и если голова структуры по адресу 124, то поле c будет по адресу 124+6=130.

    Также в стандартном режиме 8086 — 16-битный процессор с 1 мегабайтом адресуемой памяти — была хитрая система адресации под названием «сегмент:смещение», и адрес вычислялся по формуле сегмент·16 + смещение. При этом было принято считать, что сегмент незыблем, а по структуре данных (которая при этом не могла превышать 64K) мы двигались, меняя смещение.

    3. Т.н. «переключение контекста» — ядро ОС просто сохраняет регистры в памяти. Очень долгая задача, кстати.
    Ответ написан
    Комментировать
  • Bootstrap 3 или 4?

    sim3x
    @sim3x
    О, не бойтесь переучиться
    У нас тут такая профессия, что если не будете учиться каждый день, то вас никто нанимать не будет
    Ответ написан
    Комментировать
  • Программа для учёта данных узи пациентов?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Есть готовые программы, за деньги.

    Есть стандарт DICOM. Теоретически, софт в аппарате должен позволять это все заполнять и скидывать на сервер DICOM.

    Серверы DICOM есть и бесплатные
    Ответ написан
    4 комментария
  • Как запоминать код, который писал две недели назад?

    @nirvimel
    1. Как писать много кода, оставляя его простым, как в начале?
    2. Также советую прочесть "Совершенный код" С.Макконнелла.
    3. Качественный код не требует того, чтобы его запоминали. Качественный код может быть забыт сразу после того, как он начнет проходить все тесты. Держать в голове нужно только программные интерфейсы, но даже не все, а только, используемые на текущем уровне абстракции.
    Ответ написан
    Комментировать
  • Разработка web-сервисов – LAMP (Python/Django) vs. MEAN (Node.js)? Или что-то другое?

    1) Мой основной язык Python, на JS больших программ почти не писал. Когда писал на нём больше, то ощущал дискомфорт из-за:
    - отсутствия нормального наследования (хотя сейчас, вероятно, это уже исправлено)
    - трудностей с типами данных и неявными преобразованиями (вот вчера буквально был холивар на Тостере о == и ===)
    - списков, реализованных как переодетые объекты
    - отсутствия из коробки структур данных вроде deque.

    Но это были студенческие поделки.

    2) Python предоставляет больше средств борьбы со сложностью. Наследование, система метаклассов, синтаксический сахар. Хотя бы даже такая штука как property. Он даёт больше возможности инкапсулировать сложность внутри. Ну и на нём действительно очень много разнообразных библиотек. Возьмите хотя бы Django: она умеет автоматически генерировать миграции базы данных. Насколько я знаю, это мало кто умеет делать.

    3) Не думаю, что JS - это язык будущего для бэк-енда. Я бы согласился, если бы вы сказали про Scala или Kotlin, которые куда больше подходят для больших и сложных приложений хотя бы потому, что имеют ещё больше средств борьбы со сложностью, чем Python. Поэтому я смотрю скорее в их сторону для своего будущего профессионального развития, не на JS. Он как-то не очень тянет в сравнении.

    4) Ничто не помешает вам изучить платформу А, затем Б, потом В и так далее; от этого только польза. Может быть, вы через десять лет будете на Quipper - диалекте Haskell для квантовых компьютеров - писать. Но начинать посоветую всё же с Python - чтоб меньше заниматься мазохизмом и больше писать кода.)
    Ответ написан
    2 комментария
  • Python sqlite, почему возникает ошибка?

    @nirvimel
    telebotиспользует threading, функции с декоратором message_handler вызываются из потока на его тредпуле. Курсор sqlite3, созданный в конструкторе db из главного потока, не может быть использован в вызове send_welcome -> user_register -> db.query из другого потока.

    Перенесите создание курсора cur = self.con.cursor() в метод query и сделайте его локальной переменной.
    Или кешируйте создаваемые курсоры в threading.local, если производительность в этой точке критична (не думаю, что это так, исходя из задач бота).
    Ответ написан
    Комментировать