• Как починить циклический импорт?

    solotony
    @solotony
    покоряю пик Балмера
    использовать локальный импорт
    Ответ написан
  • Как лучше оптимизировать SQL?

    solotony
    @solotony
    покоряю пик Балмера
    1) зачем нужен `select_related("gender", "categories")` ? ведь и то и другое не являются relations

    2) всегда ли gender="man" ?

    в итоге я бы сделал так

    GENDER_CATEGORIES = [
        ("men", 1),  
        ("men", 2),  
        ("men", 3)   
    ]
    
    from django.db.models import Q
    
    def catalog(request):
        filters = [Q(gender=gender, categories=category_id) for gender, category_id in GENDER_CATEGORIES]
        query = Q()
        for q_filter in filters:
            query |= q_filter
    
        products = Products.objects.filter(query).only("id", "title", "price", "image")
    
        products_by_category = {category[1]: [] for category in GENDER_CATEGORIES}
        for product in products:
            for gender, category_id in GENDER_CATEGORIES:
                if product.gender == gender and product.categories == category_id:
                    products_by_category[category_id].append(product)
                    break
    
        context = {"products_by_category": products_by_category}
        return render(request, 'catalog.html', context)


    ну и еще в тапл добавить имя 3-м параметром
    Ответ написан
  • Как реализовать такую структуру данных?

    solotony
    @solotony
    покоряю пик Балмера
    class Author(models.Model):
        name = models.CharField(max_length=100)
        # Другие поля автора
    
    class Publication(models.Model):
        title = models.CharField(max_length=100)
        # Другие поля публикации
        authors = models.ManyToManyField(Author, through='Affiliation')
    
    class Affiliation(models.Model):
        author = models.ForeignKey(Author, on_delete=models.CASCADE)
        publication = models.ForeignKey(Publication, on_delete=models.CASCADE)
        affiliation = models.CharField(max_length=100)
    Ответ написан
    Комментировать
  • Насколько законно для крупной компании пробивать человека по почте?

    solotony
    @solotony
    покоряю пик Балмера
    Имя, сестра, имя!

    Что за библиотека то?
    Мне даже интересно стало что будет если я им напишу с фейквого адреса и немного их оскорблю :)

    p.s. и да, в россии нет закона запрещающего что-то искать в открытых источниках. а если в закрытых - 272 УК ... но это еще надо доказать.
    Ответ написан
    Комментировать
  • Как размыть фон под текстом?

    solotony
    @solotony
    покоряю пик Балмера
    from PIL import Image, ImageDraw, ImageFont, ImageFilter
    
    # Откройте исходное изображение
    img = Image.open('3.png')
    
    # Создайте копию изображения
    img_copy = img.copy()
    
    # Создайте изображение с текстом на черном фоне
    mask = Image.new('L', img.size, 0)
    draw = ImageDraw.Draw(mask)
    font = ImageFont.truetype('3.ttf', size=54)
    text_position = (297, 553)
    draw.text(text_position, 'Your Text', font=font, fill=255)
    
    # Размойте маску
    blurred_mask = mask.filter(ImageFilter.GaussianBlur(10))  # Измените радиус размытия по вашему усмотрению
    
    # Примените размытие к фону
    img_copy.paste(img_copy.filter(ImageFilter.GaussianBlur(10)), (0, 0), blurred_mask)
    
    # Наложите текст на размытый фон
    draw = ImageDraw.Draw(img_copy)
    draw.text(text_position, 'Your Text', font=font, fill=('#00bc44'))
    
    # Сохраните результат
    img_copy.save('output.png')
    Ответ написан
    Комментировать
  • Как загрузить профиль в Selenium Chrome на Python?

    solotony
    @solotony
    покоряю пик Балмера
    Если путь к профилю содержит пробелы, вы должны правильно обрабатывать этот путь, чтобы Selenium могла корректно его использовать. Для этого вы можете заключить путь в двойные кавычки (") при создании опции --user-data-dir. Вот как это можно сделать:

    from selenium import webdriver
    
    # Задайте путь к папке с вашим профилем, включая пробелы
    profile_directory = r'C:\путь к папке с профилем с пробелами'
    
    # Создайте объект ChromeOptions и установите опцию для загрузки профиля
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument(f'--user-data-dir="{profile_directory}"')
    
    # Запустите браузер с опциями
    driver = webdriver.Chrome(chrome_options=chrome_options)
    
    # Теперь браузер будет запущен с вашим профилем, который содержит пробелы в пути
    Ответ написан
    Комментировать
  • Почему не работают стили в django?

    solotony
    @solotony
    покоряю пик Балмера
    Проблемы с применением стилей на веб-сайте Django могут иметь несколько причин. Вот несколько шагов для диагностики и решения проблемы:

    1. **Проверьте пути к статическим файлам:**
    - Убедитесь, что пути к статическим файлам, таким как CSS, JavaScript и изображения, указаны правильно в вашем HTML-коде. Проверьте, что файлы действительно существуют по указанным путям.

    2. **Проверьте настройки Django для статических файлов:**
    - Убедитесь, что в файле настроек Django (обычно `settings.py`) указаны правильные пути к статическим файлам. Настройки `STATIC_URL` и `STATIC_ROOT` должны быть сконфигурированы правильно.

    3. **Запустите сборку статических файлов:**
    - Если вы внесли изменения в статические файлы (например, CSS), убедитесь, что вы запустили сборку статических файлов с помощью команды `python manage.py collectstatic`. Это соберет все статические файлы в директорию, указанную в `STATIC_ROOT`.

    4. **Проверьте права доступа:**
    - Убедитесь, что файлы стилей имеют правильные разрешения доступа для чтения. Они должны быть доступны серверу для чтения.

    5. **Проверьте браузерный кэш:**
    - Браузер может кэшировать статические файлы. Попробуйте очистить кэш браузера и перезагрузить страницу.

    6. **Проверьте ошибки в консоли браузера:**
    - Откройте консоль разработчика вашего браузера (обычно F12 или Ctrl+Shift+I) и посмотрите, есть ли какие-либо ошибки во вкладке "Console". Ошибки JavaScript или CSS могут помочь выявить проблему.

    7. **Используйте `{% load static %}`:**
    - Убедитесь, что вы используете тег `{% load static %}` в начале HTML-шаблона для загрузки статических файлов.

    8. **Проверьте CSS-селекторы:**
    - Убедитесь, что CSS-селекторы, которые вы используете для применения стилей, верны и соответствуют элементам на вашей странице.

    9. **Проверьте синтаксис CSS:**
    - Проверьте синтаксис ваших CSS файлов на наличие ошибок. Неправильные правила CSS могут привести к игнорированию стилей.

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

    Если после выполнения этих шагов проблема остается нерешенной, уточните, какие именно изменения в стилях не применяются, и предоставьте более подробную информацию, чтобы можно было точнее определить причину проблемы.
    Ответ написан
    Комментировать
  • Python asyncio list does not processing asyncrounouslly because of what?

    solotony
    @solotony
    покоряю пик Балмера
    думаю что async for поможет

    async for event in client.iter_admin_log(chan):
          print(event.user_id)
          await asyncio.sleep(5)
          print(f"{event.user_id} awaited")


    https://superfastpython.com/asyncio-async-for/
    Ответ написан
  • Как реализовать запросы на подключения в комнату?

    solotony
    @solotony
    покоряю пик Балмера
    а каким образом кроме вебсокетов можно еще уведомить админа что к нему кто-то ломится ?

    я вижу примерно такую последовательность

    - новый пользователь коннектится к чату в "режиме запроса"
    - админу летит команда по вебсокету "пришел новый юзер"
    - он отвечает "принять" "отклонить"
    - нового юзера уведомляем и либо переводим в "полноценный режим" либо выкидываем
    Ответ написан
    Комментировать
  • В чем заключается ошибка в коде python?

    solotony
    @solotony
    покоряю пик Балмера
    Проблема в вашем коде заключается в неправильном понимании того, как Python обрабатывает условия с использованием оператора or и сравнения объектов.

    Вот строка кода, которая вызывает проблему:

    python

    if self.s1 == color1 or color2:

    В этой строке вы предполагаете, что условие проверяет, равна ли переменная self.s1 цвету color1 или цвету color2. Однако это не совсем верно.

    Вместо этого, вы сравниваете self.s1 с color1, а затем проверяете, является ли color2 истинным (True) или ложным (False). Если color2 не равно None, то это условие всегда будет выполняться, потому что любое непустое значение в Python считается истинным.

    Чтобы исправить это, вы должны явно сравнивать self.s1 с color1 и self.s2 с color2. Вот исправленный фрагмент кода:

    python

    if self.s1 == color1 or self.s1 == color2:
        print("s1")
        return self.s1


    Вы должны применить аналогичные исправления ко всем условиям, где вы используете оператор or для сравнения переменных.
    Ответ написан
    2 комментария
  • Как автоматически делать окно браузера активным?

    solotony
    @solotony Автор вопроса
    покоряю пик Балмера
    сам нашел ответ - можно

    const current = await chrome.windows.getCurrent();
    chrome.windows.update(current.id, { focused: true })
    Ответ написан
    Комментировать
  • Связанные выпадающие списки Django?

    solotony
    @solotony
    покоряю пик Балмера
    стандартными средствами это хорошо не сделать

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

    ну а если хотите хорший вариант - это писать индивидуальную страницу
    Ответ написан
    Комментировать
  • Есть ли веская причина не использовать редирект при помощи js в Laravel?

    solotony
    @solotony
    покоряю пик Балмера
    архитектура у системы есть ? втом смысле что бы описать зоны ответственности кто где и за что отвечает. Судя по вопросу нет и это плохо. Надо написать, утвердить и дальше всем пользоваться.

    А по сути вопроса - отправить запрос, получить ответ, посмотреть на него а потом решить куда и как дальше идти - нормальная логика для фронта.
    Ответ написан
    Комментировать
  • Почему текст не форматируется, выходит за размер контейнера?

    solotony
    @solotony
    покоряю пик Балмера
    потому что так прописано у вас в стилях

    добавьте style="white-space: pre-wrap" в тег pre (или в блок style или в css файл)
    Ответ написан
    1 комментарий
  • С++ На всех ли платформах одинаковая точность операций с float?

    solotony
    @solotony
    покоряю пик Балмера
    В общем ответ - нет. Нет никакой гарантии что операции с плавающей точкой посчитаются одинаково на разных архитектурах. Я на практике с этим сталкивался при решении дифуров, когда из-за проблем с точностью мы получали качествнно разный результат на разных платформах
    Ответ написан
    Комментировать
  • MySQL + PHP :: Хранение паролей клиентов в базе данных с целью их извлечения, как защить?

    solotony
    @solotony
    покоряю пик Балмера
    я так делал

    при вводе пароля вычисляется его некий хеш который в дальнейшем является ключом и хранится на клиентской машине, использовал DES

    все данные подлежащие шифрованию сразу шифровал на клиентской машине и на сервере хранил только шифрованные данные.

    p.s. вопрос надежности надо рассматривать исходя из потенциальных атак и общих требовний.
    Ответ написан
    Комментировать
  • Laravel Relationships, как получить запись связывания?

    solotony
    @solotony
    покоряю пик Балмера
    судя по всему вам надо использовать связь многие ко многим belongsToMany

    https://laravel.com/docs/10.x/eloquent-relationshi...

    ну и общие ошибки:
    названия моделей в единственном числе
    названия методов c маленькой буквы
    Ответ написан
    Комментировать
  • Где и как хранить переменные окружения в Linux/Mac?

    solotony
    @solotony
    покоряю пик Балмера
    где хранить вытекает из логики и архитектуры приложения. причем эти способы можно комбинировать.

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

    solotony
    @solotony
    покоряю пик Балмера
    я сделал так:
    изначально на странице появляется 1000элементов [img src="#" data-src="настоящий_урл"]
    по клику на кнопку - у первых 20 img в src подставляется data-src


    думаю это плохое решение - создавать сразу 1000
    лучше по мере необходимости создавать новые элементы
    и также динамически удалять - конечно встанет вопрос "а как быть с позиционированием и скроллингом"
    Ответ написан
    Комментировать
  • Как импортировать переменные с функциями?

    solotony
    @solotony
    покоряю пик Балмера
    если локальные переменные надо объявить глобальными то как-то так

    def text2():
        ...
        global good, a, b, c, d
        from main import good, a, b, c, d
        ...


    пример

    In [7]: x
    NameError: name 'x' is not defined
    
    In [8]: def y():
       ...:     global x
       ...:     import math as x
       ...: 
    
    In [10]: y()
    
    In [12]: x
    Out[12]: <module 'math' from '/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload/math.cpython-39-darwin.so'>


    а чем не подходит локальный импорт который у вас в примере ?

    p.s. хотя конечно использовать глобальные переменные нельзя .
    Ответ написан
    Комментировать