Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: — А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. исходник: https://dumpz.org/bASGKD8cCFDf
>>1943234 → > Но как же мне тогда крутить свою бесконечную(круговую) очередь и подкидывать в нее новые задачи?
Во-первых замечания по стилю. Делать вот это loop: asyncio.AbstractEventLoop = None передавать loop в функции не надо. Это устаревший стиль, актуальный для питона 3.5, которые сейчас считается obsolete и активно выпиливается. Там была особая магия с тем, что можно пересоздавать циклы обработки сообщений, и куча проблем из-за этого. Это можно забыть, как страшный сон, и просто делать self.loop = asyncio.get_event_loop() или self.loop = asyncio.get_running_loop() У тебя код завязан на специфику 3.7 (contextvars, typing), поэтому можешь и функции для asyncio оттуда использовать смело.
Я не вникал особо в твой код, но там есть вот такое вот: 62: self.loop.run_until_complete(self.consume_queue()) это синхронный вызов, он завершится только тогда, когда завершится цикл в consume_queue, то есть судя по всему никогда, если только какого-нибудь исключения не будет.
Логика асинхронного программирования схожа с логикой многопоточного. В многопоточном у тебя есть треды, которые время от времени переключаются. В asyncio аналог треда это задача, Task. У тебя скедулер в asyncio держит задачи и переключает с одной на другую, получается, что несколько задач работает одновременно. В то время как внутри задачи всё последовательно идёт, операция за операцией.
Соответственно, идея такая. Ты свой планировщик оформляешь как независимую задачу (сервис). Как вариант, создаёшь объект my_scheduler = TaskScheduler() и запускаешь его как задачу scheduler_task = asyncio.create_task(my_scheduler.consume_queue())
Потом в других задачах ты можешь делать await my_scheduler._queue.put() или синхронным вызовом my_scheduler._queue.put_nowait()
Таким образом твой планировщик работает где-то в фоне и выполняет какую-то работу, а общаешься ты с ним через очереди.
>>1943254 >Соответственно, идея такая. Ты свой планировщик оформляешь как независимую задачу Удивительно, я перечитывал предыдущие ответы и внезапно сам допер до этого. Очевидное решение, над которым я ломал голову несколько часов. Тысяча благодарностей за помощь! Без тебя и других анонов тупил бы и дальше.
Ждет ли питон строго-типизированная судьба JS'a в виде подобия TS? Или это уже есть и я это просто проебал? Стараюсь использовать встроенный модуль typing настолько, на сколько могу, но имхо от того проку не сильно много, когда за соблюдением типов следит сугубо IDE и интерпретатор в момент исполнения.
Какие задачки можно подрочить, чтобы устроиться на Python кодера? Что вообще можно написать такого эдакого, чтобы не стыдно было потлм показать на собеседовании?
>>1943337 > Ты сейчас описал применение любой статической системы типов. В каком плане? Я имел в виду, что typing в моем понимании - просто библиотека для отписки, чтобы условно была. Если нет внешнего кода, который потом типы сопоставляет (хоть та же IDE, хотя она обычно с этим не очень справляется) и проверяет, какой толк от нотации и type-хинтинга в принципе, если ты сам потом все проверяешь по итогу?
Вопрос такой: Как заставить Джанго форматировать html перед отправкой клиенту? Чтобы не было такой параши с огромными разрывами как в пэйджсурсе пикрил.
>>>>1943403 Давно уже дочитал и многое уже прочитал, но про то как уже отрендереную страничку автоматически выправить по кодстайлу, перед отправкой клиенту - там нет.
>>1943290 >Ждет ли питон строго-типизированная судьба JS'a в виде подобия TS? Это разные вещи всё-таки, TS это мета-язык, компилируемый в JS, а typing это сам питон.
Есть инструменты для проверки в runtime, технически это возможно. Просто перерасход ресурсов.
>>1943372 Глянь на пакет mypy. Он делает статическую проверку кода на соответствие типов. То есть проверка автоматизирована.
Твои рассуждения опоздали, надо было в начале десятых об этом писать. Когда придумали аннотации типов, но никакой дополнительно поддержки, кроме как самой аннотации, не было.
Ну код это не перегрузит. Код плохо читается как раз таки за счёт адских белых зияющих пятен.
Не думаю, что это как-то сильно нагрузит сервер, например тот же ВСКод делает это за доли секунды по щелчку мыши. Вот бы так делал рендерер Джанги автоматически...
>>1943425 >>1943425 >Не думаю, что это как-то сильно нагрузит сервер, например тот же ВСКод делает это за доли секунды по щелчку мыши. Если у тебя сервер обслуживает 10 пользователей, то нагрузит не сильно. А если много?
Можно сделать какой-нибудь декоратор, который будет форматировать html на базе известных пакетов, вроде lxml. Но реально, зачем?
Это время на форматирование и дополнительный трафик. Зачем тебе читать итоговый html? Тем более, что есть инструменты, чтобы потом в браузере код в форматированном виде посмотреть, если очень потребуется.
Наверное можно было бы сами шаблоны отформатировать так, чтобы на выходе был уже форматированный код, в том числе все эти отступы.
>>1943427 >Спасиб, я это не знал, ну тогда и Джанга к хую не впилась можно всё на Фляге сделать. Возможно это и Джанго умеет. Вообще поменять шаблонизатор просто, а для тебя по итогу всё прозрачно будет, вместо шаблонизатора от Джанго будет работать jinja2.
Jinja2 лучше и мощнее. И эти шаблоны ты можешь потом в других серверах использовать, даже не питоновских, вроде nunjucks.
>>1943430 > Это время на форматирование и дополнительный трафик. Зачем тебе читать итоговый html? Тем более, что есть инструменты, чтобы потом в браузере код в форматированном виде посмотреть, если очень потребуется. А вот это - золотая мысль, спасибо.
Проблемы шерифа индейцев не волнуют - проблемы читаря кода не должны волновать сервер.
народ, подскажите плез какие можно глянуть примеры проектов, в которых используется бдшки, чтобы понять как вообще идет с ними взаимодейсвтие через питон? а то я заебался sql дрочить и не понимать зачем он нужен
>>1943443 Как делать. Про нормализацию бд знаешь? Вот. Дальше можно работать ручками через prepared statements или через orm, второе предпологает ещё дрочение ооп. В принципе, берешь любую книгу по джанге, там применяют орм.
Салам, двач. Снова нуб в треде Второй раз уже сталкиваюсь с разницей в функционировании моей говнопрограммы на локалхосте и на ПайтонЭнивеар. На этот раз почему-то мускул отказывается заполнять поля. Вроде все проверил: и миграцию сделал, и апгрейднул, и код заполняет базу данных на моей машине, а воз и ныне там. И где ошибка никак не пойму. Подскажи, бро, куда глядеть?
НО Я НЕ ПОНИМАЮ, ГДЕ ПОСЛЕДНЯЯ ИТЕРАЦИЯ? Задача состоит в том, что, нужно римские цифры перевести в арабские, я заебался с этим list index out of range. Изначально, я додумался до len(arr) - 1, но ведь в таком случае проебывается последняя итерация цикла. Возможно я что - то упускаю или не понимаю, я заебался.
>>1943607 > for i in range(0, len(arr) - 1): Вот здесь ты пропускаешь последнюю букву. Там с индексами внутри цикла какая-то каша > arr >= arr[i + 1] строки сравниваются со строками > if arr in roman часть символов для чего-то пропускается
Выглядит как будто нейронку посадили фиксить экзепшены просто чтобы не было экзепшенов, неважно корректная ли программа будет в итоге.
Я понимаю, что for i in range(0, len(arr) - 1): тут я пропускаю последнюю букву, то есть, итерацию, но если этого не сделать вылазит ошибка "list index out of range". Что с индексами внутри цикла не так? Я сравниваю один элемент списка arr и другой arr[i + 1], почему каша?
>строки сравниваются со строками. так и должно быть, ебанные римляне придумали, что если меньшая цифра стоит перед большей, то нужно вычитать, а не я.
>>1943674 > если этого не сделать вылазит ошибка "list index out of range" Ну и что же теперь, отбрасывать последний символ? Убери бесполезные ифы и вставь недостающий, чтобы если символ последний, его всегда прибавляем, и не проверяем что там за ним.
> ебанные римляне придумали, что если меньшая цифра стоит перед большей Ещё раз, ты сравниваешь строки, а не числа. Там X больше чем L например, 10 больше 50, тупо дальше по алфавиту стоит.
>>1943764 >Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
>>1943931 Я искал. Полторы либы для пинга и 0,5 для трейсроута. При том, что возможности нормально обрабатывать их содержимое нет. Грубо говоря, запускаешь из питона пинг, а он выводит его в консоль, а не возвращает через return
>>1944243 >Как будто там не то же самое происходит. Более-менее на современный asyncio стал похожим с версии 3.5. В 3.4 легаси дико лютое, и при этом не совместимое с современном питоном, примеры оттуда просто не заработают в современном питоне, там вообще общего мало.
Вообще именно сетевые возможности с asyncio в первую очередь старый питон он современного отличают. И типизация.
Другие вещи можно и по старым книжкам учить, а вот для этих важно, чтобы современные были.
>>1944281 Я про то, что протоколы всё те же, то что какие-то либы их используют неблокирующе это другое дело. Ссаный фтп происходит с каких-то 70-х годов и всё ещё в ходу.
>>1944319 У меня ничего не поменялось, я не пишу любой сетевой код асинхронным. Иногда это имеет смысл, да. Но в целом это просто очередной тренд, как было с носкл, где вся эта хуйня теперь? Заняла свои небольшие ниши, где она имеет превосходство.
>>1944351 Редис и мемкешед придумали ещё до тренда и презренные похапешники ими свободно пользовались, прикинь? Про монгу в сириус бизнесе я не слышал. Кликхаус это какая-то местечковая хуйня, подозреваю, что пизданута с амазон редшифт, но я не сталкивался. >>1944350 Просто съеби.
братва короче по работе надо было пересесть с шарпа на питон и пересел клевый язык, конечно - базару ноль но из-за того, что не все вещи делаю питоник-вэй - код получается страшным (еще бы, я ведь пишу на питоне как на шарпе) короче, если кратко: где бы глянуть хорошо написанные питон проекты? Посмотреть где и как лучше написать
>>1944334 >Но в целом это просто очередной тренд, Это не просто тренд. Если ты пишешь серверную часть, то у тебя опции или использовать треды, или извращаться с селектами, или asyncio (или его предшественники - стрононние решения). Селекты это совсем извращение, остаётся только два варианта, треды и асинкио.
Треды в питоне не очень, возни много, граблей много, эффективность никакая.
Ну да, есть ещё опция делать решения запрос-ответ, но это не совсем сетевой софт.
При этом я думаю что и в других местах по сетевой части много с 3.4-2014 поменялось, просто чуть менее очевидно.
>>1944415 Можешь тут посмотреть, только надо быть внимательным, если список называется "охуенные питон приложения", есть такая вероятность, что приложения могут оказаться охуенными с точки зрения пользователя, но не с точки зрения исходного кода, конечно, в большинстве случаев там и код на высоком уровне, но надо быть начеку
>>1944550 спасибо) а еще вопрос нормально ли, что во многих проектах (в тех, что я видел) нет main функции как таковой? типа фигачить тело в def main() а потом if __name__ == "__main__": ___main() это мовитон?
>>1944598 У тебя некомпилируемый язык и нет требований по точкам входа. if __name__... Используется когда модуль запускаешь (а он тянет с собой все из __init__.py) через python -m. Если просто скрипт то объявлять не надо. Модуль всяко удобнее. С областями видимости и path ещё наебешься, придется .env клепать
Анончик, какой язык к питону вторым выбрать? Питон на приемлемом для себя уровне знаю, наговнокодить что надо могу, хочется еще обмазаться компилируемым языком, да чтобы его еще с питоном дружить можно было. Что обычно с питоном в связке берут?
>>1944728 вопрос от другого анона. в одном файле можно описать класс или набор функций и импортировать в другой файл без указания местонахождения? и для чего нужен __init__.py? чаще всего он вообще пустой. что там можно прописать?
Есть какая-нибудь методичка по ооп чтобы коротко, по делу и понятно? А то прочел паттерны и шаблоны ооп, муть на много страниц, какие-то абстрактные фабрики, все очень круто, но как-то слишком абстрактно.
>>1944950 Потому что (внезапно) чтобы понять что там, то по объекту надо проитерироваться Итераторы и итерируемые объекты зашиты в подкорку питону, один из основных паттернов
>>1945152 >это прям везде так принято Везде принято писать так, что было понятно "Complex is better than complicated" Прочитай "Zen of Python", если у тебя такие вопросы. Где-то наверняка и на русском есть.
Двач, мне нужна помощь, я сейчас обговариваю проект, который в теории могу выполнить, суть заказа написать бекэнд с определенным функционалом. Я до сих пор работал в первую очередь с джангой, я правильно понимаю что бекэнд это в первую очередь api с помощью которого призводится работа бека, а все вещи типа чекбоксов, текстов, списков, кнопок, форм на фронте это просто формирование правильного запроса к api, соответственно мне это писать не нужно, этим должен заниматься фронт и соответсвенно фронт формирует правильно то что вводит пользователь и отправляет например jsonом уже запрос на апи а потом начинается логика? Поэтому моя задача сводится к написанию апи под тз, документация как работать с апи и все, верно?
>>1945372 Алсо например в тз написано что нужно фильтровать список и поиск делать, где в этом случае разделение на бек и фронт, что каждая часть должна выполнять
>>1945378 >где в этом случае разделение на бек и фронт Есть разные подходы - называют толстый и тонкий сервер. Когда на фронте современный фреймворк типа vue / angular / react, то от бэкенда по сути требуется только апи и больше ничего. Но бывает и наоборот - шаблонизатор используется бэкендовский, формы, таблички и пр. всё на фрейморке бэкендовском (у джанги это есть), а на фронтенде сидит обычный верстальщик.
>>1945410 Тз составлял не прогер, там просто сказано что нужно на джанго, но нужен бек, чтобы прикрутить потом фронт и при этом должны быть чекбоксы и формы, вот думаю теперь что на себя брать, а от чего открещиваться, спасибо
>>1945453 видел много раз модуля "а" может сгенерить исключение внутри себя типа "какие то условия не выполнены на данной системе, что то там не найдено" и будет потому подключен fallback "b"
на первой странице гугла пишут, что питон популярен в банковских приложениях. почему так нахуй? во всех этих статейках поверхностное объяснение. мол, он очень простой и потому пиздатый. ну да ну да. а если серьезно? в чем профит?
>>1945649 > мол, он очень простой и потому пиздатый. ну да ну да. а если серьезно? в чем профит? С тобой все там окей? Сам ответил на свой вопрос, забил на ответ и спросил вопрос снова.
Смотрю блогера который объясняет синтаксис питона, после оставляет задания на степике, и у меня бывает часто ,что могу пересмотреть видос раз 20 и все-равно не понять как правильно написать кусок кода!! я один тут такой? кодинг совсем не мое?
Сап, питонисты. В общем, мне нужно написать антивирус(да да, не удивляйтесь, в универе курсовая), и я задумался, а можно ли реализовать его на питоне? Идея такая, у меня будет два приложения - клиент и сервер, общаться они будут через сокеты либо же мейлслоты, тут пока хз. И вот у меня такой вопрос, если с клиентом понятно как работать, то вот с сервером я хз. Можно ли на питоне реализовать собственно проверку файла на вредоносность? Или же придется все же писать сервер на плюсах, а клиент на питоне?
Подскажите какой-нибудь проект что-то вроде pandas web proxy ? Хочу в веб-интерфейсике писать произвольный кодик, а в основном приложении просто получать dataframe . И чтобы все в докере и по сеточке оптимально упаковывалось.
>>1943168 (OP) Пацаны, я шапку изучил. Но литературы просто дохуя и она старая, хотя в шапке также написано, что надо читать литературу по актуальной версии питона. Для нубаса с какой книги начать? Мне 32, перекатываюсь из другой профессии. В школе нравился паскаль — вот и все мои забытые знания.
Хочу написать программу на PyQt и в ней использовать pyuv. Проблема в том что в PyQt эвентлуп и в pyuv эвентлуп. Как мне спинить сразу два этих лупа, в PyQt ещё можно делать QApplication.instance().processEvents() а в uv такого нет.
здарова братва короче вопрос есть ли у вас прям промышленный пример (или просто годный), где использовались бы arg, kwarg аргументы? а то игрушешные примеры ок, а нормальных я не видел
бля пиздец у меня горит нахуй вот в питоне аннотирование методов в классе это просто пиздец какой-то хочешь спокойно ебнуть что-то типа class A: ... __def hui(a : A) -> A: ____return pizda(A)
А НИХУЯ ТЫ ТАК НЕ МОЖЕШЬ - АНРЕЗОЛВД РЕФЕРЕН пиздец горит
>>1946232 спиню кьюти луп в айдле uv-лупа и тредик реагирует на сигналы, кайфец idle = pyuv.Idle(loop) idle.start(lambda handle: QtWidgets.QApplication.instance().processEvents()) питон ван лав
дорогой двач я студентота с опытом работы в концернах залупки скоро предстоит менять работу на более серьезную (потому что в концернах залупки нужно быть и чтецом и жнецом и на дуде еблецом) и в целом, на прошлом месте я неплохо прокачался в прогании Но тк у меня немного не прогерское образование, я абсолютно не ебу в теорию алгоритмов - а ее поднимать надо, да отсюда вопрос, дорогие аноны, как лучше вкатываться в алгоритмы? Спрашиваю в этом треде тк сам питонист Стоит ли смотреть курсы? или лучше сразу идти в литкод? а поможет ли вообще литкод? или лучше задрочить кормена и прочую хуйню? выручай двач)
>>1946622 Много есть вариантов. Например, арифметические операции, там, сложение: объект класса А принимает другой объект класса А и возвращает результат в виде объекта класса А. Или, например, в pandas у датафреймов полным полно методов, которые берут на вход другой датафрейм и возвращают результат тоже как датафрейм.
>>1946957 > станет дефолтным он уже вышел же >>1946744 )))) я уже неделю каждый день пытаюсь сделать что-то подобное. ИМХО лучшее чтиво - StackOverflow
>>1947104 Спасибо, как сяду, попробую все поправить. 600 строчек кода без знания ООП превратились в такой ад, что мне было главное, чтобы заработало. Сейчас работает, можно и оптимизировать
Ох. Как же у вас в треде хорошо. Все друг другу поясняют вместо кидание говном. А то заходил когда выбирал направление к фронтенд петушкам и охренел. Вы мне помогли окончательно определится с выбором направления вката. Так что сижу и учу питон. Если будут вопросы мне есть к кому обратится. Спасибо
Сап аноны, делаю генератор помех, который бы работал на заданных пресетах. Условно говоря, в папке лежит 10 картинок, которые в рандомном порядке выводятся на экран.
Задача состоит теперь в том, что бы сгенерировать эти пресеты, для этого я хочу брать картинку и вырезать из неё в случайном порядке небольшие области. Это необходимо, что бы на выводе получались разные текстуры.
Но я никогда не работал с изображениями в питоне, через какую библиотеку это можно сделать? Может кто-то делал подобное?
Сап, питонач. Я обычный веб питон программист 300 к/секунды.
Есть возможность вкатиться в биг дату. Сразу и выучить, и начать по ней работать в рамках текущей компании. Стоит ли?
Мне главное работать поменьше, получать побольше, и чтобы работу было легко найти. Ради этого я вполне готво успердно учиться, и изучать более узкую специализацию. В общем, есть лис профит?
Пасаны, как дебажить в пайчарме? Вот допустим проверяю я элементарный ассерт. На этом ассерте код ломается. Если я ставлю брейкпоинт на нем, то он когда доходит до бп останавливается. Дальше я жму продолжить и вуаля мы опять вышли с обшибкой. Странное поведение.
вопрос по flask /.../file.html не видит стили расширяемого базового шаблона /base.html Я так понимаю, что это из-за того, что file.html находится дальше в дереве url чем (чем что?) базовый шаблон, хотя они и располагаются в одном каталоге. в базовом шаблоне красуется классическое href='static/base.css' Как сделать так, чтобы html увидел css?
>>1947253 Главное ни в коем случае не пиши в питон чаты в телеге, поверь, пожалеешь в любом случаем, даже если задашь вопрос на который тамошние петухи не смогут ответить, то получишь столько говна в свой адрес, что потом отмываться неделю будешь
>>1947767 >Вот допустим проверяю я элементарный ассерт. Ты поехавший? Assert в чистом коде это же пиздец. Как на уроке физики "предположим тело движется со скоростью...". Используй нормальную проверк, а assert оставь для pytest. If a: #a = True or a!=None Все же очевидно. К тому же ты можешь видеть значения объектов. На худой конец print или logging.
>>1947826 3 Down vote Accepted If your style.css file is in the static folder of your project, then to make the resource available via Flask WSGI, you'll have to use url_for('static', filename='style.css') in your href for the stylesheet.
>>1947972 Ну тогда смотрит Ютуб с индусами. Как вы код пишете, если настолько херовый запрос в Гугл засылаете, что в выдаче нет результата с SO. Немножко в ахуе с таких вкатывальщиков. И уверен такой кейс есть в учебных материалах и в официальной документации
>>1943168 (OP) Как поймать эксепшн чтоб его обработать а потом снова его же пробросить? Вот у меня есть что-то вроде того что на пикриле, я обрабатываю конкретный эксепшн который поймал но сам эксепшн-то теряется. Как мне его после этого возбудить чтобы он вызвался и отпечатался в логах (вместе со всем call-стеком)?
>>1947982 Всё прозаичнее. Просто времени не было. Перед сном задал вопрос на дваче, чтоб ребята за меня погугли, а я с утречка уже решение прочитал, каеф. Таймменеджмент и делегирование)
>>1948080 Смотреть что там вызывается в ассерте и там брейкпоинт ставить, смотреть чему равны переменные которые участвуют когда происходит заваливание ассерта и откуда они пришли и искать причину почему они не равны ожидаемым.
Почоны, есть что почитать по актуальной асинхронщине в питоне, кроме документации? Я недавно вкатился и так по работе талмуды с доками каждый день дрочу, нет сил еще и дома такую залупу читать
Аноны, получил заказ на 800 долларов, прошел несколько собесов и переговоров и меня выбрали подрядчиком, до этого максимум за 70$ делал заказы, поддержите меня, я дико волнуюсь
>>1948420 Первое видео в плейлисте 2 года назад. Это точно актуальные вещи? С учётом того, что queues с чуть больше года назад стали deprecated. И 3.10 будут выписаны из питона.
>>1948424 А, актуальная именно нужна, там скорее теория, до asyncio только в 6-8 добирается, хз устарела ли инфа оттуда сильно, но послушать интересно, самая актуальная я думаю именно доки, куда деваться, асинхронщину ведь несколько лет назад еще завезли
>>1948418 Получил договор на интеграцию на 5000 баксов (чистыми меньше). Лучше бы блять не брались за эту хуйню. Говночисты из Европы написали такую хуйню (исходников нет конечно же), что теперь охуеваю. При том они интегрировали свое говно с российским железом, а я эмулирую работу российского железа. Полностью повторил протокол, а европейцы геи кучу багов оставили у себя. Нахуй такое просто нахуй. Хочу на галеру
Есть функция updaterMain, я хочу выполнять её каждые 3 минуты. Собственно, на картинке это так и происходит. (пока rt1 выполняется, весь остальной код может работать) Но я хочу дописать, чтобы можно было ставить эту функцию на паузу. Ок, вместо 3 я поставлю 9999, но как это красиво залупить?
>>1948660 Ты ебобо видимо. У тебя 2 задачи должны крутиться что ли? Так пропиши Threading и Semaphore (Lock, RLock). Ты мне кинул кусок кода и спросил, получил ответ на основе кода. Давай полное ТЗ тогда
>>1948662 ебать ты терминами закидал. Я ещё настолько зелен, что даже вопрос сложно нормально задать
я пока беру методом тыка, и пока вопрос снимается - модуль, который создаёт иконку приложения в трее, прерывает дальнейшее чтение кода, поэтому я даже не знаю, куда первый луп воткнуть
>>1948665 Ты какой-то гуй под шиндовс делаешь? Анальная затея это. В принципе, можешь взять тот же ткинтер и привязаться к его эвент лупу со своими задачками, всё полегче будет.
>>1948668 мне лишь бы закончить. Вообще можно ограничиться "Quit" который уже тут работает - тупо чтобы можно было закрыть программу, если она не нужна
Подскажите, пожалуйста, почему многопоточность для IO даёт профит? Ведь всё так же по очереди, например, прогружаются сайты . Если знаете хороший источник именно по потокам - буду благодарен.
>>1948802 Так он блять глобальные переменные в функции определяет. Пиздец... Кстати > Вот рили каждый раз когда используется глобал - ты говнокодишь 109% Это ты хуйню несешь. Если скрипт небольшой, то файл конфигов имеет смысл сделать глобальной переменной. Тогда при увеличении размера приложения очень легко будет отрефакторить код. Просто удаляешь глобальную переменную и пишешь from config import config. И код просто продолжает работать.
>>1948918 И не глобальной переменной, а просто переменной, которая в scope находится при импорте. И ты можешь по сути там константы предопределить и просто через config.MY_CONST обращаться
>>1948947 Ты ебобо? Как ты из словаря без ключа возвращаешь значение? Будет CONFIG['key'], а лучше вообще config.toml забацать для обфускации или .env сделать и грузить через load_dotenv(), ещё одна обфускация. Не люблю конфиги в коде, потом самому же поддерживать.
>>1948991 > Ты ебобо? Как ты из словаря без ключа возвращаешь значение? А это я хуйню написал, да. > Не люблю конфиги в коде, потом самому же поддерживать. А где всякие токены доступа хранить и логины/пароли, которые надо каждый раз в реквесты пихать?
>>1949009 SQLite, .env или просто в environment системы пихать в чем проблема? os.getenv('API_PASSWORD'), а SQLite может быть с Cipher что позволяет ее паролить. Токен доступа для Гугла драйва например предлагают хранить в pickle. Вариантов овердохуя.
>>1949009 В случае запроса значения переменной из хранилища кстати позволит на ходу менять значения без перезагрузки сервиса. Не очень надежно в плане результата, но если например протухли credentials сервис не останавливается, а просто встает в состояние -1: wrong credentials, посмотрел статус в каком нибудь SQLite или другой БД, поменял значения и без перезапуска херащишь. Актуально, если есть очереди в памяти без Redis, AMQP, а перезапуск сервиса просто уничтожит эти очереди. Как-то так.
>>1949074 корутины — специальные функции, похожие на генераторы python, от которых ожидают (await), что они будут отдавать управление обратно в цикл событий. Необходимо, чтобы они были запущены именно через цикл событий футуры — объекты, в которых хранится текущий результат выполнения какой-либо задачи. Это может быть информация о том, что задача ещё не обработана или уже полученный результат; а может быть вообще исключение
>>1949051 Ну хуй знает, у меня отдельная самописная либа по работе с таск трекером есть, например. Оттуда import Config. Затем создаю объект класса Config с параметрами нужными. И затем при каждом запросе к апи тасктрекера, через прослойку в виде своей либы, я просто закидываю внутрь функции объект конфига. При этом вся внутренняя логика скрыта, а логика пользования либой очевидно и понятно.
>>1948802 если не сложно, скажи, как избавиться от глобалов (в функции их приходится объявлять, потому что без объявления они считаются локальными) ? в конце каждой функции писать "return(value)" и передавать её в myFunc1(value)? или пример красивого кода, который как то поможет мне? и в чём проблема глобалов? или ссылку на что конкретно почитать или хотя бы что загуглить или на ютубе посмотреть? а может даже совет как исправить конкретно этот код? буду рад любому совету
Контент на сайте зависит от каких-либо условий. Например, задачи на доске отображаются в зависимости от выбранного пользователем проекта. Как мне это менеджментить? Завести столбец в модели юзера current_project? Не совсем понимаю. Или достаточно добавить ключ с проектом в контекст, и он всю сессию в контексте будет?
>>1949406 твои задачки которые ты решаешь во время обучения никто читать не будет, поэтому тратить время на манячитабельный код во время решения задач такого уровня -- глупо и нерационально. О чистоте кода пора начинать задумываться только когда ты уже в состоянии пройти собес и устроиться на реальную работу, а не на этапе знакомства с ЯП. Всегда кекал с челиков которые не могут решить medium на литкоде зато знают PEP8 наизусть.
Сап, питонач. Нужно ли учить в django всякие формы и шаблоны, если сейчас все делается через rest Api и отдельный фронт? Кажется, что учу нинужные вещи.
>>1948446 Карта отложения жира сильно отличается у мужчин и женщин. У мужчин обычно огроменное пузо, а у женщин по всему телу, в первую очередь жопа, ляжки, бока, и бицуха. Мужчинам нельзя жирнеть в конечностях, исторически так выживаемость падала. А пухлая женщина наоборот ассоциируется с выживаемостью, так как дольше может кормить молоком.
>>1948739 Потому что IO происходит в ядре. На время IO поток не выполняется, а значит гил можно отпустить и дать выполняться другим потокам. Вся эта херабора с гилом нужна чтобы ты мог один и тот же list например менять из разнах потоков, при этом оно не крешится. По-хорошему на каждую питонячую переменную нужно вешать автоматический лок (по сути гранулировать гил на каждую структуру), но это оказалось очень дорого, как по разработке, так и по производительности. Гил оставили чтобы работало быстрее в однопотоке. А сами потоки в питоне это классические потоки ОС, без всякой хуйни типа гринтредов.
>>1949723 https://m.habr.com/ru/company/otus/blog/458694/ вроде как ищут способ обойти GIL, но меньшими ресурсами чем Process. Хотя с process все просто, передал sig = Event() и реализовал graceful shutdown, а как тут будет хер знает. Тот же asyncio.run() выкатили без обработчика сигналов, ну и нахера спрашивается, все равно через loop приходится работать
>>1949750 Subinterpreters чёт заглохли, хотя идея здравая, делаем некий namespace для переменных, которые доступны только внутри этого интерпретатора, и там внутри уже гил не нужен. То есть это грануляция где-то между глобалом и каждый отдельной переменной. Асинк совсем не про это.
>>1949756 Обвязка WinAPI32 хуевая тема. Я писал сервис под Win10, но потом с миграцией на разные версии сервис часто переставал работать. Поэтому бери альтернативу - https://nssm.cc/
https://pastebin.com/yFC0x0by Как сделать, чтобы вызов scr.getch() принимал символ на ввод и блокировал вывод на одну секунду, после чего переменной c присваивалось нужное мне значение (например, 0) и управление возвращалось во внутренний цикл? Цель: нужно, чтобы экран с некоторой периодичностью обновлялся и выводил объект smth, состояние которого изменялось бы посредством вызова smth.do_smth в отдельном потоке и управлением с клавиатуры. (прошу прощения за говнокод и хуёвое объяснение)
>>1949825 >>1949797 Еще раз посмотри на эту хуету. Я собирал через PyInstaller экзешник и он только через nssm нормально запускался, не ебись ты с WinAPI. Если бы ты на .NET или C++ сервис писал, это одно, но с питоном Шиндоус не дружит.
>cостояние которого изменялось бы посредством вызова smth.do_smth в отдельном потоке и управлением с клавиатуры. (прошу прощения за говнокод и хуёвое объяснение) ну так это уже Threading, создаешь объект, передаешь его в тред, перед изменением делаешь lock.acquire(), чтобы не было race condition потом lock.release()
Аноны, я сейчас не хочу садиться и тестить, но хочу быстро в голове разложить, есть приложение суть которого в том, чтобы делать условно 1000 запросов в час, есть celery который поможет запускать запросы, но естественно запросы обязаны быть асинхронными, как лучше всего прикрутить асинхронщину в таком случае? Добавлять таски в эвент луп, запускать раном прямо в задаче селери, использовать что-то встроенное в селери или может есть какой-то ультимативный модуль сторонний? Что будет эффективней?
Можно использовать urwid вместо curses. Там эвентлуп есть, который может одновременно и таймер и ввод символов ждать. Там конечно ещё компоненты есть, но никто не заставляет их использовать. Если использовать эвентлуп из asyncio можно даже по сети ходить и подпроцессы запускать, и всё в одном потоке.
Если хочешь графику, то sdl. То же самое, весь головняк уже решён за тебя, но вместо коконсольки будет отдельное окошко в котором можно рисовать.
>>1949946 Ты явно плохо понимаешь что такое селери и зачем его делали. Это распределённая очередь задач, читай внимательно каждое слово. Распределённая значит что селери может работать даже на кластере из сотни машин. Очередь значит что есть какой-то генератор заданий, чаще всего это веб-сервер, которому хтмл надо отдать прям сейчас, а какое-нибудь письмо прислать как получится. Задача означает нечто выполяющееся за конечное время, например за минуту. Никто не делает асинхронность для выполнения задачи.
Почему ты не можешь просто в одном скрипте одним циклом, в одном потоке сделать 1000 запросов в час?
>>1949957 Ну первое, зачем мне селери это то что эти запросы придется делать, например, каждый день в промежутке времени и регулировать скорость. Второе, генератор заданий это собственно джанго, которое(тут уже мне надо так же смотреть, например, что отдавать в селери) ставит задачи, сделать 1000 запросов с такими данными. Третье, я не уверен как работает асинхронный джанго, но мне нужно, чтобы эти задачи делались в фоне, а асинхронщина нужна потому что сам запрос это просто дерганье стороннего апи, которое может выполнить задачу за рандомное время и может быть разный ответ, а получать статус этих дерганий нужно реал тайм, надеюсь понятно объяснил. А делать в цикле 1000 запросов когда каждый обрабатывается минимум секунд 30-60 это очевидно неверно. Я думал изначально для этих запросов сделать отдельное aiohttp приложение от которого нужно максимальное быстродействие, но если в celery получится выполнять задачи асинхронно то не понадобится отдельное приложение. Пока писал понял твои слова про очередь и то что задачи не должны быть асинхронными, но селери нужен для отложенных задач, а асинхронность для того чтобы не ждать ответ от запросов, т.е сама по себе задача это вызвать 1000 запросов и они должны быть асинхронными минимум в рамках одной задачи, после каждого ответа так же должна быть логика по обработке ответов
>>1949957 Алсо т.к в селери будут отдаваться только задачи с отложенными запросами, которые не нужно делать прямо сейчас, а например 3 клиента хотят в 18:00 делать по 1000 запросов, значит сами вызовы 100% должны быть асинхронными, ответ клинту идет сразу, что задача выполняется, вот статус всех запросов и так каждый день. Поэтому мне кажется в таком случае моя реализация в целом верная, либо просто запросы к селери, которые делают асинхронщину, либо к приложение aiohttp, которое отдает ответ сразу и селери сразу возвращает что процесс запущен, а уже aiohttp ждет ответа, делает логику и записывает в бд, я не прав?
>>1949973 Давай ещё раз. Выясняем что у тебя уже есть приложение на джанго, которое генерит задания сделать запрос. Что нужно ещё получить результат запроса: куда его и кому потом отдать?
Селери это такая асинхронность без экономии. Ты тупо занимаешь целый тред задачей и компенсируешь простои из-за IO большим тредпулом, не по количеству ядер, а количество ядер x 2 + 1, обычно рекомендуют так. В селери нет нужды обслуживать 10к соединений, поэтому нет нужды в асинхронности.
>>1949979 В селери нет планировщика. Заказать селери дёрнуть что-то в 18:00 скорее всего без приседаний нельзя. Делай отдельный сервис, хотя бы чтобы поставлять задачи в селери в нужное время. Всё же неясно, как клиенты получат результат задачи, по сокету в реалтайме или просто откроют страничку с репортом через день?
А ещё, как насчёт того чтобы сам клиент дёрнул себе сторонний сервис и ждал результата? Зачем городить такой сложный прокси?
>>1949994 Я предполагаю что результат каждого запроса записывается в бд, например, статус ок или ошибка или что-то еще, соответсвтенно джанго создает 1000 объектов в бд, пользователь нажал кнопку и получил сразу ответ в виде 1000 строк со статусом ожидание, если ответ где-то пришел быстрее, то эта строка заменится на ок или ошибку, т.е например в первые 2 минуты ответ поступил от 250 запросов и их можно будет увидеть, остальные в ожидании пока не пройдет логика. > В селери нет нужды обслуживать 10к соединений. Соединение будет только одно, но запросов много, опять же проблема не в селери самом, а в том, что задача с 1000 запросами обязана быть асинхронной, как это сделать я уже написал, либо селери, либо отдельный сервис аиохттп(джанго нужен для удобной админки и орм с которым я хорошо дружу), если в селери нет планировщика(хотя я уверен что где-то читал об этом), то тогда уж точно проще передавать параметры для этой 1000 запросов просто на аиохттп и все, через отдельный планировщик. Я честно так и не понял в чем именно проблема(предположим простая логика): передаем через брокер 1000 айдишников из бд(они выбираются еще джангой через квери параметры), селери(для селери только одна задача будет) обрабатывает задачу, т.е принимает 1000 айди, создает асинхронный луп, в него добавляет асинхронную функцию по обработке запроса и дальнейшей логике на каждый запрос, как только все запросы отработаны задача завершается, если клиентов больше в одно время, то каждый будет ждать просто пока все задачи выполняться. >клиент дёрнул себе сторонний сервис. Нужна логика до отправки запросов и после них
>>1949994 Я сейчас понял что, чтобы не нагружать слишком сильно внешний сервис, при том что запросов может быть максимум в час(100-1500 на человека) лучше к тому же распределять эти запросы через делей = число запросов / 3600, тут так же появляется необходимость в асинхронности, делать цикл в котором через делей добавляем таски в луп и при этом этот цикл тоже должен быть асинхронным, чтобы при этом другие такие же циклы работали одновременно. На самом деле на практике я точно что-то придумаю, пока просто пытаюсь выбрать вектор своих мыслей и придумать примерный алгортим из того что я знаю сейчас, не гугля всякие доки и уже готовые решения(интересно можно ли их найти)
>>1950113 Пиздец ты зациклился на асинхронности. Тебе нужно оздоровительное воздержание от асинхронности прописать на недельку. Но в общем-то да, наверное даже один поток aiohttp справится и со всеми запросами, и с планированием, и со складыванием результатов в базу. А селери тебе скорее всего нахер не нужен если ты так хочешь асинхронность.
Подумай лучше вот про что. Как твой микросервис будет переживать рестарты? Чо делать если контейнер/процесс убивают, а у тебя 10 запросов уже отправились? Можно ли дёргать эти адреса повторно? Сколько раз и когда нужно делать ретраи? Нужна ли тебе очередь между джангой и этим сервисом? Возможно ли отделить БД этого сервиса от основной?
>>1950137 Просто на деле запросы это телефония и ждать 30-40 секунд на ответ нельзя, а асинхронность по-моему именно для этого и нужна, поэтому и циклюсь, значит да, завести какой-то планировщик и просто отправялть на aiohttp. Ретраи добавить вроде не сложно, а вот про рестарты не думал, пока даже не знаю как минимизировать проблемы при внезапном рестарте в теории, как минимум надо узнать что происходит с брокером в таком случае, потому что в нем будет проблема главная, можно на айди просто ограничения добавлять, типа время последнего вызова и проверять прошло ли достаточно времени(правда если клиенты разные на один айди звонят, то тут будет проблема), так же не знаю даже в теории о нагрузках на бд и как их измерять, например будет в час на бд 2-5 тысяч запросов с выборкой 1-го значения просто по индексированнуму айдишнику, будет ли успевать бд и как вообще ее расширять
>>1950187 Ну создай нагрузку фейковую и посмотри что будет. Расширять можно вертикально и горизонтально, бери машину пожирнее для начала, если не помещаешься то партицирование, разбиение на микросервисы, тысячи вариантов есть.
>>1950262 Да это очевидно через обычный слип нагрузку делать, другой момент как именно на практике увеличивать возможности приложения, микросервисы понятно, разнести бутылочные горлышки по серверам, а в остальном вот уже сложнее(кстати слава богу что придумали асинхронщину нормальную, я не представляю как было бы ебано сейчас парится с потоками, может генераторами или даже с корутинами, все за меня придумано, мне оставалось только доку глянуть и вот уже код работает в бесконечность раз быстрее на объемах)
>>1950113 Для этой логики по идее Селери не нужна, как мне кажется.
Тут полностью независимая система грузит задания и получает статус состояния.
Впрочем я с Селери никогда и не работал.
Мне кажется, что схема такая, что задания записываются в БД и в очередь, раббит например, из которого пул процессов берёт задания на обработку.
Можно даже в данной задаче и без раббита, ещё проще, руками всё реализовать. Потому что несложно на самом деле.
В БД прописываются задания, отдельно работает сервис на базе asyncio, можно с aiohttp вместе. В этом сервисе пул задач крутится. И одна задача-менеджер, которая раз в сколько-то секунд берёт список заданий из БД, раздаёт их воркерам, и записывает результат обратно в БД.
То есть ты руками реализуешь брокер сообщений, но это несложно, потому что ничего из серьёзного функционала, ради которого нужны сложные сервисы вроде раббита, ты не используешь.
>>1950319 Я пока про селери читал где-то говорилось что очереди в бд хранить неверно и в проде все полетит, пока все еще думаю над этим, а с селери уже разобрались, что вроде не нужна, нужен планировщик(я думал в селери он собсна есть), отдельные функции на aiohttp, а остальное на джанго что нужно, спасибо всем за ответы, кстати
>>1950306 Да так же. Была уже асинхронщина во всяких торнадах, твистедах и гевентах. Тупо половина стдлибы манкипатчится чтобы дёргать неявный эвентлуп.
Горизонтально довольно просто скейлится. У тебя есть балансировщик нагрузки, он подхватывает новые машинки которые ты запускаешь с серваками, и как только оно способно принимать запросы, балансировщик начинает его понемногу нагружать. С базами это сложнее, но принцип похожий. Базы лучше разделять на части. Ещё всякие key-value намного лучше разделяются в кластеры, чем реляционные, в них намного меньше гарантий, разрабатывать под них конечно ебано, ни транзакций тебе, ни схем, ни джойнов, зато скейлить одно удовольствие.
>>1950325 Какие кластеры баз? Товарищ говорит про 5 тысяч запросов в час. Условно 10 запросов в секунду в пике.
Это вообще ни о чём. Любая БД и MQ с такими объёмами справится.
Если есть несколько серверов, или несколько процессов-воркеров, то надо использовать отдельный MQ, иначе можно вообще без MQ. Если важна низкая латентность, чтобы запрос сразу на исполнение принимался, то тоже лучше уже готовое решение использовать. Или нет, если задачи раздаёт тот же процесс.
Вариант "для детей", поиграть, и как концепт: Приходит запрос по http. Вебсервер (aiohttp) даёт задание на обработку, прописывает в словарь заданий задачу со статусом 'pending' и кладёт в очередь айди этого задания.
В этом же процессе крутится пул воркеров. Свободные воркеры слушают очередь, берут id задания и в хранилище выставляют статус 'working' и время, когда начали работу, и айти воркера, который работает. Они могут запускать подпроцессы, если тяжёлая работа какая-нибудь. Как задание исполнено, в хранилище выставляется статус done. Как вариант, ещё сообщение дополнительно в специальную очередь высылается, для исполненных заданий.
Этого может быть достаточно для чего-то даже весьма боевого.
Возможно вместо хранилища нужна БД, если надо, чтобы задания сохранялись надолго, в том числе в случае перезапуска, падения и т.п.
Если у тебя несколько процессов, например вебсервер отдельно, или несколько процессов-воркеров, или они вообще на разных машинах, то уже недостаточно просто очереди от asyncio.Queue, надо что-то, что работает на много процессов. Тут уже разумно взять готовое решение, например раббит. Или что-нибудь ещё.
Надо придумать, как оформить сериализуемый пакет с заданием, и как хранить его, результат исполнения и т.п. в БД.
Пока объёмы на уровне десятков запросов в секунду, очереди сообщений, БД и т.п. не проблема вообще. На сотнях в секунду уже надо думать о том, насколько у тебя корректно запросы составлены, индексы и т.п., можно тормозить ни на чём. Но реальный хайлоад на тысячах запросах в секунду начинается. Вот там уже можно попасть в ситуацию, что просто MQ или база не справляются.
При этом действительно серьёзный хайлоад с величинами другого порядка оперирует.
>>1949741 Нашёл. Получается что драйвер хранит переменную, а не постоянно обновляет, решение - добавление неявного ожидания с локатором тайтла. Всем спасибо
>>1950336 Ответа нет, но думаю это мне собственно, опять же рад наконец увидеть цифры числа запросов для хайлоада, слишком абстрактно для мен было, я все еще думаю что много воркеров вообще не нужно, если они будут синхронные, потому что все проблемы с тем что 30 секунд ждать ответ решает асинхронность, потому что сама логика элементарная, буквально записать в бд и в случае эксепшона логирование + репит, поэтому не будь ожидания даже воркеры не были бы нужны, а так асинхрнность, осталось только придумать как при запросе на aiohttp сразу отдавать ответ джанге, чтобы он мог дальше делать запросы, а нынешний просто в лупе оставался, то что брокеры записывают на диск при падении интересная инфа, надо почитать об этом, в остальном вектор стал понятен после всех сообщений. Интересно почему такой ажиотаж вызвал мой вопрос, даже приятно)
Добрый день, за полгода изучения питона активного возможен ли вкат в программирование с нуля с переездом в дс/дс2 или же фриланс/удаленка? Живу в мужосранске, образования нет. Родители выгонят из дома через полгода если работу не найду, с собой в питер/москву могу взять 300 к на первое время
>>1950453 https://redis.io/clients#python Выбираешь клиент для Redis на Python и читаешь документацию по нему, хрен ли вы такие тупые. Чаще всего указывают в официальных доках какие клиенты существуют и ссылки на них. Бери тот что поддерживается и последний релиз не позднее 19 года естественно.
>>1950424 Возможно всё, но положение у тебя откровенно хуёвое. Сам вопрос как ты к этому пришёл как бы намекает что ты тот ещё распиздяй, и за полгода ты разве что десяток аниме посмотришь, а не вкатишься.
>>1950522 распиздяй да, но щас на носу моя жизнь, надо за полгода оформить грамотный вкат, готов почти все свободное время уделять этому дело. Интересует будет ли прок? Или учиться чему-то другому?
>>1950162 Есть костыльный способ. Делай скриншот когда эти шарики сталкиваются. Вырезай столкнувшиеся шарики, делай проверку на поиск столкнувшихся шариков с скриншота через locateCenterOnScreen в pyautogui. Либо узнать радиус шарика в пикселях от центра, например будет 10, у второго тоже 10, если центр шарика1 находится ближе чем на 20 пикселей к центру шарика2, то столкновение.
братва, подскажите плз, есть ли кулстори/реальный опыт работы в сбере? Хочу попробовать туда пойти тк зпхи хорошие + появился сбер it, но хз это галера или нет?
>>1950825 Ты реально замеряешь время получения ответа с адресов LINK1 LINK2? Кстати сейчас loop никто в параметры не передаёт, наверное ещё с питона 3.7.
>>1950847 Обожаю такие формулировки в курса, обычно это криво обработанные транслитом задачи с забугорных курсов. И попробуй угадай что от тебя хотели.
>>1950842 Какая нахуй позиция строки? Позиция строки где, в самой себе? Позиция подстроки (символа) в строке? Я также собес в пынькофф не прошел, потому что манда по скайпу задачи на логику давала с таким же условием.
Мне тут недавно пришлось вживую столкнуться с кодом на си(скажу честно ничего более отвратительного я не видел), как же я рад, что мне не приходится в питоне гуглить как правильно принтить числа и строки, но возник вопрос, стоит ли вообще понимать, например, указатели и т.д(как раз их я знаю, но наверное есть что-то еще такое же важное) для разработчика на питоне, как компилируется код, как выглядят инструкции, так же я только недавно начал в принципе осознавать, спустя год кодинга, что вообще означает интерпретируемый язык и какие ограничения это накладывает, вопрос нужно ли в принципе это понимать?
>>1950884 прогаю на питоне, но до сих пор считаю си лучшим языком не свете строго и лакончино - ничего лишнего если не тащить его в поля типа комп зрения и прочего очень уж высокоуровнево говна - он топ а про ограничения и тп - ну сам же можешь ответить на свой вопрос конечно надо
>>1950884 > Мне тут недавно пришлось вживую столкнуться с кодом на си > но возник вопрос, стоит ли вообще понимать От тебя требуют писать на си? Если нет, то забей хер. Если хочется — покопайся, не повредит.
>>1950884 >понимать, например, указатели Нужно - чтобы понимать, что происходит с аргументами функции при их модификации. Например, что произойдет при присвоении нового значения числу, а что при добавлении элемента в массив. Изменятся ли они за пределами функции и почему? >как компилируется код Не нужно. >как выглядят инструкции Не нужно.
>>1950884 >стоит ли вообще понимать, например, указатели и т.д(как раз их я знаю, но наверное есть что-то еще такое же важное) для разработчика на питоне, как компилируется код, как выглядят инструкции, так же я только недавно начал в принципе осознавать, спустя год кодинга, что вообще означает интерпретируемый язык и какие ограничения это накладывает, вопрос нужно ли в принципе это понимать? В принципе нужно, конечно же. Это называется "системные знания". А система подразумевает знание очень много чего, что вроде бы напрямую в твоей работе не используется. Иначе это макакинг.
>>1951050 Скажи, а какие еще знания из низкоуровневых языков стоит знать, указатели я понимаю, всякие разименовывания и пр., знаю как ассемблер работает в очень общем виде, знаю как выглядят машинные коды или как там это фигня когда байтам команды присвоены, даже в работу транзисторов погружался немного,что еще важно для общего развития?
>>1951055 ХЗ, не уверен, что я сам достаточно знаю.
Что-то по железу. Например про инструкции, расширенные инструкции, кеш память и просто память, многоядерную специфику и т.п.
Про то, как программы работают, операционная система. Про понятия системных вызовов, виртуальной памяти, защищённых режимов и т.п., про разные виды тредов, селекты и др.
Про файловые системы, про сети.
Про технологии компиляции, идеи оптимизации, про JIT.
В случае питона про то, как всё это реализовано внутри, на уровне Си кода.
>>1950457 Спасибо. Почитал и охуел немного. Получается мне нужно отдельную ДБ где-то сохранять? Мне нужно буквально 2-3 ключа записывать. Есть ли какие-то альтернативы?
Вообще задача такая для параллельного тестирования, когда пайтест ранит один тест с таким-то юзером, нужно посмотреть, что этот юзер уже используется (logged in) грубо говоря, и тогда взять другого юзера из списка. Может ли это fixture сделать? Если да, то как.
>>1951064 Просто записывать на диск нельзя юзернеймы? в виде жсона например, раз тебе скорость не нужна максимальная, либо просто в памяти нельзя хранить?
>>1951067 >>1951068 А ведь и правда. Спасибо! Зачем тогда ДБ вообще. Другой вопрос, начался тест - юзер записался, пошёл другой тест, чекаешь, если юзер в этом словаре, то берёшь другой, если нет, то берёшь первый попавшийся. В конце нужно будет его очищать? Как это дело в фикстур обернуть?
>>1951075 Бритва Оккама. Если эмулируешь редиску - словари, эмулируешь реляционку возьми SQLite. В проде будет конечно же все не так, но нахуя в тестах пулить коннекты да ещё с исключениями и реконнектами (если ты не ебобо заебашь коллбек другой)
>>1951130 Ну а что делать то? Проблема такая. Когда ранишь тесты параллельно, несколько тестов используют один и тот же аккаунт. Поэтому, чтобы не выкидывало дали задание, либо через редис записывать юзера и соответсвенно другого нужно выбрать из списка юзеров. Там таких всего 4 варианта. Но пока ничего лучше этого не услышал. >>1951067 >>1951068
>>1951241 Некоторым больше хочется нормальных лекций, причём академических, а не в стиле тик-ток.
Там на первый взгляд смотрится больше как выжимка про специфику питона, что очень интересно, если ты уже можешь программировать, а не обучение программированию с нуля, как в 90% всех книжек.
Вот ты сам можешь рекомендовать какие-нибудь три книжки подобные? Я только одну такую видел, называется intermediate python вроде бы.
>>1943168 (OP) Postgress, Python Суп, ненавижу программировать, надежда только на вас. Через джанго сделал мне чел чтобы я добавлял сразу в бд данные, в таблицу, вот зашёл на сервер через pgAdmin, не могу найти то что добавил. Это значит нихуя не добавилось или я неправильно смотреть? Так ведь надо посмотреть что хранится в таблице, через селект олл фром тейбл?
>>1951677 >Как сделать, чтобы, когда пользователь вводит параметр, которого не существует, вылетала ошибка Разве по умолчанию он так не делает? Вот, я вбил учебную программку из документации https://docs.python.org/3/library/argparse.html и сохранил ее в файле argtest.py:
Если я использую аргумент --foo, то ничего не происходит, ибо не указанно что делать, но никакой ошибки нет, аргумент известен, а вот если я использую неизвестный аргумент, питон закономерно шлет нахуй:
>>1951132 >>1951134 В общем менеджер сказал, что просто в памяти не будет работать на удаленной машине дженкинс, потому что ее запускают несколько человек.
Получается мне нужно поставить сервер и захочтить где-то - это я могу. Потом нужно подключиться и записывать пользователей .set. Каждый другой тест проверять .get если такой юзер уже есть, то взять другого, по окончанию теста удалить ключ и на всякий сделать его expire in 10 mins. Вопрос, я не очень знаком с питоном вообще и фикстурами, как запилить это все в фикстур? Я так понимаю scope должен быть пер class. Если кто-то готов серьезно помочь, могу скинуть денег или конфет купить. Спасибо!
>>1943168 (OP) Анончики, а у питона есть будущее в вебе? Я понимаю, что как язык для простых скриптов и подобного он монополист, а в мл по сути навсегда. Но что с вебом? Или надо уже на шарпы/пыху переезжать?
>>1951762 На фронтэнде нет. Щас прибегут мне рассказывать про brython/transcrypt, но это скорее попытка сделать жс более похожим на питон.
На бэкэнде вроде бы уже давно его будущее состоялось. В гугле дохера питона, инста на питоне, библиотек жопой жуй, рабочей силы дохера, вакансии есть. В случае чего перекатиться в го говорят можно за пару недель.
Твой вопрос больше звучит как какое будущее у отвёртки в машинстроении. Будто бы выбор отвёртки сейчас решит вообще всё в будущем. Рассчитывай на то что ЯП неизбежно умирают со временем по тысяче разных причин, и что знание одного ЯП это автоматически сколько-то процентов знания всех других ЯП.
>>1951762 >пыху Работы дохуя, для тебя двери почти везде открыты за 20к лендосы на wp, но как только будешь искать что-то достойное, то окажется что вакансий мало и синьерность требуется высокая. С питоном мало ждуновских вакансий, слишком много вкатываются. За Шарп не скажу, но у них частенько вакансии попадаются. >>1951768 Говно обычно требуется совместно с чем-то еще
>>1951771 >>1951772 Так самое смешное, что я уже вкатился и месяц работаю. Просто почему-то в какой-то момент так начало казаться. А по поводу ждуновских вакансий на питоне — все так. Я кое-как работу нашел, но само место норм.
>>1951762 Питон в вебе бывает двух видов. Либо джанго(рест), либо асинкио (aiohttp, fastapi и др).
Джанго это большой индустриальный фреймворк. Асинкио это технология асинхронного программирования в первую очередь, плюс масса сопутствующих инструментов.
Ты учишь не язык в первую очередь, а технологии программирования. Перекатиться с одного языка на другой в рамках одной технологии и одного подхода может даже проще, чем освоить с нуля технологию, оставаясь на привычном языке.
На текущий момент платформа развивается и растёт, в том числе в веб приложениях.
>>1951780 Я просто в свое время дрочил жангу, но по итогу вкатился в пыху, по причине отсутствия вакансий, но в пыхе как оказалось большинство вакансий говно на цмс, в итоге сижу делаю на Битриксе формы "благодарим за обращение! Мы вам перезвоним в течении 15 минут", указанные в вакансии ларавел видела только в техподдержке говнокода в который насрали фрилансеры индусские школьники. За полгода ни одного нормального проекта, все нормальные проекты проходят мимо меня тем кто посиньорнее, зато примерно полдня свободен и устроился стажёром на жабу, пилю потихоньку интерпрайз легаси, спринг, хибернейт, ждбс и всякая апачевская хуета, через пару месяцев перекачусь, а может и раньше. Сейчас наверное могу на питон попытать счастье на удаленку, дажнгу повспоминать и наверное пройду, но по бэку вакансий очень мало, даже на руби больше.
>>1951781 >Ты учишь не язык в первую очередь, а технологии программирования. Перекатиться с одного языка на другой в рамках одной технологии и одного подхода может даже проще, чем освоить с нуля технологию, оставаясь на привычном языке
Удвачиваю сам начал с питона+Джанго, потом продолжил в пхп+ларавел переход был плавный, там практически все тоже самое, в пыхе только первые 2 недели бесило доллары в начале переменной ставить, остальное совсем без проблем. Потом в джава+спринг, с языком вообще проблем не было, тем более что пыха по синтаксису ООП та же джава, даже сейчас типизация появилась и все стараются писать указывая типы, но вот со спрингом это пиздец как все сложно и не понятно, этот апликейшн контекст, бины, депенденси инжекшены, хуй пойми как оно работает, ещё и орм хибернейт со своими сложностями, какой-то ждбс между базой и орм, нахуя половина конфигов нужна, вроде все правильно собрал какого хуя весь терминал красный, что за томкет и вилдфлай, нахуй они нужны. Короче только через месяц начал что-то просто понимать. Довелось побывать руби, вообще без проблем, увидел код и все понятно, рельсы практически та же джанга и ларавел, только синтаксис языка слишком сахарный, даже бложик написал ну почти дописал, забил под конец
>>1951790 Я думаю они и сами не знают нахуя сделали из Явы (вполне себе понятный по конструкциям язык) полнейшую нечитабельную хуйню, а нечитабельна стала из-за кучи зависимостей, абстракций и вложенностей. На питухоне я могу спокойно оверрайдить говнометоды из библиотеки или вообще часть говна переписать под свои нужды. А в Яве пока JDBC настроишь уже пожалеешь, ебучий в сраку DBeaver. А все потому что JVM, это явно из-за нее такие требования теперь.
Q all! Очередной нубовопрос по ООП. 1. Обязательно писать классы в отдельных файлах? 2. Интерфейсы из Java реализуются просто в классах штоле? Типа class 2chable: ....def post_shit(): ........pass
>>1951927 >Очередной нубовопрос Ну смари, класс это короче как в школе, училка это инит, завуч это итер, методы и данные это твои одноклассники. Понял?
>>1951927 1) Ну, если класс весь такой большой и используется в разных частях проекта в разных файлах, то рекомендуется, выносить в отдельный файл и импортировать оттуда. 2) hz kak tam v java
>>1951984 аналогия простая. класс это тип обьекта например мяч. с определенными базовыми параметрами например он круглый. остальное это уже ты можешь передавать в класс, например делать мячи для баскетбола, анальный шарик например. все это будет класс мяч, но с разными целями. понятно что баскетбольный мяч в жопу не засунуть. в отличие от анального шарика.
>>1943168 (OP) Есть формат хранения информации нативный для питона аналог json, xml? Т.е. чтобы можно было подсосать информацию, но чтобы не выполняло код.
Салам, гайз Сопоставляю инструментарий flask-sqlalchemy и собственно sqlalchemy
Интересуют методы экземпляра таблицы, например, метод coloumns. Нашёл его во flaske в db.table(table_name).colomns. но этот сучок возвращает пустой спископодобный объект, как и все методы экземпляра таблицы. То есть структуру таблицы вообще не посмотреть отсюда. Итого два вопроса: 1. Какого это хуя такое поведение? 2. Как получить доступ к этим методам из flask-sqlalchemy? Спасибо
>>1952470 Чисто ради того, чтобы разобраться со структурой фреймворка. Ебучая колонка мне нужна, но хотелось бы знать, что через экземпляр базы данных я могу получить доступ к экземплярам таблиц, а через них к экземплярам колонок. Ебучая колонка мне не нужна, но и метод count не пашет в db.table(tablename).count. Я знаю другой способ посмотреть количество рядов в таблице, но какого хуя не работает самый логичный из способов?
Сап гайз, какой гуй используете под дэсктоп? Я нашел eel. Там html + css, но в добавок вручают тяжелый чемодан с js. Вот в js прям не хочу вникать. Да еще и хром должен стоять. Может есть что интереснее?
>>1951903 Да, это бесит язык вполне себе годный, но то что с ним делают это пиздец. Синтаксис понятный и простой, JVM шустро работает, написал тогда одну фичу надо было около 100000 обойти посимвольное чтение, регулярки и прочие радости, запустил и решил кофе попить, встаю со стула, а оно закончило, за 20 секунд 100 000 файлов примерно по тыще строк, КАРЛ! Но как открываешь какой-нибудь проект Spring+JDBC+Tomcat то пиздец тысячи классов и интерфейсов которые делают нихуя, ради всяких солидов и во славу сатане делают классы с 1-2 методами и куча интерфейсов для красоты и инверсии зависимостей. В питоне принято более лаконично и аккуратно писать по сравнению с жабой.
>>1950696 Реально клон кстати, но сервиса небольшого, выше обсуждалось как асинхронно запросы делать, вот это моя ветка, по сути джанго рест апи сделать + планировщик + функции для вызова стороннего апи телефонии, чтобы отдавать буда звонки и т.д, на первом собесе рассказывал про себя, обсуждали тз, на втором смотрели конкурента и я рассказывал что и как реализовывать буду по всем функциям, потом он меня выбрал, а сейчас еще договор просит подписать)
>>1952593 Про Qt уже сказали, для него в питоне есть обвязки PyQT и Pyside, еще можно упомянуть WxPython, это обвязка для WxWidgets, там стараются по возможности использовать встроенные возможности ОС, поэтому на разных ОС приложение будет смотреться органично А вообще есть из чего выбирать: https://github.com/vinta/awesome-python#gui-development
здарова братва короче сейчас перекатываюсь из игроиндустрии, где писал на спп хочу подготовиться к собесам через пет проект вопрос: есть ли у вас, примерно, идеи чтобы такого замутить, чтобы показать и знание крестов и знание питона?
двачеры, хуячеры у крестоносцев в треде был момент, когда они делились норм работодателями (к которым ходили на собесы либо наслышаны) и что спрашивали на собесах го мб также?
>>1952728 Строка. Нужен парсенный ин-т. >>1952731 Ты забыл [-1] в конце. Это лучшее что я придумал. Может ещё есть варианты? Что если точка сместится и будет 11
DCtv ghbdtn есть словарь. далее совбственно вопрос как используя данные словаря, делать запросы к JSON если есть условие что если as_cnt меньше 100 то все так и оставляем. если больше то делаем несколько запросов с увеличением src на 100 до условия src = as_cnt c округлением до целого.
>>1952617 Вот если взять зарплату как 10 долларов в час, что как бы очень скромно. Ты уверен, что вот в состоянии эту работу сделать за две недели? Причём добавь время, потраченное на собеседования, в эти самые две недели.
Ты берёшься за проект с кучей технологий. Ну реально, не смешно просто.
>>1952617 Вот реально, подумай десять раз, прежде чем браться, и особенно думай, под чем в договоре подписываться. А то будешь возмещать какую-нибудь упущенную выгоду из-за того, что не реализуешь, что надо. Или впахивать полгода, пока все хотелки не сделаешь.
Такая работа стоит больше скорее всего. С учётом подхода с собеседованиями явно больше.
Такие заказчики потом очень долго будут мозг ебать.
>>1952790 Ну тебя же есть data = {'dmn':'code','src':'100'} пишешь data = {'dmn':'code','src':doc['as_cnt']} Можно сделать базовые параметры и мерджить. https://ideone.com/emMCTC
>>1951637 >Django Не удивлен, если там ошибка джангодебила, так как просто не сейвится запись или constraint не указан AUTO_INCREMENT m =Model(...) m.save()
>>1952814 >1.22.333. Можно быть 11.1.333 И что нужно получить из этих строк? 122333 и 111333? Должны учитываться длины подстрок? Как?
Тебе нужно, чтобы корректно сравнивались версии, и чтобы 11.1.333 было больше, чем 1.22.333? Это другая задача.
Можно тогда всё нормировать к виду 011001333 и 001022333, например, а дальше уже сравнивать. Но при этом мы закладываемся, что размер подстроки не больше трёх цифр.
>>1952838 >122333 и 111333 Да. >>1952838 >Можно тогда всё нормировать к виду >011001333 и 001022333, например, Да, так тоже норм.как это сделать проще, чем сплитом или реплейсом?
>>1952792 Ну ты меня напугал, конечно, тз вроде сформировано, заказчик пока адекватный, главное технарь а не менеджер, договор естественно прочитаю, я прямо сейчас сижу и смотрю тз, составляю план как что выполнять и т.д и понимаю что на деле все проще чем казалось, рест сервис сделать и работу с их сервером асинхронную, пока заказчик на все отвечает, все что нужно типа документаций присылает, пока не вижу проблем, так же мне нравится что есть конкурент и просят упрощенную копию сделать, многие функции вырезаны из тз, а на многие вещи, которые изначально есть в тз я просто говорю этим будет заниматься фронт, я только апишечку сделаю. Гораздо больше геморроя было когда я подписался с тиктоком работать, дропнул спустя 2 недели, заработал копейки сущие, да еще и по итогу ничего не получилось, а тут пока все прозрачно, но спасибо, все же нужно наконец над чем-то серьезным поработать, когда сделаю уж точно не буду вкатывальщиком(хотя бы частично). Алсо меня пугает слово собеседование, скорее просто созвон, чтобы познакомится и еще один в котором я рассказывал как реализовывать буду, все же компания настоящая, у них уже многое есть, типа серверов, баз, сайтов и т.д, поэтому вполне логично что они не будут по приколу рандому деньги отправялть, самое забавное что меня нашли на хабре, который я заполнил быстро ради одного заказа заинтересовавшего меня
>>1952609 >>1952652 Спасибо, аноны. Особенно за ссыль на весь список. Kivy, curses и urwid уже щупал. Как и eel, про который писал изначально. У киви есть расширение с более современными элементами - KivyMD. Но всё таки он больше подходит для мобил. Вторые два понравились тем, что это собственно не гуи, а туи, обязательно к этому вернусь, когда появится время на пэт-проектики. А про QT я всегда думал, что интерфейс хоть и будет работать, как часы, но выглядеть будет, как на пикче (что уже вот уже буквально скоро может уже смотреться не просто как старьё, но и даже по олдовому круто, как туи лол). Всё таки на HTML+CSS (в списке это eel) красивее всего морда должна получаться по логике, потому что запилить можно в буквальном смысле абсолютно любые кнопки, поля, градиенты и т.д. в конце концов оно конкретно для этого и придумано. Но по списку пробегусь по всему. Еще раз спасибо.
>>1952844 В программировании половина решения - это грамотно сформулированное задание. Вот как только ты сформулируешь логику, что и как в каких случаях должно быть, так сразу будет понятно решение.
А когда логика не ясна, то и решения не может быть.
>>1952844 >122333 и 111333 >Да А нормально, что в случае 12.3.444 и 1.23.444 ты на выходе получишь одинаковое значение 123444?
Если да, то проще всего через сплит-джоины и операции со списком. m[:3] - это сделать обрезанный список из первых трёх значений m[:-1] - это сделать обрезанных список без последнего значения
Если у тебя какая-то очень сложная логика, то не делай в одну строчку, оформи функцию, может быть сложную.
Все проблемы решаемы, когда ты понимаешь, что именно тебе решить надо. Может быть тебе вообще не надо всё к инту сводить, а лучше остаться в строках.
>>1952897 Воистину, ищите, да обрящете. Я искал годный гуй для питона под десктоп давно, сейчас вообще пригорело уже, уже почти смирился с тем, что придется повникать в джаваскрипт ненужный, что б делать по красоте. А счастье то было перед носом. Никто не запрещает пилить в киви под дэсктоп! По красоте киви не отличатся от html+css+js. А про анимации в киви я не предполагал, потому что раньше не видел статей на хабре про анимацию. Они может вообще недавно появились. На киви пилят под мобилы в основном, ну я и отмел сразу не вникая, а это блин топчик! Мультиплатформ есть, поддержка есть, версия 2 вышла недавно, брат жив и все такое. Я стопудов определился со своим стулом, если вы понимаете о чем я!
Можно ли как-то gpg напрямую из скрипта передать passphrase, минуя необходимость мануально вводить это дело во всплывающее окно? Покурил малость доки - не нашёл чего-то такого. Может, какой хак есть.
>>1953175 Я уже работаю, даже в продакшене поделки работают, но я в одно рыло все делаю. Ну и интересно будет посмотреть как меня "трудоустроят". Хотя эти корочки, да даже какие-то проекты хуетень. Нарвался на простейшую ошибку с блокировкой multiprocessing.Pipe и не мог понять проблему в течение недели. К такому ни один курс не подготовит. В исходниках кстати видно, что если Pipe(duplex=True), то действительно используется блокировка на запись, если не было чтения. Ну не пиздец ли..
>>1953045 Только сейчас разобрался, спасибо. На входе 12.3.444.22 - всегда три делиметра. Из этого нужно получит 123444 без точек обычным интом. Я сделал сплит по точкам и джойн листов в строчку кроме последнего (.22) и обернул в int. Но выглядит как-то нечитаемо для такой простой задачи..
Сам я ни разу не программист, но угодно высшим силам в виде научрука, чтобы я на питоне написал график. Дано джва файла формата .dat, надо сделать красивый график по типу пикрил, и кое-как я сумел. Теперь нужно, чтобы на нём появились точки из второго датасета, в виде, собственно, красных красивых точек. И вот как это сделать - я совершенно не знаю...
Народ, предельно глупый вопрос. Что написать, дабы продолжать оттачивать скиллы, как начинающему разработчику? Уже писал бота, который в процессе ещё парсит сайт, менеджер паролей, простейший ETL процесс со сбором, трансформацией и выгрузкой в Postgres, голосового помощника Сама идея петов ради того, чтобы были, мне отвратительна, но надо где-то брать практику
Как не бросить проганье от постоянного селфхуесосинга за то, что не получается что-то с 1 раза, или за 15 мин в башке не наступает озарение как что-то сделать, и начинается прокрастинация или перекладывание задач?
Сап двач, нужно заполнить массив. Создаю его через инпут 2х значений и после np.zero(a , b) А как после его заполнить? Нужно заполнять по рядам, но хз как сделать, чтобы заполнение подходило для разных размеров массива. Сделать нужно, как на пике примерно. 4, 5 размер массива
Расскажите в теории как связывают отдельные api, чтобы везде была одна сессия, т.е есть 5 микросервисов, каждый требует пермишонов, как передают юзера, особенно если сервисы написаны на разных фрейморках\языках? Вот есть у меня сервис, как мне лучше всего получать данные о пользователе?
Привет, погромач Я бы супер сильно хотел к вам вкатиться. А точнее в IoT. У меня есть работа, с зп все тоже заебись, но я как раз больше аналитик и рп и пару раз был краем на IoT проекта. Это было просто оxуенно - люди приносят реальную пользу и помогают в развитии, в отличии от меня. Насколько это ссаная затея? Или для этого надо двести лет? Спасибо за внимание
>>1954083 IoT обычно про некоторую хардварь, которую ты условно вставляешь себе в ботинок и оно считает шаги. Есть systems on a chip способные тащить микропитон, возможно тебе стоит посмотреть на это. Но IoT всё-таки не про питон, питон там просто рядовая отвёртка.
Друзья, вопрос по fixture. Как настроить такую, которая будет при запуске каждого тест класса будет заполнять переменную, скажем Count, которая будет запрашиваться из другого метода. Далее, если смотрим if count > 2: делай это, елсе: делай то.
>>1953662 Если тебе это поможет, то даже на работе я постоянно туплю и могу иногда целый день делать какую-то простую вещь. Ну как простую, когда ты с ней разобрался, то уже простую, да.
>>1954273 Какая хардварь, братюнь? STM32 есть DIY ESP32, есть куча модулей под Arduino или Pi. Придется конечно физику подтянуть да и азы радиоэлектроники, но это херня. Но туда лучше C++ совать, нежели микропитуху, ресурсов то с гулькин нос.
>>1954325 не трави душу. все никак не мог собрать Jinja2 темплейт XMLный, по привычке указал в одном месте attrib1="foo", attrib2="bar" и заебался искать ошибку, а была одна ебучая запятая.
Анонче, подскажите, в какую сторону курить про цвет заглушки? У нормальных фильмов есть нормальная пикча для фона, у говна - заглушки, так вот, как цвет заглушки подбирается, отталкиваясь от постера? Ну не руками же они это делают
>>1975209 Вот еще две пикчи, если хуёво объяснил. Нормальный фильм и говно. У говна цвет заглушки в цвет к постеру всегда. Как этот цвет автоматом подбирается? Типа надо писать неебовый метод какой то по анализу джипега?