• Изменять пропорции аватара на стороне фронта или несколько размеров на стороне бэка?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Добавлю к очень хорошим ответам выше, что имеет смысл для конкретно вашего сайта посчитать статистику использования разных размеров в сочетаниях. Ещё нужно понимать цели, которые вы преследуете.
    Если вам нужно снизить трафик с севрверов - это одно. Если вам нужно ускорить рендер страницы, то это другое. Причем для разных страниц и разделов оптимум может быть разный.
    К примеру, если у вас страница с комментариями пользователей, где огромное количество этих комментариев с разными аватарками мелких размеров, а большая аватарка на такую страницу грузится только одна (своя), и в профили пользователей кто-то редко заходит, то конечно лучше кешировать и отдавать с сервера мелкие иконки сразу. Это повысит скорость рендера страницы с комментами.
    Отдавать аватарки лучше с CDN, так быстрее получится для рендера страницы.
    Ответ написан
    1 комментарий
  • Есть ли нарушение 3NF и BCNF в таблице БД?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Если это задача и вам нужны готовые ответы с решениями, то вы не по адресу.
    Где ваши личные рассуждения? Где ваши предположения и на что вы опирались их делая?
    Я могу тут сделать подсказку: что такое "код запаса товара", для чего он нужен как его интерпретировать в контексте заданных вами вопросов. Ещё с стоит подумать о дате и времени в этой таблице. Следовало бы упомянуть, что это не журнал состояний, а снимок состояния складов.
    Ответ написан
  • Как отправить заголовки и данные esp8266seureclient?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    https://dzen.ru/a/ZBC7dQKVTTCDHm0y
    Ну гуглится же на каждом углу. Что не так например с этой инструкцией?
    Ответ написан
  • Можно ли исползовать презаряжаемое Ni-Mh батарею вместо акумулятора в бытвом устройстве?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Да можно. Там такой же элемент, но меньшей ёмкости.
    Можно даже два поставить параллельно, если влезут. Будет ёмкость больше. Хорошо бы конечно сопротивление элементов проверить и подобрать одинаковые, но для такого применения можно и пренебречь.
    Ответ написан
    Комментировать
  • Можно ли установить NFC-модуль в телефон?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вполне реально, но набор компетенций, который нужен для этого и количество человекочасов специалиста с такими компетенциями обойдутся в десятки раз дороже нового телефона с NFC-модулем.
    Ответ написан
    Комментировать
  • Как исправить "AttributeError: 'Dispatcher' object has no attribute 'message_handlers'"?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Прочитайте внимательно:
    AttributeError: 'Dispatcher' object has no attribute 'message_handlers'. Did you mean: 'message_handler'?

    И посмотрите в свой код на 8 строке. У вас ошибка эта была до того как вы изменили код. Читайте внимательно.
    И код оформлять надо специальным тегом
    Ответ написан
    Комментировать
  • Какая есть замена sim800?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    DC-DC конвертеры достаточно компактны и эффективны сейчас. Можно куда-то присунуть в щель.
    https://aliexpress.ru/item/32413364849.html?sku_id...
    Ответ написан
    Комментировать
  • Как флешка может передать гео-данные?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    В корпус флеш-накопителя трудно поместить GPS-приёмник, да и ловить сигнал он в помещении не будет.
    Пришлось бы делать полноценный автономный трекер с GSM, GPS и аккумулятором. Это довольно сложно сделать в малом объёме. Но в таком случае трекер мог бы писать трек по пути к тому месту, где, возможно под крышей, он будет подключен к USB.

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

    Однако если мы рассчитываем на винду, то можно попробовать заразить комп через HID-устройство.
    Для этого в корпус флешки встраивается микроконтроллер, который реализует USB-HID device, привторяющийся клавиатурой. При подключении устройство очень быстро выдаёт поток нажатий клавиш, который запустит командную строку и наберет минимальный скрипт, который пропишется в автозапуск или планировщик, чтобы при возможности скачать из сети основной свой функциональный модуль и запустить его.
    Пользователь увидит как мигнёт быстро и погаснет черное окошко сразу после подключения "флешки". Если такое случилось с вами, мой совет вырубить из розетки комп, вынуть жесткий диск и на другом компьютере проверять его на угрозы, а лучше не пользоваться больше атакованной системой и переустановить её.
    Если комп не знает своей геолокации, то о ней можно попробовать судить по GeoIP, которую вытащить из логов той машины, к которой обратится ваше HID-устройство своим скриптом для скачивания тела вируса.

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Сделал простенькую игру на pygame.

    Можно ли обучить башню самой стрелять по ботам с помощью генетического алгоритма.

    Башня должна определить по какой дорожке к ней идёт бот. Определить его расстояние и скорость. И как он подошёл к сектору начать в него стрелять.


    Зачем? Если это твоя собственная игра, то ивой код и так "знает" параметры и траекторию перемещения юнитов, зачем тут генетические алгоритмы?

    Генетические алгоритмы нужны когда строгое алгоритмическое решение оказывается слишком сложным вычислительно или логически. Тогда можно сделать простую мультиагентную систему, и каждый агент будет реализовывать свою вариацию стратегии игры.
    Нужно построить "геном" - набор изолированных параметров, которые определяют стратегию агента.
    Нужно сформулировать правила "скрещивания" и "мутации" геномов, чтобы в результате получались новые стратегии для новых агентов.
    Нужно оценивать эффективность каждого агента в баллах или придумать нормирующую функцию которая по набору показателей агента (kill-rate, набранное число очков за жизнь, продолжительность жизни, нанесенному урону) будет выдавать число (скаляр) с помощью которого можно сравнивать агентов. В совокупности с логикой стратегии эта нормирующая функция будет формировать фитнес-функцию. Фитнес-функция принимает параметры стратегии (геном) и возвращает результат - скаляр - качество агента. Формируем поколения или просто периодический отбор самых качественных, потом их скрещиваем в рандомном или каком-то еще порядке, добавляем мутации и формируем новый набор агентов с новым геномом. а значит с новыми параметрами стратегий.
    И так по кругу. В итоге у вас получатся агенты, которые будут эволюционировать.

    В вашей задаче так можно, например, "обучать" нападающих юнитов. Пользователь ставит башни и остреливается, а ваши генетические юниты плодятся, мутируют и лезут на пользователя. Лучшие отбираются и на их основе генерится потомство, которое попадает в следующие волны.

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

    Никаких особых библиотек для такой реализации не требуется. Всё довольно просто и понятно.
    Ответ написан
  • Почему не делают белые светильники без люминофора на основе RGB?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Зелёные светодиоды не добавляют, якобы зеленый не нужен для фотосинтеза, хотя есть статьи утверждающие обратное.

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

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

    Прочитайте сто такое индекс цветопередачи (CRI) и как на самом деле устроено наше зрение.
    RGB-светодиоды дают три очень узких пика на гистограмме освещённости, а люминовор подбирают и смешивают так, чтобы он заполнял спектр как можно ближе к солнечному. То есть там гораздо меньше скачков и нелинейностей.

    Почему бы не сделать RGB лампу, откалибровать ее на 4500K нейтрального белого, и так же дать возможность подстройки, к примеру 3000-6000K.

    Потому что всё несколько сложнее. чем просто температура.
    80762c6160544eda9e44e2aacb210989.png

    А вот статья про это от очень крутого перца, который ведёт проект lamptest.ru. У него, кстати, есть оборудование чтобы замерять качество света от лампочек.
    Ответ написан
    6 комментариев
  • Как найти множество файлов по названию?

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

    построчно для каждого файла. Копируете этот столбец, вставляете в текстовый .bat-файл и выполняете его.
    Ответ написан
    2 комментария
  • Насколько глубоко нужно знать Linux дата-инженеру?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    По-хорошему, надо знать то, что потребуется для работы.
    Обычно это понимание как работает командная строка, терминал, ssh.
    Немножко вглубь: файлы, дескрипторы, файловая система, монтирование, симлинки, хардлдинки, пайпы, конвейеры, синтаксис перенаправления между стандартными потоками ввода/вывода, базовые утилиты командной строки (grep, ls, tee, tail, cat и т.д.), желателен какой-то опыт работы со всем этим, понимание как обычно устроен механизм передачи параметров в таких утилитах, как их выстроить в конвейер, как запаковать\распаковать поток данных на лету. Желательно понимать что такое, как устроены и для чего нужны make-файлы.
    Нужно понимать как пользоваться менеджерами пакетов основных дистрибутивов, желательно в общих чертах понимать что такое докер, контейнеризация в целом, ориентироваться в командах управления образами и контейнерами, понимать что такое вольюмы и где их искать, уметь читать докер-файлы и компоуз-файлы, понимать как вообще это всё работает. Ну и GIT нужно уметь использовать.

    Это основа, но наверно от джунов всего списка никто ожидать не будет - обучат по ходу дела, а если вы претендуете на большее, то сможете быстро разобраться в нужных вопросах, если претензии ваши обоснованы, а пробелы обнаружились.
    Ответ написан
    6 комментариев
  • Что такое PSS.MAX_LENGTH?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Очевидно это длина соли и по умолчанию она уже максимальна, но можно солить и не максимальной по длине солью. Я присоединяюсь к вопросу. что вас не устроило в документации?
    Этот параметр задан в библиотеке у функции по умолчанию. Если вы не знаете что там прописать - не трогайте.
    Чему равно максимальное значение вы можете увидеть прыгнув на реализацию этой константы, ну или просто напечатав это значение в консоль.
    Ответ написан
    Комментировать
  • TLSv1_3 в aiohttp?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Забавно. Скоро не будет никакого смысла идти за ответом сюда, когда можно к чатжпт сходить.
    Даже читать не стал ваш вопрос после заголовка и скопировал его в чатжпт4. Вот что он ответил:

    В `aiohttp`, процесс создания и настройки пользовательского TLS контекста отличается от того, что используется в `requests`. В `aiohttp`, вы должны настроить SSL контекст до создания сессии и передать его в качестве аргумента при создании клиентской сессии. Вот как вы можете адаптировать ваш пример для `aiohttp`:

    1. Создайте SSL контекст, используя стандартную библиотеку `ssl`.
    2. Настройте контекст, задав нужные параметры, такие как версия TLS, набор шифров и кривые ECDH.
    3. Создайте экземпляр `aiohttp.ClientSession`, передав SSL контекст.

    Пример кода:

    import ssl
    import aiohttp
    
    class TLSv1_3_BYPASS:
        ciphers = '...'  # Здесь должен быть ваш список шифров
    
        @staticmethod
        def create_ssl_context():
            ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
            ssl_context.set_ciphers(TLSv1_3_BYPASS.ciphers)
            ssl_context.set_ecdh_curve("prime256v1")
            ssl_context.minimum_version = ssl.TLSVersion.TLSv1_3
            ssl_context.maximum_version = ssl.TLSVersion.TLSv1_3
            return ssl_context
    
    # Создание SSL контекста
    ssl_context = TLSv1_3_BYPASS.create_ssl_context()
    
    # Создание aiohttp сессии с пользовательским SSL контекстом
    async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=ssl_context)) as session:
        # Теперь вы можете использовать session для выполнения запросов
        response = await session.get('https://example.com')
        # ...


    В этом примере кода создаётся пользовательский SSL контекст, который затем используется для создания `aiohttp.ClientSession`. Обратите внимание, что вам нужно будет заменить `'...'` в `ciphers` на фактический список шифров, которые вы хотите использовать.
    Ответ написан
    Комментировать
  • Как создать связь с полем модели внутри нее?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Надо делать это вычисляемым полем, например. Зачем филд? А если надо для оптимизации, чтоб не делать каждый раз запрос, то можно перекрыть сохранение и записывать ссылку.
    Ссылку на себя из модели делать можно, вместо класса указывается его имя в виде строки.
    В каждом туториале по джанго такие примеры есть. А если каких-то нет, а вам-новичку это зачем-то надо, то впору задуматься а правильно ли так поступать. Обычно все правильные пути давно исхожены, дорожки проторены и снабжены горой примеров и документацией. Маловероятно, что в начале своего пути вы столкнулись с каким-то редким сложным кейсом, который не ражеван сообществом вдоль и поперёк.
    Ответ написан
    1 комментарий
  • Как создать процедуру, которая будет возвращать что-то?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вам нужно начать с туториала и примеров, а не с тупых статей в интернете и собственных догадок.
    Просто возьмите учебник и потратьте некоторое время на изучение самых базовых основ. Если вам лень этим заниматься. то почему вы думаете, что людям тут будет не лень сочинять вам индивидуальные экспресс-курсы по изучению основ баз данных?
    Ответ написан
    Комментировать
  • Что это такое и как защититься?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    По двору прошелся жулик и попытался хакнуть эксплойтом для "майбаха" (условно) все тачки в вашем дворе. Майбахов не нашлось, этот жулик пошел дальше и забыл уже про ваш дворик.

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

    Вообще, если ваш сетап на виртуальных машинах в повторяемой среде и с декларативной конфигурацией вроде кубера или докера, то вы легче сможете пережить всякие такие факапы.
    Схема такая.
    Есть признаки взлома - бэкап логов, снапшот базы, бэкап стораджа, остановка сервисов (если позволяет продакшн), анализ атаки и последствий. Устраняем уязвимость по вектору атаки (гугление по логам и курение тредов), правим конфиги развёртывания и запускаем прод. Потом долго и тщательно разбираемся по логам, снапшотам и бэкапам что затронуто. Делаем тестовый чистый сетап по старой конфигурации и сравниваем пофайлово с атакованной системой, выясняем в какие места вмешались злодеи. Дифаем базу и смотрим на подозрительные различия. Делаем выводы, объявляем об утекших данных, если есть такие признаки (чтобы не подставлять пользователей), принимаем превентивные меры против похожих векторов атак.

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

    Это взгляд дилетанта по безопасности, если чего пропустил -- поправьте. Если где не прав -- расскажите.
    Ответ написан
    3 комментария
  • Можно ли узнать username человека по его id в телеграм?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    нет.
    Ну законно и добросовестно используя АПИ.
    Ответ написан
    Комментировать
  • Как получить описание устройства в системе через python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    У вас виндузятников там есть вроде консольная команда driverquery
    Можно её выполнять из питона и парсить результат. Там есть в выхлопе нужное устройство?
    Можно попробовать подключаться перебирая все порты, если есть возможность определить при успешном подключении нужное это устройство или нет.
    Искать нужно как найти нужные данные через консоль, а потом искать как выполнить консольную команду из питона и получить консольный выхлоп, а потом искать нужную строчку в выхлопе.
    Примерно такой путь.
    Ответ написан
    Комментировать
  • Что учить дальше?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Начинайте ходить на собеседования в качестве джуна, так вам быстро объяснят что нужно подтянуть.
    Конечно пет-проекты - это хороший буст, проекты на гитхабе, если он упомянуты в резюме, смотрят многие работодатели. Не все с охотой берут джунов, но если у джуна есть код и видна его активность. то есть надежда, что удастся его воспитать в профессионала и относительно недорого сформировать себе кадры период кадрового голода.
    Соберите портфолио пет-проектов, поучаствуйте в опенсорсе, подемпингуйте на фрилансе работая за репутацию... Однако есть подозрение что любой первый тривиальный проект откроет вам глаза на кучу пробелов в ваших знаниях и умениях.
    Ответ написан
    4 комментария