Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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
Сап питонач, решил отсюда все задачи, документацию питона щелкаю, дополнительно попарсил ЦБ и openweathermap. Куда двигаться дальше?
Сейчас в тупике, когда учебные проекты кончились, а хз какой проект замутить, чтоб показать работодателю и не обосраться со сложностью, как в трудную, так и в очень лёгкую сторону.
На вакансиях разные библиотеки требуют и только разбрасываешься на всё подряд, нихуя толком не сделав.
Как производить поиск в коде на гитлаб? У меня вкладки "Code" вообще нет. Все перетыкал, ничего не получается. Вот в гитхабе по умолчанию отличный поиск.
Помогите, пожалуйста. Есть пикрилейтед тег <img>. Я уже записал его в виде объекта selenium: element = driver.find_element_by_xpath('//captcha//img') Так вот как теперь взять текст поля data-ng-src, раскодировать base64 и записать это дерьмо в картинку на диск?
подскажите пжста, если есть в открытом доступе гугл ексель табличка на чтение, можно ли с помощью питона получать значения ячеек, не подключая сервисный аккаунт с ключом доступа?
>>2285844 Мне не требуется двачевская. Я привёл пик капчи без обработки. pytesseract обсирается с ней. Возможно необходимо как-то картинку подготовить, хз
>>2285634 Если делаешь что-то на питоне, то в основном попросят за веб и бекенд. Попробуй написать что-нибудь на веб фреймворках типа джанге, фастапи, ботле или ещё что-нибудь. Освой разные субд и орм к ним. Разберись с деплоем и пр. Короче, займись вебом и посмотри как он работает, авторизация, токены, вот жто всё. Подключись к какому-нибудь халявному апи, типа дискорда или хз, и взаимодействуй с ним. Короче, развлекайся.
>>2285634 Забей на библиотеки. На собесах никто не будет требовать их знание. В общем-то от начиная с синьера и знание питона не обязательно. Ты должен понимать принципы и владеть идеально хоть одним стеком. Любой другой потом осваивается за пару недель.
>>2285954 Сука, как же меня бесят эти дерьмокодеры блять, Сеньёр блять, ты серьёзно? Я на стажировке в MTC банке сервера на note.js поднимал и ебался над приложением мобильным не в вашем ебучем котлине в на чистом java и сука платили 30к в месяц и то после всего я ещё джуниор и в итоге не прошёл стажировку и меня послали. Так что в следующий раз подумай блять перед тем как писать кто-то и не лезь туда куда не знаешь, начни с паскаля это всё что тееб пока светит, а лучше учи основы ассемблера, ибо после него вся дурь выбивается и ты осознаёшь себя богом этого мира
>>2286344 Нахуй нужен ассемблер, мне его знания вообще не пригодились в вебе. Писал код для плк сименса в нефтянке, и то, хз где применить его опыт здесь. Байты считать? Какие? Их тут нет.
Что реально полезно это общая дисциплина написания кода. Писать так чтоб работало с первого раза, замечать возможные ошибки уже на этапе разработки. Пишешь класс 100-200 строк и он работает сразу. Вот чего не хватает многим.
Привет, двач. Привет, анон. Боюсь обосраться с первым ЯП, поэтому, если нет возражений -- уточню здесь. Вопрос такой: Стоит ли дрочить веб, неужели условные сайтики, магазины всё ещё пилятся? Я к тому, что даже мой батя в своё время за пару недель запилил себе сайт в 00-х, хотя за компом-то почти не сидел. Ещё я слышал некоторые гадости о питоне, в частности о том что он слишком прост и не так хорош, как другие яп. Возможно, злые языки, но настораживает. Хватит ли полутора лет обучения по 2-3 часа в день на то, чтобы начать зарабатывать какие-то копейки?
>>2286544 Я бы сказал так - знать веб на питоне пригодится, но планировать зарабатывать именно им это несколько перебор, хотя и возможно. В принципе, после хорошего раскуривания питона ничего тебе не мешает идти куда-то дальше за деньгами по актуальной обстановке. Полтора года вполне норм, если ты не дурачок и не забъешь, тут сложно судить.
Где по большей части используется питон, кроме как в вебе? И вообще, стоит ли идти в веб с этими жабаскриптами и прочим, или на питоне можно пилить что-то интересное и полезное?
https://ideone.com/vSDoPd Зацените какая хуйня строится. Рост времени для grid_taveller(i, i) есть O(i^2), как я и ожидал, но сама форма графика время/(i^2) странная. Почему так?
>>2286561 >>2286613 Питон, насколько мне известно, довольно гибкий язык, но можно ли на нём делать какие-то большие проекты? И он, как я слышал, не так часто используется в этом вашем погромировании, но просто используется везде, где нужно запилить скрипт на коленке. Это правда?
>>2286621 Думаешь, стоит идти в веб? Какие шансы у вкатуна за полтора года получить достаточно знаний на джуна и пойти работать? Чем вообще занимаются в вебе кроме создания и оформления сайтов, анон?
>>2286617 upd. Эти странные линии это похоже логарифмы, а асимптотика квадратична. Не могу понять откуда эти линии появились и почему они образуют такой рисунок
>>2286628 >Думаешь, стоит идти в веб? Какие шансы у вкатуна за полтора года получить достаточно знаний на джуна и пойти работать? За полтора года изи
>Чем вообще занимаются в вебе кроме создания и оформления сайтов, анон? Веб это не только сайты, в больших проектах он перетекает в обработку больших массивов данных с соответсвтующим стеком больше похожим на энтерпрайз. В моем случае это кафка, кролик, кликхаус и способы работы с распределенными системами.
>>2286628 >можно ли на нём делать какие-то большие проекты? И он, как я слышал, не так часто используется в этом вашем погромировании Чел... не слушай этих пердунов. Они тебе ещё щас скажут, что он медленный и прочую ахинею. Много больших и достойных проектов на пайтоне живёт и развивается, названия не буду говорить, если захочешь сам найдёшь.
>>2286656 >Что помимо питона надо знать для начала? Главное в айти это попасть под струю и наработать год-два опыта. Поэтому смотришь вакансии в своем городе и дрочишь стек указанный в них, желательно, что бы там была какая-нибудь технология для распределенных сервисов типа тех же брокеров сообщений, что бы катится дальше, а не утонуть джанге хотя я сам начинал с нее, но там к ней подключили микросервисы и в дальшейнем этот опыт помог мне перекатится на следующую работу. Потом сам все поймешь.
Подскажите, может уже было такое В мейне есть вызов двух асинхронных методов. Один из них имеет вечный цикл и в глубине wait(...), который блокирует все остальное, пока не дождется ответа. Как вызвать этот метод, чтоб не блокировать выполнение остального кода? А то доходит до этого места и все, пиздец, пока данные не придут - стоит.Через asyncio.create_task пробовал, но тот валится, если вдруг не дождется сообщения [T:MainThread] ERROR:asyncio: Task was destroyed but it is pending!
>>2286544 Веб делится на фронт и бек. Питон в вебе это преимущественно бек. Фронт делают на нём извращенцы. Язык своеобразен, как и все остальные. Так что это не аргумент. Питон проще, но медленней. Го быстрей, но синтаксически нагроможден.
>>2286628 Посмотри на крупные веб-фреймворки питона и как давно они появились. Аргументы, про то что питон это скрипты на коленке - тебе промыли мозги пхпетухи и goвноеды.
Есть какие-нибудь инструменты для ограничения количества запросов на ресурс? Ratelimit штука удобная, но чёт я сомневаюсь что он сможет работать в параллельных запросах с разными инстансами
Блять, я раньше с такими проблемами не сталкивался, жопа уже горит, хелпаните с проблемой, что может быть не так?
FastAPI+ClickHouse стек venv активирован
Пытаюсь запустить фастапи с uvicorn, пишет что не видит clickhouse модуль, как это так спросил я, ведь в venv у меня он есть, Программа работает если запускать её с пайчарма, но uvicorn не видит, хотя раньше в других проектах видело. Опять же, все запускается все ок с пайчарма, но при uvicorn пишет -
ModuleNotFoundError: No module named 'clickhouse_driver'
И я попробовал установить clickhouse глобально - все заработало, но какого хуя??? Почему в локалке его не видит, он же сука лежит у меня прямо в венв там где лежит fastapi, а его видит, ну я блять рили не понимаю
>>2287240 Ювикорном надо запускать только фастапи, а кликхаус отдельно. Это ж бд, его тем более в докере запускать нельзя, у него свой роутер должен быть свой
>>2287261 Я не знаю что я сделал, но я запустил. Как это в докере нельзя запускать? Да ну, у меня как раз стоит задача обернуть все это в докер,энивей попробую
>>2287284 Блядь, заменял значения, чтобы не задиванониться, и закономерно обосрался. В общем вопрос о том, как избежать IndexError при итерированию по списку, когда в итерации у меня участвует n-ный и n+1-й элемент списка.
>>2287279 Постоянно вижу, что вместо пользования лаконичного метода .json() сразу на ответе, люди импортят либу жсона, достают текст из ответа и скармливают его лоадсу. В чем профиты от такого, у вас кабан за строчки кода платит?
А как в питоне при вызове фукнции подставить в аргумент этой функции кучу переменных из другого файла? Я конечно могу запилить список всех переменных и передать его в качестве аргумента, но вдруг можно это циклом сделать как-то.
>>2287328 А у меня там дикт не получится сделать. Короче говоря, у меня есть файл с кучей строк, которые мне надо прохешировать: string1 = "gfdgsdhdfsh" string2 = "bvcxbrfbdfb" и т.д.
Соответственно, в другом файле лежит функция хеширования, которая по моей задумке будет получать в качестве аргумента вот эти вот string1, string2, ... Файл со строками статический, но там просто их дохуя, и не хочется ручками делать ctrl+c ctrl+v.
Как вызвать функцию в конкретное очень точное время? Например нужно сделать пост ровно в 11:11 и не миллисекундой раньше. Неужели делать тысячу запросов в секунду с проверкой?
>>2287356 Ну, либо это будет лист, в любом случае сделать из него дикт или лист несложно. А лучше сделать генератор на файл, чтоб не читать его целиком
У меня минискрипт парсер: каждую минуту делаю запрос на сервер и записываю ответ в одну и ту же переменную. Оперативка за пару часов забивается полностью. Гуглил, везде пишут, что питон сам собирает мусор и никакие гэрбэдж коллекторы не нужно. Охуенно собирает.
> Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Поясните за pypy, судя по бенчмаркам здесь https://github.com/kostya/benchmarks он почти всегда быстрее(в 10 раз) обычного питона, при этом памяти особо больше не жрет, в чем подвох? В проде его используют, если да то почему не все ещё перекатились на него?
>>2287990 Если нужно что-то быстрее питона, зачем выбирать что-то из среды питона, почему тот же го не использовать? В эпоху микросервисов вообще нет никаких сложностей делать разные части проекта на разных языках.
>>2287990 Теоретически сообщество Python может повсеместно принять PyPy, PyPy может стать эталонной реализацией, а CPython может быть прекращен. Тем не менее, PyPy имеет свои недостатки:
CPython легко интегрируется с модулями Python, написанными на C, и это традиционно способ, которым приложения Python выполняют задачи, интенсивно использующие ЦП (см., Например, проект SciPy). Сам этап компиляции PyPy JIT стоит процессорного времени - только благодаря повторному запуску скомпилированного кода он становится быстрее в целом. Это означает, что время запуска может быть выше, и, следовательно, PyPy не обязательно эффективен для выполнения связующего кода или тривиальных сценариев. Поведение PyPy и CPython не одинаково во всех отношениях, особенно когда речь идет о «деталях реализации» (поведение, которое не определено языком, но все еще важно на практическом уровне). CPython работает на большем количестве архитектур, чем PyPy, и был успешно адаптирован для работы во встроенных архитектурах способами, которые могут быть непрактичными для PyPy. Схема подсчета ссылок CPython для управления памятью, вероятно, оказывает более предсказуемое влияние на производительность, чем различные системы GC PyPy, хотя это не обязательно верно для всех стратегий «чистого GC». PyPy еще не полностью поддерживает Python 3.x, хотя это активный рабочий элемент.
Ко мне на сервис приходят вебхуки из другой апи, типа сообщений в мессенджере. Они иногда приходят не в том порядке, если смотреть на timestamp, соответственно, обрабатываются они тоже не так как надо. Какими способами можно упорядочить эти вебхуки? Сервер на gunicorn с кучей рабочих, так что это ещё сильнее усложняет ситуацию. Lock не работает почему-то, несмотря на то что включён preload.
>>2288163 Я так и делаю. У меня очередь sqs fifo настроена и перед обработкой я отсылаю их туда. Нужна именно sqs fifo, тк они умеют делать группы внутри очереди с извлечением элементов по одному. Но вытаскивать их надо по минимальному timestamp, а не fifo.
Сейчас думаю, делать задержку перед отправкой в очередь связанной с timestamp сообщения и его фактическим прибытием на сервер. Но чем дальше, тем больше убеждаюсь что это невозможно.
Есть же куча подобных сервисов. Как они делают? Я бы мог написать свой celery и амазоновский sqs, но времени столько нет.
Может кто знает как в джанго обработать кнопки "купить "которые были сгенерированы фором в шаблоне {% for i in fuc %}, в views принимаю post запрос но он рендерит все кнопки, а надо одну конкретную, что делать. На пике ошибка, что get не может принять 2 запроса, а их 2 так как он обрабатывает 2 кнопки
>>2287990 PyPy неофициальный, версии отстают от релизов, и нет полноценной поддержки бинарных библиотек.
То есть если ты хочешь использовать питон с чем-то, что в двоичном виде к питону подключается, но скорее всего будут проблемы. А это довольно обычная история для какого-то научного софта, всяких AI и т.п.
>>2287344 А что делать до этого? У тебя есть опции, или самому тупо подождать нужное время, или использовать модули вроде sched, или использовать функции из asyncio для этого.
Есть урл с джейсоном, конвертируется в словарь, подключается к гугл шитс, и заполняет ключ и значение в ячейки. А нужно чтобы при запуске скрипта, если значение поменялось заполняло в новую ячейку А2, А3, А4.. Как это проще сделать? Проверять на пустую ячейку или pandas numpy использовать?
>>2288190 Так у тебя fifo, а не атрибут timestamp, по нему отрабатывай и присваивай priority. По идее через Rabbitmq shovel можно сделать, а потом qos=N и распределяй по воркерам
>>2288689 > Так у тебя fifo, а не атрибут timestamp Это да, я просто хотел сделать задержку перед тем как отправить в очередь. Fifo нужно для распределения нагрузки по группам от разных чатов. Сообщения мне может присылать бот, между этими вебхуками бывает буквально 10-100 мс. Апи настолько бгмерзское, что иногда первым приходит второе сообщение, а не первое. К примеру, исходный порядок 1-2-3-4-5, а фактически приходит 3-1-5-2-4. А в очередь может уйти вообще 2-1-5-4-1.
Приветик. Делаю задачку с zipfile из "Укус питона" и у меня возник вопрос. Можно ли архивировать каталоги с файлами в них? А то у меня получается архивировать нормально только один конкретный файл, в противном случае я получаю тот же каталог, но без файлов в конце пути.
Я знаю, что через import.os делается все нормально. Просто интересуюсь, где я не так поступаю с zipfile.
>>2288763 Кролик слишком много потребляет, но много умеет, а SQS на то и simple. Тебе нужно какое-то временное хранилище, сортировку, хоть в памяти через массив. Есть же встроенные in-memory хранилища.
>>2288943 А у кролика разве есть что-то для этого?
Реально задача не настолько тривиальная, в том плане, что может быть немерянное количество разных юз-кейсов, и политики принципиально разные нужны в разных случаях.
Слёту, могут быть ситуации, когда какой-то пакет из 1-2-3-4-5 вообще не придёт, либо будет идти слишком должно. Наверное, ты не хочешь ждать, если уже знаешь, что все пакеты пришли. Ещё надо как-то отличать пакеты 1-2-3-4-5 первой серии от пакетов 1-2-3-4-5 второй серии, последующей. И куча всего ещё.
>>2288953 Можно выставить задержку доставки, скажем, плюс 5с к тому timestamp который указан в payload. Если они пришли гораздо позже, что ж, тут уже можно сослаться на ошибку отправителя и доставлять их уже сразу, без задержки.
В целом они доходят до меня довольно быстро, в пределах секунды.
Питонач, расскажи, пожалуйста, или даже поделись опытом, как правильно организовывать юнит-тестирование. Например, есть каталог со скриптами и модулями. Сценарии для pytest сюда же класть? Создавать ли отдельный подкаталог здесь? Или вообще вынести в другое место? Описанные выше скрипты и модули могут содержать тесты? Или код отдельно, проверка отдельно? Ну и посоветуй что почитать, посмотреть. Спасибо.
>>2288985 В общем да, задержка доставки в eta 3-5с в обычную sqs очередь самое простое что можно сделать. Дальше оно уже отправляется в другую очередь fifo. Достава идёт дольше на время задержки, но зато по порядку. В итоге распределение по рабочим сохранилось и нет никаких узких горлышек в виде одного рабочего и тд.
Мне в принципе оба метода подходят, но я где то слышал что функция должна возвращать только один тип, поэтому первый вариант правильнее. Однако второй способ выглядит более подходящим принципу DRY т.к. методы does_thing_exists и get_thing из первого варианта делают почти одно и тоже.
>>2289262 Хз кто это спизданул. Куча стандартных методов возвращает что-то, либо none, если ничего нет. Так что это нормально. Указывать возвращаемый тип явно излишество.
>>2289441 Пчел, ты сравниваешь бек на джанге и ГОвне, хотя у них совершенно разные ниши. Аналогом на пистоне будет всякое асинхронное говно, которое юзают дохуя крупных компаний, оно проникло даже в банки. Всякие сберы, точки и ВТБ срут мне на почту когда я открываю резюме.
>>2289262 Второй лучше. К тому же сразу видно, что метод может вернуть None. Разные типы возвращать плохо, но None можно считать просто указанием на отсутствие значения.
time_period = 10 # time period for searching 120 minutes
from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
swis = xxxClient("xxx", sys.argv[1], sys.argv[2])
Q = """SELECT TimeGeneratedUtc, EventCode, ComputerName, SourceName, Message FROM XXX.APM.WindowsEvent where EventCode in (4740) and MinuteDiff(TimeGeneratedUtc, GetDate()) < {} ORDER BY TimeGeneratedUtc DESC""".format(time_period) results = swis.query(Q)
Мне прям пиздец как плохо становится, когда на очередном совещание собираются челики и начинают обсуждать твой код, все находят в нем ошибки, все блять душат сука всякой хуйнй. Не знаю, может я морально слаб, но после такого желания работать нет.
Господа, есть у кого-нибудь слитые курсы от GeekUniversity (они же GeekBrains), Skillbox, Нетологии? В зависимости от того что есть у вас, возможен обмен на то что есть у меня. А у меня есть разные курсы от этих школ
Можно ли как-то получить содержание открытой страницы браузера (DOM) из внешней python-программы? Хочу чтобы при наведении мышкой на определенный элемент, внешняя программа совершала действия и выводила инфу например в файл или в своё окно.
>>2290772 Зачем мне консоль? Мне нужно из другой программы получить доступ к текущему состоянию страницы. Я хочу добавить дополнительный интерактив без расширений браузера и хочу знать возможно ли это в принципе.
>>2290787 >Я хочу добавить дополнительный интерактив без расширений браузера Звучит как "хочешуь удалить гланды без открывания рта". Ну то есть теоретически можно сделать это через жопу поднять вебдрайвер, постоянно искать твой элемент с ховер псевдоклассом и посылать жиэс на выполнение на странице... Но нахуя, а главное - зачем?
Если у тебя прямо внешняя программа и одним браузерным жиэсом не обойтись, то почему не сделать нормально - инжектить расширением скрипт, который будет вешать события на странице и ажаксить в твое приложение все, что душе угодно? Один хрен ведь с жиэсом дело иметь придется, раз речь про интерактив на странице.
>>2290804 Я просто хотел уточнить возможность в принципе. Если это невозможно из-за ограничений безопасности - так и пишите. >>2290805 Тут все равно будут сложности с обновлением скрипта после обновления страницы, и.пр. Моей первой идеей было писать расширение, но не хочется делать это для двух браузеров.
>>2290819 >сложности с обновлением скрипта после обновления страницы Никаких сложностей пушить скрипт в бесконечнлм цикле нет. С проверкой на повторное включение офк. Это не отменяет ебанутость подхода, конечно.
>>2290727 Не очень понятно. Ты можешь в браузере пустить в фоне какой-то скрипт, который будет в фоне отслеживать разные события и отправлять соответствующие сообщения в питон-программу.
Если же ты хочешь мониторить действия на другой странице, то так просто не получится, даже со всеми этими селениумами куча нюансов есть и там всё не так просто, как хотелось бы. Но смотреть, видимо, надо куда-то в этом направлении.
>>2290179 Господин, сейчас очень много изначально открытых материалов. Хороший тон пользоваться открытыми знаниями, которые специально готовили для таких, как ты, а не воровать чужое.
Товарищи знатоки, Приветствую вас! У меня образовался такой вопросик, в микро задачке суть которой, залогиниться на страничке али для продавцов, через селениум. В общем, захожу на страничку , ввожу данные, жмакаю апплай, появляется микро капча , где надо ползунок двинуть до конца, прохожу ее в ручную и оно всегда выдает ошибку (скрин прикрепил) и снизу пишет "Что-то пошло не так. Обновите страницу и попробуйте ещё раз(error:qALqL8)" Ошибка не гуглиться, нормальной инфы по этому поводу я не нашел , но может я что то не знаю и по этому не могу нормально загуглить. Может кто подсказать, почему она появляется это ошибка и как ее обойти. Так же пробовал через селениум в админку своего сайта заходить, все логинется на WP. Если шо не веб и не пайтон программист, просто тут такая задача выпала. Буду очень благодарен добрым людям.
>>2290783 У тебя все написано что не так. Смотри в конекшене, куда он стучится и что приходит, и далее по шагам до места где у тебя нихуя, а должно быть что-то.
>>2291949 Тебе не нужны хитрые курсы чтобы выучить питон. Достаточно почитать один учебник и пройти курс по алгоритмам для практики (делая задания). На coursera есть дохуя курсов, в том числе и по алгоритмам от самого Седжвика. На нетологии/хуелогии нет никакого сакрального знания. Тебе все равно придется въебывать, экспериментировать с языков и делать практику чтобы усвоить материал. Нет волшебного видео, которое бы как в матрице загрузило бы питон тебе в мозг.
>>2292211 Пробовал HTML2Text, но он захватывает гиперссылку, хотя в настройках ставлю игнорировать ссылки, то есть по идее все что в теге "<a" должно пропускаться.
Так, драсте. Я совсем нулёвый ньюфаг в 27 то годиков, меня начальник моего КБ заставил учить питон и сам же читает мне какие-никакие курсы. Первое задание я вроде осилил, по крайней мере не хочу вас мучить им - написать программу для решения квадратных уравнений, я это вроде сделал и хочу проверить как всё работает (я учил в универе си, работаю с APDL, так что такая задача мне по силам, я её собственно, уже решил). Но есть очень дебильный вопрос - как поставить питон? Вот прям в гугле вбить и ставить с сайта? Если поясните, могу даже показать как я это сделал, хоть посмеётесь.
>>2292225 Я скачал и поставил. Я не знал, что ставить, поставил 3.10 AMD64, ну видимо, это то, что нужно. Теперь буду разбираться в ньюфажных проблемах - когда я кодил на сях лаба42.cpp, там был редактор, а тут чёт вообще никак. Ну я уже привык в notepad++ работать. Линукс я не буду ставить - я не умею им пользоваться, это сложно.
Какой фреймворк изучать для бэка? Джанга вроде уже не нужна и подходит только для пердиксов. Слышал про фастапи, на нем можно создать веб-аппликейшен с БД и логикой и потом еще подключить js-фрейморк для красивого интерфейса? Или это просто хуйня для создания апих?
>>2292229 Vscode поставь, разберись что да как там, подключись к виртуалке через ssh и всё. Там все пакеты и пр легко настраиваются и устанавливаются, в командной строке сложнее pip install ничего не будет для тебя. Многие вещи на винде просто не работают, либо работают криво. Если ты будешь делать скрипты на пару минут, то можно и на винде делать.
>>2292230 Все. Серьезно. Изучи все. Без джанги тоже особо далеко не поедешь, особенно когда тебя поставят перед фактом делать работу на конкретном фреймворке. У джанги всё из коробки. На фастапи ебля. Да, она чуть быстре, но и джангу можно на asgi сервера запустить и будет работать вполне быстро, ненамного уступая фастапи. К тому же она понемногу движется в сторону асинхронности, что не может не радовать.
>>2292231 > Если ты будешь делать скрипты на пару минут, то можно и на винде делать. Я ещё не знаю, чем я буду заниматься, скорее всего какие-то скрипты писать для teamcenter, если ты вообще про такое слышал. Может быть, нас пересадят с ансиса на что-то другое и там нужно будет код писать на питоне, я не знаю пока. На работе у меня точно есть только винда и ноутпад++ и ничего не будет другого, поэтому даже не вижу смысла пробовать.
>>2292232 Пасяб. А поднимать приложуху на чем? Слышал про gunicorn(пердикс-вариант) и на докере(для людей, которые еще не бегают лечить простатит). Вопрос по докеру: Я могу так сделать: 1. Я могу арендовать vps 2. Залить туда контейнер в докере 3. Запустить докер, чтобы он обрабатывал запросы 4. На впс купить белый ип, выделить порт 5. Купить доменное имя для vps
>>2292221 Ладно, сделал что хотели. Но у меня тупой вопрос ещё. Если вопрос зачем мне sys, то я им выхожу, чтоб не считать дискриминант с делением на ноль.
В IDLE Shell код нормально работает, запускается вроде всё даже ничего. Но если запустить просто сам файл питона, то после ввода параметров в "чёрном" окошке всё закрывается сразу. Это так и надо?
>>2292235 У тебя какая-то неполная, картина. "Пердикс" вариант - стандарт.
Докер это просто контейнер, установщик всего говна который в нем прописан. Запрос сначала поступает на прокси типа nginx, куда сертификаты ещё прикручиваются, как правило. Потом это идёт на сам инстанс сервера тот же gunicorn для wsgi, либо asgi с uvicorn воркерами, который уже запускает и работает с твоим приложением. Тут многоуровневая система, чтоб запустить с одной кнопки, надо настроить её.
>>2292243 На сях я умудрялся писать давно и в основном лабы. А по работе я писал APDL скрипты, они тупые совсем. Ну так серьёзно, ответь и я пойду спать, завтра выписываться с больничного.
>>2292244 Во всяком случае, в проде используется именно это. Контейнеры запускает, обновляет и тп кто-то типа дженкинса, который подтягивает код с репозитория. Например, решил ты обновить свой говнокод, запушил в репу, а дженкинс увидит это, остановит, обновит и перезапустит контейнер
>>2292359 Речь была про uvicorn, а не gunicorn. Ну ок. 1) Простая конфигурация,одностраничное описание. 2) Лёгкое обновление конфигурации 3) Мультиязычность, тебе не надо ебаться с различными WSGI
>>2292352 Нет там воркеры только uvicorn. Он запускается так же как и обычный gunicorn только с указанием асинхронного воркера типа gunicorn ....asgi.application -k uvicorn.workers.UvicornWorker.
>>2292409 Так а нахрена? Получается ты когфиг каждый раз будешь менять в указании команды запуска, ну или в env файле. Запуск из кода? Кривое решение, а тут у тебя независимое решение с лаконичными настройками, самое то для контейнера
Собственно, функции сверху отвечают за проверку сайта В GUI я засунул кнопку, которая запускает функцию. Всё нормально, она чекает сайт и пишет мне про новые созданные темы. А вот как этот процесс теперь остановить? Сам по себе он не остановится, он бесконечен.
Я попытался вместо Threading использовать Мультипроцессинг, но он не хочет запускать процесс при одной кнопке, и terminate() по нажатию другой
Может как то через global Stop решить проблему, правда я так понял глобальные переменные это не очень хорошо
>>2292587 Да, ребилдить, потому что как ты иначе перезапустишь контейнер когда дженкинс подтянет репу. Я ж не сам это делаю, всё что я делаю сам - пуш в репу. Всё. Грейсфул шатдаун для того и нужны, если ты об этом. Или ты прямо на ходу без ребилда апдейты ставишь, я не понимаю. Или ты дефолтные настройки всегда используешь для проектов? Не понимаю к чему это вот всё.
Есть устроившиеся питонисты в треде? Расскажите кем устроились, а то синтаксис + ООП + функциональщину изучил (остались алгоритмы и структуры данных, тестики немного), а куда дальше смотреть - хз. Мат базы нет, так что дата сатанизм и машоб сразу не про меня.
>>2293028 Джанго + DRF пидором иди, очевидно. Только сначала докер выучи докер композ, SQL хотя бы джойны групбаи, и гит чтоб не сильно обосраться с конфликтами.
Заебался уже. Создал папку на диске D. Создал в ней .venv. Активировал скрипт activate. В консоли теперь пишется (.venv) (словно я в виртуальном окужении).
Запускаю pip install matplotlib, он выводит что такой пакет уже есть на диск C.
Requirement already satisfied: numpy>=1.17 in c:\users... (глобал каталог)
ЧЗХ, если мне он не на диске C нужен а чтобы он в новую виртуалку встал?
Почему эта сучара лезет в глобал проверять список пакетов когда я ей по питонски блядь говорю поставь сука пакет в новую виртуалку?
>>2293355 >>2293352 Разобрался вроде, походу это VSCode где-то пути от старого проекта подцепил. Через обычную шелл консоль всё нормально ставилось, а через внутреннюю вскодовксую хуёво.
Нуко анончики подскажите, как лучше. Есть около 1000 объектов, которые должны обновлять свое состояние раз в некоторое время, выполняя долгий и сложный асинхронный запрос по сети, одни реже, другие чаще - от раза в 10 сек, до раза в 50 минут (это все с использованием asyncio) Можно написать цикл, который будет эти объекты перебирать и запускать им обновление когда надо, это будет по сути одной задачей. А можно каждому объекту создать по задаче, которая будет дергать обновление сама. В первом случае код получается сложнее, во втором в целом изящнее, но может в будущем потребоваться костыль. Нет же ничего плохого в том, что бы запускать сотни и тысячи корутин?
>>2285619 (OP) >>2285619 (OP) Хелп ребятки змеяки Есть bytes b'{"ID":255,"title":"\xf0\xcf\xc5\xc8\xc1\xd4\xd8 \xce\xc1 \xc2\xc1\xda\xd5","description":"\xf3\xdf\xc5\xd3\xd4\xd8 \xd7\xd3\xc5 \xd0\xd2\xc9\xd0\xc1\xd3\xd9 \xce \xc2\xc1\xda\xc5","project_name":"\xf3 \xc2\xcf\xc7\xcf\xcd"}\r\n' Я знаю что в нём содержится строка {"ID":255,"title":"Поехать на базу","description":"Съесть все припасы н базе","project_name":"С богом"} Как её можно конвертировать?
>>2290155 Двачую. Работаю на проекте без ревью и нихуя не понимаю, нормально я делаю или нет. Я сам очень тяжело принимаю критику, но понимаю, что без неё здесь никуда
Парни, вкатывальщик в треде, не бейте, лучше обоссыте. Я не знаю, как здесь принято, может я не по адресу, но тогда пните по адресу пож-та.
Так вот, я на ютьюбе почекал базовый самый вводный курс питона - про переменные, циклы, кондишоны, функции, классы, модули и прочее такое базовое.
В этом курсе было очень важная деталь - после каждого небольшого тематического урока чел предлагал решить упражнение, а потом показывал решение.
Именно на таких упражнениях я больше всего и получал понимание, как делал все сам и потом сверялся с его логикой.
Вопрос - знаете ли на ютьюбе или где-то еще подобный курс с теорией, упражнениями на нее и разбором упражнений, но на темы чуть попродвинутее, но все равно базовые. Типа там генераторов каких-нить, лямбда функций, ну вы поняли, что-то немножко выше базового, но все равно весьма базовое.
Всем привет, я ньюфаг, изучаю тут питон, иногда на работе, и использую в общем google cloud shell, но в нем питон 3,7. И я не могу понять, его вообще можно там заапгрейдить или нет? Чет в гугле как-то непонятно.
Блин, ну или скажите, как сделать так чтоб поэтри создал виртуальное окружение в проекте, если оно уже создано не в проекте, а в какой-то залупе? Я просто на рабочем компе забыл настроить virtualenvs.in-project и он выводит эту хуйню. Ну сейчас я уже настроил, но один хрен то же самое. Поэтому я и хотел в облаке писать, потому что тут постоянно какое-то говно. Плюс ещё нихуя в PATH не добавляется.
А в облаке я не могу установить всё потому что там питон не 3,8. В итоге уже целый день пержу в стул, жопа горит. Постоянно трачу 90% времени на настраивание всякого говна.
Как загрузить большой файл в хранилище bitrix24 через либу requests? метод disk_storage_uploadfile ключ параметра fileContent open('largefile.txt', rb) сервер отклоняет запрос
>>2294020 Я чет снес всю папку .poetry думал она снова появится если переустановить пакет, а чет не появилась)) Ошибка никуда не делась, но папки, где лежит этот файл, который надо редактировать, нет, лел.
Прикинте у нас в команде есть чувак, который сипайтон в гдб дэюажит. Читаю его инвестигейт бага. А там такое. Он в кишки интрпретатора залес. Питоновские фреймы вынул. Увидел, что код отправил успешный хттп запрос лоадбалансеру и не смог отправить второй. Нашёл, что в рантайме завис сокет, через который второй запрос шёл. Посмтрле его файловый дискриптер потом уже без гдб стандартными средствами линукса глянул с кем этот сокет сейчас обащается. А там реально повисший эстэблишт сокет был. Он пошёл в этот лоадабалсен проверять почему он с сокетом не взаимодействует. А в этом лоадабансере на входящем порту, который был указа у клиента нет открытого тсп соединения. Он потом начал смотреть шурналы и логи этиго лоадбалансера на хосте. А ещё забыл расказать, что он перед этим выдашил какую-то структуру из памяти сипайтона, где был таймштамп когда клиент начала по этому сокеду разговаривать. Вот это время он нашёл в логах. Увидел, что активная амфора лоадбалансера падала и виртуальный айпи времено переключался на запасную амфору, а потом как создалась новая мастер амфора, то айпишник снова вернулся на новый мастер. И в это время питоновский процесс клиента общался по хттп через этот лоад балансер и сокет остался, а айпишн ик поменялся и новая амфора не знала про это открытое соединение, а стара упала не разорва его. Вот такой крутой инвестигейт чувак провёл. Я бы уже обострался на этапе выяснить точное время хттп запроса если его в логах нет. А он молодец всё дебагером достал. А вы так умеете?
>>2294238 Этот процесс на ноде был полгода запущен и нельзя его убивать т.к. ha подумает, что с нодой что не так и переназначит её роли на другие ноды и возможно ребутнёт её.
>>2294250 Точно больше 5к евро (это минималка была для релокейта, который он в прошлом году получил), но на сколько больше не знаю. Может на пару сотен может на несколько тысяч
Хожу в БД (mysql) и выкачиваю оттуда данные, потом кладу их в ксв. Все бы ничего, но в некоторых полях извлекаемых таблиц лежат жсоны с переносом на новую строку или просто многостроковые тексты с переносом строки. В результате при записи данных в ксв получается смещение записей на одну влево. Как-то с этим можно побороться простым способом, или надо городить обработчики, которые будут вырезать \n\n из получаемых данных?
На скринах внешний вид в базе и после записи в csv.
>>2294297 Кавычки, как я понимаю, добавляются уже на стадии обработки питоном, т.к. в базе все значения лежат без кавычек. Сейчас попробовал поиграться с параметрами escapechar и csv.QUOTE_NONE, но безрезультатно. В какую сторону еще покопать?
>>2294332 А, это потому что я обосрался, сорри. Вот так там сделан переход на новую строку: We've found a new treasure!\r\n\r\n%param1% Treasure Hunters joined the search and helped us find
Я хз, как убрать \r\n\r\n. Можно эту последовательность как-то заэкранировать от питона?
>>2294408 Питону-то похуй, это эксель разрывает строки, если больше одного ньюлайна, судя по всему. Цсв вообще довольно всратый формат в плане стандартизации.
>>2294465 Хотя не, вру, работает такой вариант. Возможно у тебя что-то другое ломает формат. Убирай последовательно куски от этого значения и смотри. https://ideone.com/uUTXCt
>>2293670 А можно сделать одну периодическую задачу которая будет создавать отдельнын задачи для остальных. Вообще, периодическое обновление сам по себе костыль. Привяжи их к какому-нибудь методу и всё. Это сейчас оно выглядит логичным, а в будущем просто наебнется.
>>2293731 Так это тоже неплохо. Отсутсвие ревью это, как правило, говорит о том что ты будешь поддерживать свой проект и вспоминать самого себя добрым словом
>>2294245 Для сервиса который-нельзя-ребутать надо логирование для каждой строчки делать. Не придётся потом сидеть и ядро линукса на транзисторы разбирать. Любой хороший спец решит задачу максимально простым способом, а не реверсинжинирингом
Касаемо Qt. Как же бесит, что для каждого чиха я должен импортировать хуеву тучу классов, которые часто являются лишь обёртками над перечислениями. Вместо того, чтобы написать widget.setSizePolicy('fixed', 'expanding') я должен писать в импортах: from PySide6.QtWidgets import QSizePolicy и потом написать: widget.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expandinf)) Ну какого хуя
>>2294535 В дебаг режиме там есть трейс логи. Но мы его только в тестах испольщуем т.к. там за лень несколько гигов сжатых zst логов. Тут надо сложный ротейт делать чтобы у клиентов место на дисках не кончилось. Может в бэклоге и есть на это таска, но пока клиенты на инфо логах сидят.
Почаны, у меня немного наркоманский вопрос, но все же.
Как в однострочном решении написать так, чтобы строка, которая поступает на инпут, использовалась два раза? Видел такое решение через лямбда-функции, но не уверен.
Грубо говоря там чувак в одной строке в 2 местах в коде использовал введенную строку, и все это в рамках однострочника (решение в одну строку).
Аноны, поясните за pytest следующее: Что конкретно нужно покрывать тестами в веб-приложении типа CRUD? Классы и функции из views? И какого плана должны быть тесты, что-то типа проверки http запроса - assert response_code == 200 ?
Я точно знаю что такую задачу можно решить в 1 строку, без занесения инпута в отдельную переменную. Вроде бы видел как такое решали через лямбда-функции. Может кто-то подскажет?
>>2293088 Ну да если пердолишь свою джангу под стол, то и композ и не нужен. Да и докер не нужен, пусть кому интересно сами пердолятся с установкой зависимостей.
>>2294624 http-коды да. Если что-то меняется в базе запросом, то после теста запроса лезешь в базу и чекаешь изменения. Если загружается файл, то лезешь в директорию и чекаешь добавился ли он и.т.д.
Я сейчас работаю на фрилансе, зарабатываю 1к баксов +-, джун.
Проблема в том, что мне бы хотелось нарабатывать опыт в компаниях, но мне никто не предлагает 1000+ баксов, а смысл мне ниже идти, если я на фрилансе работаю по 3-4 часа в день и имею эти же 1000, а на работе за 500 баксов 8 часов, ещё наверно и овертайм будет, нахуя мне такая работа нужна.
Вопрос в том, стоит ли ставить себе приставку мидл и говорить типо - У меня и так опыт с фриланса,берите.
Я пробовал на джуна заявки подавать с требованием к зп минимум 1000 баксов, но меня все слали в 1 место. Не знаю даже что делать.
Проблема фриланса в том, что я не уверен что развиваюсь, вроде постепенно больше клиентов = больше заказов = больше денег, но таски одни и те же.
>>2294962 >Проблема фриланса в том, что я не уверен что развиваюсь Вот видишь, ты сам ответил на свой вопрос. Опыт тоже стоит денег - плати за него, как подмастерья мастерам в гильдиях.
Делаю сайт,PyCharm,Django.Хочу указать пути для статических файлов. if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) Выдаёт ошибку: 'module' object is not callable Гуглил,пришёл к выводу,что проблема в том,что папка,в которой лежат настройки,называется project,как и сам проект.Так ли это,и если так,то что делать?Если нет,то в чём проблема?
Не понимаю, объясните пожалуйста На кодварсе задача, суть в том, что дается число и нужно вернуть число, но с цифрами в порядке убывания. Решил с таким алгоритмом: перевод в строку - строка в массив - массив в целочисленный масив - сортировка - преобразование в число.
Но нашел такое решение: int("".join(sorted(str(num), reverse=True)))
Не могу понять что тут происходит, ибо функция sorted по сути же не работает со строками, и тут не используется .split() и нет перевода в массив.
>>2295037 В джанге надо миграцию для статикфайлов делать отдельную. Вообще, статикфайлы всегда были головной болью в проде. Кучу разрешений делать чтоб просто их увидеть, про жс скрипты вообще молчу.
>>2295246 А, ебать, я понял. И .join() там юзается как раз из-за этого >А сортед сортирует любую итераблю и создает новый отсортированный список из нее.
>>2295266 И типа если мне надо будет отсортировать строку, то я бузу юзать метод join с учетом того, что мне вернется новый список. Хз как верна эта логика, но хоть как-то понятно
Анон, сейчас только начал вкатываться в веб-разработку на фласке (до этого на питоне писал только автоматизации и аналитику), не совсем понимаю - а в чем разница между использованием фласка с джинджей и хтмл-темплейтами и беком на питоне + фронтом на жс? Исходя из того, что я понял, фласк вроде как позволяет оживить страницу наравне с жс, или нет?
>>2295406 Хм. Интуиция подсказывает, что генерация на беке безопаснее, но медленнее. А как вообще понять, какой подход использовать? И есть ли такие ситуации, когда обязательно нужен JS, или в принципе фласк полностью может его заменить?
>>2295395 Либо на бэке ты генеришь готовый статичный хтмл, соответственно будет тратиться время клиентом (браузером клиента) на обработку этого хтмл (построения дома), если у тебя там какая-нить таблица на тысячи строк. Вся динамика через обновление страницы. Либо на бэке ты генеришь жсоны с данными через апи, а на фронте с помощью якс/фетч долбишься в апи и отрисовываешь эти данные как тебе надо. Вся динамика на джаваскрипте без обновления страницы.
Аноны, есть сервер на 3м Джанго, в респонсе нужно установить куки. Но почему-то параметры samesite="None" и secure=True оно просто игнорирует, кто-нибудь сталкивался с этим? Я знаю что был баг, где нельзя было поставить samesite None, но версия джанго где эта хуйня уже пофикшена, но при этом в респонсе уже приходит Set-Cookie без этих параметров.
Имеет ли смысл начинать вкатываться в ООП, если изучал только базовые типы данных и операции над ними и функциональщину? Я проебал темы про декораторы, генераторы, вот это вот все. Генераторы еще более-менее понятны, а декораторы вообще хуй знает, что такое.
>>2295611 а че там понимать в декораторах? Я не питонист ни разу, но достаточно посмотреть на пример кода с декоратором чтобы понять что он оборачивает собой вызов функции и что то делает либо с ее результатом, либо до ее выполнения (можно как middleware использовать, например, для проверки допустимости вызова функции)
>>2295395 Нихуя он не позволяет оживлять, потому что шаблонные языки, которые просто нахуяривают синтаксис поверх уёбищного синтаксиса html - говно. Темплейты позволяют делать сервер-сайд рендер, который очень важен для SEO. Но на этом их преимущества заканчиваются. Зато есть ворох проблем, в виде отсутствия тулинга (большинство теймплейтов по сути один сплошной строчный литерал), засирания контекста (что просто охуенно заходит с предыдущим пунктом), засиранием ответственности (чтобы подредактировать шаблон тебе нужно знать весь серверно-клиентский стэк проекта). В конечном счёте это выливается в ебическую привязку вротэнд стэка к серверу, а значит никаких тебе соевых фреймворков в будущем. Самый запущенный пример - рубирельсы со своими шаблонами, которые требуют знания жиквери, в 2022-м году. Так что если вкатун, то сразу раздели сервер и клиент на отдельные папки, которые связаны разве что общим конфигом.
>>2295611 Генератор - это функция, не связанная с ООП. Декоратор - это один из шаблонов проектирования. Тебе нужно выучить их всех, иначе хуйня будет с ООП.
>>2295679 Мне всегда было интересно, а зачем серверсайд рендер нужен? Вон, в той же джанге, например, там же полфреймворка этим занимается. Зачем? Как это работает и чем лучше жса?
>>2295828 Много где. Например, обернуть функцию в try catch или логгирование подкрутить. Ты ж не будешь её переделывать, а просто добавишь декоратор одной строчкой. В celery можно декоратором обозначить таски. Да дохуя всего. Декоратор это обертка над функцией. Во всех языках есть обертки над функциями, но тут они выглядят вот так.
Что за хуйня с поддержкой Qt в PyCharm? Установил PySide6. Так мне IDE не подсказывает названия сигналов, и пишет, что такого аттрибута нет (но при запуске всё работает). Также и с параметрами для конструкторов виджетов. Документация практически не работает, при наведении на имя не выскакивает даже ссылки на страницу в Интернете об этом классе/методе.
>>2295679 Не то чтобы вкатун, я так вообще аналитик, просто хочу поднять веб-страницу, где заказчики аналитики будут просто нажимать кнопку, запускать скрипт и получать результат. Сейчас они тыкают этим меня, и я какое-то время думал просто зашарить им код, чтобы они его запускали сами, но там тоже свои проблемы - надо объяснить, как запустить интерпретатор питона, доустановить зависимости, не дай бог скрипт обновится. Короче мне было бы проще просто поднять страничку с кнопкой и все. И вот я думаю - кнопку "скачать отчет" можно сделать как на уровне фласка, так и жаваскриптом. Но мучиться с жс никакого желания нет, уже хватило на предыдущем месте работы.
Может кто подсказать, зачем нужна библиотека django-bootstrap? Из документации я чет не очень понял, че она делает, кроме как рендерит хтмл теги при помощи джанго тегов. И чё типа всё? Прост у меня в учебном проектике написано использовать эту библиотеку и я чет не понимаю, мне тупо надо будет, например, вместо того чтобы просто скопировать какой-то шаблон или элемент с сайта бутстрапа, ещё ебаться, заменяя все теги на джанго теги чтоб получилось то же самое? И зачем? Или это дает какие-то приемущества?
>>2296062 Bootstrap это ui библиотека, в ней за тебя уже настроены css-стили и под них настроены css-классы. Очевидно django-bootstrap нужна, чтобы при рендеринге хтмл вставлять классы с помощью шаблонизатора, а не самому прописывать.
Не могу разобраться в задаче, суть в том что в строке слова в хаотичном порядке, в каждом слове цифра, которая обозначает порядок этого слова в предложении. Нужно вернуть строку с правильным порядком слов.
Что сделал я: создал словарь(цифры от 1-9), ищу в слове совпадение с ключом и возвращаю цифру как int, а не изначально str.
Дальше хуй знает, я думал создать пустой лист и добавлять слово по индексу исходя из цифры в нем через insert, но не особо получается.
>>2296101 Думал использовать сортировку, но так как там строка сортируется по первой букве, а цифры игнорируются. Не понимаю как сделать сортировку конкретно по цифре.
>>2296161 Однострочник может быть красивым, если изъебнуться, это и есть суть дрочерства на сайтах с задачками. Ну а лучше ли нахуевертить циклов или перегруженный однострочник это уже вопрос личных предпочтений и вкуса.
>>2295908 Потому что поисковые движки срали на новомодный клиент-сайд рендер, им разметку сразу с запросом подавай. >>2295928 >почему бы не сделать отдельную прокладку на сервере чисто для рендера Шаблоны ты хотел сказать? >вместо жса "Вместо жса" в вебе ты только костыль сможешь сделать. >>2295935 Кстати даже условные твиттеро-фейсбуки обрабатывают запрос, чтобы влепить метатэги, а не отдают голый html на все страницы. >>2295985 Суть в том, что ты сейчас хочешь поднять страничку с кнопкой. А потом тебе захочется поднять ещё страничку и добавить динамики. А потом ещё и ещё. И так ты окажешься в ситуации, когда у тебя 100+ шаблонов страниц, написанных на DSL, для рефакторинга которых тебе чуть ли не помидор понадобится. Но помидор не будет ковырять шаблоны даже за жирные шекели.
>>2295980 Спасибо за совет. VSCode видит сигналы и подрубает подсказки для аргументов. Не знаю, почему такого нет в PyCharm, который вообще-то стоит денег
>>2296101 In [77]: def sort_string(input_str: str): ...: return " ".join(sorted(input_str.split(" "), key=lambda word: int("".join(c for c in ...: word if c.isnumeric())))) ...:
Помогите с пагинацией в джанго. Есть ListView. Хочу в зависимости от объектов в queryset менять размер пагинации. Т.е. первая страница - пагинация через 14 элементов, вторая например через 16 элементов. Как такое провернуть?
>>2296085 Ну так вместо дивов с форм-контрол ты будешь писать в башлоне бутстрап-форм. А вот если тебе уже нужны кастомные стили, то руками всё равно придётся переопределять и импортить.
>>2296479 Ну я так глянул ещё в документацию, походу да, в основном в формах разница, а всё остальное также. Я в формах ещё не особо поразбирался прост
def Cardano(a, b, c, d): if a == 0: return 0 res = [] p = (3 a c - b b) / 3 a 2 q = (2 math.pow(b, 3) - 9 a b c + 27 a a d) / 27 math.pow(a, 3) D = (q / 2) 2 + (p / 3) 3
if D < 0: if q < 0: fi = math.arctg(math.sqrt(-D)) elif q > 0: fi = math.arctg(math.sqrt(-D)) + math.pi else: fi = math.pi / 2 y1 = 2 math.sqrt(-p / 3) math.cos(fi / 3) y2 = 2 math.sqrt(-p / 3) math.cos(fi / 3 + 2 math.pi / 3) y3 = 2 math.sqrt(-p / 3) math.cos(fi / 3 + 4 math.pi / 3) res.append(y1 - b / 3 a) res.append(y2 - b / 3 a) res.append(y3 - b / 3 * a)
Вот в книжке написано, что словарь не гарантирует порядок, то есть полагаться на него нельзя, но на литкоде постоянно вижу решения, которые подразумевают, что порядок не меняется. Как так?
Приветик. В книге "Укус питона" есть такой пример. Он реализуется только в терминале? У меня не получилось в IDE, так как переменные не обнаружены. Этот код только для того, чтоб показать, как питон могет?
Опять дебил с кубическим уравнением. Очевидно, что учусь я решать не кубические уравнения, а немного другому. https://pastebin.com/eezge7H4
>>2296514 В данный конкретный момент у меня какие-то проблемы с передачей данных между функциями. Я не могу понять, почему оно не передаёт введённые коэффициенты в функцию для решения (там подписано что где).
Пишет TypeError: Cardano() missing 3 required positional arguments: 'b', 'c', and 'd' - очевидно, что функция не получает то, чего должна и я не очень понимаю, почему. Тыкал по разному - не получается.
Пишу на жанге. Есть уведомления, много разных типов, дан доступ к конкретному объекту, кто-то реквестирует доступ к объекту, объект обновлен и т.д. Есть 2 стула: 1) Въебать всю в одну модель, то бишь в одной таблице будут уведомления разных типов, но у строк будут пустые поля 2) Раскидать всё по разным моделям, но будет дохуя разных табличек.
На какой стул правильно садиться с инженерной точки зрения, по количеству запросов к БД и т.д. Понимаю, что это просто так примерно не почувствуешь, но может кто-то решал подобную задачу и может подсказать.
>>2297414 Ты задал в def Cardano, что этой функции нужно 4 аргумента - а, б, с, д.
Когда ты вызываешь эту функцию, ты теперь полюбас должен указать для нее 4 аргумента, например так: https://pastebin.com/wS4ub1Uv (изменения на 46 и 49 строках).
Альтернативно, ты можешь при объявлении функции задать, что ей нужен только один аргумент, который являет собой кортеж из 4 элементов. Тогда при вызове функции ты передаешь coef, а в объявлении функции надо просто дописать, что а,б,с,д - это элементы переданного кортежа. https://pastebin.com/kjVJU6gW (изменения на 22 и 50)
>>2297418 Зависит от того как ты к ним будешь обращаться. Лучше наверное по разным, чтоб не было одновременных вызовов и изменений одной и той же большой таблицы. Обращения к бд являются ленивыми, так что по идее в плане нагрузки разницы быть не должно. Вообще, делай базу как можно меньшей.
>>2297414 Конечно миссинг. У тебя вывод из 4х функций приравнивается к одной переменной, остальные три теряются. Чтоб сделать то что ты хочешь прочитай про arg kwargs. Выглядит это так. dict = {a:1, b:2, c:3...} func(++dict) плюсики это звездочки
Так что лучше тебе передавать лист на выходе. Пустой лист (а так же пустой дикт нуль, пустая строка и пр) в питоне равносильно false. Интересно, зачем ты пишешь if a != False когда можно просто написать if a.
Хуй знает куда ещё написать за помощью. Так как пишу на пайтоне, то пускай будет здесь, хоть вопрос к нему относится очень отдаленно.
Пилю на селениуме парсер. Задача: собирать ссылки на айтемы со страницы, на которой они появляются динамически при скроллинге вниз. Иного способа получать ссылки, кроме как в тупую напрямую нет. АПИшка по ключам, которые не выдаются толком, а обходные пути заблочены. Число ссылок на айтемы которые необходимо получить варьируется от пары до десятка тысяч. Столкнулся с проблемой переполнения оперативы на вкладке и последующим вылетом ошибки out of memory. Парсер находится на ВДС в конфиге на 8 гигов оперативы. Если просто вручную скроллить страничку и следить за потреблением памяти, то можно увидеть, что оператива сама собой освобождается при длительном скроллинге. При работе селениума на хромдрайвере такого освобождения нет, отчего и происходит переполнение. Как бороться с такой хуйней и расчищать память? Закрывать инстанс браузера и открывать с того же места не вариант - открыть с того же места просто не выйдет ввиду отсутствия прямых ссылок/запросов. Почему обычный хром нормально справляется с прохождением больших наполненных страниц, а хромдрайвер загибается?
Реквестирую самоучитель для полного ньюфага. Очень хочется чтобы было без воды, с вопросами в конце главы и понятно, но сколько не качал разных - не нашёл. Вроде был такой, но я проебал название.
>>2297518 Возможно. Мне просто не нравится лишняя информация которая не несёт полезной нагрузки, но она вроде и именуется водой. Учитывая мою лень это реально проблема.
>>2297446 >>2297415 >>2297487 О, спасибо. Я как раз пытаюсь в этом разобраться, сами понимаете, что нормальный человек не будет делать столько функций для простой задачи. или будет
господа, существует ли апи для teamspeak с возможностью воспроизведения аудиопотока в канал, без клиента тимспика? Я правильно понял что апи ограничивается функциями администрирования, написания сообщения? То есть если я хочу радил-музыка бота, мне придется ставить тим спик клиент и ос под него?
>>2297498 Лол. Ставишь себе дебаг проксю, прописываешь в браузере и скроллишь себе вниз, потом смотришь на запросы в проксе и повторяешь у себя, забирая готовые данные в чистеньком жсоне. Какие блять селениумы.
>>2297664 Почему бы не написать if 2+2==4: print('text') ? Тернарный оператор в питоне супер жуткий, так как выводимые значение с разных сторон, а не рядом.
У меня пробел не печатается. Может быть тебе нужно явно указать sep и end, не знаю? Там только перенос строки должен печататься по умолчанию.
Дочитываю Лутца.Это было тяжело по больше части из-за его водянистого стиля изложения материала. Хотя сама книга годная, для новичка аналогов просто нет. Остались главы про Юникод, декораторы и метаклассы.
Подскажите, что из этого 100% нужно прочитать вкатышу, а что лучше отложить на потом?
Попробуй "автоматизацию рутинных задач с помощью Python". Как раз первые 180 страниц - это описание синтаксиса, а дальше уже прикладные проекты идут. От того же автора есть Hacking Cyphers и Making Games. Эти я не читал, но говорят годнота. А под основами информатики я хз что ты понимаешь. Базовые понятия вроде циклов, функций классов и ООП? Все это есть в "автоматизации рутинных задач"
>>2297767 Юникод. А что про него читать? Но он всюду энивей. Для декораторов хватит одной статьи и потыкать их в программе один вечер - и это можно сделать в любой момент, как встретишь их - и для вкатывания они не нужны. Метаклассы нахрен. Короче лучше просто тыкай дальше вещи что было ранее и понимай их глубже, практикуйся, а не какие-то декораторы...
>>2297773 >А что про него читать? У Лутца целая глава про него. Честно говоря, уже надоело читать, хочу уже прочитать доку джанги и говнякать сайтик. Но я не спешу. Надо так надо. Это основа, ящитаю. Про декораторы иногда даже пишут в вакансиях, например: "умеете применять декораторы или знаете что это такое".
Вот бы лутца издатель пнул на новое издание, чтобы викинуть вторую версию и еще всякую хуйню и добавить свежачка. Но он уже старый дид вроде, да и не хочет.
>>2297771 >О, еще один вкатыш. Чини детектор, я для общего развития изучаю. >Попробуй "автоматизацию рутинных задач с помощью Python". Как раз первые 180 страниц - это описание синтаксиса, а дальше уже прикладные проекты идут. >Базовые понятия вроде циклов, функций классов и ООП? Все это есть в "автоматизации рутинных задач" Неа, там было про биты, байты и прочую поеботу, лол. Просто запомнилась именно поэтому, т.к. я дальше этой главы и не зашёл. Но очень доставили вопросы в конце главы, это куда более эффективно чем конспектирование и повторение, я считаю.
a, b, c, d = None, None, None, None Как быстро инициализировать переменные None вне зависимости от количества переменных, чтобы не повторять None то же количество раз?
почему функция в которой надо напечатать N строк определенным образом работает 20 секунд, а две такие функции запущенные в двух потоках работают в 4 раза быстрее? Почему не в 2?
Я все не очень понимаю, по какому принципу в джанго создаются приложения? Или просто как угодно? Вот например у меня есть какой-то сайт, у него там есть разделы. Ну вот Двач например. Главная страница со списком досок где будет располагаться? Она же не принадлежит никакой доске логически как бы. Нужно делать отдельное приложение для главной страницы? Или её прямо в основной модуль запихать, где находится settings?
>>2298171 В модуле где есть settings никаких вьюх делать не надо. В твоём случае надо сделать ещё один и добавлять к нему всё остальное. Эти модули сделаны просто для удобства, можешь хоть для каждого роута делать свой модуль. Вообще они должны быть независимы друг от друга для модульности.
А вообще поебать где что, можешь хоть в основном модуле делать, главное чтоб в роуте был указан метод
>>2298185 >В твоём случае надо сделать ещё один и добавлять к нему всё остальное.
Чет не понял. Типа делать приложение для главной страницы, которое будет прост рендерить главную страницу? А че значит "к нему добавлять все остальное"?.
>>2298185 А, ну я так подумал, наверное приложение определяется моделью, да? Одно приложение должно содержать вьюхи, которые взаимодействуют с моделью, описанной в этом приложении. А то если приложение импортирует модель из другого приложения, получается оно самостоятельно работать не может.
А вот такой вопрос. Если я в функцию отправляю строку как аргумент функции, она копируется или передается по ссылке? То есть если я отправлю огромную строку, то в памяти будет две такие же огромные строки и будет фигово для производительности?
>>2298286 >памяти будет две такие же огромные строки будет ссылка на переменную(объъект), хранящую значение, потом если GC пройдется и если ссылка будет уже не нужна, то очистит память. Но если ты за байтоебство, то нахера начал питон учить?
>>2298296 Короче проверил в диспетчере задач. Отправил в функцию строку 50 мегабайт - процесс питона около 50 мегабайт. Значит по ссылке передается. Круто.
>если ты за байтоебство, то нахера начал питон учить? Чтобы на нем байтоебить, очевидно же.
Аноны, я не понимаю. Вот у пандас есть df.value с методом tolist(). Я хотел посмотреть, как вообще этот метод составлен - мне стало интересно, как на уровне кода происходит считывание данных из экселя/ксв и засовывание в список. Я нажал CTRL + ЛКМ по этому методу и попал в определение класса class ndarray - метод tolist() действительно есть, но он весь состоит из огромного комментария, а из кода там только "pass". Посмотрел повнимательнее - так вообще у всех методов в этом классе (пикрил). Как раэто работает? Где-то же должна быть описана логика работы этого метода.
>>2298474 Ну тогда все равно остается непонятно - даже если библиотека скомпилированная, я же все равно при вызове конкретного метода запрашиваю какой-то функциональный кусок скомпилированной программы - на нее должна быть ссылка. Как пайчарм соотносит, что tolist() должен исполнять функционал такой-то, а tobytes() такой-то?
И еще, а где можно посмотреть сорцы пандаса? На гитхабе https://github.com/pandas-dev/pandas все на питоне, но питон же не компилируемый, а интерпретируемый.
>>2298484 Питонья вм подгружет компилированные модули, они ей сообщают - у меня есть такие методы, у меня есть такие штуки. Потом при их вызове она уже знает, что делать. Пучарм тут вообще никоим боком.
>>2298219 >>2298277 В общем, там можно делать как хочешь, на работу это влиять не будет. Хочешь делить всё - дели. Не хочешь - не дели. Вообще, функционально это делится примерно так site.fag/a/puk, где а - твой модуль, а puk - роуты этого модуля. Зависит от того сколько у тебя будет различных маршрутов и реюзабельность кода. Ты ж не планируешь делать с десяток серверов с универсальными модулями? Джанга это прежде всего рендеринг и всякое с базой из-за хорошей орм. Если ты делаешь какой-то мессенджер, борду и что-либо с большой нагрузкой на страницы в браузере, то лучше делать это не на джанге, а рендер отдать на жс.
Я сам не до конца понимаю зачем в джанге такое разделение на модули, когда он сам по себе монолит. Закос под микросервисы что-ли, лол.
>>2298508 MVC потому что. Джанга в этом плане очень взрослая, но без асинхронки нахуй не сдалась. Сектанты просто указываются в нее как и в SpringBoot, не более. Можно говнокодить на FastAPI, выбирая себе ORM по желанию. Очень медленно пилится TortoiseORM, отставание просто пиздец. Тот же peewee умеет давно в CTE, но нет асинхронки нативной
>>2298555 Бери linux subsystem и ставь туда как нормальный человек. В питоне для винды зависимостей овердохуя и надо тащить гигабайты для конпеляции сишных библиотек.
>>2298752 >Какой язык - такой и программисты. Инфоцыгане сообщили, что Питон пиздец какой простой (НЕТ), вот и лезут вкатыши-дебилоиды. Сука ну прочти ты документацию или банально погугли. Потом из-за таких ебланов и вилка ниже чем у остальных.
>>2285619 (OP) Антуаны, помогите преобразовать json файл в массив. Нагуглил только как строку преобразовать в список. Имеется несколько строк в json, нужно по запросу получить значение "аргумента" из каждой строки.
>Питон пиздец какой простой (НЕТ) А что сложного в говне вашем для школоты? Типизация? Динамическая, интерпретатор все сопли за вас подотрет. Синтаксис? Мммаксимум простой.
>>2298852 Долбоеб, ты пишешь на языке который впринципе перестал развиваться и без костылей никакие фичи занести уже не получиться из-за мемной обратной совместимости. Кста про упомянутый пых забавно, по любви у разработчиков джава около пыхи сидит во всех опросах, те на дне)0)0)
Делаю сайт про походы,Python,Django,PyCharm.Нужно,чтобы был интерактивный календарь,с расписанием походов.Я написал JS скрипт,который формирует календарь на странице,и тут возникла проблема.Заказчик хочет,чтобы даты походов были выделены определённым цветом и на них висели инфобоксы.В базе данных у меня походы с полями "дата начала похода" и "дата конца похода".В шаблон походы передаются через вьюхи,это ясно.А как мне из шаблона эти походы или их параметры передать в сам скрипт,который к шаблону подключен?И вообще,правильно ли я делаю,что так определил поля?Может,будет лучше,если у каждого похода будет одно поле,"даты",с неограниченным числом значений?Прошу прощения за глупые вопросы,заранее спасибо за ответ.
>>2298910 Покажи async/await в жабе. А как там якобы возможные гринтреды, в java 3000 версии завезут? Ну классику вроде куда пропадают типы в ваших дженериках даже спрашивать не стану, а то у жабистов моментально попку рвет, особенно если сравнить с клоном жабы от майков
>>2298913 >А как мне из шаблона эти походы или их параметры передать в сам скрипт,который к шаблону подключен?\ Есть два способа: 1. Говнокод - вешать джейсон с датой инлайн скриптом в глобальный скоуп, а потом уже его парсить при гидрации. 1.2. Пыхавей - привязать джейсон к дата-аттрибуту на каком-нибудь из элементов. 2. Зе райт вей - написать API эндпоинт, возвращающий нужные тебе данные и скриптом его дёргать.
Если коротко, то что я хочу. У меня есть "рабочий" код, разбитый на функции. Само по себе вроде работает. https://pastebin.com/kRzFi4Gs (будет жаловаться на то, что не получил х1, х2, х3, что логично)
И есть отдельная функция, которая решает. Она большая, как её разбить на подфункции "шоб красиво было" (так начальник требует) я не понимаю, но не суть - мне б чтоб работало хотя бы. Естественно, если совместить это с старым кодом, блок ввода не нужен, в общей функции у меня его нет. https://pastebin.com/e70VuLcs
>>2299496 > А как правильно то? Однородно на всех участках. Это решается подгонкой в ide, но у тебя его нет скорее всего. Подключай как модуль тогда, форматирование может быть разным на уровне файлов вроде.
Как исполнять команду в заданное время дня, не проверяя каждую секунду, какое сейчас время? Этот способ работает, просто мне кажется, что это крайне тупой подход.
>>2299416 > И как оптимизировать == Никак, и я не спрашиваю как его опитимизировать. Я о том, что в каких-то случаях есть более быстрые варианты выполнения тех или иных задач. Хотелось бы почитать об этом.
>>2299615 Тут уже писали, что не нужно например использовать f-strings, потому что всё равно экономия НЕЗНАЧИТЕЛЬНА Ну а вообще, если у тебя есть эти варианты на руках - ты всегда можешь загуглить, или сам проверить с помощью timeit, или посмотреть какие там операторы под капотом с помощью dis
>>2299620 >Тут уже писали, что не нужно например использовать f-strings, потому что всё равно экономия НЕЗНАЧИТЕЛЬНА Что? > сам проверить с помощью timeit, или посмотреть какие там операторы под капотом с помощью dis Спасибо и на этом, антош.
>>2299788 > сколько раз за всё время у тебя будет вызвано функция принта Разве только при принте можно делать ф-строку? > Ты не заметишь этой разницы Это уже дело мое. > уже писали, что не нужно например использовать f-strings Так что за ебанутый это писал? Если и нет смысла дрочить на 30%+ прирост скорости от ф-строк, то красота кода и функциональность ф-строк превосходна.
>>2299769 Это из-за кэша. Когда одну и ту же строку несколько раз генерируешь и она короткая, то у неё одинаковый айдишник. И раз она в первый раз создалась и сборщик мусора не успел её удалить, то все последующие разы будет одну и ту же строку возвращать. Поэтому для чистоты эксперимента нужно не миллион одинаковых строк генерировать, а разных.
>>2299848 >1. Где написано что он генерил ее миллион раз? Он же наносекунды как-то посчитал. Логично, что он милион раз генерил и поделил. >2. Не только лишь память. Всё равно это объяснение факта, который получился в результате нечистого эксперимента. После того как провести его чисто, то результат в скорости будет хуже, а это объяснение со скрина останется прежним.
>>2285619 (OP) Блэт, есть набор из 10+ строк, в функцию поступает строка, надо проверить что она начинается с одной из этих строчек, как это сделать без ебаных циклов for?
for s in STRINGS: ----if in_str.startswith(s): return True
Как делаются превьюшки для видео/обычных изображений? Допустим, если я делаю приложение и там есть страница с изображениями, исходники которых слишком большие чтоб быть превью, то как в этом случае поступают? Или на странице много видео - чтоб не грузить все, нужно вместо реальных видео подставить превью и потом по запросу подгрузить это видео
сап, не знаю, можно ли сюда с таким, но нужна помощь с написанием (или полное написание) парсера, который проводит аналитику по сайтам. идея: искать по ключевым словам, выводить в табличный вид куда угодно в каком угодно виде. tg @yuioef