Это копия, сохраненная 4 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2266995 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
Сап питонач, решил отсюда все задачи, документацию питона щелкаю, дополнительно попарсил ЦБ и openweathermap. Куда двигаться дальше?
Сейчас в тупике, когда учебные проекты кончились, а хз какой проект замутить, чтоб показать работодателю и не обосраться со сложностью, как в трудную, так и в очень лёгкую сторону.
На вакансиях разные библиотеки требуют и только разбрасываешься на всё подряд, нихуя толком не сделав.
У меня вкладки "Code" вообще нет. Все перетыкал, ничего не получается. Вот в гитхабе по умолчанию отличный поиск.
element = driver.find_element_by_xpath('//captcha//img')
Так вот как теперь взять текст поля data-ng-src, раскодировать base64 и записать это дерьмо в картинку на диск?
Текст я выдернул. Как теперь из текста этой хуйни сохранить картинку?
нарезаешь на буковки, вручную помечаешь, скармливаешь в terreract, юзаешь.
Там нейронки нынче, нормальные, LSTM.
Мне не требуется двачевская. Я привёл пик капчи без обработки. pytesseract обсирается с ней. Возможно необходимо как-то картинку подготовить, хз
Покажите мне этот ии. Заебало уже по 5-6 часов спать.
Если делаешь что-то на питоне, то в основном попросят за веб и бекенд. Попробуй написать что-нибудь на веб фреймворках типа джанге, фастапи, ботле или ещё что-нибудь. Освой разные субд и орм к ним. Разберись с деплоем и пр. Короче, займись вебом и посмотри как он работает, авторизация, токены, вот жто всё.
Подключись к какому-нибудь халявному апи, типа дискорда или хз, и взаимодействуй с ним. Короче, развлекайся.
Забей на библиотеки. На собесах никто не будет требовать их знание. В общем-то от начиная с синьера и знание питона не обязательно. Ты должен понимать принципы и владеть идеально хоть одним стеком. Любой другой потом осваивается за пару недель.
Ану расступились, я властелин стека!
потому что его не обучил!
Сука, как же меня бесят эти дерьмокодеры блять, Сеньёр блять, ты серьёзно? Я на стажировке в MTC банке сервера на note.js поднимал и ебался над приложением мобильным не в вашем ебучем котлине в на чистом java и сука платили 30к в месяц и то после всего я ещё джуниор и в итоге не прошёл стажировку и меня послали. Так что в следующий раз подумай блять перед тем как писать кто-то и не лезь туда куда не знаешь, начни с паскаля это всё что тееб пока светит, а лучше учи основы ассемблера, ибо после него вся дурь выбивается и ты осознаёшь себя богом этого мира
Нахуй нужен ассемблер, мне его знания вообще не пригодились в вебе.
Писал код для плк сименса в нефтянке, и то, хз где применить его опыт здесь. Байты считать? Какие? Их тут нет.
Что реально полезно это общая дисциплина написания кода. Писать так чтоб работало с первого раза, замечать возможные ошибки уже на этапе разработки. Пишешь класс 100-200 строк и он работает сразу. Вот чего не хватает многим.
Ну где там ии. Хочу чтоб он мне сам написал сервер.
Боюсь обосраться с первым ЯП, поэтому, если нет возражений -- уточню здесь.
Вопрос такой:
Стоит ли дрочить веб, неужели условные сайтики, магазины всё ещё пилятся?
Я к тому, что даже мой батя в своё время за пару недель запилил себе сайт в 00-х, хотя за компом-то почти не сидел.
Ещё я слышал некоторые гадости о питоне, в частности о том что он слишком прост и не так хорош, как другие яп. Возможно, злые языки, но настораживает.
Хватит ли полутора лет обучения по 2-3 часа в день на то, чтобы начать зарабатывать какие-то копейки?
Да, вкатун. Нет, не бейте тапками.
Я бы сказал так - знать веб на питоне пригодится, но планировать зарабатывать именно им это несколько перебор, хотя и возможно. В принципе, после хорошего раскуривания питона ничего тебе не мешает идти куда-то дальше за деньгами по актуальной обстановке.
Полтора года вполне норм, если ты не дурачок и не забъешь, тут сложно судить.
Только не бей, но
Где по большей части используется питон, кроме как в вебе?
И вообще, стоит ли идти в веб с этими жабаскриптами и прочим, или на питоне можно пилить что-то интересное и полезное?
Спасибо, анон.
Где нужно автоматизировать какие-то действия ЭВМ посредством программного кода.
Кроме нишевых вещей вроде игор или шиндовс гуи, например.
Зацените какая хуйня строится. Рост времени для grid_taveller(i, i) есть O(i^2), как я и ожидал, но сама форма графика время/(i^2) странная. Почему так?
>>286613
Питон, насколько мне известно, довольно гибкий язык, но можно ли на нём делать какие-то большие проекты? И он, как я слышал, не так часто используется в этом вашем погромировании, но просто используется везде, где нужно запилить скрипт на коленке. Это правда?
>>286621
Думаешь, стоит идти в веб? Какие шансы у вкатуна за полтора года получить достаточно знаний на джуна и пойти работать?
Чем вообще занимаются в вебе кроме создания и оформления сайтов, анон?
upd. Эти странные линии это похоже логарифмы, а асимптотика квадратична. Не могу понять откуда эти линии появились и почему они образуют такой рисунок
Это паста?
>Думаешь, стоит идти в веб? Какие шансы у вкатуна за полтора года получить достаточно знаний на джуна и пойти работать?
За полтора года изи
>Чем вообще занимаются в вебе кроме создания и оформления сайтов, анон?
Веб это не только сайты, в больших проектах он перетекает в обработку больших массивов данных с соответсвтующим стеком больше похожим на энтерпрайз. В моем случае это кафка, кролик, кликхаус и способы работы с распределенными системами.
Спасибо за ответ.
На чём работаешь? Мне пару раз советовали жабаскрипт, да я всё метаюсь и боюсь обосраться с вебом.
Что помимо питона надо знать для начала?
У большинства вакансий запросы различаются, под все не подстроишься, но тем не менее.
блять, сажа...
>можно ли на нём делать какие-то большие проекты? И он, как я слышал, не так часто используется в этом вашем погромировании
Чел... не слушай этих пердунов. Они тебе ещё щас скажут, что он медленный и прочую ахинею. Много больших и достойных проектов на пайтоне живёт и развивается, названия не буду говорить, если захочешь сам найдёшь.
>Что помимо питона надо знать для начала?
Главное в айти это попасть под струю и наработать год-два опыта. Поэтому смотришь вакансии в своем городе и дрочишь стек указанный в них, желательно, что бы там была какая-нибудь технология для распределенных сервисов типа тех же брокеров сообщений, что бы катится дальше, а не утонуть джанге хотя я сам начинал с нее, но там к ней подключили микросервисы и в дальшейнем этот опыт помог мне перекатится на следующую работу. Потом сам все поймешь.
В мейне есть вызов двух асинхронных методов. Один из них имеет вечный цикл и в глубине wait(...), который блокирует все остальное, пока не дождется ответа. Как вызвать этот метод, чтоб не блокировать выполнение остального кода?
А то доходит до этого места и все, пиздец, пока данные не придут - стоит.Через asyncio.create_task пробовал, но тот валится, если вдруг не дождется сообщения
[T:MainThread] ERROR:asyncio: Task was destroyed but it is pending!
Умирает на msg = await conn.notifies.get()
Использую aiopg
Пример практически из мануала. Умирает секунд через 5.
Веб делится на фронт и бек. Питон в вебе это преимущественно бек. Фронт делают на нём извращенцы.
Язык своеобразен, как и все остальные. Так что это не аргумент. Питон проще, но медленней. Го быстрей, но синтаксически нагроможден.
Посмотри на крупные веб-фреймворки питона и как давно они появились.
Аргументы, про то что питон это скрипты на коленке - тебе промыли мозги пхпетухи и goвноеды.
Как решение, в голову только приходит использование что-то типа редиса или мемкеша, но почему-то это выглядит как костыль
FastAPI+ClickHouse стек
venv активирован
Пытаюсь запустить фастапи с uvicorn, пишет что не видит clickhouse модуль, как это так спросил я, ведь в venv у меня он есть, Программа работает если запускать её с пайчарма, но uvicorn не видит, хотя раньше в других проектах видело. Опять же, все запускается все ок с пайчарма, но при uvicorn пишет -
ModuleNotFoundError: No module named 'clickhouse_driver'
И я попробовал установить clickhouse глобально - все заработало, но какого хуя??? Почему в локалке его не видит, он же сука лежит у меня прямо в венв там где лежит fastapi, а его видит, ну я блять рили не понимаю
А, понял, он воспринимает это как строку, а не как список. Как тогда конвертировать в список :/
Кек, у тебя пучарм с глобальным интерпретатором работал
Ювикорном надо запускать только фастапи, а кликхаус отдельно. Это ж бд, его тем более в докере запускать нельзя, у него свой роутер должен быть свой
Я не знаю что я сделал, но я запустил. Как это в докере нельзя запускать? Да ну, у меня как раз стоит задача обернуть все это в докер,энивей попробую
1280x720, 0:07
Тогда и сервер тоже в докере нужно запускать не нужно, а то он тоже проебется
import json
data = {'board': 'pr', 'thread': 2285619, 'num': 2287212}
response = requests.get('https://2ch.hk/makaba/mobile.fcgi?task=get_thread&board=', (М) data)
comment = json.loads(response.text)
comment2 = comment[0]['comment']
print(comment2)
Дед, ты pesistent volume не освоил что-ли?
lst = [1,2,3,4,5]
counter = 0
for j in lst:
____delta = j[1] - j[0]
____counter += delta
Блядь, заменял значения, чтобы не задиванониться, и закономерно обосрался. В общем вопрос о том, как избежать IndexError при итерированию по списку, когда в итерации у меня участвует n-ный и n+1-й элемент списка.
Спасибо огромное!
lst = [1, 2, 3, 4, 5]
deltas = (next_el - prev_el for prev_el, next_el in zip(lst[:-1], lst[1:]))
counter = sum(deltas)
Постоянно вижу, что вместо пользования лаконичного метода .json() сразу на ответе, люди импортят либу жсона, достают текст из ответа и скармливают его лоадсу.
В чем профиты от такого, у вас кабан за строчки кода платит?
Наверное тому что раньше не было его
try:
data = response.json()[0]
body = body.get("comment")
logging.info(f"Message: {body}")
except:
logging.error("Bad response")
<двезвездочки>param
А у меня там дикт не получится сделать. Короче говоря, у меня есть файл с кучей строк, которые мне надо прохешировать:
string1 = "gfdgsdhdfsh"
string2 = "bvcxbrfbdfb"
и т.д.
Соответственно, в другом файле лежит функция хеширования, которая по моей задумке будет получать в качестве аргумента вот эти вот string1, string2, ...
Файл со строками статический, но там просто их дохуя, и не хочется ручками делать ctrl+c ctrl+v.
Закинуть таск в крон или использовать селери с редисом.
Ты можешь сделать дикт из файла питона и ходить по нему, либо запустить все сразу через threadpool
Но дикт же должен иметь пары ключ-значение. Или ты имеешь в виду сделать через setdefault?
Ну, либо это будет лист, в любом случае сделать из него дикт или лист несложно.
А лучше сделать генератор на файл, чтоб не читать его целиком
vottak = {}
with open("file.txt") as f:
for zs in f:
(ky, shit, val) = zs.split()
vottak[ky] = val
print(vottak)
vottak = {}
with open("file.txt") as f:
for zs in f:
(ky, shit, val) = zs.split(' ')
val2 = val.replace('"', '')
vottak[ky] = val2
print(vottak)
Инетрация съехала, ну и дополнил тебе.
> Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
обновите пасту под современные реалии пожалуйста
спасибо, мужик. даже не знаю как тебя отблагодарить)
если решишь и это, скинь к коду еще номер карты или другие реквизиты, не обижу)
так я не на разработчика или дса иду, из 8 задач только 2 пайтоновские, и то вот такие простенькие, я просто отвык это говно решать.
Ты while true сделал да?
Жаба-говнокодер, не ты ли это?
Не слышал, стало быть не используют.
Если нужно что-то быстрее питона, зачем выбирать что-то из среды питона, почему тот же го не использовать? В эпоху микросервисов вообще нет никаких сложностей делать разные части проекта на разных языках.
Теоретически сообщество 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, хотя это активный рабочий элемент.
Какими способами можно упорядочить эти вебхуки? Сервер на gunicorn с кучей рабочих, так что это ещё сильнее усложняет ситуацию. Lock не работает почему-то, несмотря на то что включён preload.
Чтобы не писать на goвне?
Я так и делаю. У меня очередь sqs fifo настроена и перед обработкой я отсылаю их туда. Нужна именно sqs fifo, тк они умеют делать группы внутри очереди с извлечением элементов по одному. Но вытаскивать их надо по минимальному timestamp, а не fifo.
Сейчас думаю, делать задержку перед отправкой в очередь связанной с timestamp сообщения и его фактическим прибытием на сервер. Но чем дальше, тем больше убеждаюсь что это невозможно.
Есть же куча подобных сервисов. Как они делают? Я бы мог написать свой celery и амазоновский sqs, но времени столько нет.
Ну не пиши тогда на питоне. А лучше вообще не пиши. Ни кода, ни тут.
PyPy неофициальный, версии отстают от релизов, и нет полноценной поддержки бинарных библиотек.
То есть если ты хочешь использовать питон с чем-то, что в двоичном виде к питону подключается, но скорее всего будут проблемы. А это довольно обычная история для какого-то научного софта, всяких AI и т.п.
А что делать до этого?
У тебя есть опции, или самому тупо подождать нужное время, или использовать модули вроде sched, или использовать функции из asyncio для этого.
Есть же планмровщики задач типа celery и kron, зачем велосипеды делать
А нужно чтобы при запуске скрипта, если значение поменялось заполняло в новую ячейку А2, А3, А4..
Как это проще сделать? Проверять на пустую ячейку или pandas numpy использовать?
https://ideone.com/e.js/Ok2bJL
Так у тебя fifo, а не атрибут timestamp, по нему отрабатывай и присваивай priority. По идее через Rabbitmq shovel можно сделать, а потом qos=N и распределяй по воркерам
> Так у тебя fifo, а не атрибут timestamp
Это да, я просто хотел сделать задержку перед тем как отправить в очередь. Fifo нужно для распределения нагрузки по группам от разных чатов.
Сообщения мне может присылать бот, между этими вебхуками бывает буквально 10-100 мс. Апи настолько бгмерзское, что иногда первым приходит второе сообщение, а не первое. К примеру, исходный порядок 1-2-3-4-5, а фактически приходит 3-1-5-2-4. А в очередь может уйти вообще 2-1-5-4-1.
Пробуй Rabbit тогда, там и интеграции с БД есть и многое на платформе кролика же и делается, так как erlang
Ех, ладно. Просто у нас отошли от раббита на sqs, хз почему. Буду дальше думать над костылями.
Делаю задачку с zipfile из "Укус питона" и у меня возник вопрос.
Можно ли архивировать каталоги с файлами в них?
А то у меня получается архивировать нормально только один конкретный файл, в противном случае я получаю тот же каталог, но без файлов в конце пути.
Я знаю, что через import.os делается все нормально. Просто интересуюсь, где я не так поступаю с zipfile.
Код: https://ideone.com/xUs1At
Первый пик - архивация с файлом.
Второй - каталога.
Кролик слишком много потребляет, но много умеет, а SQS на то и simple.
Тебе нужно какое-то временное хранилище, сортировку, хоть в памяти через массив.
Есть же встроенные in-memory хранилища.
Просто мне показалось, что это довольно тривиальная задача. Удивительно что к ней нет готовых решений. Ну либо я слепой
А у кролика разве есть что-то для этого?
Реально задача не настолько тривиальная, в том плане, что может быть немерянное количество разных юз-кейсов, и политики принципиально разные нужны в разных случаях.
Слёту, могут быть ситуации, когда какой-то пакет из 1-2-3-4-5 вообще не придёт, либо будет идти слишком должно. Наверное, ты не хочешь ждать, если уже знаешь, что все пакеты пришли. Ещё надо как-то отличать пакеты 1-2-3-4-5 первой серии от пакетов 1-2-3-4-5 второй серии, последующей. И куча всего ещё.
Можно выставить задержку доставки, скажем, плюс 5с к тому timestamp который указан в payload. Если они пришли гораздо позже, что ж, тут уже можно сослаться на ошибку отправителя и доставлять их уже сразу, без задержки.
В целом они доходят до меня довольно быстро, в пределах секунды.
Это вроде самое простое. Всем спасибо
Например, есть каталог со скриптами и модулями. Сценарии для pytest сюда же класть? Создавать ли отдельный подкаталог здесь? Или вообще вынести в другое место?
Описанные выше скрипты и модули могут содержать тесты? Или код отдельно, проверка отдельно?
Ну и посоветуй что почитать, посмотреть.
Спасибо.
Там все рассказано
https://docs.python-guide.org/writing/structure/
Используй poetry для создания venv и структуры, очень советую. И работает поиск по PyPi а отличие от сломанного pip.
В общем да, задержка доставки в eta 3-5с в обычную sqs очередь самое простое что можно сделать. Дальше оно уже отправляется в другую очередь fifo. Достава идёт дольше на время задержки, но зато по порядку. В итоге распределение по рабочим сохранилось и нет никаких узких горлышек в виде одного рабочего и тд.
Мне в принципе оба метода подходят, но я где то слышал что функция должна возвращать только один тип, поэтому первый вариант правильнее. Однако второй способ выглядит более подходящим принципу DRY т.к. методы does_thing_exists и get_thing из первого варианта делают почти одно и тоже.
Хз кто это спизданул. Куча стандартных методов возвращает что-то, либо none, если ничего нет. Так что это нормально.
Указывать возвращаемый тип явно излишество.
На собесе спрашиваю обычно за то чем собираешься заниматься.
Пчел, ты сравниваешь бек на джанге и ГОвне, хотя у них совершенно разные ниши. Аналогом на пистоне будет всякое асинхронное говно, которое юзают дохуя крупных компаний, оно проникло даже в банки. Всякие сберы, точки и ВТБ срут мне на почту когда я открываю резюме.
Второй лучше. К тому же сразу видно, что метод может вернуть None. Разные типы возвращать плохо, но None можно считать просто указанием на отсутствие значения.
Вакансий на питоне просто тысячи, на го - пара сотен и то в 90% случаев это микросервис
>Питон тред
Прочитал как Pytuh тред
там написано Thing or None
Уважаемые, подскажите это python2 или 3?
import requests
import sys
import pandas
import logging
from xxxsdk import xxxClient
logging.basicConfig(format=u'%(levelname)-8s [%(asctime)s] %(message)s', level=logging.INFO, filename = u'lockout.log')
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)
results = list(map(lambda x: dict(x), results['results']))
def clear(x, target, object_list):
for reg in object_list:
x = x.replace(reg, target)
return [i for i in x.split(target) if i != '']
if results:
for i in results:
acd = clear(i['Message'], '\t\t', ['\r\n\r\n', '\r\n\t', '\t'])
i['Domain'] = acd[acd.index('Account Domain:')+1]
i['User'] = acd[acd.index('Additional Information:')-1]
if acd.index('Caller Computer Name:') + 1 != len(acd):
i['PC'] = acd[acd.index('Caller Computer Name:') + 1]
else:
i['PC'] = None
i['DC'] = acd[acd.index('Account Name:') + 1]
log = pandas.DataFrame(results)
abnormal_dict = {}
for i in log.PC.unique():
count = len(log.User[log.PC == i].unique())
if count > 5:
abnormal_dict = count
logging.info('PC: {}; Count: {}'.format(i, count))
if abnormal_dict:
print('Statistic.abnormalPC: %s' % max(abnormal_dict.values()) )
print('Message.abnormalPC: %s' % ", ".join(list(abnormal_dict.keys())))
else:
print('Statistic.abnormalPC: %s'%0)
print('Message.abnormalPC: %s'%0)
else:
print('Statistic.abnormalPC: %s' % 0)
print('Message.abnormalPC: %s' % 0)
Уважаемые, подскажите это python2 или 3?
import requests
import sys
import pandas
import logging
from xxxsdk import xxxClient
logging.basicConfig(format=u'%(levelname)-8s [%(asctime)s] %(message)s', level=logging.INFO, filename = u'lockout.log')
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)
results = list(map(lambda x: dict(x), results['results']))
def clear(x, target, object_list):
for reg in object_list:
x = x.replace(reg, target)
return [i for i in x.split(target) if i != '']
if results:
for i in results:
acd = clear(i['Message'], '\t\t', ['\r\n\r\n', '\r\n\t', '\t'])
i['Domain'] = acd[acd.index('Account Domain:')+1]
i['User'] = acd[acd.index('Additional Information:')-1]
if acd.index('Caller Computer Name:') + 1 != len(acd):
i['PC'] = acd[acd.index('Caller Computer Name:') + 1]
else:
i['PC'] = None
i['DC'] = acd[acd.index('Account Name:') + 1]
log = pandas.DataFrame(results)
abnormal_dict = {}
for i in log.PC.unique():
count = len(log.User[log.PC == i].unique())
if count > 5:
abnormal_dict = count
logging.info('PC: {}; Count: {}'.format(i, count))
if abnormal_dict:
print('Statistic.abnormalPC: %s' % max(abnormal_dict.values()) )
print('Message.abnormalPC: %s' % ", ".join(list(abnormal_dict.keys())))
else:
print('Statistic.abnormalPC: %s'%0)
print('Message.abnormalPC: %s'%0)
else:
print('Statistic.abnormalPC: %s' % 0)
print('Message.abnormalPC: %s' % 0)
print в виде функции это тройка
Душный
Мне прям пиздец как плохо становится, когда на очередном совещание собираются челики и начинают обсуждать твой код, все находят в нем ошибки, все блять душат сука всякой хуйнй. Не знаю, может я морально слаб, но после такого желания работать нет.
Критика - признак развития. Гораздо хуже, если бы её не было и ты бы просто не понимал хорошо ты делаешь иди плохо.
Ну и чтоб тебе было легче. Раз уж они тебя наняли, значит сами такое написать не могут.
Интересно, а в интернете есть такой жанр фемдома? Где сисястая эйчар разъёбывает тебя на собеседовании за твой говнокод по факту
Для такого и ботл сойдёт. Джанго нужен разве что для фулстека.
датакалс в массив
codeforces
Рпботу с сайтиками, запросами и базой данных. Это называется веб
Зачем мне консоль? Мне нужно из другой программы получить доступ к текущему состоянию страницы. Я хочу добавить дополнительный интерактив без расширений браузера и хочу знать возможно ли это в принципе.
>Я хочу добавить дополнительный интерактив без расширений браузера
Звучит как "хочешуь удалить гланды без открывания рта". Ну то есть теоретически можно сделать это через жопу поднять вебдрайвер, постоянно искать твой элемент с ховер псевдоклассом и посылать жиэс на выполнение на странице... Но нахуя, а главное - зачем?
Если у тебя прямо внешняя программа и одним браузерным жиэсом не обойтись, то почему не сделать нормально - инжектить расширением скрипт, который будет вешать события на странице и ажаксить в твое приложение все, что душе угодно? Один хрен ведь с жиэсом дело иметь придется, раз речь про интерактив на странице.
Я просто хотел уточнить возможность в принципе. Если это невозможно из-за ограничений безопасности - так и пишите.
>>290805
Тут все равно будут сложности с обновлением скрипта после обновления страницы, и.пр. Моей первой идеей было писать расширение, но не хочется делать это для двух браузеров.
>Моей первой идеей было писать расширение, но не хочется делать это для двух браузеров.
Велкам ту зе ворлд оф веб девелопент.
>сложности с обновлением скрипта после обновления страницы
Никаких сложностей пушить скрипт в бесконечнлм цикле нет. С проверкой на повторное включение офк.
Это не отменяет ебанутость подхода, конечно.
Я понял, спасибо.
Не очень понятно. Ты можешь в браузере пустить в фоне какой-то скрипт, который будет в фоне отслеживать разные события и отправлять соответствующие сообщения в питон-программу.
Если же ты хочешь мониторить действия на другой странице, то так просто не получится, даже со всеми этими селениумами куча нюансов есть и там всё не так просто, как хотелось бы. Но смотреть, видимо, надо куда-то в этом направлении.
Господин, сейчас очень много изначально открытых материалов. Хороший тон пользоваться открытыми знаниями, которые специально готовили для таких, как ты, а не воровать чужое.
Дум с бэка недоступен, насколько я знаю, ну либо спросить у фронтовиков
сделай userscript с твоей отслежевалкой, и потом посылай на сервак на локалхосте где-нибудь.
У меня образовался такой вопросик, в микро задачке суть которой, залогиниться на страничке али для продавцов, через селениум.
В общем, захожу на страничку , ввожу данные, жмакаю апплай, появляется микро капча , где надо ползунок двинуть до конца, прохожу ее в ручную и оно всегда выдает ошибку (скрин прикрепил) и снизу пишет "Что-то пошло не так. Обновите страницу и попробуйте ещё раз(error:qALqL8)" Ошибка не гуглиться, нормальной инфы по этому поводу я не нашел , но может я что то не знаю и по этому не могу нормально загуглить.
Может кто подсказать, почему она появляется это ошибка и как ее обойти. Так же пробовал через селениум в админку своего сайта заходить, все логинется на WP.
Если шо не веб и не пайтон программист, просто тут такая задача выпала. Буду очень благодарен добрым людям.
У тебя все написано что не так. Смотри в конекшене, куда он стучится и что приходит, и далее по шагам до места где у тебя нихуя, а должно быть что-то.
Строй просто график зависимости времени работы от размера квадрата в двойном логарифмическом масштабе
Никогда, хотя у меня стаж 5 лет. Ну и слава богу
Там же написано.
Тебе не нужны хитрые курсы чтобы выучить питон. Достаточно почитать один учебник и пройти курс по алгоритмам для практики (делая задания).
На coursera есть дохуя курсов, в том числе и по алгоритмам от самого Седжвика.
На нетологии/хуелогии нет никакого сакрального знания. Тебе все равно придется въебывать, экспериментировать с языков и делать практику чтобы усвоить материал. Нет волшебного видео, которое бы как в матрице загрузило бы питон тебе в мозг.
Достаточно устроиться на работу. Пресловутое "когда?" учит лучше любых курсов
Имеются. Скинь названия, которые есть у тебя.
Пробовал HTML2Text, но он захватывает гиперссылку, хотя в настройках ставлю игнорировать ссылки, то есть по идее все что в теге "<a" должно пропускаться.
Я совсем нулёвый ньюфаг в 27 то годиков, меня начальник моего КБ заставил учить питон и сам же читает мне какие-никакие курсы.
Первое задание я вроде осилил, по крайней мере не хочу вас мучить им - написать программу для решения квадратных уравнений, я это вроде сделал и хочу проверить как всё работает (я учил в универе си, работаю с APDL, так что такая задача мне по силам, я её собственно, уже решил).
Но есть очень дебильный вопрос - как поставить питон? Вот прям в гугле вбить и ставить с сайта?
Если поясните, могу даже показать как я это сделал, хоть посмеётесь.
Используй regex
Скачать и установить. Лучше настрой виртуалку ubuntu, там всё в разы легче происходит
Ладно, почитаю http://composingprograms.com/pages/11-getting-started.html
Там вроде написано.
Как-то с сями всё время работал, проще это было.
Я скачал и поставил. Я не знал, что ставить, поставил 3.10 AMD64, ну видимо, это то, что нужно.
Теперь буду разбираться в ньюфажных проблемах - когда я кодил на сях лаба42.cpp, там был редактор, а тут чёт вообще никак. Ну я уже привык в notepad++ работать.
Линукс я не буду ставить - я не умею им пользоваться, это сложно.
Джанга вроде уже не нужна и подходит только для пердиксов.
Слышал про фастапи, на нем можно создать веб-аппликейшен с БД и логикой и потом еще подключить js-фрейморк для красивого интерфейса? Или это просто хуйня для создания апих?
Vscode поставь, разберись что да как там, подключись к виртуалке через ssh и всё. Там все пакеты и пр легко настраиваются и устанавливаются, в командной строке сложнее pip install ничего не будет для тебя. Многие вещи на винде просто не работают, либо работают криво.
Если ты будешь делать скрипты на пару минут, то можно и на винде делать.
Все. Серьезно. Изучи все. Без джанги тоже особо далеко не поедешь, особенно когда тебя поставят перед фактом делать работу на конкретном фреймворке.
У джанги всё из коробки. На фастапи ебля. Да, она чуть быстре, но и джангу можно на asgi сервера запустить и будет работать вполне быстро, ненамного уступая фастапи. К тому же она понемногу движется в сторону асинхронности, что не может не радовать.
> Если ты будешь делать скрипты на пару минут, то можно и на винде делать.
Я ещё не знаю, чем я буду заниматься, скорее всего какие-то скрипты писать для teamcenter, если ты вообще про такое слышал.
Может быть, нас пересадят с ансиса на что-то другое и там нужно будет код писать на питоне, я не знаю пока.
На работе у меня точно есть только винда и ноутпад++ и ничего не будет другого, поэтому даже не вижу смысла пробовать.
А, ну тогда лучше на винде остаться, может матлаб ещё там у вас есть
Пасяб.
А поднимать приложуху на чем?
Слышал про gunicorn(пердикс-вариант) и на докере(для людей, которые еще не бегают лечить простатит).
Вопрос по докеру:
Я могу так сделать:
1. Я могу арендовать vps
2. Залить туда контейнер в докере
3. Запустить докер, чтобы он обрабатывал запросы
4. На впс купить белый ип, выделить порт
5. Купить доменное имя для vps
Я новый ньюфаг, так что спокойно, без агрессии.
Ладно, сделал что хотели. Но у меня тупой вопрос ещё.
Если вопрос зачем мне sys, то я им выхожу, чтоб не считать дискриминант с делением на ноль.
В IDLE Shell код нормально работает, запускается вроде всё даже ничего. Но если запустить просто сам файл питона, то после ввода параметров в "чёрном" окошке всё закрывается сразу. Это так и надо?
У тебя какая-то неполная, картина. "Пердикс" вариант - стандарт.
Докер это просто контейнер, установщик всего говна который в нем прописан. Запрос сначала поступает на прокси типа nginx, куда сертификаты ещё прикручиваются, как правило. Потом это идёт на сам инстанс сервера тот же gunicorn для wsgi, либо asgi с uvicorn воркерами, который уже запускает и работает с твоим приложением. Тут многоуровневая система, чтоб запустить с одной кнопки, надо настроить её.
На сях я умудрялся писать давно и в основном лабы. А по работе я писал APDL скрипты, они тупые совсем.
Ну так серьёзно, ответь и я пойду спать, завтра выписываться с больничного.
Во всяком случае, в проде используется именно это. Контейнеры запускает, обновляет и тп кто-то типа дженкинса, который подтягивает код с репозитория. Например, решил ты обновить свой говнокод, запушил в репу, а дженкинс увидит это, остановит, обновит и перезапустит контейнер
Речь была про uvicorn, а не gunicorn.
Ну ок.
1) Простая конфигурация,одностраничное описание.
2) Лёгкое обновление конфигурации
3) Мультиязычность, тебе не надо ебаться с различными WSGI
А ну и wsgi/asgi из коробки. Не надо прокидывать gunicorn->uvicorn.
Нет там воркеры только uvicorn.
Он запускается так же как и обычный gunicorn только с указанием асинхронного воркера типа gunicorn ....asgi.application -k uvicorn.workers.UvicornWorker.
Так а нахрена? Получается ты когфиг каждый раз будешь менять в указании команды запуска, ну или в env файле.
Запуск из кода? Кривое решение, а тут у тебя независимое решение с лаконичными настройками, самое то для контейнера
Бамп повросу.
Какой конфиг, какой енв. Я написал баш один раз со всем говном который надо запускать и засунул его в докерфайл. Всё.
Вот фрагмент кода:
https://ideone.com/CYIZej
Собственно, функции сверху отвечают за проверку сайта
В GUI я засунул кнопку, которая запускает функцию. Всё нормально, она чекает сайт и пишет мне про новые созданные темы. А вот как этот процесс теперь остановить? Сам по себе он не остановится, он бесконечен.
Я попытался вместо Threading использовать Мультипроцессинг, но он не хочет запускать процесс при одной кнопке, и terminate() по нажатию другой
Может как то через global Stop решить проблему, правда я так понял глобальные переменные это не очень хорошо
Да, ребилдить, потому что как ты иначе перезапустишь контейнер когда дженкинс подтянет репу. Я ж не сам это делаю, всё что я делаю сам - пуш в репу. Всё. Грейсфул шатдаун для того и нужны, если ты об этом. Или ты прямо на ходу без ребилда апдейты ставишь, я не понимаю.
Или ты дефолтные настройки всегда используешь для проектов? Не понимаю к чему это вот всё.
Есть устроившиеся питонисты в треде? Расскажите кем устроились, а то синтаксис + ООП + функциональщину изучил (остались алгоритмы и структуры данных, тестики немного), а куда дальше смотреть - хз. Мат базы нет, так что дата сатанизм и машоб сразу не про меня.
Отписавшим любителям потеребить Питона - заранее спасибо.
Джанго + DRF пидором иди, очевидно. Только сначала докер выучи докер композ, SQL хотя бы джойны групбаи, и гит чтоб не сильно обосраться с конфликтами.
> писать на джанге с nosql
Скажите, что есть вещи хуже, пожалуйста. Я чувствую что с каждым днём становлюсь полным идиотом
Создал папку на диске D. Создал в ней .venv.
Активировал скрипт activate.
В консоли теперь пишется (.venv) (словно я в виртуальном окужении).
Запускаю pip install matplotlib, он выводит что такой пакет уже есть на диск C.
Requirement already satisfied: numpy>=1.17 in c:\users... (глобал каталог)
ЧЗХ, если мне он не на диске C нужен а чтобы он в новую виртуалку встал?
Почему эта сучара лезет в глобал проверять список пакетов когда я ей по питонски блядь говорю поставь сука пакет в новую виртуалку?
Не пишу тесты
Раньше работало и адекватно ставило пакеты в .venv
Теперь даже из .venv пытается ставить в глобал
Ну или даже возможно внутри venv-кофигов какой-то конфликт версий, снёс нахер .venv папку, поставил заново и нормально.
Можно написать цикл, который будет эти объекты перебирать и запускать им обновление когда надо, это будет по сути одной задачей. А можно каждому объекту создать по задаче, которая будет дергать обновление сама.
В первом случае код получается сложнее, во втором в целом изящнее, но может в будущем потребоваться костыль. Нет же ничего плохого в том, что бы запускать сотни и тысячи корутин?
>>285619 (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":"С богом"}
Как её можно конвертировать?
Двачую. Работаю на проекте без ревью и нихуя не понимаю, нормально я делаю или нет. Я сам очень тяжело принимаю критику, но понимаю, что без неё здесь никуда
спасибо биг биг!
Я не знаю, как здесь принято, может я не по адресу, но тогда пните по адресу пож-та.
Так вот, я на ютьюбе почекал базовый самый вводный курс питона - про переменные, циклы, кондишоны, функции, классы, модули и прочее такое базовое.
В этом курсе было очень важная деталь - после каждого небольшого тематического урока чел предлагал решить упражнение, а потом показывал решение.
Именно на таких упражнениях я больше всего и получал понимание, как делал все сам и потом сверялся с его логикой.
Вопрос - знаете ли на ютьюбе или где-то еще подобный курс с теорией, упражнениями на нее и разбором упражнений, но на темы чуть попродвинутее, но все равно базовые. Типа там генераторов каких-нить, лямбда функций, ну вы поняли, что-то немножко выше базового, но все равно весьма базовое.
Можно на английском, даже лучше мб на английском.
Глянь этот, вроде что-то такое там было.
https://www.udemy.com/course/the-complete-python-course/
О збс, спасибо анончик
Ну хз, у меня в задании написано, что надо использовать 3,8+ потому что там наверное джанго и что-нибудь не будет работать мб.
Ну да вот джанго в моем проекте говорит, что ему надо 3.8
Да, 3.7 это кал, нужно 3.8 потому что там завезли f-strings и джанго там асинхронный
А, точно, в 3.8 для них добавили свистоперделок
https://docs.python.org/3/whatsnew/3.8.html#f-strings-support-for-self-documenting-expressions-and-debugging
Блин, ну или скажите, как сделать так чтоб поэтри создал виртуальное окружение в проекте, если оно уже создано не в проекте, а в какой-то залупе?
Я просто на рабочем компе забыл настроить virtualenvs.in-project и он выводит эту хуйню. Ну сейчас я уже настроил, но один хрен то же самое. Поэтому я и хотел в облаке писать, потому что тут постоянно какое-то говно. Плюс ещё нихуя в PATH не добавляется.
А в облаке я не могу установить всё потому что там питон не 3,8. В итоге уже целый день пержу в стул, жопа горит. Постоянно трачу 90% времени на настраивание всякого говна.
Ты на гугловском облаке в виртуалку поставил шинду? Ну и ебанько, лол.
На линупсе бы обновил в пару строчек небось.
Вот твоя хуйня и решение, пять сек в гугле.
https://github.com/python-poetry/poetry/issues/2746
Почитать доки к одному и к другому, очевидно.
Я чет снес всю папку .poetry думал она снова появится если переустановить пакет, а чет не появилась)) Ошибка никуда не делась, но папки, где лежит этот файл, который надо редактировать, нет, лел.
Ну кстати папки ...AppData/Local/pypoetry, которая в ошибке, тоже вообще нет.
Да, почитал в общем ещё схожие вопросы, пиздец ебля. Нахуй надо, дома уже попишу завтра.
Епта, я пофиксил просто создав виртуальное окружение вручную через python -m venv и поэтри стало туда устанавливаться.
Этот процесс на ноде был полгода запущен и нельзя его убивать т.к. ha подумает, что с нодой что не так и переназначит её роли на другие ноды и возможно ребутнёт её.
Вот поэтому я не программист. Я никто. Но лучше быть никем чем вот этим.
Точно больше 5к евро (это минималка была для релокейта, который он в прошлом году получил), но на сколько больше не знаю. Может на пару сотен может на несколько тысяч
Хожу в БД (mysql) и выкачиваю оттуда данные, потом кладу их в ксв. Все бы ничего, но в некоторых полях извлекаемых таблиц лежат жсоны с переносом на новую строку или просто многостроковые тексты с переносом строки.
В результате при записи данных в ксв получается смещение записей на одну влево. Как-то с этим можно побороться простым способом, или надо городить обработчики, которые будут вырезать \n\n из получаемых данных?
На скринах внешний вид в базе и после записи в csv.
Кавычки, как я понимаю, добавляются уже на стадии обработки питоном, т.к. в базе все значения лежат без кавычек.
Сейчас попробовал поиграться с параметрами escapechar и csv.QUOTE_NONE, но безрезультатно. В какую сторону еще покопать?
Да у меня как-то не было с ним проблем.
Нормальный вывод получается. https://ideone.com/LG8zJ6
А, это потому что я обосрался, сорри.
Вот так там сделан переход на новую строку:
We've found a new treasure!\r\n\r\n%param1% Treasure Hunters joined the search and helped us find
Я хз, как убрать \r\n\r\n. Можно эту последовательность как-то заэкранировать от питона?
Питону-то похуй, это эксель разрывает строки, если больше одного ньюлайна, судя по всему. Цсв вообще довольно всратый формат в плане стандартизации.
Хотя не, вру, работает такой вариант. Возможно у тебя что-то другое ломает формат. Убирай последовательно куски от этого значения и смотри.
https://ideone.com/uUTXCt
А можно сделать одну периодическую задачу которая будет создавать отдельнын задачи для остальных.
Вообще, периодическое обновление сам по себе костыль. Привяжи их к какому-нибудь методу и всё. Это сейчас оно выглядит логичным, а в будущем просто наебнется.
Так это тоже неплохо. Отсутсвие ревью это, как правило, говорит о том что ты будешь поддерживать свой проект и вспоминать самого себя добрым словом
Для сервиса который-нельзя-ребутать надо логирование для каждой строчки делать. Не придётся потом сидеть и ядро линукса на транзисторы разбирать.
Любой хороший спец решит задачу максимально простым способом, а не реверсинжинирингом
Как же бесит, что для каждого чиха я должен импортировать хуеву тучу классов, которые часто являются лишь обёртками над перечислениями. Вместо того, чтобы написать
widget.setSizePolicy('fixed', 'expanding')
я должен писать в импортах:
from PySide6.QtWidgets import QSizePolicy
и потом написать:
widget.setSizePolicy(QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expandinf))
Ну какого хуя
Ну, ну, от жса ты тогда вообще умом тронешься
В дебаг режиме там есть трейс логи. Но мы его только в тестах испольщуем т.к. там за лень несколько гигов сжатых zst логов. Тут надо сложный ротейт делать чтобы у клиентов место на дисках не кончилось. Может в бэклоге и есть на это таска, но пока клиенты на инфо логах сидят.
охуеть епта
Как в однострочном решении написать так, чтобы строка, которая поступает на инпут, использовалась два раза? Видел такое решение через лямбда-функции, но не уверен.
Грубо говоря там чувак в одной строке в 2 местах в коде использовал введенную строку, и все это в рамках однострочника (решение в одну строку).
Что конкретно нужно покрывать тестами в веб-приложении типа CRUD? Классы и функции из views? И какого плана должны быть тесты, что-то типа проверки http запроса - assert response_code == 200 ?
Типа задача:
Напишите программу, которая вычисляет долю студентов, получивших оценку A.
Используется пятибальная система оценивания с оценками A, B, C, D, F.
Формат ввода:
Строка, в которой через пробел записаны оценки студентов. Оценок всегда не меньше одной.
Формат вывода:
Дробное число с ровно двумя знаками после запятой.
Sample Input 1:
F B A A B C A D
Sample Output 1:
0.38
Sample Input 2:
B C B
Sample Output 2:
0.00
Sample Input 3:
A D
Sample Output 3:
0.5
Решение:
string_operated = input().split()
print('{0:.2f}'.format(string_operated.count("A") / len(string_operated)))
НО!
Я точно знаю что такую задачу можно решить в 1 строку, без занесения инпута в отдельную переменную. Вроде бы видел как такое решали через лямбда-функции. Может кто-то подскажет?
Типа задача:
Напишите программу, которая вычисляет долю студентов, получивших оценку A.
Используется пятибальная система оценивания с оценками A, B, C, D, F.
Формат ввода:
Строка, в которой через пробел записаны оценки студентов. Оценок всегда не меньше одной.
Формат вывода:
Дробное число с ровно двумя знаками после запятой.
Sample Input 1:
F B A A B C A D
Sample Output 1:
0.38
Sample Input 2:
B C B
Sample Output 2:
0.00
Sample Input 3:
A D
Sample Output 3:
0.5
Решение:
string_operated = input().split()
print('{0:.2f}'.format(string_operated.count("A") / len(string_operated)))
НО!
Я точно знаю что такую задачу можно решить в 1 строку, без занесения инпута в отдельную переменную. Вроде бы видел как такое решали через лямбда-функции. Может кто-то подскажет?
Ну да если пердолишь свою джангу под стол, то и композ и не нужен. Да и докер не нужен, пусть кому интересно сами пердолятся с установкой зависимостей.
http-коды да. Если что-то меняется в базе запросом, то после теста запроса лезешь в базу и чекаешь изменения. Если загружается файл, то лезешь в директорию и чекаешь добавился ли он и.т.д.
Можно завернуть в компрехешнен, у которого свой скоуп в однострочнике, но это пиздец изврат. Лямбды точно нет.
https://ideone.com/0ZVWMV
Я сейчас работаю на фрилансе, зарабатываю 1к баксов +-, джун.
Проблема в том, что мне бы хотелось нарабатывать опыт в компаниях, но мне никто не предлагает 1000+ баксов, а смысл мне ниже идти, если я на фрилансе работаю по 3-4 часа в день и имею эти же 1000, а на работе за 500 баксов 8 часов, ещё наверно и овертайм будет, нахуя мне такая работа нужна.
Вопрос в том, стоит ли ставить себе приставку мидл и говорить типо - У меня и так опыт с фриланса,берите.
Я пробовал на джуна заявки подавать с требованием к зп минимум 1000 баксов, но меня все слали в 1 место. Не знаю даже что делать.
Проблема фриланса в том, что я не уверен что развиваюсь, вроде постепенно больше клиентов = больше заказов = больше денег, но таски одни и те же.
Для тестирования API лучше использовать vcrpy
>Проблема фриланса в том, что я не уверен что развиваюсь
Вот видишь, ты сам ответил на свой вопрос.
Опыт тоже стоит денег - плати за него, как подмастерья мастерам в гильдиях.
На фрилансе есть фултайм удаленка в командах, пиздуй туда.
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() и нет перевода в массив.
Почему не работает, строка итерабля, ты можешь по ней итерироваться. Ну а сортед возвращает сортированный список.
В джанге надо миграцию для статикфайлов делать отдельную.
Вообще, статикфайлы всегда были головной болью в проде. Кучу разрешений делать чтоб просто их увидеть, про жс скрипты вообще молчу.
То что строка итерабля в курсах и сначала пытался отсортировать строку, но мне возвращало исключение
'str' object has no attribute 'sorted'
У списка есть сорт, потому что он мутабельный. А сортед сортирует любую итераблю и создает новый отсортированный список из нее.
А, ебать, я понял. И .join() там юзается как раз из-за этого
>А сортед сортирует любую итераблю и создает новый отсортированный список из нее.
Спасибо за объяснение
И типа если мне надо будет отсортировать строку, то я бузу юзать метод join с учетом того, что мне вернется новый список. Хз как верна эта логика, но хоть как-то понятно
Ага.
Вообще, привыкай юзать интерактивный шелл для разных проверочек и упражнений, это очень удобно.
Можно генерировать все на беке, можно сделать апи на беке и морду на фронте. Разные подходы.
Хм. Интуиция подсказывает, что генерация на беке безопаснее, но медленнее.
А как вообще понять, какой подход использовать? И есть ли такие ситуации, когда обязательно нужен JS, или в принципе фласк полностью может его заменить?
Сажа приклеилась.
Либо на бэке ты генеришь готовый статичный хтмл, соответственно будет тратиться время клиентом (браузером клиента) на обработку этого хтмл (построения дома), если у тебя там какая-нить таблица на тысячи строк. Вся динамика через обновление страницы.
Либо на бэке ты генеришь жсоны с данными через апи, а на фронте с помощью якс/фетч долбишься в апи и отрисовываешь эти данные как тебе надо. Вся динамика на джаваскрипте без обновления страницы.
Захочешь к себе на страницу прикрутить сторонний сервис, а там либы на жсе.
Надо хорошо программировать.
>Надо хорошо программировать.
необязательно
нужно надрочить собесы
вести твиттер
писать на хабр и медиум
выступать на митапах и конфах
Где покрасить?
а че там понимать в декораторах? Я не питонист ни разу, но достаточно посмотреть на пример кода с декоратором чтобы понять что он оборачивает собой вызов функции и что то делает либо с ее результатом, либо до ее выполнения (можно как middleware использовать, например, для проверки допустимости вызова функции)
Вкатунам непонятны и намного более простые концепции.
Нихуя он не позволяет оживлять, потому что шаблонные языки, которые просто нахуяривают синтаксис поверх уёбищного синтаксиса html - говно. Темплейты позволяют делать сервер-сайд рендер, который очень важен для SEO. Но на этом их преимущества заканчиваются. Зато есть ворох проблем, в виде отсутствия тулинга (большинство теймплейтов по сути один сплошной строчный литерал), засирания контекста (что просто охуенно заходит с предыдущим пунктом), засиранием ответственности (чтобы подредактировать шаблон тебе нужно знать весь серверно-клиентский стэк проекта). В конечном счёте это выливается в ебическую привязку вротэнд стэка к серверу, а значит никаких тебе соевых фреймворков в будущем. Самый запущенный пример - рубирельсы со своими шаблонами, которые требуют знания жиквери, в 2022-м году.
Так что если вкатун, то сразу раздели сервер и клиент на отдельные папки, которые связаны разве что общим конфигом.
Генератор - это функция, не связанная с ООП. Декоратор - это один из шаблонов проектирования. Тебе нужно выучить их всех, иначе хуйня будет с ООП.
Мне всегда было интересно, а зачем серверсайд рендер нужен? Вон, в той же джанге, например, там же полфреймворка этим занимается. Зачем? Как это работает и чем лучше жса?
Много где. Например, обернуть функцию в try catch или логгирование подкрутить. Ты ж не будешь её переделывать, а просто добавишь декоратор одной строчкой. В celery можно декоратором обозначить таски. Да дохуя всего.
Декоратор это обертка над функцией. Во всех языках есть обертки над функциями, но тут они выглядят вот так.
Потому что так делали всю жизнь до развития жс для этого меньше десяти лет назад.
Ее активно перенимают высоконагруженные сайты, чтобы переложить рендер с себя на клиента, а так далеко не везде.
Если проблема только в этом, почему бы не сделать отдельную прокладку на сервере чисто для рендера, вместо жса?
Всё равно ты делаешь это у себя, а так это делается в браузере юзера. Умножь это на дохуллион реквестов у больших сайтах, вот он и профит.
Не то чтобы вкатун, я так вообще аналитик, просто хочу поднять веб-страницу, где заказчики аналитики будут просто нажимать кнопку, запускать скрипт и получать результат. Сейчас они тыкают этим меня, и я какое-то время думал просто зашарить им код, чтобы они его запускали сами, но там тоже свои проблемы - надо объяснить, как запустить интерпретатор питона, доустановить зависимости, не дай бог скрипт обновится. Короче мне было бы проще просто поднять страничку с кнопкой и все. И вот я думаю - кнопку "скачать отчет" можно сделать как на уровне фласка, так и жаваскриптом. Но мучиться с жс никакого желания нет, уже хватило на предыдущем месте работы.
В линтере нет поддержки.
https://stackoverflow.com/questions/46337716/pylint-cant-find-qwidget-and-qapplication
Так если ты даже петухонить не умеешь, на жабаскрипте кнопку "Скачать" сделать легче, чем ебаться с формой в джанге/фласке.
Bootstrap это ui библиотека, в ней за тебя уже настроены css-стили и под них настроены css-классы. Очевидно django-bootstrap нужна, чтобы при рендеринге хтмл вставлять классы с помощью шаблонизатора, а не самому прописывать.
Да я знаю че такое бустрап. Ну так мне нужно будет прописывать эти классы в шаблонизаторе точно также, не?
Что сделал я: создал словарь(цифры от 1-9), ищу в слове совпадение с ключом и возвращаю цифру как int, а не изначально str.
Дальше хуй знает, я думал создать пустой лист и добавлять слово по индексу исходя из цифры в нем через insert, но не особо получается.
Думал использовать сортировку, но так как там строка сортируется по первой букве, а цифры игнорируются. Не понимаю как сделать сортировку конкретно по цифре.
"is2 Thi1s T4est 3a" --> "Thi1s is2 3a T4est"
"4of Fo1r pe6ople g3ood th5e the2" --> "Fo1r the2 g3ood 4of th5e pe6ople"
сплит, сорт, джойн. Но нет элегантного способа извлечь цифру для сорта.
Хотя, если у тебя больше 10 слов, то не так красиво будет и придется предваритьельно извлекать числа и потом объединять
Спасибо, но я если честно особо нихуя не понял из твоего решения. Но решил втупую, через циклы и условия
Потому что цель сделать красиво и изъебнуться, а не просто решить любым способом.
Я пока придумал так, но хуевасто, еще помучаю.
https://ideone.com/A7RcPO
Однострочник может быть красивым, если изъебнуться, это и есть суть дрочерства на сайтах с задачками.
Ну а лучше ли нахуевертить циклов или перегруженный однострочник это уже вопрос личных предпочтений и вкуса.
Ну можно добавить джойн и инт в лямбду, но мне в любом случае не нравится это решение, хотя в этом подходе другого вроде нет.
https://ideone.com/ftAHcR
Потому что поисковые движки срали на новомодный клиент-сайд рендер, им разметку сразу с запросом подавай.
>>295928
>почему бы не сделать отдельную прокладку на сервере чисто для рендера
Шаблоны ты хотел сказать?
>вместо жса
"Вместо жса" в вебе ты только костыль сможешь сделать.
>>295935
Кстати даже условные твиттеро-фейсбуки обрабатывают запрос, чтобы влепить метатэги, а не отдают голый html на все страницы.
>>295985
Суть в том, что ты сейчас хочешь поднять страничку с кнопкой. А потом тебе захочется поднять ещё страничку и добавить динамики. А потом ещё и ещё. И так ты окажешься в ситуации, когда у тебя 100+ шаблонов страниц, написанных на DSL, для рефакторинга которых тебе чуть ли не помидор понадобится. Но помидор не будет ковырять шаблоны даже за жирные шекели.
Спасибо за совет. VSCode видит сигналы и подрубает подсказки для аргументов. Не знаю, почему такого нет в PyCharm, который вообще-то стоит денег
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()))))
...:
In [78]: sort_string("is21 Thi12s T4est 23a")
Out[78]: 'T4est Thi12s is21 23a'
In [79]: sort_string("is21 Thi12s T4est 23a")
Out[79]: 'T4est Thi12s is21 23a'
Есть ListView. Хочу в зависимости от объектов в queryset менять размер пагинации.
Т.е. первая страница - пагинация через 14 элементов, вторая например через 16 элементов.
Как такое провернуть?
Ну так вместо дивов с форм-контрол ты будешь писать в башлоне бутстрап-форм. А вот если тебе уже нужны кастомные стили, то руками всё равно придётся переопределять и импортить.
Ну я так глянул ещё в документацию, походу да, в основном в формах разница, а всё остальное также. Я в формах ещё не особо поразбирался прост
И чёт оно не пашет. ЧЯДНТ?
import math
print("Ввод абсц:")
a=float(input("a="))
b=float(input("b="))
c=float(input("c="))
d=float(input("d="))
print(Cardano(a,b,c,d))
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)
return res
print(Cardano(1, 6, 3, -10))
И чёт оно не пашет. ЧЯДНТ?
import math
print("Ввод абсц:")
a=float(input("a="))
b=float(input("b="))
c=float(input("c="))
d=float(input("d="))
print(Cardano(a,b,c,d))
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)
return res
print(Cardano(1, 6, 3, -10))
Ага, не пашет. И соде тут нету.
> Написал програмулину для решения кубического уравнения.
Короче, просто на пастебин закину
https://pastebin.com/pJ905Rn2
А че не пашет? Считает неправильно типа? У меня запустилось, только первый принт убрать надо было.
> решать алгебраическое уравнение НЕ методом минимальной резольвенты в поле квартернионов
Кринжанул, спасибо
> решать алгебраическое уравнение НЕ методом минимальной резольвенты в поле квартернионов
Я таких слов не знаю, я инженер
Нормальные люди уравнения перебором решают. И точнее будет и быстрее.
Наверное порядок не гарантируется при добавлении новых ключей
https://docs.python.org/3/library/stdtypes.html#dict-views
> Changed in version 3.7: Dictionary order is guaranteed to be insertion order.
Там на версию раньше уже было, а в следующей внесли в спеку языка для всех реализаций.
В вскод своих багов хватает, но он легче и удобнее. Главное - универсальнее.
В диктах вообще порядок не предусмотрен при работе. Нахер там он не нужен.
В книге "Укус питона" есть такой пример.
Он реализуется только в терминале? У меня не получилось в IDE, так как переменные не обнаружены.
Этот код только для того, чтоб показать, как питон могет?
Сам я юзал возврат кортежа, пися код в IDE, так что так можно делать. А ты наверно какие-то ошибки допускал, вот среда и ругалась
Но это же консоль внутри IDE. А при запуске через ctrl shift f10 такое не прокатит.
Допиши print() к переменным своего кортежа.
https://pastebin.com/eezge7H4
>>296514
В данный конкретный момент у меня какие-то проблемы с передачей данных между функциями. Я не могу понять, почему оно не передаёт введённые коэффициенты в функцию для решения (там подписано что где).
Пишет TypeError: Cardano() missing 3 required positional arguments: 'b', 'c', and 'd' - очевидно, что функция не получает то, чего должна и я не очень понимаю, почему.
Тыкал по разному - не получается.
1) Въебать всю в одну модель, то бишь в одной таблице будут уведомления разных типов, но у строк будут пустые поля
2) Раскидать всё по разным моделям, но будет дохуя разных табличек.
На какой стул правильно садиться с инженерной точки зрения, по количеству запросов к БД и т.д. Понимаю, что это просто так примерно не почувствуешь, но может кто-то решал подобную задачу и может подсказать.
Ты задал в def Cardano, что этой функции нужно 4 аргумента - а, б, с, д.
Когда ты вызываешь эту функцию, ты теперь полюбас должен указать для нее 4 аргумента, например так:
https://pastebin.com/wS4ub1Uv (изменения на 46 и 49 строках).
Альтернативно, ты можешь при объявлении функции задать, что ей нужен только один аргумент, который являет собой кортеж из 4 элементов. Тогда при вызове функции ты передаешь coef, а в объявлении функции надо просто дописать, что а,б,с,д - это элементы переданного кортежа.
https://pastebin.com/kjVJU6gW (изменения на 22 и 50)
Зависит от того как ты к ним будешь обращаться. Лучше наверное по разным, чтоб не было одновременных вызовов и изменений одной и той же большой таблицы. Обращения к бд являются ленивыми, так что по идее в плане нагрузки разницы быть не должно.
Вообще, делай базу как можно меньшей.
Конечно миссинг. У тебя вывод из 4х функций приравнивается к одной переменной, остальные три теряются. Чтоб сделать то что ты хочешь прочитай про arg kwargs. Выглядит это так.
dict = {a:1, b:2, c:3...}
func(++dict) плюсики это звездочки
Так что лучше тебе передавать лист на выходе. Пустой лист (а так же пустой дикт нуль, пустая строка и пр) в питоне равносильно false.
Интересно, зачем ты пишешь if a != False когда можно просто написать if a.
Это первое что в глаза бросается
Пилю на селениуме парсер. Задача: собирать ссылки на айтемы со страницы, на которой они появляются динамически при скроллинге вниз. Иного способа получать ссылки, кроме как в тупую напрямую нет. АПИшка по ключам, которые не выдаются толком, а обходные пути заблочены. Число ссылок на айтемы которые необходимо получить варьируется от пары до десятка тысяч.
Столкнулся с проблемой переполнения оперативы на вкладке и последующим вылетом ошибки out of memory. Парсер находится на ВДС в конфиге на 8 гигов оперативы. Если просто вручную скроллить страничку и следить за потреблением памяти, то можно увидеть, что оператива сама собой освобождается при длительном скроллинге. При работе селениума на хромдрайвере такого освобождения нет, отчего и происходит переполнение.
Как бороться с такой хуйней и расчищать память? Закрывать инстанс браузера и открывать с того же места не вариант - открыть с того же места просто не выйдет ввиду отсутствия прямых ссылок/запросов. Почему обычный хром нормально справляется с прохождением больших наполненных страниц, а хромдрайвер загибается?
Я слепой. Нашел ниже тред QA. Тем не менее, ответы и здесь приветствуются
Я уже заебался с ошибкой QPaintDevice: Cannot destroy paint device that is being painted. Как фиксить?
Очень хочется чтобы было без воды, с вопросами в конце главы и понятно, но сколько не качал разных - не нашёл.
Вроде был такой, но я проебал название.
Неа. Оператива вообще не освобождается, разные задержки пробовал
Подозреваю, что тебе нужно не без воды, а чтобы было подано с практической точки зрения.
Возможно. Мне просто не нравится лишняя информация которая не несёт полезной нагрузки, но она вроде и именуется водой.
Учитывая мою лень это реально проблема.
Это как-то решается, кроме установки более древней версии второй либы?
Кучу данных держишь в памяти, делай генераторы там где это возможно и по максимуму используй ленивый доступ
Лол. Ставишь себе дебаг проксю, прописываешь в браузере и скроллишь себе вниз, потом смотришь на запросы в проксе и повторяешь у себя, забирая готовые данные в чистеньком жсоне.
Какие блять селениумы.
Print('Loh' if 2+2==4 else "")
Всё равно печатает пробел. А как вообще пропустить выполнение печати если условие не выполнено?
Читай док по апи тимспика, ищи репы в гите
В первом варианте, который предпочтительнее
Почему бы не написать
if 2+2==4:
print('text')
?
Тернарный оператор в питоне супер жуткий, так как выводимые значение с разных сторон, а не рядом.
У меня пробел не печатается. Может быть тебе нужно явно указать sep и end, не знаю? Там только перенос строки должен печататься по умолчанию.
С sep='' всё отлично, спасибо.
Бумп реквесту
Ну была же книжка такая, там ещё первой главой ввод в информатику был для самых чайников
Остались главы про Юникод, декораторы и метаклассы.
Подскажите, что из этого 100% нужно прочитать вкатышу, а что лучше отложить на потом?
О, еще один вкатыш.
Попробуй "автоматизацию рутинных задач с помощью Python". Как раз первые 180 страниц - это описание синтаксиса, а дальше уже прикладные проекты идут.
От того же автора есть Hacking Cyphers и Making Games. Эти я не читал, но говорят годнота.
А под основами информатики я хз что ты понимаешь. Базовые понятия вроде циклов, функций классов и ООП? Все это есть в "автоматизации рутинных задач"
Юникод. А что про него читать? Но он всюду энивей.
Для декораторов хватит одной статьи и потыкать их в программе один вечер - и это можно сделать в любой момент, как встретишь их - и для вкатывания они не нужны. Метаклассы нахрен.
Короче лучше просто тыкай дальше вещи что было ранее и понимай их глубже, практикуйся, а не какие-то декораторы...
>А что про него читать?
У Лутца целая глава про него. Честно говоря, уже надоело читать, хочу уже прочитать доку джанги и говнякать сайтик.
Но я не спешу. Надо так надо. Это основа, ящитаю.
Про декораторы иногда даже пишут в вакансиях, например: "умеете применять декораторы или знаете что это такое".
Спасибо, анон.
Но он уже старый дид вроде, да и не хочет.
>О, еще один вкатыш.
Чини детектор, я для общего развития изучаю.
>Попробуй "автоматизацию рутинных задач с помощью Python". Как раз первые 180 страниц - это описание синтаксиса, а дальше уже прикладные проекты идут.
>Базовые понятия вроде циклов, функций классов и ООП? Все это есть в "автоматизации рутинных задач"
Неа, там было про биты, байты и прочую поеботу, лол.
Просто запомнилась именно поэтому, т.к. я дальше этой главы и не зашёл. Но очень доставили вопросы в конце главы, это куда более эффективно чем конспектирование и повторение, я считаю.
Как быстро инициализировать переменные None вне зависимости от количества переменных, чтобы не повторять None то же количество раз?
Что не нравится? Раскрой мысль.
a = b = c = None
a = b = c = d = None
Ладно, я тупой, каждый поток берет на себя половину работы же, вот почему.
В модуле где есть settings никаких вьюх делать не надо. В твоём случае надо сделать ещё один и добавлять к нему всё остальное. Эти модули сделаны просто для удобства, можешь хоть для каждого роута делать свой модуль. Вообще они должны быть независимы друг от друга для модульности.
А вообще поебать где что, можешь хоть в основном модуле делать, главное чтоб в роуте был указан метод
test = 'бла бла'
test.my_method()
>В твоём случае надо сделать ещё один и добавлять к нему всё остальное.
Чет не понял. Типа делать приложение для главной страницы, которое будет прост рендерить главную страницу? А че значит "к нему добавлять все остальное"?.
Не понял. Напиши полностью. Допустим метод выдает return len(self) Как это сделать?
А, ну я так подумал, наверное приложение определяется моделью, да? Одно приложение должно содержать вьюхи, которые взаимодействуют с моделью, описанной в этом приложении. А то если приложение импортирует модель из другого приложения, получается оно самостоятельно работать не может.
О вкатыш с курсов.
>>298199
class MyString:
def __init__(self, arg:str):
self._value = arg
def __str__(self):
return f' 2298256 - хуесос. Значение: {self._value}'
def __repr__(self):
return f' Все равно 2298256 - хуесос'
def __iter_(self):
return [s for s in self._value]
У тебя какая задача стоит, юродивый?
Да просто чтобы красиво было.
А вот такой вопрос. Если я в функцию отправляю строку как аргумент функции, она копируется или передается по ссылке? То есть если я отправлю огромную строку, то в памяти будет две такие же огромные строки и будет фигово для производительности?
Иди Лутца наверни говнохлебатель
>памяти будет две такие же огромные строки
будет ссылка на переменную(объъект), хранящую значение,
потом если GC пройдется и если ссылка будет уже не нужна, то очистит память. Но если ты за байтоебство, то нахера начал питон учить?
Короче проверил в диспетчере задач. Отправил в функцию строку 50 мегабайт - процесс питона около 50 мегабайт. Значит по ссылке передается. Круто.
>если ты за байтоебство, то нахера начал питон учить?
Чтобы на нем байтоебить, очевидно же.
>Короче проверил в диспетчере задач
ты ебанутый, братишка
https://pypi.org/project/memory-profiler/
Ну тогда все равно остается непонятно - даже если библиотека скомпилированная, я же все равно при вызове конкретного метода запрашиваю какой-то функциональный кусок скомпилированной программы - на нее должна быть ссылка. Как пайчарм соотносит, что tolist() должен исполнять функционал такой-то, а tobytes() такой-то?
И еще, а где можно посмотреть сорцы пандаса? На гитхабе https://github.com/pandas-dev/pandas все на питоне, но питон же не компилируемый, а интерпретируемый.
Питонья вм подгружет компилированные модули, они ей сообщают - у меня есть такие методы, у меня есть такие штуки. Потом при их вызове она уже знает, что делать.
Пучарм тут вообще никоим боком.
>>298277
В общем, там можно делать как хочешь, на работу это влиять не будет. Хочешь делить всё - дели. Не хочешь - не дели.
Вообще, функционально это делится примерно так site.fag/a/puk, где а - твой модуль, а puk - роуты этого модуля. Зависит от того сколько у тебя будет различных маршрутов и реюзабельность кода. Ты ж не планируешь делать с десяток серверов с универсальными модулями?
Джанга это прежде всего рендеринг и всякое с базой из-за хорошей орм. Если ты делаешь какой-то мессенджер, борду и что-либо с большой нагрузкой на страницы в браузере, то лучше делать это не на джанге, а рендер отдать на жс.
Я сам не до конца понимаю зачем в джанге такое разделение на модули, когда он сам по себе монолит. Закос под микросервисы что-ли, лол.
Как ж ты работать собрался, когда проекты делать не хочешь?
MVC потому что. Джанга в этом плане очень взрослая, но без асинхронки нахуй не сдалась.
Сектанты просто указываются в нее как и в SpringBoot, не более.
Можно говнокодить на FastAPI, выбирая себе ORM по желанию.
Очень медленно пилится TortoiseORM, отставание просто пиздец. Тот же peewee умеет давно в CTE, но нет асинхронки нативной
Но мне норм пока так, пидорю костыли и raw SQL
Я нашёл такой вот решатель https://github.com/shril/CubicEquationSolver/blob/master/CubicEquationSolver.py
Как им воспользоваться?
В гугле забанили?
Бери linux subsystem и ставь туда как нормальный человек.
В питоне для винды зависимостей овердохуя и надо тащить гигабайты для конпеляции сишных библиотек.
>Какой язык - такой и программисты.
Инфоцыгане сообщили, что Питон пиздец какой простой (НЕТ), вот и лезут вкатыши-дебилоиды.
Сука ну прочти ты документацию или банально погугли. Потом из-за таких ебланов и вилка ниже чем у остальных.
Это жабаскриптовики кукарекают, потому что у самих набегающих ебланов еще больше - фронт же проще, лол.
Антуаны, помогите преобразовать json файл в массив. Нагуглил только как строку преобразовать в список.
Имеется несколько строк в json, нужно по запросу получить значение "аргумента" из каждой строки.
>Питон пиздец какой простой (НЕТ)
А что сложного в говне вашем для школоты?
Типизация? Динамическая, интерпретатор все сопли за вас подотрет.
Синтаксис? Мммаксимум простой.
Хуже только рнр, даже жс уже лучше вашей поделки.
мимо лорд джавист
Долбоеб, ты пишешь на языке который впринципе перестал развиваться и без костылей никакие фичи занести уже не получиться из-за мемной обратной совместимости. Кста про упомянутый пых забавно, по любви у разработчиков джава около пыхи сидит во всех опросах, те на дне)0)0)
Покажи async/await в жабе. А как там якобы возможные гринтреды, в java 3000 версии завезут? Ну классику вроде куда пропадают типы в ваших дженериках даже спрашивать не стану, а то у жабистов моментально попку рвет, особенно если сравнить с клоном жабы от майков
>А как мне из шаблона эти походы или их параметры передать в сам скрипт,который к шаблону подключен?\
Есть два способа:
1. Говнокод - вешать джейсон с датой инлайн скриптом в глобальный скоуп, а потом уже его парсить при гидрации.
1.2. Пыхавей - привязать джейсон к дата-аттрибуту на каком-нибудь из элементов.
2. Зе райт вей - написать API эндпоинт, возвращающий нужные тебе данные и скриптом его дёргать.
Спасибо!А первый вариант,это прям совсем говнокод?Я просто сайт для друга делаю,мне нужно,чтобы он более-менее работал.
К примеру, как выполняется "=="\in и т.п. вещи.
Если нужна такая дотошность, зачем тогда питон? Поснму не си?
Почему "ретурн вне функции"?
https://pastebin.com/QhiwNufQ
Если коротко, то что я хочу.
У меня есть "рабочий" код, разбитый на функции. Само по себе вроде работает.
https://pastebin.com/kRzFi4Gs (будет жаловаться на то, что не получил х1, х2, х3, что логично)
И есть отдельная функция, которая решает. Она большая, как её разбить на подфункции "шоб красиво было" (так начальник требует) я не понимаю, но не суть - мне б чтоб работало хотя бы. Естественно, если совместить это с старым кодом, блок ввода не нужен, в общей функции у меня его нет.
https://pastebin.com/e70VuLcs
Потому что ты криво скопипастил, проебав отступы, которые в бидоне имеют значение.
А как правильно то? Я понимаю, что дело в этом, но не могу понять, как исправить.
> А как правильно то?
Однородно на всех участках. Это решается подгонкой в ide, но у тебя его нет скорее всего. Подключай как модуль тогда, форматирование может быть разным на уровне файлов вроде.
Через pyinstaller.
Идея очень плохая, так как тянет за собой дохуя, это ж питон, ну и заебешься пути все прописывать.
Ты хочешь говнокод для друга написать?
Придумал еще тупой способ - при запуске скрипта проверять, сколько сейчас время, считать сколько осталось и ждать. Но как делать грамотно?
Кронтаск, либо селери
> И как оптимизировать ==
Никак, и я не спрашиваю как его опитимизировать.
Я о том, что в каких-то случаях есть более быстрые варианты выполнения тех или иных задач. Хотелось бы почитать об этом.
Тут уже писали, что не нужно например использовать f-strings, потому что всё равно экономия НЕЗНАЧИТЕЛЬНА
Ну а вообще, если у тебя есть эти варианты на руках - ты всегда можешь загуглить, или сам проверить с помощью timeit, или посмотреть какие там операторы под капотом с помощью dis
Нет. Если скриптов не много, то пойдёт и так. Главное, чтоб тебе удобно было читать и разбираться.
> python data mode, python memory model
Чё это значит? Всё это время в питоне был маллок, про который я не знал?
>Тут уже писали, что не нужно например использовать f-strings, потому что всё равно экономия НЕЗНАЧИТЕЛЬНА
Что?
> сам проверить с помощью timeit, или посмотреть какие там операторы под капотом с помощью dis
Спасибо и на этом, антош.
Ну тип, сколько раз за всё время у тебя будет вызвано функция принта? Ты не заметишь этой разницы
> сколько раз за всё время у тебя будет вызвано функция принта
Разве только при принте можно делать ф-строку?
> Ты не заметишь этой разницы
Это уже дело мое.
> уже писали, что не нужно например использовать f-strings
Так что за ебанутый это писал? Если и нет смысла дрочить на 30%+ прирост скорости от ф-строк, то красота кода и функциональность ф-строк превосходна.
Это из-за кэша. Когда одну и ту же строку несколько раз генерируешь и она короткая, то у неё одинаковый айдишник. И раз она в первый раз создалась и сборщик мусора не успел её удалить, то все последующие разы будет одну и ту же строку возвращать. Поэтому для чистоты эксперимента нужно не миллион одинаковых строк генерировать, а разных.
Года достаточно, если усердно заниматься и изучать всё.
Около 1к часов усердной учёбы. Если повезёт и будешь регулярно гонять по собесам, то может кто-то сжалится лоханётся и возьмёт тебя пораньше
6 месяцев.
>1. Где написано что он генерил ее миллион раз?
Он же наносекунды как-то посчитал. Логично, что он милион раз генерил и поделил.
>2. Не только лишь память.
Всё равно это объяснение факта, который получился в результате нечистого эксперимента. После того как провести его чисто, то результат в скорости будет хуже, а это объяснение со скрина останется прежним.
Блэт, есть набор из 10+ строк, в функцию поступает строка, надо проверить что она начинается с одной из этих строчек, как это сделать без ебаных циклов for?
for s in STRINGS:
----if in_str.startswith(s): return True
А чем тебе циклы не нравятся?
Да это понятно, я имею ввиду, как их хранить, например? Какие best-practises по их менеджменту есть?
str[1:4]
str[1: 4]
str[1 : 4]
str[a + b:c + d]
str[a + b: c + d]
str[a + b : c + d]
???
>str[1:4]
>str[a+b:c+d]
Сейчас кризис полупроводников. Память дорогая. Нефиг на пробелы её разбазаривать.
Мы с пацанами через Джангу делаем. В БД ссылки на файлы хранятся и все епт
fстринги более читаемы, если уж нет разницы
list comprehension
for s in STRINGS:
----if in_str.startswith(s): return True
Превращается в это
[in_str.startswith(s) for s in strings]
Ну и startswith возвращает булевое значение, так что нахера ты делаешь return True?
Если выделить конкретно строки
оно же filter/reduce, но оптимизированное
[s for s in strings if in_str.startwith(s)]
в конструкции :
t = 0
for c in word:
if c == 'aeiou'[t%5]: t+=1
return t
как это работает? Где почитать?
for c in word:
if c == 'aeiou'[t%5]: t+=1
return t
Всем привет, как работает [t%5]?
Это копия, сохраненная 4 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.