Это копия, сохраненная 13 октября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2381665 (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
Модуль logging дает мне кучу ненужной инфы. Хочу логировать только то, что сам запихал в print’ы.
Подскажите как с помощью скрипта на пистоне хешировать пароль 100 тысяч раз (sha256).
То есть есть пароль, к примеру qwerty10
И мне нужно его 100к раз прогнать через sha256 и получить результат.
Ну хоть не тред goвноедов
import psutil
for proc in psutil.process_iter():
____try:
________if proc.name() == "google.chrome":
____________proc.kill()
____except: (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
________pass
Скинь няшу
Не понял, чтоб он каждые 2 часа закрывал процесс винды? Или через 2 часа после загрузки скрипта?
Че-то не работает, пишет об ошибке в синтаксисе.
У меня 2.7.х версия, может в этом причина?
>win 8.1
-а хули не линух?
-Потому что пошел нахуй
>PyCharm
>Cuda 11.1
>ptxas 7.1 , а нужен минимум 7.4
Почему ебучий pip работает через раз? Команды из интернета типа pip --version вообще не работают, ни из консоли, ни из терминала в пайчарме, не из консоли питона. Что за говно? Мне нужно всего одну сразую програмку обновить ptxas, из-за которой не работает ахуенная либа.
Как же заебала эта параша, словами не передать. Когда работает - удобно пиздец. А потом хуяк и "pip не является внутренней или внешней командой или исполняемой программой". ССУУУУУКААААА
В PyCharm вроде есть и pip и conda и ещё что-то совсем топовое, но почему-то даже поставить их по инструкции не получается. Какого хуя? Почему это говно вообще называется гайдом, если даже слепо следуя инструкции оно не работает нихуя? Ну пиздец ебаный, уже и в питон вкатился и либу ахуенную нашел по свои задачи и даже вспомнил как писать, а из-за одного всратого пакета нихуя не работает. Обновить его можно было бы через conda или (по идее) через pip, но это говно не запускается даже в PyCharm, хотя оно там стоит. Как и Wheel.
Как пофиксить? Сука! Очко горит как второе солнце.
Ютуб не вариант, так как сейчас сижу на всратоинтернете 40-50кб/с. И похоже из-за блокировок не работает сайт Nvidia, так что скачать и поставить
Похуй, разобрался сам. Гайды - говно
Бамп.
Погромисты, нужен рабочий код, чтобы хешировать пароль в sha256 100к итераций (без salt).
Памагите, будьте ж вы людьми, ребята.
Поискал в гугле, в виде онлайн-тулз везде предлагают только один раунд хеширования, а мне 100к надо ебануть.
У меня кстати только python 2.7 установлен, хз имеет ли это значение, чтобы код исполнялся. Мне выше скинули вариант, но почему-то не работает.
Тебе нужен туториал по циклу for?
ёпта! гугол же..
import hashlib
hash_object = hashlib.sha256(b'Hello World')
hex_dig = hash_object.hexdigest()
print(hex_dig)
В цикл вхерачь только.
Спасибо, но я вообще нихуя не понимаю в погромировании, вряд ли разберусь.
А букву b перед Hello World надо убрать?
import hashlib
psw = b"Hello World"
psw2 = psw
for i in range(100000):
psw2 = hashlib.sha256(psw2).hexdigest().encode()
print(psw2)
Так точнее..
Если ты планируешь писать рабочий код на телефоне в дальнейшем, то можно.
Для самых базовых штук можно, потом начнется ебля с библиотеками
Я эту читаю, она с 3.6.1 + видео в ютубе + оф сайт с гайдом
Может он очень умный
А если самому куски текста засовывать в переводчик? Вроде сейчас нормально переводят. В гугле целые сайты можно через него прогонять
А по таким библиотекам хешей можно вскрывать токены wi-fi handshake, чтоб восстановить пароль WPA2? По идее, будет быстрее сравнивать из файла, чем генерировать под каждую комбинацию знаков и сравнивать. Или это делается не так?
мимо
...которые требуют обновить ptxas, который не обновляется через pip и требует 600мб конду, которую скачать нет возможности 20кб/с хотспот.
Как ты понимаешь, скачать кали и гайды по ней тоже нет возможности, так что если можешь подсказать как это делать питоном - буду очень благодарен.
>20кб/с
>Нужно погуглить и чуть подумать
meh... Статьи с хабра грузятся МИНУТАМИ. Я даже не могу нормально почитать про процесс handshake и пакет придётся получать/искать через wireshark. А для работы с ним, надеюсь со второго раза уже понял у меня ничего нет. Единственный вариант - написать своё и оставить на ночь/сутки/неделю, пока не получу доступ к норм сети, не скачаю гайды на ОраклВМ и как делать всё тоже самое, но уже как белый человек.
Анон, если ты можешь с этим помочь, пожалуйста - помоги. Я бы не писал в питон, если бы это не было моим единственным инструментом.
вырубай просто медиа говно всякое, загружай только хтмл и ксс
без картинок и скриптов всяких текст почитаешь, вот беда-то
у меня шок просто от этого синтаксиса
document.querySelector(`[data-id="${post.dataset['post']}"]`))
>качаем zipfile37
https://www.geeksforgeeks.org/how-to-brute-force-zip-file-passwords-in-python/
>статья релейтед
>работает
>открывает архив и достаёт файл, если пароль совпал
>качаем rarfile
>меняем элементы названий с zip на rar
>0 синтаксических ошибок
>те-же классы, те-же переменные
>не работает
Почему так? Я даже пробовал на тестовом архиве, где пароль был 123456. Такой пароль был единственным в .txt файле и всё равно скрипт его не открыл, а zip открывает на ура. В чём проблема? Пробовал и просто extract и open из rarfile - не может открыть запароленный RAR3 или RAR5. Как найти ошибку?
>За код как в этой статье ебало бить надо.
Лол, думал слишком джун для такого, а это действительно всратый код.
>rarfile
Этот.
https://pypi.org/project/rarfile/
>Взял модуль для зип и заменил там всё на рар?
Да. Причём всё запустилось и даже счётчик вариантов крутился проверил принтом.
Текущий код — https://pastebin.com/sxv0XS4e
Только файл и .txt сам сделай, там генерация не предусмотрена
Тогда вообще ничего работать не будет, тем более счётчик внутри try работал. Выглядит так словно весь класс в либе просто игнорирует параметр pwd, так как в ручную (через winrar) всё работает и пароль указан верно.
это не типичный синтаксис, так что спокуха
Проснись, ты обо у тебя в примере ничего жс специфичного - вызов методов и обращения к ключам одинаковы, а у цсс свой особый путь языконезависимый синтаксис. Аналог на змее был бы
document.query_selector(f'[data-id="{post.dataset["post"]}"]'))
> Лутц это питон 3.3 + 2.7, пиздец старье.
> Оно, конечно, классика, но плохой вариант
Вот я чёт за пару дней наебся с ним как бобик, думаю есть ли смысол этого Лутца вычитать до конца или переходить сразу на пикрилейтед >>394510?
Я прочитал два тома Лутца, так скажу нет.
Большую часть, написанного в Лутце, ты просто забудешь без должной практики.
По моим ощущениям, Лутц это книга для новичков в Питоне, а не в программировании как таковом. То есть материал рассчитан на то, что читающий кодил несколько лет до этого на С или Яве и хочет перекатиться на Питон.
Вторая половина второго тома вообще далеко не для новичков, т.к. идут классы и декораторы, а это уже продвинутые темы.
Упражнений в Лутце толковых нет. Это больше reference guide, чем полноценный учебник.
Я с нулевым бекграундом понял что такое декораторы и классы, пчел с опытом эту тему на раз раскусит.
Одно дело понять, что это такое. А другое знать, где и как их использовать.
На начальном этапе лучше не тратить на это время.
>На начальном этапе лучше не тратить на это время.
А что там учить после базовых конструкций типа переменных, циклов и функций, если не это?
Лучше ничего не учить, а практиковаться.
Если натыкаешься на что-то непонятное в чужом коде, то идешь дальше читаешь Лутца.
После глав Лутца про синтаксис, переменные, операторы, типы данных, итераторы, генераторы, модули, лямбды и основы ООП можно идти и разбирать фреймворки, кодить что-то своими руками.
Я не понимаю...
В интерактивной консоли все возвращаемые значения выводятся в отличии от скрипта, добавь просто print явно.
Заработало, спасибо
Думаю, я созрел, чтобы подать резюме на сеньора, или хотя бы на миддла
изврат какой-то....
l1 = ["1", "2", "3", "4", "5", "6", "7"]
l2 = ["a", "b", "c"]
Мне необходимо, чтоб при проходе элементов первого списка в цикле for выводился принтом элемент списка и соответствующий ему по порядку элемент из второго списка, то есть ожидаемый мною результат таков:
1 a
2 b
3 c
4 a
5 b
6 c
7 a
Самый простой способ, который я нашел для такой реализации, создать несколько условий if по проверке вхождения текущего элемента цикла в соответствующий срез и вывод принта с заранее записанным элементом из второго списка. Загвоздка такой реализации в том, что элементов во втором списке может быть не три, а сильно больше (или же наоборот меньше), а мне необходимо универсальное решение, которое бы позволяло без лишнего гемора присваивать перебором, без повторений, элементы двух априори разных массивов по длине друг к другу.
Подскажите хотя бы в какую сторону гуглить, а то я совсем скоро поеду из-за этой задачки((
Алсо, забыл добавить, что необходимо исполнение такого решения (если оно вообще возможно) исключительно в цикле for. Вариант с группировкой этих двух массивов в один и поочередный вывод элементов нового двумерного массива не работает
Есть задача.
Есть список с видеокартами ["Radeon RX 580", "MSI GeForce 3050", "Asus GeForce 3060", "Radeon RX 560", "Gigabye GeForce 3080"]
По задаче запилить новый список только с GeForce. Можно ли как-то запилить список не удаляя просто строки с радеоном, а чтобы список формировался по ключевому слову, в данном случае GeForce, чтобы отрабатывал независимо от длинны списка.
В какую сторону копать, что гуглить
Бля, спасибо огромное. Надо почаще вспоминать об итертулс.
Есть ли какие новые книги, что стоит добавить на Sync диск?
Если что, можно писать напрямую на почту -
Питонисты все такие долбоёбы?
НИ-ХУ-Я
Причем, постоянно сижу в пиратских тредах.
Вот тебе свежая залупа:
Анатолий Постолит. Разработка_кроссплатформенных_мобильных_и_настольных_приложений.pdf
Это про Kivy. Не то чтобы всем нужно знать, просто на дваче школьнки хотят лабать мобильные приложения и поэтому им надо.
Ботом потом будут пользоваться другие люди (прогеры) и поддерживать его. Меня тупо обоссут за такую портянку
А как оы хочешь? Либо конфиг, либо аргументами
Ну и что здесь нового у тебя на картинке?
по сути только Python concurrency with asyncio заинтресовала, но я в оглавлении ничего крутого не обнаружил.
Когда эти авторы остановятся?
Когда им надоест тиражировать залупу об одном и том же?
Благодарю
для конфигов есть json
есть xml в станждартной библиотеке если кого не тошнит от xml
есть всякие либы для конфигов например gin-config
если рассылок в расписании дохуя я бы вообще
сделал конфиг таблицей в формате csv чтобы легче смотреть
Занимаюсь хуйней уже неделю, вот сейчас задачка типа напишите ихру в домино.
Мне надо вот для начала сгенирить деку, разбить ее на части, найти в этих частях парные кости[0:0],[4:4]. итд
вот код https://www.codepile.net/pile/j5AjQKqK
он генерит всю хуйню, но мне надо, чтобы когда он видел, что парной кости нет, он решафлил список т.е менял значения переменных игрока/компудахтера по сути и прогонял всё заново. И вот когда у меня pairs = [] он уходит в инфинит луп.
А вот я перенес переменные под цикл и все вроде работает.
https://www.codepile.net/pile/w7w1NZ8m
Но я это блядь натыкал, а не понял. И даже видя результат не понимаю всё равно.
Да я даун без понимания скоупа/работы циклов и еще хз чего но если не прямой ответ скажите хоть че прочитать чтобы мне стало ясно как день.
Ну а вопрос собсно откуда инфинит луп.
Я как-то тоже долго не мог определиться с нужным форматом конфигов. В итоге остановился на toml. Выглядит вроде неплохо.
> у него там помойка.
Молодец, раз имеешь свежее собрание книг по погромированию. Но каким боком твоя коллекция к книгам анона, если ты ими не делишься?
+ Обновил книги от Martin Fitzpatrick по Qt и созданию полноценных приложений из него.
Питон нещадно сосется по производтельности в сравнении с любым другим популярным ЯПом. Но бафать ее и не думают, лучше мы блять новых "фич" с тайпингом и паттерн метчингом завезем, чтоб на Жаву и Шарп быть больше похожими. Безусловно блять - необходимое дополнение
Есть гоха которая по производительности лишь немногим уступает крестам, но обладает минималистичным и понятным синтаксисом
Есть жс который несмотря на свои причуды ебет по производительности каждый другой интерпретируемый ЯП
Мне нужно чтобы регулярка возвращала тело функции, но когда там больше одного скоупа -- гетается только первый
function(\w+)\((.?)\)(.?)\{(((?:[^{}]+)|.?))\}
@
питон медленный потому что он динамический!!
@
Жс и пхп тоже динамические но ебут по производительности питон в 4 а то и в 10 раз
@
ну пук... динамический... пынямаете?
200 раз задавал этот вопрос адептам "питон медленный потому что динамический", каждый раз начинались виляния очком и невнятные попытки оправдаться
питон медленный не потому что "динамический", а потому что спроектирован изначально хуево, навыки кодинга Гвидо на уровне типичного выпускника рашкинской баки направления ИИВТ, может чуть выше
Давайте тогда сравнивать жабу с Питоном и говорить, что жаба говно, т.к. у нее вместо кода километровые простыни на весь экран, по сравнению с няшным питоном.
не устраивает - возьми другие реализации пистона (интерпретаторы в смысле).
Или когда пишешь программу - используй голову, а не член.
Тут есть вообще вкатуны, которые планируют в ближайшее время куда то стучаться? В какую область подались?
Сам являюсь студентом, леплю везде понемногу, но нигде конкретно: тут простенький проект на Django, там простенькую снс-классификатор.
Надо смотреть как там внутри реализовано. Но предположу что перегружаются методы __setattr__, __getattr__ и в них проверяется тип value.
Скорее всего там дескрипторы аттрибутов или дроч с метаклассами
В качестве первой работы вакуха на джанге это хорошо, но потом, если хочешь развиваться как погромист дальше это зашквар
А вот если мне необходимо выполнять таску с точностью до миллисекунды, как быть? Очевидно надо это делать по push-методике (ждать сигнала извне) а не по pull как сейчас (дрочить цикл и ждать исполнения). Только как блэт?
Вот тот проект: https://github.com/aohan237/async_cron
У меня вообще встает когда что-то работает по push а не по pull. Типо запустил ты ожидание, которое практически не потребляет ресурсов CPU, потому что не гоняет постоянных циклов, и как только приходит время, сторонний сигнал запускает процедуру с точностью до микросекунд. Вообще именно так работает сервер, неужели чтобы подобное пилить нужно заделать что-то типо своего асинхронного сервака на локалхосте?
Можешь call_later попробовать, там вроде на уровне эвент лупа ос это делается
>Типо запустил ты ожидание, которое практически не потребляет ресурсов CPU, потому что не гоняет постоянных циклов, и как только приходит время, сторонний сигнал запускает процедуру с точностью до микросекунд.
Тащемто ожидание и прогон циклов будет, просто в другом процессе из которого ты ожидаешь события. Ты просто его выносишь в другое место и типа у тебя его нет.
Но ведь когда сервак слушает поступающие запросы он не гоняет циклов по типу
while true {
handleConn()
sleep(timeout)
}
Речь шла о таймере, ты не сможешь сделать трушный push таймер, который каждый момент времени не проверял бы наличие задач.
Работал в джанге полгода, потом перешёл на другой. Джангу больше не хочу, слишком душная.
Дорабатывал как-то oauth который написали на джанге (ага, джангу подняли просто под сервис который должен возвращать токен), день ебался пытаясь его завести и читая доки либы. Еще день пытался отрефакторить так, чтобы этим говном можно было пользоваться. Потом 2 дня пытался пофиксить проблемы со сваггером, т.к. в нем висело 8 ручек по факту юзались из которых только 2, без прямого редактирования опенапи.жсон схемы это не решалось
Возможно ответ на мой дальнейший вопрос выведет меня на новый уровень. Очень прошу помочь.
Мне нужно получить комментарии к посту телеграм-канала.
Использую pyrogram.
С получением постов канала - вопросов нет, я их забрал.
Теперь у меня есть массив с постами.
А вот как получить комментарии к посту?
В документации нашел следующий метод, который по идее отвечает на мой вопрос:
https://docs.pyrogram.org/telegram/types/message-replies?highlight=comment
Вот только я не понимаю как его использовать((
Подскажите, как это сделать, пожалуйста.
Думаю поняв это, я наконец-то научусь читать и использовать документации, спасибо.
Читай офф док, там всё очень хорошо расписано. Как деплоить и прочее. Сам читал только то что было нужно, т.к забивать лишней инфой и так забитую голову не хотел. Книги можешь читать если совсем уж камушек.
Я в джанге практически не пользовался местными моделями (юзал mongoengine) да и она больше была как прослойка между внешним и другим нашим апи. Что и было причиной слезть с неё, тк все эти километровые строки с валидаторами и моделями приводили в уныние. К тому же это бек без морды.
Тебе нужно тут скорей всего смотреть:
https://docs.pyrogram.org/telegram/types/message?highlight=messagereplies
у Message есть атрибут replies. И через него можно вытягивать ответы.
Я пытался:
Обращался я к элементу currentPost который имеет тип pyrogram.types.Message
currentPost.replies
И получал:
AttributeError: 'Message' object has no attribute 'replies'
>>396819 (Del)
Как раз вот replies у Message и есть этот MessageReplies.
В моей ссылке просто описано из чего состоит MessageReplies, как я понял.
Окей, а как тогда узнать как получить эти самые элементы?
Спасибо. Основную последовательность models - urls - views - templates я понял.
А вот данные на фронт не отправлял (свой пет делал на чистом джанго, с бутстрапом в качестве css-библиотеки).
Я так понял, для полноценного взаимодействия между бэком и фронтом, нужно делать свой API при помощи DjangoRestFramework?
Да и нужно ли вообще джуну на бэке уметь писать фронт-код или достаточно сервер запилить и организовать API?
Чем вообще джуны у вас занимались, какие задачи вы им давали?
И какие еще скиллы нужны, кроме очевидного питона, гита и умения читать и писать простейшие SQL-запросы? Читал, что сейчас активно юзают докер, чтобы разрабы могли в одном окружении работать, а не настраивать его с нуля под каждый проект.
От джуна требуется хорошее знание докера?
Не знаю, куда двигаться, после того, как свой круд-пет с кастомной юзер-моделью и поисковой строкой, запилил. Думаю либо прикрутить к пету API, либо уже с нуля новый пет только с API сделать.
Задачи у джунов разные везде. Но у нас поначалу давали небольшие задачи, потом уже цельные проекты, они тоже несложные, просто их надо делать.
В целом достаточно знать базовые вещи, к тому же никто со старта у тебя не будет требовать всё, так что можно освоить остальные вещи в процессе.
Ну, если претендуешь на вакансию в каком-нибудь гугле, то да, там надо знать всё.
Конкретную задачу решил, а вот документацию так и не научился читать.
В общем:
Первое - получаем посты
get_chat_history(chat_id = channelId, limit = 10):
Это первые 10 постов.
А потом получаем коменты к этим постам:
get_discussion_replies(chat_id = channelId, message_id = currentPost.id):
Где currentPost.id это id поста, который получили через get_chat_history
>AttributeError: 'Message' object has no attribute 'replies'
Чекни версию которую используешь
>как получить эти самые элементы?
print(dir(currentPost)) или просто dir(currentPost) если ты в консоли
Надо сделать сохранение в БД Новостей и их Типов.
Новость должна иметь структуру:
- Имя;
- Краткое описание;
- Полное описание;
- Тип новости.
Тип новостей должен иметь структуру:
- Имя;
- Цвет.
Как я понял, тут нужна связь один ко многим. Запилил модели на пике. Скажите, всё ок?
The lock file is not up to date with the latest changes in pyproject.toml
Только после его удаления начинает работать. Втф?
Так принято. Так удобней читать код (сверху вниз). Так у тебя в ТЗ написано - сначала News, потом TypeNews
>The lock file is not up to date with the latest changes in pyproject.toml
>Втф
Тебе английским языком пишут, что нужно обновить лок-файл, что тебя непонятного?
poetry update
Пользуйся
Такой вот вопрос
Представим себе, у меня есть класс, я создаю несколько его экземпляров. У них разные параметры, мне нужно сравнить эти экземпляры.
Как это лучше сделать с точки зрения кода?
Создать класс-сравниватель и передать ему 2 экземпляра? Получается, мне нуно написать класс ради одной функции в нем...
Или есть какие-то более элегантные методы?
А на какой перешел?
Зачем тебе классы, если ты не пользуешься возможностями ооп? Делай словарями и запили функцию сравнения, чо ты тут из себя строить пытаешься.
По делу - сравнение внезапно принято делать операторами = > < и т.п. Их поведение переопределяется в т.н. magic methods.
В foreign key и ему подобных можно, внезапно, класс строкой указать. Тогда все будет прекрасно работать
Нахуя только нужна такая Мета как на пикриле - загадка
Ну, я внезапно пользуюсь, т.к. эти параметры нужно еще высчитать, и логику очень красиво получилось в класс завернуть.
хм, в каждом классе можно сделать функцию, котора будет возвращать словать... и потом сравнить их.
а это идея
Мне кажется, я читал про переопределение методов, но я чет не представляю, как это встроить в программу. Подумаю. спасибо)
Бле, я же пошутил про словари...
Набери в гугле python magic methods, там чтива полтора абзаца, и сможешь сравнивать свои объекты операторами сравнения, как белый человек.
кажется, понял, спасибо)
Единственное, нужно будет по хитрому переопределить метод так, чтобы сравнивало и писало неравные, а не простоTrue/False, это же возможно?
Проверим...)
Что бы мне не приходилось путаться и задумываться что куда и как импортируется!
У меня сейчас происходит следующее:
Есть модуль pyrogramMethods
Там я использую объект app, который инстанцировал в manageLinks
Есть функция (пик2)
Если я ее вызову напрямую из файла pyrogramMethods
app.run(getChannelId(title))
Она отработает
Есть модуль sqlMethods, где я хочу работать только с бд
Методы от туда вызываются из botMainLoop
Есди я импортрую в sqlMethods метод getChannelId из pyrogramMethods
и попробую просто вызвать эту функцию(пик3)
app.run(getChannelId(title))
То получаю RuntimeError: This event loop is already running
Но если я опишу прямо внутри sqlMethods точно такую же функцию (пик4)
То все отработает.
Помогите распутаться в этом всем((
Писать надо просто, а не сложно.
app.run используют один в пределах одного потока. Если надо параллельность используй await asyncio.gather(task1, task2...) который возвращает результаты, или asyncio.wait([task1, task2..]) который ждет завершения, или asyncio ensure_future(task) если хочешь запустить async таск и забыть, но лучше не забывать, иногда они теряются.
Ааа, окей.
Если я просто вызываю функцию как
await getChannelId(channelTitle)
то все работает.
Похоже дело в том, что app.run() запускает event loop, который у меня по сути уже запущен, когда я стартую бота.
Но все равно, что бы почитать такого, что бы разобраться в асинхронности.
И еще вопрос:
У меня сейчас в том файле просто набор функций, которые делают ту или иную задачу и возвращают словари.
Стоит ли создать класс и оформить все эти функции как методы какого-нибудь класса?
Если да, то зачем?
если сравнить это имеется в виду больше/меньше
то ты можешь переопределить метод __cmp__()
у этого класса
Он может иметь различную структуру различной вложенности.
Я хочу его полностью хранить в бдшке, ну так на всякий случай.
Соответственно мне надо его превратить в строку.
Сделать я это хочу через json.dumps()
Пишу для этого рекурсивную функцию, которая превращает объект в словарь.
Но может я изобретаю велосипед и есть более красивое решение?
Что мы имеем? Файл с командами создания БД такого вида:
create table account
(
(описание полей)
);
alter table account
owner to employees;
create index idx_account_person_id
on account (person_id);
create table account_system
(
(описание полей)
);
... и т.д.
На выходе нужно получить словарь с описанием таблиц.
Гуглил, но что-то не нашел библиотек, которые могут это все хоть как-то структурировать, вся поисковая выдача засрана ответами на вопрос, как из ответа на запрос получить словарь.
Если в фреймворке это не предусмотрено то делаешь метод to_dict или to_json как тебе больше нравится и превращаешь объект в словарь
запил небольшой тестовый проект на джанге
куда бы вдыложить. Подкинь какой нибудь бесплатный хостинг
бесплатный это не 30 дней триала то просто бесплатный все время
что то пока всякая залупа с пробным периодом попадается
heroku
Проверяю синхронную Джангу. Запустил ее через гуникорн, поставил 8 воркеров. У сервака есть 1 урл и вьюха для него на скрине - он просто спит 2 секунды а потом возвращает ответ. Проверял его с помощью асинхронного клиента который стреляет сразу несколькими запросами и ждет от них ответа.
Я стрельнул 8 запросами и получил все респонсы за 2 секунды. Как это возможно если у меня всего 4 ядра на машине? За сет чего джанга с гуникорном смогли конкуррентно обработать все мои запросы и ждать не более 2 секунд?
Если сделать 20 воркеров и кинуть 20 запросов то будет то же самое - 20 реквестов выполнятся за 2 секунды, хз пока какой лимит и когда производительность начнет просядать
Почти сделал тестовое, но есть проблемка: нужно реализовать возможность получить список всех новостей (имя, краткое описание, имя типа, цвет типа). Получилось передать имя типа через foreign key поле посредством to_field. Но вот цвет как передать - хз.
Попробовал через nested relationships, но там работает это всё через сериализатор, к которому другая модель привязывается. То есть я могу сделать список типов новостей, а внутри уже раскрыть, какие новости к ним относятся.
Может есть способ попроще расшарить поле с одного сериализатора на другой? Или я творю херню и местные эксперты подскажут, как лучше?
>>397768
Кароч положняк такой:
Если запустить дохера воркеров (скажем 64) и ебнуть столько же реквестов то они выполнятся за 2 секунды, если в теле вьюхи есть операция sleep (или другое подобие io_bound), если оставить то же число воркеров и реквестов но кинуть cpu_bound операцию вроде числодробилки то мы так же применим все 64 реквеста разом ОДНАКО выполняться они будут вовсе не так же быстро. На пикриле 52 миллиона итераций исполняются примерно за секунду. При 64 запросах ответы получил за ~18 секунд
Проверка асинхронного сервера фастапи на 1 воркере дала следующее: при io_bound можно хуярить 64 реквеста и все они вернутся за 2 секунды (если спим 2 секунды в хендлере). Эмпирически понял что на uvicorn однако стоит лимит на 100 коннекшнов разом (100 коннекшнов обрабатывается за 2 секунды, а 101 уже за 4), хз пока как его поднять, хочу попробовать выжать максимум. --limit-max-requests 200 и --limit-concurrency 200 не спасают
На дотнете сейчас clean architecture, проекты – разные уровня "луковицы" проекта. А у вас как?
Хероку
Мне до сих пор на почту уведомления приходят с моей курсовой, которую я там разворачивал лет 5 назад
Как же так, в жс динамическая типизация, а файлы скриптов называют статикой, непорядок! А еще Белое море на самом деле не белое, а серо-синее, прикинь?
Погугли что с точки зрения веб-сервера является статикой, прежде чем так жидко обделываться в следующий раз.
И второй вопрос как получить вывод логов используя?
dp.middleware.setup(LoggingMiddleware())
Мне нужно из питона подключиться к базе на MSSQL на удалённом сервере. Использую библиотеку pymssql. Есть все необходимые данные: логин, пароль, название базы. Но вот подключения не происходит. До этого дел с MSSQL не имел. Подскажите, пожалуйста, как проверить, что коннект к базе принципиально возможен? Может в настройках сервера бд что-то надо посмотреть?
Ну у меня такой возможности нет. Придётся на ютубе пошарить про MSSQL.
Тебе 60?
Мимо вкатываюсь 2 дня с книгой Эрика Мэтиза
Так как же вы тогда перлом 40 лет назад пользовались, мистер Раджеш Капур? В прошлой реинкарнации?
накидал тебе за щеку проверяй!
Какие нахуй каналы, долбоёб? Что ты хочешь увидеть - как на экране появляются строчки кода, что ли?
Да. Это так расслабляет. Сидишь, смотришь, всё чамо пишется, отлаживается, а потом тихо в ушко говорят "проект задеплоен"
executemany() performance improved by using batch mode internally (ticket #145).
https://www.psycopg.org/psycopg3/docs/news.html
Правда это в 3.1 вроде. Такшо должен быть быстрее вызов.
цифры в юрл будут постоянно меняться и в зависимости от этого выдаваться определённый жсон
Нужно отличить именно этот запрос от обычного GET http:/url12345.html
Как сделать?
Запросы приходят на один и тот же юрл. Мне нужно как-то различать их.
Я знаю, можно их получить во view и там уже if request.method
== 'XMLHttpRequest'
Но мне нужно, чтобы работали разные view
Настройки маршрутов меняй как надо и всё.
Мне нужно чтобы при загрузке страницы пользователю отдавались не реальные пути, а путь по хэшу, к примеру имеем такой маппинг:
http://localhost/static/abcdef123 -> img01.jpeg
Или без физического переименования/копирования файла такое провернуть нереально? Ну или чтоб как можно меньше дисковых ресурсов съедало
Меня волнует то как будет на это реагировать тег img, если эти изображения отображать на странице
Тегу img как раз похер, тут надо думать, как сервер организовать, чтобы не было лишней нагрузки.
Например чтобы не через скрипт файл качать, а чтобы его вебсервер напрямую отдавал.
Зависит ещё, каким ты ответ от сервера видишь, заголовок и т.п.
>Или без физического переименования/копирования файла такое провернуть нереально?
Из брутальных механизмов ты можешь использовать символические или жёсткие ссылки на файл. По идее, если жёсткие ссылки делаешь, то у тебя вообще перерасхода нет, даже inode не расходуется, если символические, то всё-таки файл создаётся, но маленький.
А как nginx узнает, по какому принципу хеш трансформировать в настоящий путь к файлу?
Я думаю есть решения, но я не знаю, не лез в это.
Пилю приложуху для одного сервиса чтоб в юзеринтерфейсе создавать структуры офферов, данные организованы в следующих классах(в дальнейшем их будет больше, как и агрегаций между ними) https://dumpz.org/cCr2zxC5Bb5g
Данные планируется выводить в окошке в формате "значения всех полей текущего и вложенных экземпляров", как я решил, через QTreeView. Идея отображать структуру во вюхе такой иерархией:
root(Product)/
id | %xxx-xx-xx-xx-xxxx%
name | %name%
...
combi_list/
combi1
id |...
name|..
....
combi2/
....
price_list/
...(сейм как и ветка выше)
Но что-то никак не могу придумать, как организовать QAbstractItemModel, чтобы она эти экземляры могла отображать...
Сперва думал отдельную структуру нодов дерева нарисовать для хранения экземпляров, но наверное будет хуйня, тк в классы уже вложены другие экземпляры... Тогда получается лучше всего будет прямо в классах реализовать отношение парент-чилдрен нодов?
Всё что гуглится по примерам использует базовые типы или простейшие словари, но я хотел бы использовать именно экземпляры моих классов из-за логики, построенной на метаднных в полях.
ТЛ;ДР - как правильно и эффективно построить модель для отображения экземпляра класса и всех его полей/агрегаций в QTreeView?
а что можно делать на перле?
Модно нассать себе на ебало
Делать пёрлы
Как сделать ёба функцию от данных ФНС,
Вход: (date == d,m,y, hour)
Выход: true если рабочий день и час
На ум только такая структура приходит,
CFG_IP = (
# blue
("2022-07-04", "2022-07-07", "2022-07-11", "2022-07-14", "2022-07-18", "2022-07-21", \
"2022-07-25", "2022-07-28"),
# red
("2022-07-01", "2022-07-02", "2022-07-22", "2022-07-23", "2022-07-29", "2022-07-30"),
# grey
("2022-07-16")
)
# а это правила счёта часов по дням в этом месяце! В какое время всё не работает..
CFG_TIME = (
(2022, 07, 09), # год, месяц от, месяц до
("22:00", "01:00"), # это для blue
("22:00", "23:00"), # это для red маркеров
("00:00", "24:00") # это для grey
)
А дальше как по этим данным проверить рабочий день и час??
С меня бочка чаю.
Как сделать ёба функцию от данных ФНС,
Вход: (date == d,m,y, hour)
Выход: true если рабочий день и час
На ум только такая структура приходит,
CFG_IP = (
# blue
("2022-07-04", "2022-07-07", "2022-07-11", "2022-07-14", "2022-07-18", "2022-07-21", \
"2022-07-25", "2022-07-28"),
# red
("2022-07-01", "2022-07-02", "2022-07-22", "2022-07-23", "2022-07-29", "2022-07-30"),
# grey
("2022-07-16")
)
# а это правила счёта часов по дням в этом месяце! В какое время всё не работает..
CFG_TIME = (
(2022, 07, 09), # год, месяц от, месяц до
("22:00", "01:00"), # это для blue
("22:00", "23:00"), # это для red маркеров
("00:00", "24:00") # это для grey
)
А дальше как по этим данным проверить рабочий день и час??
С меня бочка чаю.
Подскажи, Анон, а типы данных вменяемые? Или лучше их сменить? Или пофиг какие типы, это только влияет на длину кода???
hh
ПАЧИМУ НИРАБОТАЕТ!!:
n = int(input("Введите число:"))
while n < 0 and n > 10:
print("Введите число от 0 до 10")
n = int(input("Введите число:"))
Где я проебалси? Мне нужно чтобы программа запрашивала число, пока пользователь не введет верное.
s/and/or/
можешь как будто для идиота написать???
набей на моём хуем проглотом ...
В твоей конструкции - меняешь and на or и всё заработает
Это потому что while работает пока True, собственно поэтому если у тебя n будет меньше 0, это уже False и цикл стопается, при or у тебя будет False только если оба условия False
Пользователь может создавать объекты(к примеру, рисунки) двух типов: изначально приватные (которые может видеть пользователь) и изначально публичные (которые могут видеть другие пользователи).
Как это сделать?
Модель примерно такая.
class Drawing(models.Model):
==#тут остальные поля модели
==isPrivate = BooleanFiled(default=True)
В форме загрузки картинки будет галочка "Опубликовать для всех". Если галочка стоит, то картинка публикуется и в модели isPrivate ставится на False
Как потом отображать картинки?
Формировать во view список только из тех картинок, у которых isPrivate == false, затем передавать на template?
> Как потом отображать картинки?
> Формировать во view список только из тех картинок, у которых isPrivate == false, затем передавать на template?
Ну да, а что не так
Думал, что есть не такой корявый способ.
Это же 1000 картинок придется проверять, публичные они или нет.
Это проверяет бд, для которой 1к bool-ов это смехотворная нагрузка, а если есть индекс - то хоть миллион.
А ты хочешь без всякой проверки? И как ты это себе представляешь? Ход мыслей там, и тд.
Раскладывать файлы по двум папкам приватные/не приватные, отдавать только то, что в публичной папке, при каждом изменении признака перекладывать файл, самому следить за консистентностью и велосипедить атомарность изменений в данных и в файловой системе, если потребуется фильтр по другим признакам - добавлять N^2 вложенных папок. Релизнуть как мвп, не получить ресурсов на переписывание с нуля потому что "и так работает", подождать до момента, когда баги и перформанс перестанут радовать кабана/клиента, понять, что переписывание теперь стоит на пару нулей больше, нанять команду аналитиков, получить от них роадмап рефакторинга в жире по агиле скраму с применением вставьте баззворд здесь и счет на круглую сумму, подсесть на коньяк по вечерам, поручить реализацию тому же ивану, что и делал мвп, просрочить все дедлайны, на горячую голову перевести ивана на должность слесаря по принтерам в бухгалтерии, нанять еще команду разрабов, получить фидбэк по роадмапу, что вот там нереализуемо, а вот там неэффективно, отдать переписывать роадмап аналитику из новой команды разрабов, а пока докупить еще железа под скрипящий пердящий от боевой нагрузки мвп и оплатить специально обученных людей для ручного исправления последствий багов, начать экономить на коньяке, заменив его водкой, вызвонить в отпуске ивана из бухгалтерии, чтобы получить доступы к боевой системе и дать их этим людям, забыть про день рождения сына, получить письмо от разрабов, где они говорят, что сделали половину но уже просят каких-то дево-псов и куа а без них показывать почему-то не хотят, делегировать поиск и найм вот этих вот всех своей секретарше, отложить отпуск, посмотреть и отобрать с секретаршей найденных ею людей, оправдаться перед женой почему секретарша стала звонить чаще, нанять заместителя для решения мелких вопросов, посмотреть отчет куашников о новой версии, получить сроки новой итерации с фиксом новых багов и миграции со старой версии, перевезти теще вещи жены, вынести мусор, в ночь на окончательный релиз пойти в бар и напиться до беспамятства, проснуться, опохмелиться, открыть почту, увидеть заголовок ночного письма "Re: Re: Re: Re: Re: бэкапы?", достать веревку и мыло. Так победим.
Раскладывать файлы по двум папкам приватные/не приватные, отдавать только то, что в публичной папке, при каждом изменении признака перекладывать файл, самому следить за консистентностью и велосипедить атомарность изменений в данных и в файловой системе, если потребуется фильтр по другим признакам - добавлять N^2 вложенных папок. Релизнуть как мвп, не получить ресурсов на переписывание с нуля потому что "и так работает", подождать до момента, когда баги и перформанс перестанут радовать кабана/клиента, понять, что переписывание теперь стоит на пару нулей больше, нанять команду аналитиков, получить от них роадмап рефакторинга в жире по агиле скраму с применением вставьте баззворд здесь и счет на круглую сумму, подсесть на коньяк по вечерам, поручить реализацию тому же ивану, что и делал мвп, просрочить все дедлайны, на горячую голову перевести ивана на должность слесаря по принтерам в бухгалтерии, нанять еще команду разрабов, получить фидбэк по роадмапу, что вот там нереализуемо, а вот там неэффективно, отдать переписывать роадмап аналитику из новой команды разрабов, а пока докупить еще железа под скрипящий пердящий от боевой нагрузки мвп и оплатить специально обученных людей для ручного исправления последствий багов, начать экономить на коньяке, заменив его водкой, вызвонить в отпуске ивана из бухгалтерии, чтобы получить доступы к боевой системе и дать их этим людям, забыть про день рождения сына, получить письмо от разрабов, где они говорят, что сделали половину но уже просят каких-то дево-псов и куа а без них показывать почему-то не хотят, делегировать поиск и найм вот этих вот всех своей секретарше, отложить отпуск, посмотреть и отобрать с секретаршей найденных ею людей, оправдаться перед женой почему секретарша стала звонить чаще, нанять заместителя для решения мелких вопросов, посмотреть отчет куашников о новой версии, получить сроки новой итерации с фиксом новых багов и миграции со старой версии, перевезти теще вещи жены, вынести мусор, в ночь на окончательный релиз пойти в бар и напиться до беспамятства, проснуться, опохмелиться, открыть почту, увидеть заголовок ночного письма "Re: Re: Re: Re: Re: бэкапы?", достать веревку и мыло. Так победим.
Я сам химик-rndшник у которого в шараге было неплохо со статистикой, ну и целом по долгу работы я могу в постановку экспериментов/анализ данных/выдвижение гипотез итд итп, и у меня сравнительно дохуя свободного времени, которое я начал тратить на изучение питона по рандомным интернет-курсам потому что мне нехуй делать.
И вот я узнал что есть такая профессия как аналитик данных которая звучит как просто комбинация всего, что я люблю и умею, только с помощью айти инструментария.
Где эту хуйню можно осваивать именно с уклоном на дата-саенс, потому что то, что я делаю сейчас все-таки подразумевает петон разработку, а мне бы хотелось переключиться.
Сколько действий ради того чтоб не делать одно булевое сравнение.
Работал раньше в матлабе, крутил-вертел циферок с научных данных на пару десятков гб. Это дата саентизм? Что жто вообще такое?
Мне кажется это работа уровня сисадмина, вроде бы и что-то важное делает, а вроде нихера, обычный бэкендер и то больше думает и делает.
Пример такой. Простая консольная программа. Она до бесконечности раз в минуту скачивает данные с сервера (httpx или aiohttp), т.е. следит за обновлениями какого-то каталога. Данные кладутся в какой-нибудь fifo-мешок или генератор.
Программа все время ждет ввода от пользователя. И тут надо сделать так, чтобы ничего не блокировалось, и данные продолжали скачиваться периодически даже если пользователь АФК. Пользователь может нажать на кнопку и кусок уже скачанных данных ему выведется на экран (примерно как вытаскивание из asyncio.as_completed).
Господа с многолетним опытом разработки на Пистоне, подскажите как написать.
Проиграл. Напиши еще чего-нибудь в таком духе.
>Данные кладутся в какой-нибудь fifo-мешок или генератор
Ну так клади данные в fifo-мешок, aka asyncio.Queue
>Программа все время ждет ввода от пользователя
Ты делаешь консольное приложение? Если ты делаешь с aiohttp, yt проще ли прикрутить веб-интерфейс какой-нибудь?
Зачем тебе бесконечное число корутин? У тебя же одна корутина фактически, которая делает запрос. Парсить бесконечное число сайтов? Асинкио будет ронять таски, если корутин будет очень много, лучше делай очередь и воркеров. В другом треде пусть консоль висит со всем говном.
Всю жизнь был уверен, что в Питоне именно значение имеет тип, а не переменная. А переменная - это просто ссылка на объект (а-ля значение) в памяти. То же писалось в книге Лучано Рамальо "Python. К вершинам мастерства" (249 стр).
Сейчас прохожу курс на Go в я.практикуме и там теории о типизации есть строка: "В языке Python тип переменной связан с её значением и определяется на этапе выполнения программы.". От техподдержки получил ответ:
>Никакой ошибки нет. Вы сами представили нам строку «В языке Python тип переменной связан с её значением и определяется на этапе выполнения программы.». В каждом языке программирования переменная имеет какой-то тип, однако в Python вы его явно не указываете, вы лишь задаёте значения для переменной. После этого, когда за свою работу принимается интерпретатор (так как Python интерпретируемый язык), он смотрит на значение этой переменной и срабатывает так, например: если тут записано целое число, значит это переменная типа int. Вы можете убедиться в этом, использовав метод type() в языке Python на нужной переменной. В этом случае вам будет указано, какой тип переменной. Это называется неявная типизация и она имеется и в других языках программирования, например, в C#: в этом языке обычно используется явная типизация, то есть приходится использовать явный тип переменной и попытки вставить в эту переменную значение, которое не соответствует типу, приведёт к ошибке в коде. Пример:
>int i = 5;
>Слово перед i указывает явный тип, целое число, однако если мы можем воспользоваться неявной типизацией, написав вместо типа переменной слово var.
>var i = 5;
>Тогда код будет работать как работают переменные в языке Python: во время выполнения компилятор будет смотреть не на тип переменной изначально, а будет заглядывать в значение переменной и уже исходя из этого значения будет приводить переменную к нужному типу.
>Получается такой вывод: изначально вы не задаёте тип переменной и кажется, что у переменной нет типа в Python, однако тип определяется на моменте работы программы. Это никак не противоречит тому, о чём говорится в строке, которую вы нам прислали.
У меня ощущение, что он не на тот вопрос отвечает. Тип определяется в момент работы программы - с этим никто не спорит. Но тип определяется для значения (в момент создания объекта, т.е.. ДО присваивания), а не для переменной - разве нет?
Рассуди, кто прав.
Всю жизнь был уверен, что в Питоне именно значение имеет тип, а не переменная. А переменная - это просто ссылка на объект (а-ля значение) в памяти. То же писалось в книге Лучано Рамальо "Python. К вершинам мастерства" (249 стр).
Сейчас прохожу курс на Go в я.практикуме и там теории о типизации есть строка: "В языке Python тип переменной связан с её значением и определяется на этапе выполнения программы.". От техподдержки получил ответ:
>Никакой ошибки нет. Вы сами представили нам строку «В языке Python тип переменной связан с её значением и определяется на этапе выполнения программы.». В каждом языке программирования переменная имеет какой-то тип, однако в Python вы его явно не указываете, вы лишь задаёте значения для переменной. После этого, когда за свою работу принимается интерпретатор (так как Python интерпретируемый язык), он смотрит на значение этой переменной и срабатывает так, например: если тут записано целое число, значит это переменная типа int. Вы можете убедиться в этом, использовав метод type() в языке Python на нужной переменной. В этом случае вам будет указано, какой тип переменной. Это называется неявная типизация и она имеется и в других языках программирования, например, в C#: в этом языке обычно используется явная типизация, то есть приходится использовать явный тип переменной и попытки вставить в эту переменную значение, которое не соответствует типу, приведёт к ошибке в коде. Пример:
>int i = 5;
>Слово перед i указывает явный тип, целое число, однако если мы можем воспользоваться неявной типизацией, написав вместо типа переменной слово var.
>var i = 5;
>Тогда код будет работать как работают переменные в языке Python: во время выполнения компилятор будет смотреть не на тип переменной изначально, а будет заглядывать в значение переменной и уже исходя из этого значения будет приводить переменную к нужному типу.
>Получается такой вывод: изначально вы не задаёте тип переменной и кажется, что у переменной нет типа в Python, однако тип определяется на моменте работы программы. Это никак не противоречит тому, о чём говорится в строке, которую вы нам прислали.
У меня ощущение, что он не на тот вопрос отвечает. Тип определяется в момент работы программы - с этим никто не спорит. Но тип определяется для значения (в момент создания объекта, т.е.. ДО присваивания), а не для переменной - разве нет?
Рассуди, кто прав.
PS: В разделе Data Model тоже говорится, что тип имеет объект.
https://docs.python.org/3/reference/datamodel.html
Ответ от их сапорта.
>Переменная — это тоже объект. В ваших же строках даются ответы на ваши вопрос: «The type() function returns an object’s type (which is an object itself)» Функция type() возвращает тип объекта. Эта функция применяется к переменным, переменная — это объект. У объектов может быть тип. И всё это содержится в той документации, которую вы нам прислали.
С какой стати переменная в Python - тоже объект?
Зачем тебе это знать, если ты не можешь повлиять на это? Может тебе ещё надо силу тока в транзисторе знать где это переменная хранится?
Вподе книжки читаешь, там в самом начале об этом говорится.
Переменной без значения в питоне не бывает, о чём вообще речь? Долбоебизмом каким-то занимаешься.
Надо знать всё что фундаментально. Без знаний базы ты ничего не будешь уметь, и говорить про некую "магию"
>Ответ от их сапорта.
Ты расходуешь их человеко-часы на слишком академические интеллектуальные беседы, к которым они не привыкли. Отсюда неточности формулировок.
Переменная указывает на какой-то объект. Говорить, что переменная имеет тип, некорректно, поскольку ты можешь элементарно перезаписать переменную другим объектом другого типа, в чём принципиальная разница с языками со статической типизацией.
Внутри, сама переменная это просто запись в словаре специальном. Каждая функция имеет свой словарь с переменными, один единственный, из-за этого невозможно сделать области видимости внутри тела цикла и т.п., что норма для большинства языков программирования и чего питону не хватает.
Зачем держать в голове то чем ты никогда не воспользуешься? Гораздо проще просто понимать что с переменными в питоне не всё просто и как появится что-то связанное с ним - загуглить и прочесть.
Но нет, надо долбиться дальше, как окрщик и забивать голову мусором. Поздравляю, ты потратил время на ерунду.
Механизм работы переменных как раз очень важно понимать, чтобы просто грамотно писать, это слишком фундаментальная вещь.
Да и несложная.
Ты просто тогда хорошо понимаешь, что в коде происходит, как работает и почему.
Советую ознакомиться на досуге.
https://github.com/python/cpython/blob/3440d197a55800ecceea3e115e44b4262411359c/Doc/c-api/allocation.rst
И взять какой-нибудь builtin-объект и посмотреть что там происходит. Вот function, например
https://github.com/python/cpython/blob/c96da83a8ed020c026c3f080e0b646f553524c85/Objects/funcobject.c
>>402320
Все так, но
>ты можешь элементарно перезаписать переменную другим объектом другого типа, в чём принципиальная разница с языками со статической типизацией
фактически неверно. Можно делать
Object a = 5;
a = "string";
ClassA b = static_cast<ClassA>(new ClassB()); // скомпилируется, но упадет в рантайме
не говоря уже про акробатические трюки с рефлексией, где она есть.
Там точно также информация о типах лежит рядом с объектом, если она вообще доживает до рантайма (не везде), а информация о "типе переменной" (которая, на минуточку, есть и в динамике, иначе иде бы не работали) умрет еще раньше, чем программа будет запущена - когда компилятор ударит по руками программиста и посчитает размер памяти для стека. Более того, саму информацию о доступных переменных получить там на порядок сложнее, если не невозможно, по сравнению с globals(), locals(). Так что если
>Говорить, что переменная имеет тип, некорректно
, то это верно в равной степени и для динамики, и для статики.
И то и другое. Как начнешь уверенно решать задачки выбирай себе пет-проект который сам считаешь полезным и нужным и делай.
Бро, спасибо. А можно простой пример акт-проекта привести? Вот самый элементарный. Скажем, если бы ты только вкатывался, ты бы что попробовал воплотить?
Ты потратишь больше времени, пытаясь загуглить, что у тебя не так в участке кода, связанном с переменными.
Ну и вообще ленность ума не одобряю. Это не такие уж оторванные от жизни дебри, это буквально база, и если тебе она кажется не нужной, то это говорит о тебе как специалисте.
ты о каких именно?
Смотря как ты запускаешь.
Как минимум ты можешь споткнуться на том, что у тебя не тот рабочий каталог.
>Ты делаешь консольное приложение? Если ты делаешь с aiohttp, yt проще ли прикрутить веб-интерфейс какой-нибудь?
Идея хорошая, но я делаю для себя и мне для начала надо чтобы просто работало, а потом уже обязательно сделаю что-нибудь красивое.
>>402198
А, ну правильно в общем. Она одна, но она выдает бесконечно ответы в виде инстансов dataclass-а.
>Парсить бесконечное число сайтов?
Несколько URL-ов в лупе.
Сегодня попробую что-нибудь закодить с тредами и queue. Отпишусь если будут траблы.
Возможные проблемы:
1) ты запускаешь не из того каталога, чем это делает авторан. Из-за этого не открываются какие-то файлы, не создаются другие файлы и т.п.
2) надо думать, что там происходит с выводом информации, куда перенаправляются потоки, из-за этого может падать.
>>Ты делаешь консольное приложение? Если ты делаешь с aiohttp, yt проще ли прикрутить веб-интерфейс какой-нибудь?
>Идея хорошая, но я делаю для себя и мне для начала надо чтобы просто работало, а потом уже обязательно сделаю что-нибудь красивое.
Веб интерфейс может быть проще, чем ебля с тредами для ввода команд. Через asyncio это тоже вроде бы можно организовать, но не помню.
Мимо
Если умеешь основы языка, но не веб, то сделай консольный тудушник. Потом, когда изучишь ORM и какой-нибудь фреймворк, то сделай веб-интерфейс и хранение в БД.
Вот куча задач: https://github.com/FreeCX/programming-challenges/blob/master/README.md
Огромное спасибо, бро. Пойду читать. Добра.
Анон сверху вот кидал список "programming challenges" на гите.
Может кто-то беглым взглядом оценить качество проектов в этих модулях?
Вкатываюсь по этой хуйне, страдаю, матерюсь, но делаю. План работы обвел красным на пикриле.
https://hyperskill.org/tracks?category=1
Хочется верить, что занимаюсь не совсем какой-то хуйней а чем-то более-менее нормальным.
Дается с трудом, потому что даже программа которая работает и у которой правильная логика допиливается до правильного прохождения тестов еще день сверху. И я чет подумал а может я хуйней занимаюсь зазря.
Да там вроде можно какое-то время еще протянуть на гемах, которые дают за то, что выполняешь таски.
А так да, просто акк менять и брать таски которые не сделаны.
У меня в голове много другой важной инфы которую и использую каждый день. Если я не могу изменить механизм хранения переменной, зачем мне это знать? Мне достаточно понимать что есть мутабельные и иммутабельные типы, и не плодить лишнее место в памяти, неправильно используюя компехешенсы. Всё. Если у меня будет задача сделать свой иртерпретатор для питона, тогда освою всё что нужно, а пока такой задачи нет, то и знать мне это себе во вред.
А то что переменную можно использовать несколько раз это и так понятно, а как она фактически располагается в памяти: создаёт новый адрес или использует текущий - мне не интересно, потому что у меня нет доступа к указателям и регистрам для того чтобы это контроллировать или как-то оптимизировать.
Покочану
Анус себе дёрни, пёс.
И я еще стыжусь нубские вопросы задавать после такого пиздос. Ты хоть разное сам потыкай, получилось бы раза с 5го инпут конверти
Понимание переменных входит в программу-минимум разработчика на питоне.
Чтобы понимать globals, locals, __dict__ и т.п. вещи, просто интуитивно чувствовать какие-то вещи. Просто вот с этим ты сталкиваешься постоянно.
Есть огромная масса других вещей, которые может быть знать не обязательно, если ты некоторыми направлениями не занимаешься.
Обычно со знаниями так происходит. Ты изучаешь что-то, копаешься, вникаешь в суть. Это у тебя где-то откладывается интуитивно. Потом ты всё то, что тебе не нужно, забываешь. Но смутно помнишь и уже понимаешь, что и как смотреть, если понадобится. И в принципе ты намного лучше язык понимаешь.
>>401192 (Del)
Та дешевле макак понабирать. 300$ ))
Можно и вручную набить когда красные, синие и серые даты. И правила по времени на этих красках.
Мне непонятно как потом по конфиг-переменных проверять именно часы работы (неработы)...
Просто пните меня по направлению к решению этого сраного алгоритма. Мне не нужно парсить пдф их ёбаные, они могут и структуру поменять, не опенсурз же !!!
Это уже всё базовые части языка, в посте речь шла о другом
Ты сначала сформулируй задачу нормально. Я, честно говоря, нихера не понял твою проблему. Какие-то даты, синие, красные, охуеть вообще.
Распиши задачу на бумажке, сделай схему куда что да как. Там и найдешь ответ, т.к половина решения уже будет сделана.
>Просто пните меня по направлению к решению этого сраного алгоритма. Мне не нужно парсить пдф их ёбаные, они могут и структуру поменять, не опенсурз же
Для начала тебе нужно распарсить их ёбаный пдф. Либо использовать извращения, вроде конвертации в картинку с дальнейшим распознаванием.
И то и другое может быть гемором. Картинки распознавать я вот совсем не умею, но кто-то делает эффективно довольно, может несложно, если умеешь.
Вывод: работа приличная скорее всего, проще руками разбирать, судя по всему, это нечасто требуется.
ты издеваешься?? выпей рассолу. Я написал ТО ранее.
Ты тупой батенька? Я сказал не буду парсить пдф. Я смогу вручную конфиг сделать, мне не нужно пфд парсить!!!
Конфиг я вручную сделаю, и для ИП и для ООО отдельно, не в этом проблема.
Вскод. Достаточно для всех нужд.
Сейчас читаю "Грокаем Алгоритмы"
Под рукой есть книжка "Питон. К вершинам мастерства" Лучано Ромальо, хватит мне моей базы без томов Лутца?
Путин в прошлом году объявил на майских праздниках выходные - такое надо учитывать?
ну делай так, что по-умолчанию выходные это сб-вс, если не внесено в список исключений.
дальше в конфиге создавай поле вроде
holydays: 2022.05.01-2022.05.09, 2022.06.12
workday_ext: 2022.05.06
и просто парсишь строку любым образом
можно загнать в стандартный формат вроде yaml.
hраспарсить легко такой формат строки.
Я просто не понимаю тогда, в чём проблема.
Не хватит, надо ещё книжек 10 добавить, записаться на курсы и нанять репетитора.
>вах какой начитанный жи есть а парсер написать сможешь? ээээ брат в смысле не читал такое в книжке
>эээ давай пиздуй нахуй вы не подходите бля сука понаехали тут
Как же он меня грокает, если он все время твою мать ебет?
Типа "хакаем"
Пацаны, по факту ведь существует лишь 2 модели cron-а: активное ожидание (слипаемся на 5 секунда скажем, проверяем текущие таски, если дедлайн не наступил то слипаемся снова и так постоянно) и "настоящий cron" (запускаем процесс, проходимся по всем таскам и запускаем асинхронные корутины которые слипаются на столько времени, чтобы потом таска выполнилась как раз к дедлайну)
Какой из них пизже с точки зрения надежности и ресурсов CPU/RAM?
- Кешировать картинки в директорию доступную по веб?
Но картинки приватные, доступны должны быть только авторизаванному пользователю, а из публичной директории всем видны будут. И непонятно когда можно их удалять.
- Показывать картинки напрямую из БД по запросу броузера?
Нагрузка возрастает, т.к. для каждой картинки будет отдельный запрос, авторизация пользователя, расшифровка куки-сессии тяжелым криптоалгоритмом.
- Показывать картинки встраивая бинарные данные в html страницу?
Страница тяжелеет на размер картинок и не известно как броузеры с утечками памяти это переживут.
Но из очереди-то их надо достать еще. Тут под капотом тоже либо одно либо другое будет работать.
Можно работать на pull - воркер периодически хуярит запрос в очередь и получает джобу либо ничего. А можно на push - очередь сама отдаст воркерам джобу когда придет время
Фотки в БД не хранят. Хранят ссылки на них.
если фоток много лучше использовать стороннний CDN и не выебываться
Есть 2 докер контейнера: БД и веб-приложение. И где тут хранить картинки, как не в БД? Если в докере приложения, получится, БД размазывается на 2 докер-контейнера, что услажняет обновлении приложения и создает лишний риск потери данных.
Как сделать ёба функцию от данных ФНС. Парс пдф делать не нужно.
! Вход: (date == d,m,y, hour)
! Выход: true если рабочий день и час
# это конфигурация на месяц
CFG_IP = (
# blue
("2022-07-04", "2022-07-07", "2022-07-11", "2022-07-14", "2022-07-18", "2022-07-21", "2022-07-25", "2022-07-28"),
# red
("2022-07-01", "2022-07-02", "2022-07-22", "2022-07-23", "2022-07-29", "2022-07-30"),
# grey
("2022-07-16")
)
# а это правила счёта часов по дням в этом месяце! В какое время всё не работает..
CFG_TIME = (
(2022, 07, 09), # год, месяц от, месяц до
("22:00", "01:00"), # это для blue маркеров
("22:00", "23:00"), # это для red маркеров
("00:00", "24:00") # это для grey маркеров
)
А дальше как по этим данным проверить рабочий день и час??
Не понимаю чего непонятного. Парсинг дат + часов. Просто не врубаюсь как функцию сделать...
Как сделать ёба функцию от данных ФНС. Парс пдф делать не нужно.
! Вход: (date == d,m,y, hour)
! Выход: true если рабочий день и час
# это конфигурация на месяц
CFG_IP = (
# blue
("2022-07-04", "2022-07-07", "2022-07-11", "2022-07-14", "2022-07-18", "2022-07-21", "2022-07-25", "2022-07-28"),
# red
("2022-07-01", "2022-07-02", "2022-07-22", "2022-07-23", "2022-07-29", "2022-07-30"),
# grey
("2022-07-16")
)
# а это правила счёта часов по дням в этом месяце! В какое время всё не работает..
CFG_TIME = (
(2022, 07, 09), # год, месяц от, месяц до
("22:00", "01:00"), # это для blue маркеров
("22:00", "23:00"), # это для red маркеров
("00:00", "24:00") # это для grey маркеров
)
А дальше как по этим данным проверить рабочий день и час??
Не понимаю чего непонятного. Парсинг дат + часов. Просто не врубаюсь как функцию сделать...
CFG_IP[0] это типа все помеченые # blue
это даты когда фнс мать её неработает по правилам, описываемым в правилах CFG_TIME [ # это для blue маркеров ]
>А дальше как по этим данным проверить рабочий день и час??
Никак. У тебя в данных отсутсвует рабочее время.
Хохол, ты объебался?
Я тебе ранее задачу скинул, ты там совсем в подвале занюхал как твой бох зелепыня???
Напомню ещё для тебя и даунов.
Как сделать ёба функцию от данных ФНС,
Вход: (date == d,m,y, hour)
Выход: true если рабочий день и час
На ум только такая структура приходит,
CFG_IP = (
# blue
("2022-07-04", "2022-07-07", "2022-07-11", "2022-07-14", "2022-07-18", "2022-07-21", \
"2022-07-25", "2022-07-28"),
# red
("2022-07-01", "2022-07-02", "2022-07-22", "2022-07-23", "2022-07-29", "2022-07-30"),
# grey
("2022-07-16")
)
# а это правила счёта часов по дням в этом месяце! В какое время всё не работает..
CFG_TIME = (
(2022, 07, 09), # год, месяц от, месяц до
("22:00", "01:00"), # это для blue
("22:00", "23:00"), # это для red маркеров
("00:00", "24:00") # это для grey
)
А дальше как по этим данным проверить рабочий день и час??
Напомню ещё для тебя и даунов.
Как сделать ёба функцию от данных ФНС,
Вход: (date == d,m,y, hour)
Выход: true если рабочий день и час
На ум только такая структура приходит,
CFG_IP = (
# blue
("2022-07-04", "2022-07-07", "2022-07-11", "2022-07-14", "2022-07-18", "2022-07-21", \
"2022-07-25", "2022-07-28"),
# red
("2022-07-01", "2022-07-02", "2022-07-22", "2022-07-23", "2022-07-29", "2022-07-30"),
# grey
("2022-07-16")
)
# а это правила счёта часов по дням в этом месяце! В какое время всё не работает..
CFG_TIME = (
(2022, 07, 09), # год, месяц от, месяц до
("22:00", "01:00"), # это для blue
("22:00", "23:00"), # это для red маркеров
("00:00", "24:00") # это для grey
)
А дальше как по этим данным проверить рабочий день и час??
Ну я копипастю только потому, что ты тупой сегодня.
Я задачу максимально подробно описал уже. Только джанго умеешь или ёбу интернетовскую ???
Ещё раз для особо одарённых. (без парса пдф). Есть 3 вида дат, блу, грей, ред. У них свои графики работ (кто с 22.00ч кто с 01:00ч и тп.). Это от налоговой сраной зависит. Вопрос: как сделать функцию (д,м,гггг, час) чтобы возвращала ответ о том, "я не работаю в сегодняшний час". Ебать, я рожу быстрее.
Да просто спросил бы как табличку сделать - быстрее было бы...
Получил льготу от госуслуг по программе цифровых профессий, какую контору с курсами посоветуете?
ну я хуй меня имеет, ну как ещё можно описать задачу-то???
Ну дайте что-ли буквы русские, я ими напишу задачу.
2 чаю тебе. А можно по конфигу ответ получить?
ну почему я тупой такой.
а в телеге не вариант? Я бы киннул 500р с разбегу.
Потому что я говорил тебе, внятно опиши задачу и там уже будет половина решения. То что ты в голове держишь, это не описание.
Все курсы говнище для вкстунов, которые не знакомы даже с булевой алгеброй. Подробности и тонкости проектов там не рассматриваются.
А где рассматриваются? На конференциях по хайлоаду где зумерские лекторы приготовили смехуёчки из вк?
Хочу и буду
В баре так то можно не бухать.
>МАМ ТУТ НЕХОРОШИЕ МАЛЬЧИКИ ПЬЮТ! А ПИТЬ НИЗЗЯ! НУ СКАЖИ ЖЕ ИМ ЧТО ОНИ БЫДЛО! НУ ПОЧЕМУ ТЫ МОЛЧИШЬ, МАМ?!
призываю отвечать
там на выбор курсы от яндекса, нетологии, скиллфактори и гикбрейнс
понимаю конечно, сорта говна, но с какими будет ближе к реальной работе? паралельно курсам буду читать книжки
Я ничего из книжек не читал кроме доков, работаю, делаю прокладки между апишками на fastapi-aiohttp с очередями на редисе, вебхуками и асинхронными вебсокетами под высокой нагрузкой. Ебусь с ограничениями на запросы и никак не могу наебаться с велосипедами разной степени паршивости. В какой-то момент пришёл к выводу, работает и ладно, благо кода всего на 2-3к строк.
Не, я не пью уже много лет
У меня так сложилось, что есть куча айти-бояр знакомых, но сам я из другой отрасли совсем и сейчас занимаюсь от нехуй делать, 100 из 100 реальных ойтишников говорят, что все курсы это говно говна и не стоят даже 3 копейки. Пройди какой-то степик, найди более адвансед версию степика, потом запили пару пет- проектов параллельно читая документации/книжки если надо, толку будет больше и бесплатно.
Потому что курсы пилят не айтишники
Курсы может быть очень даже нормальные. Скорее вопрос в публике, что идёт на эти курсы, и зачем идут на эти курсы.
Очень часто мотив такой, что нет большого желания учиться, хотят, чтобы их научили, а это плохо работает.
Потом, надо довольно много времени, чтобы мозги на ИТ перестроились, большинство к этому не готово.
Если чел правильный, готовый, то отдача от курсов может быть очень и очень приличной. Но альтернативные пути тоже есть, просто можно по книжкам учиться. Программированию уж точно.
Мне надо в эту функцию прокинуть n аргументов и получить n результатов. Как это сделать нормально?
Я сейчас конечно написал типа main(1) main(2) main(3) main(4), а если у меня таких аргументов 20 штутк?
Cпс пойду смотреть.
Причём тут ты и твой 300 строк?
Есть три стула книги.
Какую взять, если я кроме как макросов для Вова, биндов для сампа и конфигов в майнкрафте, ничо в жизни не прописывал? Максимум статейки всякие читал в интернете, т.е. системных знаний нету про ооп и прочее.
== "1" вместо == 1
List comprehension, generator expressions, map.
>>404154
Понравилось, наверное по ней начну обучение
Когда в универе надо было подготовиться к чему-нибудь с 0 я брал книжку, изучал теорию и потом переходил к практике. Учитывая, что программированием не занимался, считаю литературу лучшим вариантом для получения базовых знаний.
kall*
бочку тебе чаю и ещё немного сверху!
Забавно что в большинстве своем двачерки, называющие пьющих алкоголь "быдлом" сами являются нихуя не зожниками - они либо тщедушные дрищи либо жиробасы. Жрут всякое говно, сидят за пекой 24/7, практически не имеют друзей.
Но пьющие для них конечно же "быдло"
Они не быдло, они элитные нарики
Лол, ну вредные привычки, типа фастфуда - это же блять то же самое, что алкоголь. От фастфуда же тоже происходят изнасилования и драки, да. Прям удачно поставил в один ряд.
Я на работе для себя написал простенький маленький скрипт, который преобразовывает csv. файлы нужным мне образом.
Скрипт работает как я хочу, но блять я хочу положить его в папку с этим файлами, чтобы просто 2 кликами мышки его запускать в ide (pycharm) и исполнять.
Так лол, через pycharm он дает сохранить только модуль main.py, а не весь проект (у меня там библиотеки импортируются сторонние же). Весь проект в виде просто папки виндоус, и так его на запустить просто через эксплорер.
То есть мне надо каждый раз открывать pycharm и там выбирать этот скрипт среди нужных мне и запускать.
Что-то хуйня какая-то, вот sql cкрипт просто кликаешь через эксплорер, открывается sql server management studio с этим скриптом, ты кликаешь и скрипт хуярит.
Как тут сделать также?
Почему-то напомнило, как лет пять назад видел линевый впс, внутри которого крутилась виртуалка шиндошса, на которой был поднят денвер с боевым сайтом. Переделывать нормально никто, конечно же, не стал. И тебе не советую, мой юный любитель автоматизации - сломаешь то, что работает, плюс начнешь задаваться неудобными вопросами вроде почему после удаления гланд так болит анус.
Пытаюсь вот это распарсить https://www.astrolighting.com/products
Функция parse собирает все товары
parse_items проваливается глубже, у каждого товара есть пикрелейтед кнопочки, каждая кнопочка - отдельный товар
parse_item уже конкретно парсит товар
Сажа приклеилась. Короче parse_item вообще не отрабатывает почему-то. Проверил принтом, до туда поток исполнения не доходит даже.
Выглядит так, что нужные тебе ссылки на конкретные модели уже вынимаются в parse, и parse_items просто дуплицирует запросы, которые потом не выполняются, так как срабатывает dupefilter. Если в parse сделать callback=parse_item, вместо parse_items, то всё, вроде, парсится как надо -- по моделям.
Скажите, какие есть некостыльные методы сравнить между собой тип list, typing.List и typing.List[...] так, чтобы истину возвращало только сравнение typing.List и typing.List[...]?
Контекст - у меня есть класс, который содержит как поля с обычными списками типа list, так и поля с другими списками классов типа typing.List[MyClass].
В одной функции пытаюсь сдлеать отдельную логику для обычных и типизированных списков, что я пытаюсь реализовать через сравнение с типом typing.List.
Сперва думал сделать через __origin__, но тогда получается что обычные списки тогда тоже будут попадать под условие, и пока единственным рабочим решением я придумал
> getattr(x, '_name', x) == List._name, где x -тип поля, который может принимать значения str, list или List[MyClass]
Увы, такой подход нарушает инкапсуляцию, поэтому я хочу его переделать, но не могу найти, как ещё можно добиться правильного разделения логики.
Есть такое: https://docs.python.org/3.8/library/typing.html#typing.get_args (обёртка над считыванием __args__ доступное в версиях до 3.8)
В частности, отличить List[int] от List можно за счёт того, что get_args(typing.List[int]) вернёт (<class 'int'>,), а get_args(typing.List) или get_args(list) вернёт пустой кортеж.
Правда, не очень понятно, как ты это хочешь использовать. Есть минимальный пример? Чтобы считывать type hints в рантайм для конкретных полей/переменных нужно будет что-то ещё (типа библиотеки typeguard)
> Есть такое
О, благодарю, всегда использовал только __args__ и совсем забыл о такой опции
>Правда, не очень понятно, как ты это хочешь использовать. Есть минимальный пример?
Я пишу метод (construct()), который будет превращать словарь в экземпляр датакласса. У меня есть иерархия, где CatalogItem - "абстрактный" класс, от которого наследуются остальные. Словарь всегда повторяет структуру классов, поэтому необходимо лишь правильно преобразовать вложенные словари в объекты нужных классов, что этот метод и делает: https://dumpz.org/ct5KxQcPSsmb
Понятно, да. На уровне логики классов, как у тебя, typeguard действительно не нужен (как ты и делаешь через get_type_hints).
Как сериализовать объект, в котором есть другой объект, ссылающийся на базовый? Циклическая сериализация получается. Или как вообще обойти это?
Вызываю task_name.delay(a,b,c some_obj)
some_obj - довольно массивный объект, с циклическими ссылками.
Если переопределить delay и до вызова родительского метода сделать
self.some_obj = some_obj, то после вызова супер он его стирает. А мне прокинуть дальше его надо как-то.
где руссик бле
Как, и в каком порядке, будет лучше вкатываться в Джангу? Сейчас я, как любой нормальный россиянин, первым делом спиздил видеокурс по обычному Питону, чтоб его немного подучить для начала
Что ещё нужно знать, чтобы стать адекватной джанго-макакой? Что знать, грубо говоря, не нужно, но нормально поможет?
Насколько вообще актуальна щас Джанга, если я живу в РФ, и не планирую никуда переезжать? Есть ли направления, тоже связанные с Питоном (больно нравится этот язык), которые в РФ более перспективны, если я не целюсь переезжать в Силиконовую Долину или даже в Москву, а просто хочу уютно кодить на более-менее тёплом месте?
Заранее сердечно благодарю за все деловые ответы и советы. За посылы нахуй не благодарю
На ней много вакансий, но лучше знать что-нибудь ещё, например, fastapi.
Сначала почитать про протокол http, oauth. Потом доки на джанге, примеры. Какую-нибудь бд параллельно. Знать там много не надо. Про деплой сервиса, nginx, certbot, докера чуток и, конечно, git.
Дальше можно освоить redis, очереди, периодические задачи, asyncio и aiohttp, плавно перекатываться в fastapi, изучить, параллелизм, треды, асинхронность, конкуретность, адекватную реализацию лимитов на запросы к другим апи. Потом укатиться на go и забыть про питон как о страшном сне.
Вот это для вкатудауна годнота нереальная, где еще можно такой контент найти, желательно больше и структурированно-скомпановано. Лучше в виде текста но в целом похуй.
начинать изучать питон нужно было до того, как курсы гикбрейнс начал рекламировать Креосан
И что там, дети много напокупали курсов?
Это говорит лишь о долбоебизме этого вашого гикбрейнса.
> И что там, дети много напокупали курсов?
да, на одну вакансию 50 резюме, и 300 просмотров в час
лол
епт спасибо чел
И вот это ваши 500 резюме.
Посоветуйте какие-нибудь экспресс курсы, чтобы быстро влиться в синтаксис и особенности языка.
На вакансию уже миллион человек, иди отсюда
нет это другое
Спасибо за совет, добрый человек!
Тебе именно курсы нужны или книга сойдёт? Если сойдёт книга, читай Byte of Python - мне в своё время самой толковой показалась
> Byte of Python
Я не понимаю, это стадо дебилов, или один форсер?
Это бесполезная хуйня, типа как выучить отче наш для знания библии, или какой ещё ебанутый пример привести?
Оно нихуя не дает.
не, книги не люблю.
Мне либо какие-то онлайн курсы подрочить (бесплатные), либо видосы на ютубе. А если ещё и с уклоном в автотесты, то вообще супер будет.
В принципе я совсем уж основы сходу понял, но есть пробелы в наследовании, типизации, декларации свойств у объектов private, public, protected, импортах, required.txt файлах какого хуя кстати у вас зависимости храняться так всрато в отличии от того же nodejs?. Ещё вроде как можно запускать код в разных venv: это тоже слабо понимаю, как работает и для чего нужно.
А ещё не могу допереть, нахуя нужен `__init__.py`
Смотри python 3 deep dive.
инит.ру был признаком пекейджа, что добавляло некоторые свойства. Сейчас это не обязательно.
Бляд, братан, я точно помню что где-то полтора года назад смотрел краткие и толковые уроки как раз по твоим темам, только щас всё забыл нахуй
Бесплатные онлайн курсы лежат на Рутрекере. Потыкайся по раздачам, и посмотри что у них внутри - там всегда уроки разделены по папкам, и у каждого урока своя тема
Оно дает ощущение вроде я научился забивать гвозди молотком и я теперь строитель. Это основы основ. Это основы основ основ.
Я, как ебовеший дата-хоардер и перфекционист смотрю всё - дохуя источников в день.
Как начальные питон книги могу посоветовать python crash course (для долбоебов, но сойдет, дальше ещё куча от ностарч, это очень нуб-френдли издательство, там десяток книг по начальному питону), quick python course 3e от manning или introducing python 2e от o'reilly). Это как первая стадия. Можете записать в ОП-пост. Я сейчас чуть нетрезв, могу добавить потом.
По интермидиейт книгам ситуация довольно другая, тут тоже надо писать, что мне лень сейчас, если будет спрос, то пишите.
индусские блядские книге, говно от амазона или видеокурсы шлите нахуй, это чисто стрижка бабла с даунов.
Про инетмедиейт я дозрел.
Есть про вебы - джанго-фласки, есть, про тайпинг, есть про разные области, в целом, чтобы стать крепким питон миддлом надо прочесть книг десять.
Это разнится с тем же перлом или пхп, где достаточно пару книг, потому что там есть сильные авторы.
Списки тоже могу составить, я слежу за литературой.
>>407288
Спасибо, добрый человек
Краш-курс я читал в своё время, наравне с несколькими другими нубскими книгами. Щас всё забыл, естесна, поэтому решил посмотреть видеокурс, чтоб освежить память и мб какие-то пробелы восполнить оставшиеся
В связи с этим вопрос
>видеокурсы шлите нахуй
Чому? Я видеокурс выбрал потому что у меня с книгами проблема - навязчивое желание всё записывать и конспектировать НА ВСЯКИЙ СЛУЧАЙ. Из-за этого чтение каждой книги у меня растягивается на овердохуя, большую часть времени сижу и пишу конспекты. Без конспектов не могу, кажется что без них всё без толку
Ну раз уж пошла такая тема
>Списки тоже могу составить
Буду премного благодарен. Я уже выше писал, что планирую в сторону Джанги двигаться, английский, если что, вообще не проблема
нет конечно. Одни вкатуны с вопросами "а как поменять местами элементы в кортеже. И другие нубасы, которые сложнее чем создать кортеж с новым порядком не могут ничего.
А это и не надо. Пздец, менять местами элементы в листе. Вы ещё сортировку пузырьком сделайте.
90% из задачек с курсов нахуй не пригодится. Из решение и спрашивают тут.
Подскажите, как нужно правильно тестировать апи на дрф? Я тут сайтик делаю, уже почти сделал, но нихера тесты не писал, да, типа надо бы было сначала их писать, но прям очень влом, потому что не понятно, че делать надо. Ну вот, если я например прост создам несколько фикстур как бы, жсон файлов просто, с данными, которые должны быть при каждом запросе, и буду тупо их сравнивать с ответом сервера, это насколько норм? В принципе у меня сайтик из кучи крудов состоит и всё. Я его делаю так, для демонстрации скиллов типа. Или так делать прям херово и это будет минус?
>надо бы было сначала их писать
Выбрось это дерьмо из головы. Мир не такой, как пишут в книгах
Так ты же не 100к раз последоватедьно, ты 100к раз одно и то же ебанул. А зачем?
Не ну я это чувствую, потому что делаю вот, делаю, а потом надо че-то там поменять оказывается в хуйне, которую я месяц назад сделал, и у меня че-то там перестает работать где-то, а я уже и забыл че там как должно быть. А так тест бы запускал и он бы показывал, че где отвалилось.
Че где отвалилось показывают логи
Тесты заставляют писать
крупных конторах, чтоб ты там бекдор не всунул какой и анально следить за твоим кодом. Никогда не понимал в чём их смысл, если ты проект пишешь один.
Как я понимаю:
Допустим, у нас есть класc, как на пике.
Тут нужно использовать реверс лези, т.к. мы используем класс, которые в питоне при импорте сразу выполняются (если не сокрыты в функциях)?
Если мы будем использовать обычный реверс, то success_url сразу выполнится, до того, как я закончю заполнять форму?
Поэтому мы пишем reverse_lazy, которая "ждет", пока я не закончу заполнять свою форму?
Ну во всех вакансиях пишут, что надо уметь, вот я и думаю, что типа надо тесты добавить, чтоб показать, что я умею типа.
Ну и логи я вообще чет не ебу че такое, это ещё сложнее наверное чем тесты.
А что у тебя за приложулька?
Тестируй очевидные вещи.
Например, что view использует правильный template, что такая-то страница возвращает 200 для залогиненого пользотеля и 401 для незалогиненного и тому подобное.
Если апи пишешь, то проверяй, что твое апи не дает делать запросы без токена/авторизации.
Ну я чет смотрел там видосы, говорили вообще, что для вью отдельно писать надо, для сериализаторов, для моделей. Влом чет. Думал прост делать типа запросы и тестировать что приходит.
Ну и вот я ещё слышал, что типа не надо тестировать там работу самого джанго. Типа эти вот авторизации и статусы надо тестировать? Оно же всегда будет работать по идее.
>Ну и вот я ещё слышал, что типа не надо тестировать там работу самого джанго
Ну да, за тебя уже разрабы джанги все протестировали.
Для вката пойдет, если ты просто умеешь простейшие юнит-тесты писать.
В целом, от тестов плохо не бывает. Добавил фичу - добавил сразу тесты. Но для соло-проекта уровня круд тесты и правда не нужны с точки зрения процесса разработки.
Но для твоего обучения лучше пару десятков тестов написать.
Ну ладно, в общем напишу че-нибудь, хуже не будет.
Список july_temperatures хранит дневные значения температуры в цельсиях за июль в Москве. Сделайте лето теплее — напишите цикл, который добавит по 10 градусов к каждому значению. Выведите изменённый список на экран.
КОД:
july_temperatures = [15, 17, 17, 13, 8, 12, 12, 12, 9, 15, 8, 10, 11, 9, 13, 9, 8, 11, 9, 16, 7, 12, 14, 10, 7, 16, 13, 12, 7, 12, 15]
# код здесь
print(july_temperatures)
ПОДСКАЗКА:
Чтобы изменить значения исходного списка, напишите цикл с перебором по индексам. В теле цикла прибавьте 10 к каждому элементу july_temperatures. Используйте оператор для сложения с присвоением +=.
>moskvichei_raskulachit = [i+10 for i in july_temperatures]
>print(moskvichei_raskulachit)
как ты это сделал блять
это переменная да
Иди лучше хоть книжку какую-нибудь почитай про базовые операции
благослови тебя господь
только я нихуя все равно не понял, т.к. в практикуме еще не было функции enumerate
и не понял, для чего ты использовал две переменные, хотя может тоже потому что не шарю ща enumerate
Можно так:
for i in range(len(july_temperatures)):
____july_temperatures += 10
print(july_temperatures)
for key, _ in enumerate(july_temperatures):
___july_temperatures[key] += 10
Да, можно вот так, вторая переменная не нужна в принципе. Но так как enumerate возвращает кортеж из двух чисел, то нужно их куда-то присвоить. В таких случаях переменную, которая не нужна называют "_".
А, макаба, понял
Да, там по индексу должно быть обращение
Эм, что? Это сложно? Пиздец
Зачем тогда делаешь это?
Если ты напишешь тесты хоть какие-нибудь то это однозначно плюс
Как именно ты написал тесты на демо проекте никто никогда смотреть не полезет
Насчет жсон файлов -- поломай что-нибудь нарочно и посмотри как этот твой тест падает
Если из сообщения об ошибке четко понятно что поломалось то ты молодец садись пять
Если же вылезает невъебучая простыня из которой хер проссышь что произошло тогда надо переделывать
написал вьювер для просмотра XY-model
но отрисовка дохуя медленная т.к. приходится перерисовывать все спины. как пофиксить? есть мысля как то добавить их в дин объект и двигать его, но как бля это сделать? если че это на tkinter говно
в ткинтере create_line возвращает число
через это число ты можешь манипулировать
стрелочками после того как они уже нарисованы
в том числе можно делать move()
c = tk.Canvas()
x = c.create_line(0, 0, 100, 100)
c.move(x, 10, 10)
спасибо анон
Поэтому я не работаю
Они делаются для людей с мозгом дошкольника, либо прогуливавшего информатику. Объясняют базовые вещи, но на примере языка который собираются изучать. Отсюда и идут эти кринжовые задачки, которые потом применяют в проекте.
Ещё твой однострочник использует больше памяти, т.к делает новый лист, надеюсь ты в курсе этого?
Примерно как рельсы, судя по всему. А вкатуны туда ломятся как не в себя.
А похапе что - хлебай себе пивас и прибивай фиксами всё что отваливается.
нахрен мне mathplotlib? мне надо было все на форме сделать
мысля была кончно использовать, но это слишком просто было бы
сколько примерно уже могу заработать удаленно?
Устраивайся ко мне в контору, буду платить лично тебе за создание переменных
Одна переменная - 100$
Можешь заработать примерно хуй.
Не устраивайся к этому мошеннику, насоздаёш ему переменных, а он тебе кинет.
У меня будешь зарабатывать хуй стабильно.
Сlass Training():
...
Class Swiming(Training):
...
workout_types: Dict[str, Type[Training]] = (
{'SWM': Swimming,
'RUN': Running,
'WLK': SportsWalking})
Я уже вечер ебусь с этой динамически типизированной парашей.
Подскажите, вот у меня есть апи на дрф, там типа эндпоинт, который создает запись в бд, но там есть связи по внешним ключам. Ну допустим товар в магазине и у товара есть там категория или производитель. Ну и я делаю форму создания товара. Так вот откуда мне взять варианты для формы с названиями категорий и производителей? Мне нужно сделать по эндпоинту с вьюхой и сериализатором для каждого такого селекта и делать запрос просто чтобы получать список названий с айди или как-то можно лучше сделать?
Спасебо
Ну я пока придумал прост сделать типа один эндпоинт "product-options", который возвращает сразу варианты для всех полей, чтоб не делать по запросу на сервер для каждого и вьюха одна только, а сериализатор для каждого селекта уже. Вроде норм.
Я получил айдишник фотки/видео из сообщения в телеге.
Могу отправить этот файл при помощи его айдишника.
А как я могу сохранить сам файл?
Есть тг-бот, периодически вношу в него изменения, иногда изменения кардинальны и чтоб у юзеров все работало надо чтобы они "перезапустили" бота нажав на /start
Логично присылать всем юзерам уведомление после подобной перезагрузки, чтоб они перезагрузились иначе поведение бота может быть неожиданным. Перезагрузку надо автоматизировать, в голове у меня вертится один подход: в сеттингах прямо в коде указывать номер версии в формате X.Y.Z когда меняется X или Y (предыдущая версия сохраняется в БД) то всем юзерам шлем ведомление.
Вопрос лишь в том - стоит ли это захардкоживать и обязывать именно разработчика менять версию или это обычно делают как-то иначе?
Много готовых решений. При этом нормальный (для скриптового языка) контроль типов.
722x456, 0:13
что такое сплитроаст?
подскажите, как с помощью pandas и read_excel прочитать row-based табличку из экселя? где ключи в первом столбце, а значения во всех остальных. transpose() не работает так, как хотелось, по ключам не получается обратиться
https://www.quora.com/What-is-the-difference-between-reverse-and-reverse_lazy-in-Django
Дело в импорте классов, когда этот класс импортируется то все его аттрибуты сразу "вычисляются". Это нужно в тех случаях когда конфигурации URL не прогружено и не получить ошибку 'Reverse Not Found'.
Дока: https://docs.djangoproject.com/en/4.0/ref/urlresolvers/#reverse-lazy
то есть костыль
как же заебали пидарасы у которых при импорте
модуля запускается всякая левая хуйня
параллельный импорт хуле
Такс, я тут из своих фронтендов решил немного поразбираться в ваших бэкендах. Вот начал учить питон и джанго, а оказывается это совсем для лохов, а я-то думал все бекенд делают на этом джанго. А что тогда питонисты еще используют на бэке? Или имелся ввиду вообще не питон? Фронтером уже давно работаю, есть некое общее понимание того, как работает бек, но вот детально с ним не работал. Джанго мне для начала я так понимаю подойдет, чтобы поразбираться, но интересно было бы узнать, что сейчас у вас для бэка актуально. Насколько я помню всё с чем я встречался по работе писалось либо на .net либо на laravel
Какие могут быть подводные?
Штанга это база, чел.
То что ты слышал скорее всего относится к асинхронщине и здесь ситуация двоякая. С одной стороны, асинхронщина нахуй не нужна 99% времени но петухонисты ее тащат просто чтобы вписать в резюме и поскорее гэпнуться. То есть факту ты ничего не потеряешь если забьешь на нее хуй. С другой стороны, эти же челики эвривеар поэтому скорее всего от тебя будут чего-то такого же ожидать. Короче говоря, асинхронщина это социальный конструкт. Сам решай, нужно ли оно тебе.
В угол к крестовичкам проследуй.
>Джанго мне для начала я так понимаю подойдет
Я б так не сказал. В Джанге происходит много "магии", которая скрыта под капотом, для начала - хуйня. Возьми fastapi, а еще лучше aiohttp - достаточно низкоуровневый чтоб прочувствовать бек но не слишком
На ядрах ювикорн сидит
А вот и хейтерки ормок подтянулись. Не советую такое, на старте это неправильный фокус: вместо плавного погружения с learn by doing, ты будешь заниматься форматированием строк и литералли ручным перекладыванием джейсонин.
>>410578
Чел спокуха, это не ты в соседнем треде козыряешь тем что ОСИЛИЛ SQL?
Джанго это не совсем бэк, джанго для крудов.
Начать и уметь как-то очень полезно, будешь понимать, как правильно сайты круд-типа проектировать. И в целом на джанге много чего полезного можно сделать.
>хейтерки ормок
Чиртилла, ты понимаешь что к фастапи или аиохттп ты могешь прикрутить любую ормку (кроме джангоговна которое разумеется надо с дополнительными плясками подтягивать) в щелчка которую захочешь? А можешь вообще не прикручивать? Ровно как и с кучей других сервисов/фич которые по дефолту в Джангу встроены но либоь не юзаются либо кусок говна. Не задумывался о таком?
>прикрутить любую ормку
Чел советовать алхимию для знакомства я бы не стал. Напомни что там еще ты планировал прикрутить? И как именно об этом челик должен узнать? Ему самостоятельно изобретать ОРМки? Так получаются инвалиды которые до пенсии форматируют скуэль фстрингами.
Короче, нихуя я с тобой не соглашусь. Сначала лучше взять джангу где все примитивы под рукой и только потом смотреть как их сделать руками.
Бэк это то, что обслуживает фронт. Когда у тебя явное разделение. Смысл в том, что тру-бэк больше обслуживает логику, реализует API и т.п.
А когда круд, то это чуть другая архитектура, тогда у тебя бэк и фронт в одном флаконе. Фронт уже не фронт, а просто дизайн+вёрстка.
смотрю ютуберов они непонятные я застрял на условных оператарах
не понимаю зубрить тупо хочу понять не понимаю психую много курю
например while хули он такой непонятный
помогите а, я не претендую на миллионы я старый просто мозги размять нада а ваши IT скоро станут как 100 лет назад требовалось у вельмож знания письменности типо если читать не умеешь пиздуй в поле
не хочу через 10 лет в поле помогите дайте годнго ютубера или что-то
поэтому что овладеть новыми знаниями или информацией мненужно воспроизвести ее десять тысяч раз
есть какие-либо ресурсы, которые дают задачи на каждый этап получения новой информации
Например,ютубер обьяснил мне изначально что такое переменная и как ее создать. Есть какой-то ресурс, где я могу посмотреть задания чтобы выдрочить-задрочить создания всех типов переменных в этом пой-туне ебаном?
но переменные хуй с ними, но вот ебаный whille я его породу ебал
как мне задрочить все комбинации с этим while то бля
простите за матюки,я грузчик с больной спиной и глазами
Есть класс, который по идее будет билдить огромню форматированную строку. В нём есть методы, которые генерируют куски этой самой строки.
Подскажите, а есть ли возможность запилить эти методы так, чтобы я мог их chain'ить друг за другом, указывая входные параметры только в одном вызове, передавал их в остальные и возвращал результат в последнем?
То есть типа такого: MyClasss.method1().method2.method3....
Я пока придумал запилить в классе поле, которое аккумулирует результаты работы каждого метода, и каждый метод возвращает self чтоб chain'ить друг друга, но при такой реализации во-первых нужно сперва инициализировать экземпляр класса, во-вторых, параметры нужно передавать каждому методу в цепочке....
Записался на курсы оплатила компания, так что хули бы нет. Сначала дали домашку - сервер на голых сокетах, а потом начали джангу. Так и живём.
Это и так сделано,я скорее неверно вопрос сформулировал, попробую ещё раз - можно ли реализовать подобное через @classmethod, без инициализации класса и как-то пайпить аутпуты одного метода в другой в чейне?
>Есть класс, который по идее будет билдить огромню форматированную строку. В нём есть методы, которые генерируют куски этой самой строки.
>Я пока придумал запилить в классе поле, которое аккумулирует результаты работы каждого метода, и каждый метод возвращает self чтоб chain'ить друг друга
Это совершенно стандартная реализация шаблона проектирования Строитель, только ещё в конце нужен метод build, который вернёт тебе саму строку и произведёи очистку объекта-строителя, чем он тебе не угодил?
>>410880
Захотелось, чисто из любопытства после того как функциональными языками пообмазывался, где можно пайпить и каррить функции между собой и в хвост и в гриву. У меня в приложухе на пайкути несколько окошек и в каждом я по несколько раз завожу этого самого строителя и в каждый метод идут почти одни и те же параметры, подумал, мб можно как-то это дело укоротить в плане вызовов...
Но ты прав, да, толку в этом мало а самом деле.
>>410865
Если у тебя нет английского на уровне, что ты можешь на нем обучаться коденху и элементарные вещи вызвают такой стресс, оно тебе нахуй не нужно и ничего не получится. Есть куча других способов спокойно зарабывать через 10 лет, в том числе руками. Лучше в переборку моторов вкатись или я хз.
поговорил с пастой
Никто не знает джанго, чувак. Кроме вкатунов, которые его зачем-то учат.
Вкатываешься в рабочую специальность и уебываешь на запад. Потом получаешь примерно как пограмизд.
Хотя такие хайтековые автослелсари, которые могут в автомобильные компуктеры вообще зарабатывают дохуя где угодно, насколько я знаю. Потому что там сама машина стоит миллионы.
Ну давай разберем тобой написанное...
Как именно по-твоему твой localhost сумеет принять запросо от стороннего сервера? особенно если ты блять установил вебхук на нем как localhost:8000
Ты тупой или глухой?
>Как именно по-твоему твой localhost сумеет принять запрос от стороннего сервера?
Челик учи тисипи ай пи чтобы не лошиться.
Вебхук это post-запросы на твой сервер.
Это как подписки. Ты заходишь в какой-нибудь сайт и подписываешься на его новости, указав свой адрес. Все новые записи идут к тебе post-запросом как только они появятся.
Это гораздо удобнее чем самому опрашивать постоянно их наличие - сайт сам вышлет их тебе как только они будут.
Скажи, ты правда дурачок? Зачем ты вообще высираешься на тему, если у тебя полная каша в голове?
И что ты сделаешь? Напишешь sudo?
Чего почитать/посмотреть для старта. Там порекомендовали степик, нашел там курс от самого ресурса, и два связанных, базовых, курса к нему - course/575/promo course/67/promo и course/512/promo
Стоит тратить время, или есть что-то лучше?
Алсо, в шапке две ссылки на книги накрылись, самая первая и последняя на ЯД.
>>411632
Спасибо. Просто один из пункт тестового - это выполнять определенное действие по изменению в табличке. Вот я и подумал о вебхуках, только не подумал как их мне отправлять на локалхост.
Нужно ли на сервак выкатывать свое решение в таком случае или достаточным будет в теории обработать сэмулировать запрос вручную и протестить, а они уже сами протестят?
Если у тебя нет белого айпишника (хостишься на своем домашем компе например), ты в принципе не сможешь запустить там сервак чтоб он работал с внешним миром
Хочу сделать бота для одной старой игры.
Нашел статью
https://habr.com/ru/post/346258/
вроде бы не так сложно, но...
очень хочется, чтобы все действо происходило в свернутом режиме, когда окно не разворачивается.
Подскажите, реально ли что-то поодобное провернуть, как-то завернув данную идею (из статьи) так, чтобы это все функционировало в оконном режиме?
Или есть вообще какие-то варианты для написания бота, чтобы ээто вес работало в свернутом окне?
Если речь идёт о бд, она находится локально и к ней можно прикрутить вебхук, то адрес на локал и порт.
Если надо общаться с внешним миром, просто узнаешь свой адрес и пишешь его чтоб проверить. На постоянке, понятно, это не будет работать.
Развели тут демагогию.
Я думал джанго и подразумевает рестапи, это тогда мне в сторону DRF нужно учить. Но пока все равно не особо понимаю, почему та же джанго не является DRF, если она точно так же может по эндпоинтам с клиентом работать как и DRF и туда-сюда жсоны гонять
Я слышал, что можно как-то порты с роутера перенаправлять. Меня обманули?
Drf это django rest framework? Так она туда отдельно прикручивается не?
Чел ты разговариваешь с курсовым всезнайкой. Сейчас он тебя обматерит.
Может, но в дрфке всякая сериализация-десериализация, валидация и прочая фигня в коробке.
Если у тебя серый айпи, то перенаправляй не перенаправляй,всё равно получиш хуй, потому что ты уже за провайдерским натом в его внутренней сети, а твой айпи выдали ещё какому-то количеству пользователей.
На Джанге.
fastapi конечно же
Так как в статье написано в свернутом режиме не получится.
Можешь поставить линукс и сделать 8 виртуальных десктопов
Или тупо отбери у бабушки телек и подключи как второй монитор
Зависит от задач
Зависит от задач
>>411801
>>411894
Ого, не ожидал такого большого фидбека.
В общем вебхук у меня не отправлялся на локалхост, ругался на небезопасность.
Поэтому я просто сэмулировал в ручную пост-запрос через постмана и отладил этот момент таким образом. Ну и если выкатить проект на сервак, то все будет работать.
Добавил в Pipfile пакет flake8, написал pipenv install --dev, он установил его и обновил Pipfile.lock файл, выяснилось что встал о нвсе-таки криво, я откатил все изменения назад, теперь он серит мне ошибками на Duplicate keys
Надо походу переустановить среду целиком. Как жить с pipenv?
Я криптохуйло, решил потихоньку начать вкатываться в автоматизацию.
https://www.codepile.net/pile/wBJWkMvE
Вот смотрите этот кусок кода в принципе делает то, что я хочу: генерирует етн адреса в нужном мне количестве, и выгружает пару адрес : приватник в файлик, с которым я дальше собираюсь работать.
Но у меня какое-то чувство что код просто даунский нереально, хотя и работает.
Вопросы:
1)можно ли тут как-то получать дикт{адрес: ключ} минуя вот это разбиение на два листа и потом мердж их в словарь выглядит просто ебано как-то
2) Как красиво сделать жсон, чтобы не просто пара значений была, а, например:
[
{
addres: key_1
pkey: value_1
},
{
addres: key_2
pkey: value_2
},
....
]
Известная проблема когда мы юзаем вызов вроде:
MyModel.objects.filter(id=10)
и ссаный mypy пиздит что:
error: "Type[MyModel]" has no attribute "objects"
Как это фиксить?
Ты модель свою из правильного места импортнул?
Плагины к mypy прикрутить пробовал? django-stubs djangorestframework-stubs
Библиотекарь, каков адрес твоей библиотеки? Не первая ли ссылка в шапке которая не работает?
Червяка Джима попредержи.
Я вообще интересуюсь можно ли сделать приложуху на питоне с управлением из cmd/terminal, покрасив с помощью rich.
вверху справа на красный значок не пробовал нажимать??
имя\результаты замени на имя\\результаты
и ты сравниваешь int(input(...)) т.е. число
со строкой "1" или "2" или прочее.
И ещё нет проверки на дурака который введёт "один" вместо "1".
Дядя, ты , во первых, в старый тред влетел, во вторых у тебя там куча ошибок, которые даже я, вкатун, могу заметить
1. В строке 27 таб забыл проставить
2. В строке 29 лишнее двоеточие сразу после elif (и по-моему go first должно быть либо 'y' либо 'n', а не 'o', но тебе там виднее)
>>420582
1. В строке 3 у тебя choice должен быть неравен нулю как строке "0", а сам ответ в строке 5 ты преобразуешь в интеджер - это разные типы данных. Он никогда не будет равен "0", "1" или "3" - только 0, 1 или 3
2. В строке 15 у тебя entry делится на пополам между score и name, если это строка или там список, как на прикреплённом скриншоте. Мб ты так и задумывал, но если нет, то нет
3. У тебя функционал поломан. Насколько я вижу, при choice == '1' у тебя выполняется блок кода, который просто показывает рекорды. А при choice == '2' выполняется блок, который наоборот добавляет рекорд. При этом по идее должно быть наоборот
4. Как у тебя выглядят эти самые entry в списке scores? Как кортежи?
Если так, то код в строках 15-16 немного бессмысленный. Лучше просто написать print(entry[1] + '\t' + entry[0])
5. В строках 23-24 я не особо понимаю что ты делаешь
6. Это не особая ошибка, но вообще тебе бы начать использовать f-строки в своих принтах
Наверное ты уже сам всё это разобрал за столько времени, или просто съебал, но если чё, то вот
Медленно, синьор-помидор.
Не всегда и везде, а только там где нужно чтобы при выполнения файла сработала указанная функция.
А ещё чтобы если ты резко захочешь использовать какую нибудь функцию из файла, у тебя не запустился весь скрипт.
Можно ёбнуть через map: list(map(lambda x: x + 10, july_temperatures))
Да, я знаю что это создаст новый объект - похуй.
sqlmodel
a = 500
b = 500
В данном случае это один объект
А вот если сделать так
b = b + 1 - 1
То это уже два разных объекта
В каких случаях происходит присвоение одинакового айди и когда он меняется?
Гарантируют ли разные айдишки выделение памяти на каждый объект или под капотом может быть так, что эти переменные все ещё ссылаются на один участок памяти с 500?
Это копия, сохраненная 13 октября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.