• Я учу питон, и в данный момент я пытаюсь сделать калькулятор который проверяет данные которые вводит пользователь?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Вы пытаетесь выполнять операции с функциями:
    >>> def num_1():
    ...     ...
    ...
    >>> def num_2():
    ...     ...
    ...
    >>> num_1 + num_2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for +: 'function' and 'function'
    >>> type(num_1)
    <class 'function'>
    >>> type(num_2)
    <class 'function'>
    Ответ написан
    Комментировать
  • Лучшие практики для русскоязычных аббревиатур в API?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Если предполагается в перспективе использование вне РФ - то лучше использование tin вместо inn, и прочие по возможности таким образом заменять.
    Ну а если сугубо для внутреннего пользователя - то можно использовать русские транслитерированные аббревиатуры.
    Ответ написан
    Комментировать
  • Вывод списка статей одной категории?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Article.objects.filter(category__slug='category')
    ?
    Ответ написан
    Комментировать
  • Как сделать миксин универсальным?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Что-то вроде такого, если вас правильно понял:
    class UniqueNameErrorMixin:
    
        def clean_name(self):
            name = self.cleaned_data.get('name')
            if name and hasattr(self.model, 'name') and self.model.objects.filter(name=name).exists():
                raise ValidationError('{self.model._meta.verbose_name} с таким именем уже существует.')
            return name
    Ответ написан
  • Если любой из элементов массива слов имеется в строке - выдать true, как?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    wda = [‘Да’, ‘да’, ‘интересно’, ‘Интересно’]
    text = (что-то что мы ввели с клавиатуры)
    for elem in wda:
        if elem in text:
            # если нашли - то дальше итерироваться и проверять нет необходимости
    	return await message.answer(‘одно из слов есть в тексте’)
    
    await message.answer(‘слов нет’)
    Ответ написан
    Комментировать
  • Как можно оптимизировать этот код?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Все не смотрел, но простыни типа:
    def get_contact(ids):
        for id in ids:
            template = f'https://etender.gov.az/api/events/{id}/contact-persons'
            try:
                response = requests.get(template, timeout=20)
                if response.status_code == 200:
                    data_list = response.json()
                    for data in data_list:
                        main_data['Full_name'].append(data.get('fullName', 'None') if data.get('fullName') else 'None')
                        main_data['Contact'].append(data.get('contact', 'None') if data.get('contact') else 'None')
                        main_data['Position'].append(data.get('position', 'None') if data.get('position') else 'None')
                        main_data['Phone_number'].append(data.get('phoneNumber', 'None') if data.get('phoneNumber') else 'None')
    
                else:
                    main_data['Full_name'].append('None')
                    main_data['Contact'].append('None')
                    main_data['Position'].append('None')
                    main_data['Phone_number'].append('None')
            except requests.Timeout:
                main_data['Full_name'].append('None')
                main_data['Contact'].append('None')
                main_data['Position'].append('None')
                main_data['Phone_number'].append('None')


    пишутся гораздо проще. Да и структуру данных я бы поправил. К примеру простыня выше заменяется более лаконичным кодом:
    main_data = []
    ...
    
    def get_contact(ids):
        for id in ids:
        	current_data = {'Full_name': 'None', 'Contact': 'None', 'Position': 'None',  'Phone_number': 'None'}
            template = f'https://etender.gov.az/api/events/{id}/contact-persons'
            try:
                response = requests.get(template, timeout=20)
                if response.status_code == 200:
                    data_list = response.json()
                    for (elem_to, elem_from) in [
                         ('Full_name', 'fullName'),
                         ('Contact', 'contact'),
                         ('Position', 'position'),
                         ('Phone_number', 'phoneNumber')
                    ]:
                    	current_data[elem_to] = data.get(elem_from, 'None')
             except requests.Timeout:
                   pass
            main_data.append(current_data)
    Ответ написан
    Комментировать
  • Как писать запросы к API на стадии разработки, если backend еще нигде не хостится?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    1) Запуск бэкенда локально через Docker для тестирования запросов и интеграции (это нормальная практика?)

    Вполне нормальная практика. А что смущает?
    Ответ написан
    Комментировать
  • Как правильно отправить 100к post запросов максимально быстрым способом на Python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    man threading
    Ответ написан
    Комментировать
  • RDP как его взламывают?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Простым перебором адресов и портов.
    А аккаунты - словарями распостраненных логинов и паролей.
    Но вы можете облегчить им работу расположив RDP-порт на стандартном для RDP открытом порту, используя распостраненные логины типа admin, user и пр., и озаботившись тем чтобы пароль попал в словари подбора.
    Ответ написан
    Комментировать
  • Нужно ли код бота выкладывать в GitHub?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Вопрос бессмысленный. Разберитесь что такое git и для чего он нужен.
    Выкладывать ли код на github, gitlab или куда-то еще - сугубо личное дело.
    Код можно выложить на guthub.
    Нужно ли? Для чего нужно? Не можете для себя ответить на этот вопрос - тогда наверное не нужно.
    Ответ написан
    Комментировать
  • Как сделать сервер из esp?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Берете как пример:
    WiFiWebServer
    Прокидываете на WiFi порт или хост наружу. И - вперед...
    Ответ написан
    Комментировать
  • Многопоточность или Celery в Django?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Если не ставится дополнительных требований к связанному запросу - как-то надежность, возможность отложенного выполнения, повтора выполнения при неудаче, возможность обработки большого количества запросов одновременно и пр., - то можно запускать в отдельном потоке - почему бы и нет...
    Ответ написан
  • Почему иногда для получения данных с сервера используется POST, а не GET?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    GET не меняет состояния объекта
    а POST - меняет

    пример взятый с потолка:
    GET /api/v1/entity/42/ - просто получить данные объекта (после запроса объект никак не меняется)
    POST /api/v1/entity/42/updated/ - обновить данные объекта в соответствии с какой-то внутренней логикой (после запроса возможно изменение состояния) - в ответе получить обновленное


    Так на уровне разрешений проще разграничивать группы пользователей, кто может выполнять запросы безопасные - типа GET/HEAD/OPTIONS, а кто - повышенные привилегии с POST/PUT/PATCH/DELETE и т.п.
    Ответ написан
    Комментировать
  • Мощный светодиод крепится к радиатору на термоклей или на припой?

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

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Не бойтесь экспериментировать. Вот на скорую руку:
    scale_percent = 30
    image = cv2.imread(captcha)
    
    dim = (image.shape[1] * scale_percent // 100, image.shape[0] * scale_percent // 100)
    
    resized = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
    gray = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)        #
    ret, threshold_image = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
    threshold_image = np.invert(threshold_image)

    664473ac92045706635146.png
    Ответ написан
    Комментировать
  • Как в файле js использовать код python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Как вариант:
    transcrypt
    Ответ написан
    Комментировать
  • Как правильно описать модели для того, чтобы создать несколько подкатегорий для категории?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Примерно как-то так:

    class Category(models.Model):
        title = models.TextField()
        category = models.ForeignKey(
            'self', on_delete=models.CASCADE, null=True, blank=True, related_name='subcategories'
        )
    
        def __str__(self):
            return self.title
    Ответ написан
    Комментировать
  • Как сделать аналог LEFT JOIN в Django ORM?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Что-то вроде (точный синтаксис подбирайте сами):
    qs = Products.objects.filter(price__gte=50, products_images_set__icontains='pizza')

    можно добавить что-то типа prefetch_related чтобы одной выборкой выбрать связанные products_images чтобы по два раза в базу не ходить...
    Ответ написан
    3 комментария
  • Не получается установить библеотеку, что делать?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Перевести ошибку, можно со словарем - и понять что возможно дело в правах пользователя.
    А еще лучше - почитать про виртуальные окружения, и работать с ними.
    Ответ написан
    Комментировать
  • Перенос работающего приложения в docker контейнер?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    postgresql - уже есть готовые официальные образы. Просто выбрать нужную версию и сделать на ее основе свой образ, добавив свои конфиги либо просто примонтировать конфиги и том с данными.
    sftp - можно также поискать нужные образы, либо сделать свой на базе alpine, либо того же ubuntu если хочется меньше возиться...
    Ответ написан