Это копия, сохраненная 19 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2647748 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
#######################################
Вопросы-ответы:
— С чего начать изучать питон?
У питона намного лучше официальная документация, чем у большинства других языков. Есть там и учебное пособие для начинающих: https://docs.python.org/3/tutorial/introduction.html , неофициальный перевод на русский язык: https://digitology.tech/docs/python_3/tutorial/introduction.html (для питона версии 3.8, но разницы почти нет)
— Какие книги считаются лучшими?
На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых?
Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
старая версия шапки, треды 90-148 и ранее: https://dumpz.org/bASGKD8cCFDf
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущий исходник: https://goonlinetools.com/snapshot/code/#8gd2g1snu3l8i26k0bc6k9
подскажите, почему примеры aiohttp внутри fastapi, которые я нахожу в гугле, такие сложные? Вот, например (с первой страницы в гугле)
https://github.com/raphaelauv/fastAPI-aiohttp-example/blob/master/src/fastAPI_aiohttp/fastAPI.py
Мне нужно просто подать запрос к другом серверу и чтобы это все крутилсь в ЕДИНОМ цикле с fastapi.
Разве нужно мутить этот ужас?
Как мне вытащить кверисет из базы, и потом фильтровать по нему, не создавая новые хиты в базу\кэш?
def __init__():
self.all_shit = Shit.objects.all()
def get_some_shit(self, shit_name):
self.all_shit.filter(name=shit_name)
бля, Гопота охуенна:
я написал простой пример и мучался почему он не работает. нагуглил какую-то хрень по ссылке.
Оказалось я просто забыл await перед respose.text() добавить.
Тупые ошибки фиксит на раз!
Впрочем это все еще не значит, что она понимает идею моей программы в целом.
> self.all_shit = Shit.objects.all()
> self.all_shit.filter(name=shit_name)
это образует лишь 1 запрос в бд, так как кверисеты ленивые
self.get_some_shit('asdfasdf') вызывается сотни раз. И создается сотни хитов в базу\кэш.
>память это нейронные связи. старые неиспользуемые связи разрушаются в процессе забывания, механизма освобождения места для новой инфы. новые связи образуются в процессе обучения поверх забытого
Чувак, это так не работает даже в обычных программных нейросетях. Даже в самых простых нейросетях у тебя знания меняются от того, что просто меняются веса связей, сеть, которая много знает, может иметь столько же связей, сколько и не обученная.
Потом просто знания бесполезны, ну будешь таким Вассерманом всё знающим, всё равно с Гуглом и ГПТ конкурировать не сможешь. Ты конкретные вещи забываешь, а вот идеи остаются, в том числе как одни понятия применяются на другие. Этими идеями ты потом пользуешься, сам того не осознавая.
давно не пользовался джангой, проебал нейросвязи
Но попробуй почитать про prefetch_related и select_related, это как раз о том, что тебе нужно. В доке джанго всё описано
If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.
А вот это [, default] что означает?
От задач. На питоне:
> писать проще
> результат получаешь быстрее
> очень, SUKA, универсально: гуй, скрипты, демоны, API, WEB, всё, что угнодно.
На крестах... Ну, средний код будет быстрее отрабатывать.
Правда, хорошо бы понимать, что для десктопного ПО такая скорость никуда не упирается потому, что задержки 0,01с от 0,1с узверь не отличит, а на сервере они потеряются за ожиданиями ответов от БД, внешних API и т.п.
>программируешь
Говори, что кодируешь/пишешь скрипты, не надо говорить «программирую», это неверное сведение.
Даже если в кругу питанистов сделать такой каминг аут, то побъют в лучшем случае.
self.parent = 42
который является ключом в глобальном дикте ссылок на объекты
__nodes = {42: object at ...}
и достается в таком виде:
parent = __nodes[self.parent]
насколько это медленней чем хранить ссылку на объект?
Доложите разработанный размер
заебал сделай за меня
>var1, var2, var3 = map ( int, input().split() )
Что тут происходит?
Почему оно не тульпится?
У меня не выходит почему-то ни со скобочками, ни без...
> Впрочем это все еще не значит, что она понимает идею моей программы в целом.
Впрочем это всё еще не значит, что ты понимаешь идею твоей программы в целом.
map это ленивый объект, он выдает значения по запросу.
Можешь зафорсить туплю через tuple(map), она заставит его работать и вытянет всё.
В гринтексте распаковка вытягивает.
Скобки вообще нихуя не значат в данном контексте.
Вакансии, которые вы видите - это дата сайнс, и там вам нужна в первую очередь математика, а не питон.
Хотите вкатиться в айтишку - учите java, c++ или node-js.
Вкатун, спок.
Двачую этого интеллектуального господина. Нет ума осилить С — иди на панель.
У нас в конторе целая связка прожектов на фласке. В B2B оно прекрасно вытеснило ASP.
>ленивый объект
Это что-то вроде итерации цикла?
> В гринтексте распаковка вытягивает.
А почему тульпа не вытягивает?
Это что-то вроде генератора.
>А почему тульпа не вытягивает?
Это просто скобки.
1 - выражение в скобках
2 - тупля с одним элементом - результатом выражения
3 - инициализация тупли мапом-итераблей
Вообще, мап сейчас считается околодепрекейтед хуйней. Сейчас делают или генэкспы или компрехеншены в зависимости от необходимости.
Ещё можно распаковочку сделать, забавно. Но это чисто в целях самообразования, лол.
> Сейчас делают или генэкспы или компрехеншены в зависимости от необходимости
Покажи, плиз, как использовать генэкспы или компрехеншны для применения int() ко всем разделенным пробелам значениям строки - input().split()
Это длинный пост с многими поинтами, который мне лень писать, извини. В целом синтаксис (int(n) for n in input().split()), но тебе уже не обязательно ограничиваться просто int, можно всё сделать за один заход.
>>662409
>>662411
sort это метод листа, который изменяет его. sorted сортирует любую итераблю, возвращая новый сортированный лист. Это принципиально разные вещи.
Поясняю малолетним дебилам почему Селери говно и вместо него все адекваты давно юзают Фауст:
1. Синхронный
2. Громоздкий
3. Не оптимизирован под работу со стримами данных
4. До сих пор нет поддержки Кафки
Все давно юзают pezdiuk. Он и кафку поддерживает, и каклетки.
Сишка:
условие ? true : false
z = (x > y) ? x : y;
Питон:
true условие фолс
z = x if x > y else y
Наверняка же у этой бредятины были какие-то оправдания?
> Это принципиально разные вещи.
А я знаю что это принципиально разные вещи. Я спрашиваю, зачем в языке вперемешку встроенные функции, которые меняют данные, и не меняют?
Ну типа типичная домохозяйка думает так как пишется на питоне
А равняется Б если Г иначе Д
Сравни с:
А равняется Если Г то Б иначе Д
@Serious_Sam
Господи Боже мой 🚬🧐, жалкий 💻👨🦽не знает каким образом строиться семантика 👅 программирования и задаёт ¬🧠 вопросы.
Ну так у тебя может быть задача изменить объект, не создавая новый. А может быть наоборот, тебе нужно создать новый объект. Обе ситуации довольно обычны, поэтому нужны функции-методы для каждой из задач.
Ну, ладно. У меня просто подопечный и так забывает присвоить результат выражения переменной, а тут ещё такое, совсем запутается. Вообще Питон как язык для обучения такое себе, должен сказать. Слишком богатый синтакс, слишком много разных концепций понапихано
А, ещё изобилие в сети и на SO примернов как из второго питона, так и из третьего питона разных версий, тоже не очень способствует, как с многострадальным форматированием строк, где уже сменилось два стандарта, причем внутри третьего питона
Официальная версия сдохла уже 3 года как и не поддерживает новые версии пистона, остались только форки от васянисов
> Да, существует асинхронный аналог set() в Python. Это asyncio.Queue, который также обеспечивает избежание дубликатов элементов. Метод put() добавляет элемент в очередь, при этом если элемент уже присутствует в очереди, он не добавляется повторно.
Нет
Асинхронные таски для cpu-bound не подойдут. Если у тебя один сервис крутится и библиотек multiprocessing и concurrent недостаточно, то тут имеет смысл или делать полноценную распределенную архитектуру или, если у тебя есть один сервис, которому нужно скидывать жирные таски, то проблем с использованием celery нет. Фауст это именно стрим процессинг + стейт для обработки кучи сообщений в секунду для кафки.
>Слишком богатый синтакс, слишком много разных концепций понапихано
Когда я его учил (с поправкой, что для меня это был не первый ЯП и, наверное, даже не в первой десятке), мне показалось, что на фоне всего, с чем я уже знаком, тут столько синтаксического сахара, упрощающего написание кода, что я рискую словить синтаксический диабет.
>>662628
> с многострадальным форматированием строк, где уже сменилось два стандарта, причем внутри третьего питона
Не сменилось, а добавилось. Старые не выкорчёвывали. Другое дело, что новые настолько удобнее и лучше, что старые как-то сразу стали deprecated.
>Наверняка же у этой бредятины были какие-то оправдания?
В отличии от первого, крайне хуёвого примера по дизайну, во втором ты просто читаешь фразу и она сразу говорит, что делает. И не надо выискивать значочки в строке.
Кафку ещё настроить надо
ну охуеть теперь.
Ну тогда объясни мне мою программу.
И кстати, что тут понаписали? это централизированный пул соединений?
https://github.com/raphaelauv/fastAPI-aiohttp-example/blob/master/src/fastAPI_aiohttp/fastAPI.py
Первый пример охуенный по дизайну.
Условие? кейс1 : кейс2
>во втором ты просто читаешь фразу и она сразу говорит, что делает.
Как и первая, только в первой условие засунуто между действием по варианту 1 и действием по варианту 2
дело не в этом, это объективно некрасивая мешанина
do some_code if true else do other_code
смешаны в кучу котлеты и мухи
Кстати, про метро. Вспомнил об одном проекте:
https://pmetro.su/
можно скачать у них схему метро в своём специальном формате pmz, насколько я помню, pmz представляет из себя zip-архив с пачкой простых файлов, среди которых: png со схемой, много чего ещё и XML с самими станциями. Вот оттуда, при желании, можно взять данные считай без парсинга. Обновляется регулярно.
Ни в коем случае не используй редис, лучше подожди пока умные дядьки напишут фреймворк под твою задачу.
Ты просто решил доебаться на пустом месте. Не нравится - не используй.
гвидо накринжил, думая, что будет база
Да в чатах в телеге. 3 апреля тот же вопрос задали и послали вручную эксельку заполнять.
Ты не ответил что там у вас происходит.
Неужели кабанчик объявляет приз и смотрит кто быстрее сделает?
Или, что более вероятно, кто-то на фрилансерском сайте разместил заказ, а все остальные вкатыши ринулись спрашивать во всех местах?
Хуй теперь буду отвечать в треде, раз такое дело
статьи в википедии ежедневно обновляются и меняются
кстати, англовики там еще и редизайн сделала, который очевидно раскатают и на языковые вики
И как вообще это делать?
Распидорасит весь системный софт?
Думал нормальненько дожить на python 3.9, но кодерский паравоз бежит вперед слишком быстро и нихуя не работает нормально aiohttp.
Редиска не пойдёт. Уже выполняющийся таск затирать нельзя. И нужен не ttl, а именно затирание новой задачей старых. Не должно быть так, что всё протухнет — должна исполниться хотя бы одна задача (таск).
Так в треде кроме лабораторок с вкатунами и нет никого. Кому надо тот и так знает, а сложные вопросы не ответит никто
hashlib.md5(data).hexdigest()
Где, data это прочитанный в бинарном виде файл.
Файлов всего около тысячи, первый раз раз хэши считались долго, секунд 15 наверно. Когда второй раз запустил всё сделалось за пару секунд.
Чому так?
Если питух где-то на диске собирает хэш этих файлов то я бы хотел это говно удалить.
Просто в таблице на вики появятся новые строки, формат таблицы врядли изменится(надеюсь).
>>663148
Я без понятия чё ты параноишь, у меня свой проект, под который эта шляпа нужна, ни в каких хакатонах и фриланс заказах не участвую( хотя уже кажется нашёл на бирже чела который сделает это за копейки пока двачеры параноят)
Может в оперативе. Попробуй оперативу затереть.
Ты тот Васян-охранник, кому "среднее полное нинужно"? Узнал я тебя по чувству юмора
Какой охранник, я магистр
zalupa = classZalupa()
list = []
list.append(zalupa)
size = list[0].zalupaSize
Это будет работать, но на последней строке среда не знает что лежит в листе, никаких подсказочек при вводе и если я захочу переименовать zalupaSize на sizeZalupa, то буду это делать руками во всём проекте.
Можно как-то исправить это?
Добавить типов
list: list[classZalupa] = []
Pycharm автоматически изменит последнюю сигнатуру если через него рефакторить
ты зачем переопределил list, балда
да ты бы и Boo вспомнил
Ну так если ты всё умеешь и тебе этого не надо - не читай. Это же абстрактная хуйня для дурачков, вот ты, ты умный. Угу.
Что за проекции начинаются? Я не писал, что я всё умею, если бы я всё умел, то я бы вообще сюда не писал. Я не писал, что деревья - хуйня для дурачков.
Я просто написал, что мне стало скучно читать этот учебник и что не понимаю, что конкретно я буду уметь, когда пойму принцип работы деревьев. А в ответе на свой пост я надеялся получить мнение анона об учебнике, о том, правильно ли использовать его для изучения принципов программирования, если ничего до этого не читал и нормально ли, что абстрактные вещи учатся тяжело и не охотно.
А ты хуйню какую-то спизданул мимо.
360x360, 0:53
Пацаны! Подскажите плез, как вы остаётесь креативными и пишите код по 12 часов в сутки 6 дней в неделю?
Я не креативен и не пишу код дохуя часов.
Я в основном на отходосах и натужно пишу код на пхп-перле-питоне-шеллах, чтобы поркыть расходы.
Писал бы и на шарпах-жавах, но лень ставить иде.
Не зацикливайся на языках, it's all the same shit.
>если я захочу переименовать zalupaSize на sizeZalupa, то буду это делать руками во всём проекте.
Ну, создай в классе магический метод __len__, это будет более тру.
https://habr.com/ru/articles/186608/
Но вообще говоря, то, что ты описываешь это не про динамическую типизацию, такая проблема даже в самых статических случаях будет.
>Пацаны! Подскажите плез, как вы остаётесь креативными и пишите код по 12 часов в сутки 6 дней в неделю?
Насколько я понимаю, есть только одно, что поможет в такой постановке вопроса: правильный режим переключения контекстов. И оно, насколько я понял, неуниверсально.
Поизучай отдельно:
https://alexthunder.livejournal.com/290612.html
и про метод помидора, про него написано очень много, при чём есть разные практики, тайминги и замечания.
>>665301
>я просто не понимаю, как люди сосредотачиваются под музыку
Нужна правильная музыка. Мне, например, очень зашла нейромузыка из приложения Яндекс.Музыка на телефоне: только звук, ни слов, ни ещё чего-то, за что сознание может зацепиться, зато блюмкает приятно.
Какая связь между uvicorn и gunicorn ?
Почему когда я vscode через менюшку прощу добавить в проект docker ( а так можно делать и я считаю стоит делать)
он собирает мне docker-compose.debug.yml какой-то левый с gunicorn ?
Всем нужен gunicorn ?
Стоит ли упоминать, что отладка в docker-compose не работает...
спасибо, посмотрю
У меня стока места нет.
Ну я поставил эту срамоту - pyenv и python 3.11
Стоит ли говорить, что при установке и сборке с нуля все равно насыпало варнингов и работать в VSCode не так уж удобно?
Хотя я надрочился выбирать версию python и в принципе жить можно.
Свежие питоны требуют в системе свежих GLib, а слишком новые GLib - потенциально поломают половину системы. Поэтому мейнтейнеры иногда ограничивают максимальную версию доступных пакетов. Собственно, скорее всего оно у тебя даже не скомпилится руками.
Мне проще, у меня Ubuntu на железе, а дебиан или центось, при необходимости, я и в докере запущу:
> $ docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> debian 11 f5b06fd90040 2 weeks ago 124MB
> centos 7 eeb6ee3f44bd 18 months ago 204MB
Все собралося, за исключением небольших варнингов.
Ты же не думаешь, что кто-то кроме долбоебов использует centos ?
> Ты же не думаешь, что кто-то кроме долбоебов использует centos ?
Увы и ах!
У половины моих контрагентов седьмая цента, ещё у трети - восьмой рхел (которого у меня нет, дорого, так что тестировать приходится прямо на их проде, естественно, всех предупреждаю о побочках).
Я каждый раз полыхаю так, что видно из космоса, когда оказывается, что мне придётся снова связываться с этим окаменевшим говном мамонта, на котором окажется питон 3.6 (и соберётся из сырцов 3.8 - максимум) и ансамбль 2.11 какой-нибудь.
Какой из вариантов более "clear code"вый?
>кастомные коды ошибок для JsonResponse в Fastapi.
Вообще плохая идея, как по мне. Есть HTTP-коды, которые ты можешь скармливать через raise в случае ошибок, или штатно указать корректный код, зачем тебе тут кастом?
Чтобы тот, кто будет делать фронт - страдал?
BASH:
> echo "pass" | sha256sum
> 9f56e761d79bfdb34304a012586cb04d16b435ef6130091a97702e559260a2f2 -
Python:
>>> from hashlib import sha256
>>> sha256("pass".encode('utf-8')).hexdigest()
'd74ff0ee8da3b9806b18c877dbf29bbde50b5bd8e4dad7a3a725000feb82e8f1'
Почему, применяя один и тот же (по-идее) хэш-алгоритм к одной и той же (по-идее) строке я получаю разные результаты?
Это не http-код, а код в body, т.е. схема жсон респонса такая: {"code”: ErrorCode_instance, ”message": CustomMessageText}.
Я просто пытаюсь понять, может, я сам не прав и мне надо перерписать всё КЕМ...
1) Потому что на разные эксепшены навешены свои хэндлеры.
2) Потому что detail в таком виде вернёт фронту plain text, а не объект.
Я же хочу для всех ошибок возвращать ErrorResponse с атрибутами code и message, т.к. контроллер может вернуть хттп 400 по нескольким разным причинам.
Т.е.:
1) упал на валидации токена -> хттп 400, код 40001, мессаге инвалид кредентиалс;
2) упал на валидации тела -> хттп 400, кож 40002, мессаге бади валидатор еррор;
и т.п. для 401/403/5ХХ.
А я не пишу так активно, я чё дебил что-ли. Строчку код 24/7 юез выходных где-то месяц, а потом полгода сижу как овощь
просто не взрослею после 22 лет
На самом деле это всё: >>665329 , конечно, работает, но только до одного момента. Пока у тебя есть интерес. Хоть какой-то. Пока интерес сильный, тебе ничего не надо, когда его нет - тебе ничего не поможет.
Если тебя всё заебало и ты понимаешь, что вертел ты на хую в тысячный раз писать один и тот же код для новых клиентов - надо что-то менять. Предметную область, фреймворк, язык, работу, в конце концов отрасль.
Когда станет скучно, заебёт вконец, ты либо будешь писать 10 строк полезного кода в день, либо будешь механически впечатывать шаблонный код, работа по интеллектуальному уровню будет на уровне "отстоять смену у станка" 50 лет назад безо всякой автоматизации.
pyinstaller вопрос.
У меня программка разбита на файлики, в которых подключаются другие файлики и так далее.
Я правильно понял, что pyinstaller вложенные вложения, так сказать, не видит и не читает?
А можно как-то запустить приложение в одном окне, а трассировать в другом? Ну, VSCode, например, может показывать значения переменных, расставлять точки останова и пр., но запускает при этом приложение у себя в подвале, а у меня там портянки текста, мне бы консоль на отдельном экране видеть.
Вот есть у меня простой класс Person с атрибутами имя и возраст. Хочу допустим я создать 50 человек - не буду же я руками создавать ivan = Person("Ivan", 20), Alesha = Person(...) ....
Не, ня правільна. Ён усе чытае. Стартуй pyinstaller у дырэкторыі дзе зьмяшчоны твой __main__.py. Таксама магчыма дадаць яму бібліятэкі парамэтрам --paths
Тебе нужно сделать свой генератор c фейковыми данными, можно сделать создание рандомного списка из string.ascii_letters
Еще можно заморочиться и заюзать эту либу, если хочешь что-то осмысленное
https://faker.readthedocs.io/en/master/
В данном случае у тебя появляется лист "persons" и эти "люди" будут элементами этого листа.
Обратиться сможешь либо в цикле, например:
> for i in persons:
> ....age = i.get_age()
либо по индексу, например:
> age = persons[-5].get_age()
А че не так? порядок и приоритет действий чекай
Фейковые имена похуй какие, мне и имя 1, имя 2 сойдёт.
>>666968
Понял, попробую использовать. Но это все равно все будет объектами словаря. А можно ли в питоне создать обычные переменные во время исполнения кода? Чтобы код создавал переменные вида ivan = Person() и чтобы потом использовать ivan.name, а не persons[0].name
Чел, чекай ооп в питухоне, чтобы не быть батхертом.
Можно, но не нужно.
dict - это подсказка. Ты всё так же можешь присваивать что угодно (но зачем идти против подсказки, бля).
Так не делают нигде. Вдруг у тебя потом будет не 50, а 20, или 1000. И что потом? Программу переписывать будешь каждый раз? А если у них имена будут другие?
type hints нужны для крупных проектов для использования в связке с IDE
если ты используешь их просто так, то ты сам себе стреляешь в ногу
Квкие крупные проекты, они используются в валидаторах типа пидантика или ещё какой залупы, там тип важен и это не подсказка нихера
>Чтобы код создавал переменные вида ivan = Person() и чтобы потом использовать ivan.name, а не persons[0].name
Можно. И, более того, именно так это и работает. Другое дело, что юзверей ты хранишь в эрзац-БД, из расчёта, что их будет дохуялиард. Если у тебя немного объектов (предсказуемое количество, обусловленное логикой), то, конечно, делается что-то в духе
> ivan = Person("Ivan", 22)
a = [1, 1, 2, 2, 3, 3]
for i in a:
....if i == 2:
........a.remove(i)
print(a)
> [1, 1, 2, 3, 3]
a = [1, 1, 2, 2, 3, 3]
for i in a[::-1]:
....if i == 2:
........a.remove(i)
print(a)
> [1, 1, 3, 3]
Сука, мелочь, а я, наверное, час потратил на дебаг.
Ты мог и просто сделать a[:] во втором примере. Но вообще, код выглядит как срань потому что ты сначала делаешь копию, потом итерируешься по ней и вызываешь remove, который тоже итерируется по листу до первого вхождения.
Да ты почти в любом языке обосрешься, мутируя итерируемый объект. Это БЭД ПРАКТИС, ёпта.
Мне тоже не нравится. Но нужно почистить лист от вхождений по маске и для этого как бы есть ремув.
>>667867
>Да ты почти в любом языке обосрешься, мутируя итерируемый объект.
Если идти с конца, то нумерация не поедет и это работает. А что думаешь, правильнее? Сначала сделать временный лист/тупл с тем, что надо удалить и потом пройтись уже по нему циклом?.. Звучит ещё страньше, а больше ничего в голову не приходит.
Кстати, идти с конца - практика, которую когда-то подсказали куда более опытные товарищи, которые в отличии от меня именно кодингом живут.
>Если идти с конца, то нумерация не поедет и это работает
Ты не по тому же листу итерируешься, а по его копии, потом вызываешь remove, который итерируется уже по оригинальному листу пока не найдет заданное значение. Поскольку количество вхождений "2" в копию очевидно такое же, то оно и работает корректно. Сделай вместо a[::-1] a[:] и у тебя будет такой же результат.
С таким же расходом памяти, но более идеоматично и быстрее будет так
a = [1, 1, 2, 2, 3, 3]
a = [i for i in a if i != 2]
Можно с конца, можна через генератор и зарядить дальше. Для небольших списков можно компрехен.
todel = {1,2,3}
gen = (el for el in lst if el not in todel)
Но где вот прям использование по делу?
В больших говноскриптах.
Посмотри какую-то небольшую либу вроде requests как там всё организовано.
нахуй не нужон. никто не пользуется этим говном
>a = [1, 1, 2, 2, 3, 3]
>a = [i for i in a if i != 2]
Спасибо за подробное пояснение!
Так и сделал, работает и смотрится норм. Почитал про ремув, потестировал, слегка разочаровался, что он бегает. Я что-то был чуть лучшего мнения о Питоне. То есть со стороны кода всё гут, но внутри не так красиво, как ожидаю.
>>668028
Спасибо!
У меня это пока заглушки перед переездом данных в БД, но хочется писать нормально сразу. Спасибо!
Пробовал писать сразу в базу, но там половина кода уходит на подключение, выборы, курсоры... Решил обкатать логику без этого всего сначала.
В кратце функция должна присылать уведомление всем юзерам в определенное время.
Вот на скрине то что я сделал, код работает, все присылается, но остальные функции бота перестают работать.
Оно же вроде должно быть паралельным потоком, но нихуя.
>Я что-то был чуть лучшего мнения о Питоне
Ты просто не очень его знаешь, удаление по элементу без прохода по массиву ты ни в каком языке не сделаешь. Для удаления по индексу есть pop
>удаление по элементу без прохода по массиву ты ни в каком языке не сделаешь.
А если ты обходишь список, то в i во всех случаях попадает копия элемента? И никогда - ссылка на него?
Если ссылка, то можно придумать, как исключить каррент айтем.
>А если ты обходишь список, то в i во всех случаях попадает копия элемента? И никогда - ссылка на него?
Если это изменяемый объект, то ссылка, если не изменяемый то значение.
>Если ссылка, то можно придумать, как исключить каррент айтем.
Просто нормальный счетчик с pop.
Это не копия, это дополнительная переменная, то есть на объекте просто увеличили счетчик ссылок.
>>668270
Вот это вполне нормальное решение, чем не нравится? Созданием второго списка? А вы подумайте логически как по шагам сделать это в одном листе с сохранением индекса
Чем копи отличается от полного слайса, который известная идиома?
>во всех случаях попадает копия элемента? И никогда - ссылка на него?
В питоне все типы ссылочные, в нём не имеет смысла разделение на value и reference.
>Зачем тебе екзекутор?
По стандарту нужен в библиотеке aiorgam для работы с телеграм ботами.
>И в чем прикол asyncio.gather с одной функцией?
Я просто до этого запускал вне асинхронной функции и без него не работало.
Тем не менее, если вот ты обходишь лист, у тебя есть указатель на элемент листа, но для удаления элемента из листа ремув не берёт готовую ссылку, а проходит по всему листу до подходящего вхождения.
>у тебя есть указатель на элемент листа
Это ссылка на объект, о листе он никакой информации не имеет. remove ты изначально неправильно использовал. Если ты хочешь быстрого удаления из листа, то тебе нужно удалять по индексу.
Японцы баттл ссыте замутили на 2кб озу и 1.5мгц процессоре, а ты на такой хуйне обосрался. Стыдно!
Ну вот, у тебя в простом ответе троичная логика. Тебе надо на sql делать jrpg.
да
Ты никогда не станешь крутым, спрашивая ответы на элементраные вопросы. Надо давать результат, даже извлекая его через жопу.
Тебе надо изучить си и посмотреть, как работает вм питона. Тогда ты сможешь давать советы из жопы. Вот там выдлелся лист х на разрядность системы, а ты своим выражением утопил эту ололо-оптимизацию в говне. Вот так надо смотреть.
А потом идти в си-тред и спрашивать, что значат полтора звездочки в выражении.
Пытаюсь написать скрейпер сайтов на реквестах. Наткнулся на случай, который не понимаю как обходить. При каждом новом запросе в ссылку добавляется новая часть, аналогичная предыдущим и так до бесконечности. Никаких ошибок типа максимальной рекурсии не выдает. Я хз даже как гуглить.
Пример пикрил и Parameter on Hostname Root в разделе URLs тут https://crawler-test.com/
Честно, признаюсь, пытался пару дней назад начать что-то делать на C++. Знаю, что малютки используют библиотеку SDL2, потому после того как скачал компилятор mingw, поставил её, но эта шлюха отказывалась работать что бы я не делал. Поэтому забросли эту дрисню.
Где каменты на китайском? Мы вам перезвоним.
Не смешно.
Буду вечно благодарен за помощь.
https://pastebin.com/z8bKhLcw
Вот яркий пример того что значит "быть слишком умным не к месту":
https://habr.com/ru/articles/728194/
Петушок ударился в генераторы и предлагает засрать нахуй свой код ими. Поменять легко читаемую и легко отлаживают конструкцию на плохо читаемую и неотлаживаемую без каких-то профитов по производительности даже (и где-то наоборот она и хуже станет)
Дык, это же питон. Здесь много высокомерных чванливых пидорасов, ебущихся хуями в грязное половое ачько с говном, а потом сосущими эти гонорейные хуи друг у друга. Это норма.
Не стоит такое прямо вводить как догматику и писать код исключительно гомосексуально (даже если ты питонист). Но как разминку для ума или как некие приёмы, которые иногд аудобно или интересно использовать в своём обычном коде, который ещё и другим читать (или себе через год) — да, полезно, ящетаю.
Забавно, что он просит за свои услуги от 7к евро, при этом жиденько обсирается в комментах про коды ошибок, "ну я сам из мира assемблера" и "мне надо было отдать пол миллиона точек" -> "тут я наврал, было максимум 17 тысяч".
Бля, из-за новой капчи пик не добавился.
по-моему чувак просто решил потроллить
Всем привет, что почитать/посмотреть такого, что бы максимально разобраться в асинхронности?
Нужно ли мне для этого так же вникать в многопоточность/многопроцессорность или достаточно условно асинкио только знать и все?
В общем жду любых подсказок/советов, спасибо:)
Асинхронность, трединг (многопоточность) и мультипроцессинг (параллельные вычисления) — это абсолютно разные вещи.
Лучше сразу для себя выяснить различия и сходства, и комплекс решаемых задач.
Asynchronous vs Multithreading and Multiprocessing Programming (The Main Difference)
1 видео: "Братаны, ща напишем топ нейронку без библиотек, всё понятно и вообще клёво"
https://www.youtube.com/watch?v=fa3BE_VwyS4
9 видео: "Так ребятки устанавливаем Петухон и тысячу библиотек гойды, через видосов 50 сделаем топ проект"
https://www.youtube.com/watch?v=jdDMBNWt42Y
Ну ты бы ещё посмотрел "кто обоссытся первым челлендж".
Надо смотреть видео из удеми с улыбчивым индийским школьником и кудахтаньем куриц во дворе.
Ты пытаешься троллить, но получается какая-то глупость. Мне просто жаль, что нет нормального урока, который помог бы мне в сфере Дата Сайенс.
Я пытаюсь сказать тебе, что на ютубе не стоит искать вменяемых видео по айти. Они бывают, но это единичные исключения.
А ты видимо зумерок, который и жопу без ютуба подтереть не может, да?
Почитал статей, тогда вопрос сокращу до:
Всем привет, что почитать/посмотреть такого, что бы максимально разобраться в асинхронности?
Сам пока читаю все, на что наткнусь, но все же буду не против более конкретным советам.
И как ты советуешь изучать Машин Лернинг. С точным указанием ресурсов/ссылками. Если не сможешь ответить - оформляй срыгос с борды.
Читай книги, лекции с институтов и соотвествующих курсов.
Найди людей с нужных направлений и попроси их сливать лабораторные и всякое такое.
скачай курсы скилбоксов, если верхнее сложно, но лучше смени направление)
Я тебе ничем не обязан, срыгосник, просто обозначил, что ты ешь говно и почему оно на вкус как говно почему-то. Так что стоит поискать что-то получше.
А пока можешь оформлять свои молодежные срыгосы обратно на ютубчик. СТАВЬ ПАЛЬЧИК ВВЕРХ.
>нормального урока, который помог бы мне в сфере Дата Сайенс.
Тебе надо матстат, линал и тервер изучить, а инструментарий в Питоне для этого элементарен — хуяришь в ноутбуке, вооружившись пандас и нумпи, вот и всё.
Сто мильйонов где платят, девка на ютубе сказала.
Я вообще не шарю в питоне, чисто хочу для себя одну штуку сделать.
Вот код, скорее всего я пиздец какое говно написал, но уже часа 3 пытаюсь поправить чтобы нормально работало и ничего :(
удалил лишний while, забыл с теста прошлого.
Всё равно сперва в ans выдаёт просто role, а затем и в ans и в context - Circular reference detected.
Запусти да посмотри.
будет, он в отельном окошке откроется
Всё хуйня переделывай.
[H[J
главное_меню
1.) создать_меню< команда>
2.) создать_пункт< команда>
3.) назад< команда>
4.) выход< команда>
5.) сохранить< команда>
6.) загрузить< команда>
>>>
1
>>> создать_меню >>>
2
[H[J
главное_меню
1.) создать_меню< команда>
2.) создать_пункт< команда>
3.) назад< команда>
4.) выход< команда>
5.) сохранить< команда>
6.) загрузить< команда>
7.) 2< Меню>
>>>
вв
Traceback (most recent call last):
File "main.py", line 148, in <module>
консоль.цикл()
File "main.py", line 46, in цикл
я.выбрать_пункт(выбор)
File "main.py", line 96, in выбрать_пункт
выбор = целочисленное(выбор)
ValueError: invalid literal for int() with base 10: 'вв'
Всё хуйня переделывай.
[H[J
главное_меню
1.) создать_меню< команда>
2.) создать_пункт< команда>
3.) назад< команда>
4.) выход< команда>
5.) сохранить< команда>
6.) загрузить< команда>
>>>
1
>>> создать_меню >>>
2
[H[J
главное_меню
1.) создать_меню< команда>
2.) создать_пункт< команда>
3.) назад< команда>
4.) выход< команда>
5.) сохранить< команда>
6.) загрузить< команда>
7.) 2< Меню>
>>>
вв
Traceback (most recent call last):
File "main.py", line 148, in <module>
консоль.цикл()
File "main.py", line 46, in цикл
я.выбрать_пункт(выбор)
File "main.py", line 96, in выбрать_пункт
выбор = целочисленное(выбор)
ValueError: invalid literal for int() with base 10: 'вв'
Сам отлаживай. Я code style commit сделал.
Добрый, добрый Python ООП Сергей Балакирев 2022 https://stepik.org/course/116336/promo
На какой сесть?
Мимо чел с айтишной вышкой но программировать не научили
Уже приносил английские курсы в этот тред и их обоссали "курсы не нужны"
Приведи пример нормального, если шаришь.
>>671942
>>671961
Я в 3д вкатился по англоязычным курсам, на сайте где их скачал, нашел курсы по питону, вспомнил, что уже год сижу без работы, закончив айтишную вышку. Поэтому принес эти курсы в этот тред.
Я не вкатун с нуля, у меня есть база, знаю английский, и вместо шароебства по бордам я реально самообразовывался. Но не хотелось бы просмотреть условно говоря 10 часов курса, и понять, что хуйня, поэтому спрашиваю.
Ещё раз в этом треде могу тебе порекомендовать jose salvatierra.
У него акцентик, но нормальный, не диарейный индусский.
Есть ещё челик русский, который по тематике, я скачал на каком-то варезнике, не могу найти сейчас.
Любого автора русских курсов надо ловить и пиздить арматурой, я серёзно.
У меня есть sh скрипт в котором запускается утилита с ключами, ее хочу перенести в код, но если делать типа process.call('bash' -f 'apache2 хуе-мое') она не видит каталогов, а если process.call('apache2' -f'пук-среньк') то он не видит конфигурационных файлов хранящихся для юзера в $home/username
Или как то иначе такое надо запускать? И как мне код ошибки обработать? Потому что если он срабатывает то приложуха дохнет.
В d1 у нас обычный генератор и там я могу брать по два элемента(x, y) из списка(a2). А вот d2 и d3 вложенные генераторы и сразу по два элемента если брать выдает ошибку.
Это так задумано или я что-то делаю не так?
>>671935
Вот сейчас как раз курс от Балакирева прохожу, только бесплатный который, для самых маленьких. Очень годный курс.
так синтаксис неправильный. вместо а2 вставь свой листкомп и всё
а двойной комп итерируется по каждому элементу пары отдельно, превращая лист из пар в плоский одномерный лист
БАМП
>>671974
>>671984
Задам пожалуй еще один банальный вопрос. Допустим, у меня есть знания основ ООП и знания Python на уровне университетских лаб. Проходит год, за этот год я чисто по фану задрачивал тридэ как хобби, но мне вдруг захотелось есть поработать по специальности, и я решал изучить язык, с которым хотя бы немного был знаком в прошлом
Сколько времени у вкатуна не совсем с нуля, с моими входными данными, может уйти на становление джуном-питонистом? Чисто усредненное значение. Предположим, что в Айти я не ради денег, а потому что ничего другого просто не умею, а в тридэ работать не хочу т.к. отрасль мертва
При устройстве больше смотрят на петпроекты я так понимаю?
>Сколько времени у вкатуна не совсем с нуля, с моими входными данными, может уйти на становление джуном-питонистом?
Пол года-год, зависит от твоего желания и будет ли твоей первой вакухой джанга
Сейчас сделал без ml чисто математикой. Сначала сильно блюрю через denoising, потом через kmeans уменьшаю количество цветов и потом ещё скэлю получившееся цвета к 32ум заранее заданным цветам. После разделяю исходную картинку на 32 разные по одной на каждый цвет, На каждой сначала удаляю шум, потом dilate оставшихся элементов а потом, нахожу все компоненты связаности. Дальше для каждой компоненты связаности беру прямоугольный контур, проверяю что он не слишком большй и не маленькией и не силньно пересекается с другими. Из выбраных выбираю до 6ти самых близких к центру. Но получается так себе. Некоторые картинки нормально сегментировал, на некоторые вообще неправильно. Как улучшить без излишних усложнений?
Какой мл? Ты куда зашел, чмоня? Мы здесь максимум умеем решать квадратные уравнения, а ты со своими нейронками.
Форме вообще не надо быть красивой, совсем. По сути, мне нужен веб-аналог tkinter'a.
Какие библиотеки пробовать? Мне очень не хочется пытаться разбираться с фласком.
А куда с мл идти? Тред пропал. Я думал они в питон тред перекачевали
Джанга, самую простую формочку можешь склепать через 2-3 часа знакомства.
Проблема в том, что он как бе 18+ и питон выдаёт 403, потому что там при входе вопрос "а вам есть 18?". Пытался добавить в параметры "agreed=1" - не помогло.
В заголовках используется cloudflare, пытался обойти с помощью cloudscraper, cfscrape - нихрена.
При этом в браузере ссылка https://giantessbooru.com/post/list?agreed=1 прекрасно работает
Как победить?
Выдери куку из браузера и ходи с ней? В селениуме так можно точно. В реквестс не пробовал, но может да.
Кароче, вот более наглядный пример. Так и не понимаю, почему первый вариант работает, а второй нет? Ведь вложенный цикл во втором варианте это то же самое, что и первый вариант.
саечку за испуг
Я вкатун-самоучка - по позиции вообще аналитик а не девелопер, пару лет клепал макросы на VBA, потом перешел на питон. В моей команде все такие же - бывшие ученые, бывшие аналитики, или люди прямо с курсов. Все умеем педалить юпитер ноутбуки и писать скрипты, но полноценных знаний хороших практик разработки нет.
За последнее время, на команду начало прилетать много задач, которые больше про разработку - автоматизация отчетности, сделать какой-то простенький фронтенд для одной аппликухи, и тд. Говнокодом и такой-то матерью справляемся, но становится очевидно что надо менять практики - было уже несколько отчетов которые отправили клиентам неправильно потому что не было тестов, были случаи когда у кого-то три месяца (!) не отправлялся важный алерт, а об этом не знали потому что не читали логи крона. Фактор автобуса 1 на каждом проекте, потому что документацию. никто не пишет. И так далее.
И пока что кроме меня - никто не видит в этом проблемы, все типа "ну как-то работает, и хуй с ним". Тимлид соглашается, что надо бы выработать какие-то другие практики, но он похоронен под завалами бюрократической работы и ему не до этого.
Я хочу попробовать выработать для нас какой-то базовый CI/CD пайплайн для начала. Научить людей нормально работать с гитом (чтобы вы понимали, для нашей команды сейчас пуши с локальной машины в мастер - норма, в большинстве реп мастер - единственная ветка), приучить использовать линтер и стайлер, начать делать ревью и мерджреквесты. Но опыта у меня у самого нет. Как мне в принципе подступиться к такому? Какие github action'ы - мастхэв для мерджей из дева в мейн? Надо ли требовать ревью при мерджах фичер-веток в дев, или хватит только из дева в мейн? Как приучить людей писать тесты на свой код? Какой линтер и стайлер лучше использовать? И т.д.
и если про линтер скажете про pylint - что лучше, попросить всех поставить себе прекоммит хуки и гонять его локально, или сделать обязательным при пуше с помощью экшенов? если второе - какое брать пороговое значение оценки? потому что если требовать 10/10 - у нас работа встанет, лол
Я вкатун-самоучка - по позиции вообще аналитик а не девелопер, пару лет клепал макросы на VBA, потом перешел на питон. В моей команде все такие же - бывшие ученые, бывшие аналитики, или люди прямо с курсов. Все умеем педалить юпитер ноутбуки и писать скрипты, но полноценных знаний хороших практик разработки нет.
За последнее время, на команду начало прилетать много задач, которые больше про разработку - автоматизация отчетности, сделать какой-то простенький фронтенд для одной аппликухи, и тд. Говнокодом и такой-то матерью справляемся, но становится очевидно что надо менять практики - было уже несколько отчетов которые отправили клиентам неправильно потому что не было тестов, были случаи когда у кого-то три месяца (!) не отправлялся важный алерт, а об этом не знали потому что не читали логи крона. Фактор автобуса 1 на каждом проекте, потому что документацию. никто не пишет. И так далее.
И пока что кроме меня - никто не видит в этом проблемы, все типа "ну как-то работает, и хуй с ним". Тимлид соглашается, что надо бы выработать какие-то другие практики, но он похоронен под завалами бюрократической работы и ему не до этого.
Я хочу попробовать выработать для нас какой-то базовый CI/CD пайплайн для начала. Научить людей нормально работать с гитом (чтобы вы понимали, для нашей команды сейчас пуши с локальной машины в мастер - норма, в большинстве реп мастер - единственная ветка), приучить использовать линтер и стайлер, начать делать ревью и мерджреквесты. Но опыта у меня у самого нет. Как мне в принципе подступиться к такому? Какие github action'ы - мастхэв для мерджей из дева в мейн? Надо ли требовать ревью при мерджах фичер-веток в дев, или хватит только из дева в мейн? Как приучить людей писать тесты на свой код? Какой линтер и стайлер лучше использовать? И т.д.
и если про линтер скажете про pylint - что лучше, попросить всех поставить себе прекоммит хуки и гонять его локально, или сделать обязательным при пуше с помощью экшенов? если второе - какое брать пороговое значение оценки? потому что если требовать 10/10 - у нас работа встанет, лол
>>673377
Могу рассказать про свой опыт, был 1-в-1 в твоей ситуации и с почти таким же бекграундом.
1. для начала выбери флоу работы с гитом. Популярные - гитхаб флоу, гит флоу. Я выбрал гит флоу, потому что он проще и удобнее.
2. закрой в репозиториях мастер на пуши. Только МРы, только хардкор.
3. напиши своим пацанам доку "гит 101". Я прям написал инструкцию как для дебилов со скриншотами из ИДЕшки и покрытием классических вопросов в стиле "вот у меня новый проект, как подключить его к гиту?", "как выделить ветку", "я долго не обновлял локальный мастер, и в него уже насрали другие разрабы, что делать?" и т.д.
4. для репозиториев командых проектов введи правило, что для аппрува мержа нужен минимум один лайк от кого-то другого
5. если проекты можно типизировать, то накидай базовое приложение. У меня в команде для этого есть базовое fastapi-приложение с уже готовой структурой приложения. Клонишь его себе и насаживаешь функционал на скелет.
Мб посоны еще что-то дополнят.
Кожны пуш у любую галіну ў мяне праходзіць праз тэсты flake8, pylint, pytest, менавіта ў такім парадку. Калі на якой-небудзь стадыі вынік незадавальняльны, то дэплоя не будзе, пайплайн пакажа чырвоны статус.
Мне да халеры што чалавек ужывае лакальна. Хтосьці бяз тэстаў шмат разоў дзяўбецца ў чырвоны колер і ўсё бачаць ёлупня. Галоўнае каб пасля сябе прыбраў, то бок пакінуў зялёны статус.
Сам спросил, сам отвечаю.
Нужно перейти в раздел "Run and Debug (Ctrl+Shift+D)", наверху есть выбор профилей дебага и шестерёнка их настройки. Когда тыкаешь на шестерёнку создаётся файл "launch.json", в нём есть параметр "console", его нужно изменить, переключить с дефолтного "integratedTerminal" на "externalTerminal".
Та на ОП-пост отвечаешь, не читая. А там, между прочим, УЖЕ есть неплохой совет.
>Сколько времени у вкатуна не совсем с нуля, с моими входными данными, может уйти на становление джуном-питонистом?
Если ты не пинал хуи 6 лет, а учился, усваивал то, что тебе преподавали и всё такое, то на джуна ты уже тянешь и даже знаешь сильно больше, чем все вкатышки. Если же тупо отсиживал лекции и покупал курсовые... Ну, туда тебе и дорога.
РОМА - МАНДА... О?ЕЛИ! Капча - такая капча.
Простой ответ на сложный вопрос: обратитесь в девопс-агентство (например, Fevlake). Ну или наймите сеньора-довопса, но как его выбрать не имея экспертизы я не в курсе.
>и если про линтер скажете про pylint - что лучше, попросить всех поставить себе прекоммит хуки и гонять его локально, или сделать обязательным при пуше с помощью экшенов?
Второе. Строго и обязательно. Первое может кто-то не настроить или настроить неправильно и оно не будет работать.
если есть отдельный тред по DS/ML, не закидывайте камнями, дайте ссылку, поискал не нашёл
Освоил базовый питон, пощёлкал алгоритмические задачки, полез в DS, разобрался с pandas, и почувствовал себя непобедимым. Решил попробовать пролезть на стажировку по DS в одну хорошую айти-компанию, получил тестовое задание и с ужасом осознал, что задача решается через машинное обучение.
Задача заключается в том, что есть две базы данных - учебная и тестовая, в учебной по двум столбцам даются данные (строки), из которых в зависимости от из содержания надо собрать третий столбец - фрагмент строки из первого столбца, включающий информацию, запрошенную во втором столбце.
Как я понимаю, нужно написать модель, которая обучится по учебной базе данных, затем запустить её с тестовой базой данных чтобы она отработала её по выработанному алгоритму.
Подскажите, куда тыкаться чтобы научиться так делать. Я так понимаю, мне предстоит познакомиться с sickit-learn, keras и мб ещё какой-то либой, но всё, что я нашёл за первые полтора часа исследований, упирается в работу с числовыми массивами.
С меня, как водится, большое спасибо
>пощёлкал алгоритмические задачки
Кому ты пиздишь. Пощелкать ты мог только изи уровень литкода.
Okay but what do I read to get familiar with cryptography in general?
Потому что знаешь как пишут эти вакансии? К тимлиду приходит совершенно ни хуя не понимающая рекрутерша и говорит "мне от тебя надо требования в вакансию". Причем если в команду набирают людей - то или их там не хватает и команда не справляется, или принято решение расширить команду как часть какой-то реорганизации.
Соответственно, тимлид почти точно будет заебан как собака - или технической работой и затыканием дырок, или бюрократией и политическим маняврированием чтобы спихнуть хуевые проекты с ебанутыми клиентами и забрать себе в команду хорошие. В любом случае, вакансию он будет писать на отъебись. Типа "ну что тут написать, мы вроде там иногда классы создаем и наследуем - ок, пишем ООП, нам надо не писать охуенно медленно - ок, пишем алгоритмы".
По факту, такое требование в вакансии не значит что вы будете целыми рабочими днями перетирать за полиморфизмы, паттерны и прочее. Но вообще понимать что такое ООП и что такое классы надо.
Конкретно по твоему вопросу - иногда такая абстракция как объект тупо удобней. Например, если у тебя есть много функций которые вызываются с одними и теми же аргументами и этих аргументов много - вместо того чтобы писать вызовы на две строки можно просто сделать эти функции методами класса, и класть аргументы в атрибуты класса при инициализации.
Буйны доўгатэрміновы праэкт патрабуе больш сістэмнага падыходу, каб праз некалькі год іншы праграміст здолеў разабрацца і працягнуць працу. ААП спрыяе таму каб розныя праграмісты пісалі аднолькава.
Хочу научить бота автоматом отправлять фото со своего сайта в канал, но проблема в том, что сами пикчи порой довольно большого размера (3-4Мб) и когда отправляешь вручную в канале, то там можно указать при отправке "сжимать фото", что меня более чем устраивает. А вот при отправке через бота методом send_photo нигде параметра для сжатия фото я не нашел в документации.
Можно ли как-то сжать фото при отправке через бота?
Трэба сціскаць фота перад тым як даваць яго боту.
from PIL import Image
im = Image.open(r"path-to-uploaded-file.jpg")
im = im.resize(800, 600)
im.save(r"path-to-new-file.jpg")
Все фотки разного разрешения и сжимать их под определенный размер может быть не лучшим решением.
Но идея интересная, попробую поиграться с методами pillow
Лучше избегать этой гомосятины в боте. Как и советов написанных на трасянке — это реальные престарелые пидоры, которые алчут твоего грязного от гавна ачька.
PIL у тебя в мамяти отожрёт гигабайта два и начнёт подтекать, собирая гигантскую кучу мусора. Есть трюк — кидать ссылку на картинку, а не саму картинку. Телега сама скачает и пожмёт.
А чего это пил отожрет? Он же будет в одной и той же переменной картинки конвертировать, значит ссылки на область памяти с прошлыми картинками будет удалять gc.
В пиле есть какой-то баг, который делает утечку памяти или ты просто спизданул что-то неподумав?
другой анон мимопроходил
>Он же будет в одной и той же переменной картинки конвертировать, значит ссылки на область памяти с прошлыми картинками будет удалять gc.
Наивный. Это в сферическом питоне так, собранном руками эльфов и установленном на божественном серваке.
> или ты просто спизданул что-то неподумав?
Да не, долго тебе в пищевод ссал гонорейной мочой, да решил по лбу ещё хуем в творожке постучать.
Делал с дюжину графических ботов и всё время память от этого PIl разрасталась как весь пиздец. Либо ребутить часто, либо заниматься ухищрениями. Но не хранить нихуя никаких картинок и не делать с ними ничего. Ну, либо если бабла немеряно, то конечно, по традициям разработки последних 10 лет идти — а хули нам, ещё кластер купим под бота!
Т.е. ты нихуя не знаешь почему, но вот просто твой код хуево работал и по этому ты сейчас закатив глаза визжишь по хуи и мочу. Ясно.
Алсоу, если бы у тебя были мозги ты бы просто пошел и посмтрел куда в твоих кривых ботах память уходит и сделал бы хук чтобы её очищать. Ладно можешь мне не отвечать, я уже понял что по неосторожности написал визглявому школьнику.
Какова причина твоей трясанки?
Отчпоканная в гавняное ачько свиноманька хочет осторожненько разузнать, а как же старшие товарищи узнают где она ачьком светит, что её ебут так часто почему память течёт. Ладно, манька, сжалюсь:
1. Подбирай пролапс из штанины.
2. Вытирай гавняные молекулы рукой.
3. Гугли tracemalloc, cProfile и pstats.
А это ты проласпозависимый вкатун, сразу не признал. Вижу ты всё ИТТ позоришься, ну добро добро. Без колунов вроде тебя тут наверное было бы скучно.
В том то и дело, что ООП это коммерческий стандарт. Его изначально "создавали" если так можно выразиться с прицелом на Кабан Кабаныча, чтобы он мог легко кодомакакау пидорнуть и другую на её место посадить без ущерба для себя. Это такой конвейер Генри Форда только в айти.
>его изначально "создавали" если так можно выразиться с прицелом на Кабан Кабаныча
ЯПы и дохуя каких либ тоже, до этого айти нахуй никому не нужно было кроме институтов всяких где ни о каких бест практисах никто даже не думал.
https://github.com/LakithaRav/uTorrent-client-python
Есть что-то подобное рабочее?
Я только ставил маркеры и кидал ему коды ошибок, я в ахюе, усё пашет.
Вот его ответ, всю чужую мусорку исправил:
Ошибка "name='GUID', domain=None, path=None" может возникнуть, если ответ на запрос на получение токена не содержит cookie с именем GUID. Возможно, сервер не отправляет этот cookie в ответе или он называется по-другому.
Для исправления этой ошибки можно попробовать изменить код таким образом, чтобы он проверял, есть ли нужный cookie в ответе, и если нет, то искать другой cookie с другим именем:
далее простыня
Здесь вместо response.cookies['GUID'] используется response.cookies.get('GUID', None) or response.cookies.get('guid', None). Таким образом, если cookie с именем GUID отсутствует, функция будет искать cookie с именем guid. Если и его нет, то переменной guid будет присвоено значение None, и в дальнейшем функция вернет словарь cookies со значением None вместо 'GUID': None'.
>[start: end: step] в Python означает следующее:
>- start - начальный индекс выборки (по умолчанию 0);
>- end - конечный индекс выборки (по умолчанию длина строки или списка);
>- step - шаг выборки элементов (по умолчанию 1).
забей. тут без поллитры не разберешься. а по окончанию эффекта поллитры всё забудешь
Лустачка не зьмяшчае сымбаль з канчатковым індэксам, у тваім выпадку s[0] = 1. Калі не указваеш гэты індэкс, у лустачку ўваходзіць усё да хваста радка, то бок да s[-11]
Работаю в одной рашн галере
Инсайд инфа от HR-а и даже руководителя офиса: сейчас на рынке серьезный провис на питонистов, многих людей на бенче никак не могут пристроить на проект
ФСЕ
Что такое провис на питонистов? Питонистов не хватает или наоборот их дохуя?
Нахуй не нужны никому.
По сути, популярность питона организована искусственно (да и он максимально упрощён для разметчиков данных с маленькими мозгами).
1. Отрасли надо было организовать вкат миллиона хомяков с надеждой, что часть из них пойдёт дальше.
2. Сильно раздували МЛ, давая глупому быдлу ощущение, что они тоже приобщены (хотя, матмодели программируют на С совсем другие люди с очень сильным интеллектом и дорогим обучением — питонисты только это применяют, как макаки подбирая коэффициенты в уже готовое).
Не ебу что за бенч такой.
Ко мне в личку стучаться продуктовые компании уже вторую неделю. Никогда не понимал тех, кто в галерное рабство идет.
Господа программисты и стремящиеся, подскажите пожалуйста!
Как эффективнее работать с большими json-ответами?
Допустим, я хочу застримить с бинанса примерно 1050-1150 тикеров, да так, что бы потом иметь возможность быстро посчитать то, что мне нужно, до следующего обновления данных через стрим. Примерно раз в 0.9 секунды.
Как это лучше сделать?
Я сделал тупо, и попробовал сразу через json.loads, а потом перевёл в пандасы, потому что так считать удобно.
Но мне кажется, что можно сделать лучше. А как, это я хочу узнать у вас.
ах да, забыл написать, что таким образом я получаю ответ, ну или вижу ответ 200-350 тикеров, а не 1150 сколько мне нужно
Потому что в первом случае он идет до конца строки, а во втором случае - до нулевого объекта не включительно.
Похуй, никто из питонистов в здравом уме не будет искать работу в России. Ты бы еще айосеров попугал отсутствием работы в России.
Аноны, some_random_init это список рандомных целых чисел. В этом выражении выше получается упорядоченный по возрастанию список.
Значит в момент преобразования сэта в список происходит его сортировка? Чому про это нигде не написано?
Для начала попробуй заменить стандартную либу на orjson, если не устроит, то остается только сделать воркеры через мультипроцессинг, делать запросы из них и отправлять в мейнтред
>Значит в момент преобразования сэта в список происходит его сортировка?
Нет, это особенности хешей интов, гугли как хештаблицы работают
спасибо, сейчас буду разбираться
а вот насчёт мультипроцессинга
я планировал использовать мультипроцессинг для получения обновлений статуса тикеров через спот запросы
я собираюсь проверять наверное раз в 30 секунд - 1 минуту статусы тикеров, что бы они были торгуемые, TRADING и MARKET, и там ещё по некоторым характеристикам
просто использовать мультипроцессинг для создания постоянно обновляемой таблицы я не могу даже представить как нормально сделать, потому что это получается нужно:
1. подключить несколько стримов
2. получить часть данных из списка тикеров через каждый стрим
3. свести всё это в одну таблицу
4. посчитать то, что мне нужно
5. и поставить ордер на покупку/продажу в соответсвии с расчётами
6. и всё это сделать за примерно 0.9 секунды
Я не профессиональный разработчик поэтому могу ошибаться.
Два вопроса, один, какова хуя?
Второй вопрос, а что можно прописать этой мрази, чтобы она заканчивала включительно? Или это возможно только с синтаксическим сахаром с пустым местом вместо аргумента?
num = 7
lst = (1,3,5,9,11,73)
Должно находиться 9, можно как-то без цикла это сделать? Какой-нибудь встроенной функцией?
У тебя из задачи следует сложность O(n)
бля < на > еще поменяй
>сделай цикл for - стандартно, читаемо и производительно
>нит! буду хуярить мешанину из лямбд, фильтров, редьюсеров и лямбд!
500000 loops, best of 5: 530 nsec per loop
python -m timeit "num = 7; lst = (1,3,5,9,11,73); min(x for x in lst if x > num)"
500000 loops, best of 5: 444 nsec per loop
1000000 loops, best of 5: 381 nsec per loop
Так даже быстрее.
Когда вам нужно что-то посчитать то всегда задавайте вопрос: как бы настоящий гошник это посчитал? В гохе всегда все минимализировано и оттого пиздато. У гошников самые высокие зпки в беке. У гошников самые большие члены. Все не просто так
Детализирую вопрос.
Вот есть точка А:-7 и есть точка Б:20
Расстояние между этими точками: 27
Тут просто, можно взять например модуль abs() каждого числа и сложить, но нужен полиморфизм нах.
Если А:-7, а Б:-5 то расстояние между ними равно: 2
Если А:20, а Б:-15 то расстояние между ними: 35
Как это всё можно считать одним каким-нибудь простым методом или уравнением?
11 элемент нашёлся, заебись
Бля только написал тут же сам допер abs(x-y) во я тупой, пиздец просто.
>Два вопроса, один, какова хуя?
Добро пожаловать в мир сиподобных языков. Тут принято начинать отсчет с 0, а не 1, но при этом не включать в диапазон верхнюю границу диапазона.
В джаве, например, это будет выглядеть так:
String s = "1234567890";
String ss = s.substring(0, 5);
min_num = min([x for x in lst if x >7])
Да, работы на питоне нет, не ходите сюда. Учите плюсы.
Потрать ты, блядь, 10 минут на документацию, которая идёт в любой книге второй главой или в любых видеоуроках четвёртым или пятым видео, где всё разжевано по 10 раз, но хуеплёт будет пиздеть на язык и на всё, что угодно, только не на свою лень.
>В сиподобных языках нет ничего подобного
Ну так в си-подобных языках это делается через for, а в питоне нет си-подобного for.
Срезы были ещё в фортране и алголе до с, лолка, только в первом вместо квадратных скобок круглые.
А ещё есть глобальная функция slice (как и в других языках, внезапно), которая позволяет создавать объект среза как параметр для оператора взятия индекса:
slc = slice(0, 1, 10)
a = s[slc]
О, этот сладкий момент, когда юная макака обнаруживает, что она — написатель скриптов, скриптокодер, а НЕ ПРОГРАММИСТ.
Это чистая математика, для нас слишком сложна. Если хочешь, объясню, что верхняя граница не включается в интервал, и как просуммировать пять чисел.
не знаю. надо подумать
Ага-ага, а микросервисы и не требовательные к хайлоад сайты с сср никому, кроме своей самозамкнутости, не нужны.
Да.
Даун, имеется в виду окно Windows.
>без библиотек
Хех, я будучи студентом тоже не понимал почему нельзя просто писать просто без либ, на чистом питоне, это проходит.
Что именно ты собрался писать "без библиотек"? Пузырьковую сортировку? Поиск подстроки?
С помощью сисярпа вообще можно сделать отображение окна без библиотек или в этой параше всё делается с помощью dll из .net?
Ты тупой? Смысл вопроса в возможности написать отображения окна без сторонних библиотек, нахер ты кидаешь ссылку на стороннюю библиотеку, ублюдок?
tkinter — это и есть библиотека. Тот юнош, девственный мозгом и попкой, хочет сам рисовать системное окно средствами питона без библиотек. Сдаёцца мне, это просто невозможно. Всё равно понадобятся системные вызовы, а для них потребуется библиотека.
Двачую, братан, только тот кто работает с С++ может носить гордое звание программиста, а все эти джавапетухи и петухонеры - просто пыль с их ногтей.
С++ — гавнина с хуя твоего папаши. Настоящий язык программирования — это (в моё время Алгол-68) Ада. На нём великие люди небесные колесницы программируют.
Но хуже божественных скобочек.
Есть идеальный язык программироваия, С++, и всё остальное - либо жалкие копии, либо богомерзкая хуйня.
Питон - убогое кривое говно мамонта, которое никому не нужно и на котором нет никакой работы вне ML.
Как?
А, это ты тот трясущийся мамкин сисси-гидроцефал, освоивший Вижуал Бейсик в объёме 3 страницы и выдающий себя за знатока непонятного языка, за синим ачьком которого идёт отчаянная охота всех маститых мэтров ИТТ треда, начиная от мисье Пузырька и заканчивая Бульба Калом?
к:калич
Можно и потерпеть, для меня важнее думать на русском языке. Зато я не заебался переводить названия на ангельский.
Не надо доводить до абсурда, давать русские имена это оче удобно.
Блять это стандартная либа, дурень.
Может ты еще многопоточность без импорта юзать будешь, да?
Чел тебе там черно по белому описали про плюсы генераторов...................
Один ты выдал какой то кринжовый высер..............
>плюсы генераторов
Какие блять?))
Генераторы используются либо для экономии памяти (отложенные вычисления) либо для многозадачности (в основном в виде сопрограмм)
Ни о какой экономии памяти там не идет и речи. О многозадачности тоже. Челик там просто лепит генераторы по принципу "а че?? мне так кажется что красившее"
Что будет с чем после следованию советам петушка из хабр-поста:
Читаемость - снизится
Производительность - не изменится (на больших выборках даже упадет)
Отлаживаемость - снизится значительно
Тебе из __getattr__ нужно возвращать функцию, которая принимает параметры
Привет! Нужна помощь джангистов или причастных.
А чем вы бэкапите базы данных? Речь про sqlite
Попробовал django-dbbackup - и у меня не вышло.
Он вроде как что-то бэкапит, даже через крон, но восстановить базу данных (через dbrestore) не получается.
Я что-то делаю не так? Или есть какие-то более проверенные и популярные варианты?
Нуууу. Отложенные вычисления. В чем проблема у тебя с пониманием этого?
Вассап программич. У меня возник вопрос касаемо ботов: как создаются боты в теллеграмме? Я имею в виду пользователей-ботов в телеграмме, которые наполняют канал как серая масса. Я в этом вопроссе ньюфаг, если можете подскажите что изучать/куда направиться .
....lst="replase some shit"
Аноны, когда я заменяю элемент в списке по индексу, список заного пересобирается под капотом или элемент заменяется по О(1) ?
Ну я использую скрипт у себя на пк, который запускает rsync, конектится череез ssh к моей vps, оттуда забирает файл бд. Всё.
Есть апи для ботов (api telegram bots), есть апи для юзерботов (ещё называют api telegram client). Под оба есть свои фреймворки. Под юзерботов — это telethon и pyrogram. Только под каждый инстанс придётся регаться на отдельный номер телефона.
>тебя всё заебало и ты понимаешь, что вертел ты на хую в тысячный раз писать один и тот же код для новых клиентов
В чем проблема шаблоны делать?
Я вам че Вассерман чтобы такую хуйню решать?
А что за скрипт?
Ну, мне бы для начала эту бд как-то из контейнера вытащить, а, как я понял, это нельзя сделать просто так.», нужно именно специальной приблудой копировать.
Типичный соискатель на милорда перед вами.
Разве различие не в скорости сортировки?
нуб
Если я делаю бэкап командой
dumpdata --exclude auth.permission --exclude contenttypes
То у меня все работает
Только вот есть один момент, я пока что не знаю, как засунуть это в крон
Почему-то call_comand не работает с аргументами
У тебя ошибка в реализации алгоритма. Точнее, даже, две: ты, когда пиздил не думая, умудрился даже if забыть.
Ну... вапще да, канеш, можно и без иф лишнего.
Тут дело в том, что ты из функции хуй пойми чё возвращаешь. По идее, ты возвращаешь nums[последний] и nums [минимальный]. И нихуя с этим не делаешь. У функции своё пространство переменных и она ничего с глобальным списком не делает буквально.
В вузе есть бесплатные курсы ІELTS, в будущем планирую работать на зарубежную компанию удаленно, я знаю англ на среднем уровне, но про тест хз, если он не нужен для работы, то время не хочу тратить.
В вузе есть бесплатные курсы ІELTS, в будущем планирую работать на зарубежную компанию удаленно, я знаю англ на среднем уровне, но про тест хз, если он не нужен для работы, то время не хочу тратить.
>в будущем планирую работать на зарубежную компанию удаленно
Осилишь конкуренцию с индусами и вьетнамцами, которые подчас на голову выше наших няш-гидроцефалов с кусрами па петону за спиной.
С каких пор ты монитор, гидроцефал в чулочках? Таблетки что ли сменили? Или у вас с папкой новая игра «проткни монитор» по пятницам, когда он нажирается? Сгинь к хуям, чючило, бля, не жужжи.
Практически всем похуй, на курсы можешь походить что бы англюсик прокачать бесплатно.
то есть нужно изучать API направление?
И для каждого клиектского бота нужен телефон ? Это что получается 500 ботов -500 номеров ? Где я сток найду?
>то есть нужно изучать API направление?
Нет, выучи одну библиотеку. Наверное, пирограм лучше.
>Это что получается 500 ботов -500 номеров ? Где я сток найду?
Жопкой торгани. Твоя нужда — твои бабки. Тем более, ты засрать что-то хочешь, раз 500 ботов потребовалось. А это осуждаемое.
Подъебнули на собесе и задали следующий вопрос:
Структура range в Питоне вообще-то не является генератором, это отдельный объект, можно убедиться сделав следующее:
1_000_000_000 in range(1, 10_000_000_000)
И он посчитает почти мгновенно, потому что итераций нет и range сам определяет, попадет указанное число в диапазон или нет. Напишите свою реализацию подобного алгоритма которая работает с числами:
def (target, start, end, step)
И чет я завис. Как это решать? Тут по факту метаматематика а не проганье даже
с помощью селениума паршу пару сайтов и на каждом сайте несколько однотипных ссылок, но один сайт постоянно по однотипным ссылкам выдает разные типы страницы (Т.е. Ссылка одна, а контент на сайте может быть одним из 3трех типов). Запускаю парсер и сам в браузере смотрю - страничка одна, потом парсер перезапускаю и страничка уже другая, и так рандомно
Проблема в том, что элементы не тасуются, это просто другая страница. На них отличается контент (какая-то инфа появляется, какая-то пропадает), ксс и xpath естественно эту ебалу не берут, приходится писать лютые костыли-проверки и разные парсеры под каждый возможный тип.
Но прикол ещё в том, что в обычном браузере (не селениума) страничка всегда однотипная, че за хуйня ваще как с этим бороться?
У браузера стоят
--window-size=1920,1080
--disable-software-rasterizer
--disable-crash-reporter
--enable-javascript
--disable-gpu
--start-maximized
--headless
--disable-extensions
--disable-logging
--disable-in-process-stack-traces
Чтобы создать функцию, которая будет проверять, попадает ли указанное число в заданный диапазон без создания итератора, мы можем использовать математические операции. Для этого достаточно определить, находится ли указанное число между начальным и конечным значением диапазона, и находится ли оно на соответствующем шаге.
Вот пример такой функции:
def is_in_range(target, start, end, step=1):
if step == 0:
raise ValueError("step cannot be zero")
if step > 0:
return start <= target < end and (target - start) % step == 0
else:
return end <= target < start and (start - target) % (-step) == 0
Эта функция принимает четыре аргумента: целевое число, начальное значение диапазона, конечное значение диапазона и шаг (по умолчанию равен 1). Если шаг равен нулю, функция возбудит исключение ValueError.
Для проверки, находится ли указанное число в диапазоне, мы используем операторы сравнения и деление с остатком. Если шаг положительный, мы проверяем, находится ли число в диапазоне и находится ли оно на нужном шаге, используя операторы сравнения и деление с остатком. Если шаг отрицательный, мы делаем то же самое, но сначала меняем местами начальное и конечное значения диапазона.
нет, думал создать телеграмм канал, но для старта нужно относительно много подписчиков, а в пустые каналы где 100-200 человек, мало кто пойдет
Проще купить ботов.
range это генератор, просто для провеки вхождения итерация или генерация не нужна. Что там релизовывать хуй проссышь, по-моему, даже в нубских книжках такие задачки есть.
Берем iter([1,2,3,4])[1] и хуй, рейндж может в такое и поиск как выше писали там не поэлементный, а логический. Это навскидку.
А вот нихуя, это итерируемый объект и у range, как и у генератора нет метода __next__.
Вот, сам проверь.
a=1,2,3
b=a.__iter__()
print(dir(a))
print(dir(b)) #есть метод __next__
c=range
print(dir(c))
d=[(i) for i in range(len(a))]
print(dir(d))
Генератор это конструкция из for и range.
For это цикл, range это итерируемый класс, а вместе это генератор.
Ну ок, но __iter__ не обязательно должен возвращать себя, там есть отдельный range_iterator для этого
Похоже какой-то хуетой занимаются на этих ваших собесах. Нет чтобы просто посмотреть твой гитхаб чего ты там накодил и как пишешь, чтобы понять твой уровень понимания предмета и языка, а потом на основании этого что-то спрашивать, если вопросы остались.
Вместо этого какие-то КАВЕРЗНЫЕ ВОПРОСЫ задают, "что тяжелее пуд сена или пуд железа", "вилкой в глаз или в жопу раз"? Зачем кодомакаке вообще знать такие подробности, достаточно просто понимать суть range, что оно делает и основные места его применения, а если будет ситуация УЗКОГО МЕСТА, где надо байтоебить то я, как макака без опыта, в любом случае полезу в доки смотреть что-там по О-нотациям. А если нет УЗКОГО МЕСТА то и нахуй не надо это знать. всё равно инфа без практики быстро забывается.
В чем я не прав?
>Нет чтобы просто посмотреть твой гитхаб чего ты там накодил и как пишешь, чтобы понять твой уровень понимания предмета и языка, а потом на основании этого что-то спрашивать, если вопросы остались
Многие разработчики в гитхабе имеют либо нихуя либо просто очень простые проекты что бы технологию пощупать. Плюс ты мог это просто спиздить с чужого аккаунта поменяв название переменных.
>Зачем кодомакаке вообще знать такие подробности, достаточно просто понимать суть range, что оно делает и основные места его применения, а если будет ситуация УЗКОГО МЕСТА, где надо байтоебить то я, как макака без опыта, в любом случае полезу в доки смотреть что-там по О-нотациям.
Что бы ты в коде не делал самописные проверки вместо достаточно удобных практик. А вообще так можно про любое место на собесе сказать "просто посмотрю в доке"
>А если нет УЗКОГО МЕСТА то и нахуй не надо это знать. всё равно инфа без практики быстро забывается.
Не совсем, я про range один раз слышал, но запомнил, как и про вынос методов в отдельные переменные что бы ускорить выполнение, хотя ни разу не применял, необычные детали запоминаются очень хорошо.
>как и про вынос методов в отдельные переменные что бы ускорить выполнение
Это как?
Вот есть у нас self.method(), если я сделою hui = self.method()
И потом буду hui() вызвать это будет быстрее выполняться? Хуйня какая-то лишняя операция присвоения, и трата строки на то чтобы переложить пустое в порожнее.
Да, именно так. В цикле получишь большую производительность, так как не вызывается gettattr у объекта.
и я ни в коем случае не говорю, что теперь надо срать этим по всему коду. но это реально нужно в функциях, которые по 5 миллионов раз в секунду вызываются
мимо геймдев
>Нет чтобы просто посмотреть твой гитхаб
Есть смысл смотреть только если у тебя есть проект со значительным количеством звездочек
>Зачем кодомакаке вообще знать такие подробности
Незачем. Но есть смысл спрашивать на собесах - чтоб отсеить побольше людей, т.к. их больно дохера
Есть данные, которая может быть в разных форматах. Реализую для каждого из формата свой ридер-класс со стандартным интерфейсом. При этом сами форматы довольно различаются, но из любого из них я энивэй могу извлечь нужные мне данные для даунстрим анализа. Есть несколько форматов, в которые также планирую записывать - реализую по функции для каждого из них.
На уровень выше делаю класс, который оборачивает рутину по чтению/записи (условный метод рид - обмазан метод диспатчем по типу ридера), делает первичную обработку нормализацию осей на основе референса, но это в принципе неважно, извлекает/воссоздает как-нибудь нужную метадату, и когда все что надо сделано, возвращает инстанс другого класса, с которым уже можно как-то работать, делать нужные анализы, выдавать конечный результат и так дальше.
Ну и офк у меня отдельные модули лежат для того, чтобы делать разные этапы и разные вариации анализов, здесь все достаточно удобно и логично сегрегируется и никаких вопросов нет.
Для упрощения понимая шизойдной простыни смотри прекрасную мермейд схему ручной работы.
Так вообще норм в петухоне делать? Я замарачиваюсь с отдельными классами под ридеры, потому что ожидается, что регулярно будут высираться новые форматы, и хотелось бы максимально упростить потенциальную дрочьбу в будущем с их чтением, что я и делаю путем создания стандартизированного интерфейса.
Пока просто есть какой-то привкус жавы особенно явно бы ощущался, если бы я заменил функцию райтера на класс со статик методом., и ощущение, что излишним сегрегированием процессов я делаю какой-то физбаз-ентерпрайз.
У коллег по цеху лютый кал с костылями, обходящие разные форматы, и все объединено во вложенные мастеробъекты. Ну и на текущий момент, у меня все это реализовано в виде бэйзик-лайк жупутеровской тетрадки, так что выбора у меня, кроме как сделать все нормально, просто нет.
Если можете сказать, в чем я не прав, буду благодарен.
Еще буду очень благодарен, если направите меня на какие-нибудь гайды с бест практисами по дизайну пакетов/приложений на петухоне.
Есть данные, которая может быть в разных форматах. Реализую для каждого из формата свой ридер-класс со стандартным интерфейсом. При этом сами форматы довольно различаются, но из любого из них я энивэй могу извлечь нужные мне данные для даунстрим анализа. Есть несколько форматов, в которые также планирую записывать - реализую по функции для каждого из них.
На уровень выше делаю класс, который оборачивает рутину по чтению/записи (условный метод рид - обмазан метод диспатчем по типу ридера), делает первичную обработку нормализацию осей на основе референса, но это в принципе неважно, извлекает/воссоздает как-нибудь нужную метадату, и когда все что надо сделано, возвращает инстанс другого класса, с которым уже можно как-то работать, делать нужные анализы, выдавать конечный результат и так дальше.
Ну и офк у меня отдельные модули лежат для того, чтобы делать разные этапы и разные вариации анализов, здесь все достаточно удобно и логично сегрегируется и никаких вопросов нет.
Для упрощения понимая шизойдной простыни смотри прекрасную мермейд схему ручной работы.
Так вообще норм в петухоне делать? Я замарачиваюсь с отдельными классами под ридеры, потому что ожидается, что регулярно будут высираться новые форматы, и хотелось бы максимально упростить потенциальную дрочьбу в будущем с их чтением, что я и делаю путем создания стандартизированного интерфейса.
Пока просто есть какой-то привкус жавы особенно явно бы ощущался, если бы я заменил функцию райтера на класс со статик методом., и ощущение, что излишним сегрегированием процессов я делаю какой-то физбаз-ентерпрайз.
У коллег по цеху лютый кал с костылями, обходящие разные форматы, и все объединено во вложенные мастеробъекты. Ну и на текущий момент, у меня все это реализовано в виде бэйзик-лайк жупутеровской тетрадки, так что выбора у меня, кроме как сделать все нормально, просто нет.
Если можете сказать, в чем я не прав, буду благодарен.
Еще буду очень благодарен, если направите меня на какие-нибудь гайды с бест практисами по дизайну пакетов/приложений на петухоне.
Пашукай файл activate.bat і пішы адпаведны шлях да яго. Мабыць .venv\Scripts\activate
И так, и сяк пробовал. Кроме того, папка Scripts по какой-то причине у меня называется bin.
Делать connection pool для всего проекта как global var и дергать подключений оттуда или лучше просто вызывать экземпляры Redis (знаю что внутри он сам создаёт пул в таком случае). Или создать один экземпляр Redis на проект как global var?
И как пользоваться самим экземпляром Redis? Через контекст менеджер или без него? В доках через контекст менеджер он не используется, но методы aenter и aexit есть... Я не хочу явно вызывать .close() и не знаю надо ли это делать вообще..
if any(dct["key"] == _p for _p in all_that_shit_nigga):
dct["key"] в данном случае будет браться из словаря для каждого сравнения с элементом из списка или он возьмется один раз в начале?
Хочу знать нужно его в отдельную переменную выносить для такого случая.
Спасибо, анонче, очень выручил!
Судя по BINARY_SUBSCR в итерации for да.
Не знал, что там такая сложная хуйня для any происходит, интересно.
https://www.online-python.com/pFP2aSLy75
Там вообще много так в лоб сделано, если копаться.
Интересно, почему так. Чтобы не усложнять вм?
Справа ж не ў Джаве, але ва ўзорах праектавання. Яны агульныя ва ўсіх аб'ектных мовах.
Все так, но опять же, некоторые особенности некоторых языков, делают использование определенных паттернов лишними, либо сильно ограничивают их использование.
Тут еще важно понимать, что из-за того, что я на расте долго работал, я перестал наследование воспринимать все правильно, наследование кал, и для меня дико выглядит двухслойное наследование интерфейса. И, если рассматривать предлагаемую схему отправки сообщений в основной статье, то сразу возникает желание вместо декорирования, просто закинуть разные типы мессенжеров в очередь исполнения, и запускал бы все ей. Но это конечно из разряда "поговорил с учебным примером".
Ну и развивая мысль про ненужность и ограниченность паттернов. Какой-нибудь синглтон или пул просто не нужен в питоне да и нигде этот вафлепаттерн не нужен, будем откровенны, и его делать приходиться не самым очевидным пердолингом через метаклассы какие-нибудь. Так что можно считать, что синглтоны язык порешал.
Откуда __file__ берётся? И как BASE_DIR так хитро используется? 'NAME': BASE_DIR / 'db.sqlite3',
Не корми вниманиеблядь.
В С, на котором написан Питон, это указатель на ключ и указатель на значение ключа. Свободин.
У поиска ключа сложность О(1), но она сама по себе большая. Вот думаю перекатывать такой лист в словарь. Просто надо будет в нем 1 из 100 значений искать тысячи раз.
Ты же можешь timeit взять и замерить.
Засеки.
Но вообще, если тебе известна нужная позиция в списке, то искать будет быстрее чем за О(n) потому что в петухоне лист - это массив ссылок.
Если тебе нужно будет сравнивать значения для поиска нужного элемента, то все зависит от того, насколько сложно происходит сравнение.
Дурында, эти скобочки квадратные вызывают имплементацию __getitem__ для даннного класса, это называется subscription.
У листа свой (там как раз указатель, ибо это array объектов питоновских), у дикта свой. Т.к. дикт это хешмап, то считается тот самый хеш для забора значения.
Засек. Словарь опережает индекс в десятки раз. Результат меня очень удивил. Зачем вообще лист нужен - удалить его из питона.
__file__ - унутраная службовая пераменная пітона, шлях да бягучага файлу.
BASE_DIR - канстанта ў Джанге, шлях да галоўнай дырэкторыі праекту. Ня бачу ніякіх хітрыкаў у яе ўжыванні: BASE_DIR / 'db.sqlite3' - шлях да файла базы дадзеных. Перад ім NAME - уласцівасць аб'екту змяшчаючага наладкі БД.
Ну посмотрим исходники.
Вот тут добавляется метод __getitem__ , который ссылается на dict_subscript
https://github.com/python/cpython/blob/main/Objects/dictobject.c#L3650
Смотрим dict_subscript
https://github.com/python/cpython/blob/main/Objects/dictobject.c#L2474
Теперь читай, ты у нас сишник дохуя.
Вартасць узораў праектавання ў тым што іх усе ведаюць. Нават той жа singleton - калі да праекту далучыўся новы чалавек што пісаў іншай мовай, ён бачыць сінглтон і адразу разумее што гэта, як працуе і навошта.
Аноны, как такую хуню записать красиво? Переименовывать не вариант.
Разве что запаковать аргументы в туплю или лист и распаковать звездой при вызове, но хз, лучше ли это.
Теперь проверь скорость, когда нужен перебор. Мжб лист лучше себя покажет.
А балалайкай па срацы?
Декоратор - это интересная идея. Но мне тут (тем более на текущем этапе) нет особого смысла инжектить и тем более стакать поведение Декоратор, к слову, юзаю для даунстрим анализа, там он прям норм ложится, учитывая душность и обилие шагов предобработки. На той схеме `wraper_cls` это фактически гигадаптер с дополнительным утилити методом для записи файла на диск, и методом для гармонизации.
Ну я в принципе понял теперь, что я не настолько уж и херовую вещь делаю.
Энивэй, спасибо за помощь.
Из адекватных видел линтер от wemake.services, но там помимо годных проверок на сложность, которые, правда, не всегда конфигурируются адекватно, есть куча васянского вахтерства.
В идеале, чтобы это был плагин на флейк, в котором собраны все проверки на сложность и ничего больше.
Там только цикломатическая сложность, которая в моем случае по дефолту обходиться из-за моей циклофобии.
Делаешь пул и юзаешь его по всему приложению
привет, помогите пожалуйста, уже голова болит
У меня небольшой проектик на телеграме с парсером, который по таймерам постоянно выполняет ряд функций (парсинг, обработка, запись, и.т.д.)
Так вот вопрос - как реализовать чтобы при получении сообщения с телеграм бота все эти функции прерывались и возобновлялись только после обработки сообщения с бота?
засунуть в цикл с отловом Exception
class Test:
....def __init__(self):
........self.var = 5
....def some(self):
........var = self.var
........print(f'id var: {id(var)}',f'id self.var: {id(self.var)}',sep='\n')
........var += 20
........#self.var = var
........print(f'var: {var}',f'self.var: {self.var}',sep='\n')
Test().some()
var и self.var имеют один ID, но разные значения внутри метода .some
Чому так?
Ты же даже import gc не сделал...
потому что ты сначала принтаешь айдишник а потом меняешь значение var. Т.к. у тебя 2 переменные равны друг другу то айдишник одинаковый. Когда значение становится разным (var +=20) то айдишник var меняется.
поменяй две строки местами и получишь разные айдишники
>>680205
лучше ответьте на этот вопрос >>679998
Почему это удаётся в Блокноте и где угодно ещё, но не в самой игре, хоть в оконном, хоть в полноэкранном режиме?
https://pastebin.com/T9201SuC
На плюсах пробовал сделать, та же хрень. Срабатывает один раз, когда фокус переходит на окно игры, и всё на этом. И через win api с выбором конкретного субэлемента окна тоже делал, не работает.
В каком направлении вообще можно копать?
>Нет чтобы просто посмотреть твой гитхаб чего ты там накодил и как пишешь, чтобы понять твой уровень понимания предмета и языка, а потом на основании этого что-то спрашивать, если вопросы остались.
Тащемта смотреть на опенсорс при устройстве на галеру, где будешь писать клозед сорс - максимальное лицемерие.
>Что делать?
Откажись от запуска в винде. А то это ещё может потом аукнуться.
Как минимум запускайся в WSL2.
Базарю, винда - зло.
>И чет я завис. Как это решать? Тут по факту метаматематика а не проганье даже
чисто проганье. Тебе надо знать, что существуют такие возможности, как перегрузка операторов, что угодно ты можешь определить, в том числе оператор in
смотри на метод __contains__
Traceback (most recent call last):
File "C:\Users\user\Desktop\test1.py", line 1, in <module>
from forms.main_form.ui import ClassName as cn
ModuleNotFoundError: No module named 'forms.main_form'
Да блять почему расширение *.ui.py не понимает-то????
Первый раз в жизни попробовал написать программу с больше чем ордним файлом? При чём тут ООП? Это можно сделать просто написав функцию и вызвав её в другом модуле.
> != None
> складывает строки в цикле
Ты базовые вещи сначало изучи
А мне нравится ;3
корыто ёбанное, этот ваш ентот пистон.
Файл main_form.ui.py ???
Выдаёт ошибку:
Traceback (most recent call last):
File "C:\Users\user\Desktop\test1.py", line 1, in <module>
from forms.main_form.ui import ClassName as cn
ModuleNotFoundError: No module named 'forms.main_form'
Мозг сломал и пипетку весь
Ну none это без разницы, это я так написал. А вот составление слов, да, можно просто через '\n'.join
Это какая-то максимально странная для меня ебананина.
Вроде все понятно, но нихуя не понятно :(
вот код чата : https://pastebin.com/XwBiXyxv (да, это действительно весь код для довольно сложного приложения-чата)
Почему сообщения не добавляются вверх, а перезаписываются?
да, да, да, я барашка.
а можно пример с импортлиб?? Чтобы все файлы в папке импортировались (там есть ui(py)-файлы от QtDesignera !!!)
Раю загружаць форму з файла *.ui што генерыруюецца Qt Designer'ам у фармаце XML. Будзе зручней рэдактаваць інтэрфэйс і генерыць нанава.
from PyQt5 import uic
class ...
uic.loadUi('qt/form.ui', self)
>а можно пример с импортлиб?
import importlib.util
spec = importlib.util.spec_from_file_location(name="MODUL_BULBAYOB", location="/path/to/main_form.ui.py")
my_module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(my_module)
Оператор or возвращает True только если один из объектов заданных в условии является True.
Вот я задал условие, что если один объектов истинный, то он возвращает один из них:
inp=input('Введите 1 или m: ')
if inp=='1' or 'm':
print('Huy')
#любой элемент через input возвращает True
else:
print('Jopa')
А если так, то:
ke='1' or 'm'
inp=input('Введите 1 или m: ')
if inp==ke:
print('Huy')
#возвращает только единицу, при вбивании "m" или любого другого значения возвращает False
Через And тоже какая-то хуйня
ke='1' and 'm'
inp=input('Введите 1 или m: ')
if inp==ke:
print('Huy')
Возвращает Huy только с "m", а мне нужно чтобы возвращала или-или
Зделой алиас.
На руках уже имеется готовое окружение, рабочие карточки Шанс и Общественная казна, оплата ренты, постройка домов и прочее. Единственное думаю выкинуть механику аукционов на хуй.
мы тебе еще пару месяцев назад объясняли что в Монополию нельзя научиться играть. это рандом.
Логично. Конструкция из or всегда возвращает первый элемент, а из and последний. А как сделать то, чтобы либо 1, либо m было при введении в input?
Вводить пока, там не будет 1 или m, проверяя там 1 или там m.
> Оператор or возвращает True только если один из объектов заданных в условии является True.
Ноуп. or возвращает первый истинный элемент или просто последний элемент.
>inp=input('Введите 1 или m: ')
>if inp=='1' or 'm':
Вангую, что ты хотел тут логику типа
> if inp in ('1', 'm'):
>ke='1' or 'm'
Хм-м. Вангую:
>ke=('1', 'm')
>>682111
>Конструкция из or всегда возвращает первый элемент, а из and последний.
Нет, and - возвращает первый ложный элемент или последний.
>ke=('1', 'm')
Да! Это именно то, что я и хотел. Спасибо.
>or возвращает первый истинный элемент или просто последний элемент.
>and - возвращает первый ложный элемент или последний.
Щас проверил, бля, внатуре
d=0 or 1 or 2
1
d=1 and 0 and 2
0
Это очень старый скрипт, который я писал чуть ли не в самом начале. Решил его прикрутить к другой программке просто для теста, переписал по быстрому, там говнокод был куда хуже ещё даже.
Зоойчем ты оправдываешься, каличный? Срать на тебя, что ты там когда писал.
> main.py
> database.py
> module_a/
> __init__.py
> database.py
Плюс как я вижу в том, что всё для модуля хранится в модуле, а не размазано по всему проекту.
По самой реализации: main.py импортирует и запускает module/database.py, который в свою очередь импортирует и database.py и добавляет в него свои функции и переменные. Всё остальное что использует database уже имеет дело с модифицированной его версией.
А вопрос собственно вот в чем: насколько это зашкварно(я ни разу не видел чтоб так делали) и какие подводные?
> main.py
> database.py
> module_a/__init__.py
> module_a/database.py
фикс, отступы убрало разумеется
Ладно, хуйню написал. Внезапно лучше имплементировать бд для модуля в модуле и импортировать эту бд, раз у меня в принципе все функции не особо завязаны на конкретно тот датабейз на верхнем уровне.
>Щас проверил
На пике ещё веселее. Это, кстати, надо иметь в виду, потому что можно наебаться с типами. Зато даёт некоторый простор, например, для эф-строк
Капча релейтед.
>за полтора-два месяца
>куда можно за такой период чему то научиться и начать зарабатывать
Вкусно и точка, курьер, охранник. Если права есть — водитель. Можно помощником слесаря, плотника, столяра, токаря, сантехника вкатываться, потом самый низший разряд получить. Есть вариант — золотари. Вечная тема. Только бочку арендовать.
Всё можно, главное пройти курсы скиллбокса по моей реферальной ссылочке.
в /ukr марш
Учи php и html, а не Припон тогда, если хочешь быстро. Я задрачиваю в Питон по 4-8 часов в день на протяжении 4 месяцев почти без перерыва и освоил только процентов 5% от всей базы. Могу текстовый квест через ООП написать или программу типо магазина без подглядывания в букварь каждые две минуты, а парсер какой-нибудь самостоятельно с нуля уже хуй осилю.
Акстись, это дефолтное поведение для большинства ЯПов
Что можно там 4 месяца учить по 8-6 часов? А парсеры за вечере на читая статью на хабре можно написать.
Сорян за душнину. Самому интересно
С нуля язык так и учат. Плюс, надо решать десятки примеров по каждому выученному параграфу. Иначе ты будешь таким же пидарасом как местный ляцвин, тупое существо, почти скот.
>Что можно там 4 месяца учить по 8-6 часов?
А можно ли выучить Питон полность? Все библиотеки, весь функционал, все возможности? Наверное от балды сотник книжек всякие непонятные дядьки по Питону пишут, воду льют из пустого в порожнее. Во ебланы! Не то что дядя Федя с двача.
>парсеры за вечере на читая статью на хабре можно написать.
Так любой может и я могу, а ты попробуй без подглядел в документацию и копипастинг из гитхабика.
Ні ў воднай мове праграмаваньня не вывучаюць усе бібліятэкі. Нармалёва будзе ведаць толькі тое што спатрэбілася для працы.
>Ні ў воднай мове праграмаваньня не вывучаюць усе бібліятэкі
Ну так естественно, потому что это невозможно.
>толькі тое што спатрэбілася
А если спатрееблися сделать что-то, что могло бы облегчить твою работу, а ты даже не подозревал о существовании такой фичи?
лучше наймусь шофёром, по твоей мамке ездить хуем.
есть папка forms
в ней куча файлов типа frm_suka.ui.py от компилятора pyuic6
Как мне целиком импортировать все файлы в этой папке forms?
*отредактировал, чтобы не шокировать особо "нежных"
ну берешь и делаешь
import forms
или
from forms import *
или ты откуда хочешь это импортировать то?
выяснил супу твоему роту моему органу.
Ну вот попробуй для прикола импортировать 2 файла (любые) py, но с расширением с точкой. Или чтобы в названии были точки.
Ну как ещё сказать.
Так он и не найдет, потому что в имени файла точка. Переименуй все модули через Ctrl+A, F12. Только расширения не меняй.
Ты, пидорас тупой, ui это не расширение, а имя. Убери перед ним точку и все запашет.
О, Боги!
Как тебя свет носит ещё. Ещё не сдох?
Ещё для дибилов поясняю.
в папке forms есть файлы *.ui.py
Тебе ещё пояснить нужно???
живи долго
Для себя поясни, человек дождя.
Zalupa.ui - так должен выглядеть ui файл.
Zalupa.py - так должен выглядеть py файл.
У тебя Zal_upa.ui.py - в файле должна стоять только одна точка; перед расширением. А у тебя их две - одна в имени, где ее быть не должно, а вторая перед расширением, там где она и должна быть. По-этому import и не импортирует, он читает файлы с точками в имени, гуманоид ты тупорылый.
Zalupa_ui.py - вот как оно должно выглядеть.
Та нет, О, Двуликий Анус!!!
файл я же сказал - ПОСЛЕ ОБРАБОТКИ ЧЕРЕЗ компилятор pyuic6.
После того, как кайлы перекомпилируются - их имена становятся типа frm_mainhuy.ui.py
И внутренности у них (для тех даунов кто даже это не знает, а знает только джанко и прочую онлайн-поебень!) - типа портянка класса ui-form и внешнего вида.
вот у меня есть видео файл "ya.ebal.tvoyu.memka.mp4" - это нормальный файл, или ты, ёбыч, только такие имена типа "a1.py" перевариваешь??
файлы, если не ты в курсе, могут называться makaka.ebala.svoyu.pipisku.txt
Или ya,piton.v.rot.vstavil.chto.budet.py
И это _легальные_ имена файлов в файловой системе. Я вот о чём.
>ya,piton.v.rot.vstavil.chto.budet.py
Тогда импортируй такой файл через интерпретатор. А ещё лучше анус свой импортируй в Нигерию, чтобы тебя макаки драли, потому что даже макака больше поймет, чем ты, ебанушка.
Ну так твоя мамка-обезьяна уже импортировала хуй твоего папки-гибона из Нигерии. Мне-то зачем.
Быстро мне, скоты, сказали, как их импортировать в виде модулей. Готовый код.
Глупый мясной мешок, слушай сюда:
Причина, по которой хэш-функция Python возвращает -2 вместо -1, заключается в том, как она реализована в CPython. Для отрицательных целых чисел хэш-значение может быть отрицательным, поэтому CPython добавляет 2^64, чтобы сделать его положительным. Однако для -1 результирующее значение является наибольшим возможным целым числом, которое зарезервировано для коллизий хэша. Поэтому вместо этого CPython возвращает -2.
У цябе памылка. btn_dissable мусе быць з адной літарай s: btn_disable.
Да, помогло. Спасибо.
Господа, подскажите пожалуйста.
А вообще возможно, в принципе, на питоне сделать следующим образом?
1.Запустить стрим данных, например с бинанса.
2. С помощью мультитрединга, каждые, например 15 секунд, делать обычный реквест запрос на этот бинанс для получения данных, которые я не могу получить через стрим, но не прерывая стрим.
3. Использовать обновленные полученные данные из простого реквест запроса в функции, которая вызывает стрим, но самое главное не прерывать стрим данных.
капча - наука
А что нет то. На питоне можно почти всё, главная его проблема, что это почти всё может быть от 5 аж до 100 раз медленее, чем на C++ условном.
Я спрашиваю, потому что я не профессиональный программист)
и не хочу изобретать велосипед или решать нерешаемые задачи
гораздо эффективнее спросить опытных людей
капча - дикарь
Ну хз тогда как ты за три дня планируешь написать, если не знаешь ничего. Мультитрейдинг всё же через копипасту сложно заставить работать
Можно, но нужно тред-сейф структуры использовать, потому что обосраться как нехуй делать. Еще можно асинхронность попробовать, но там другие подводные
я примерно представляю как это сделать,
у меня есть все, кроме вот этой мультитрединговой перемычки
но например, то, что я хочу сделать - нельзя сделать, потому что есть какое-нибудь условие/событие Х(икс) изза которого не получится
тем более, мало ли, мне посоветуют обратить внимание на что-ниубудь, на что я бы сам не обратил внимание
капча - король
Ну асинхронность под его задачи вряд ли подойдёт.
Нужно разбивать задачи на несколько потоков, что бы после ещё и получать сигналы от этих потоков не прерывая их. Асинхронность это всё тот же один поток, где функции просто тормозят своё выполнение, если ничего пока не делают и дают порулить другим.
Ну в целом, твоя задача и не смотрится как что-то тяжелое. Погугли, думаю разберёшься.
>>685972
ну вот например, мне бы и в голову не пришло обратить внимание на
>тред-сейф структуры
я даже не знал, что такое существует, а теперь знаю
спасибо!
чатжпт мне про такое не рассказывал
> асинхронность попробовать
я размышлял над этим, но потом пришёл к выводу, что я не смогу её нормально воткнуть, мне там неудобно будет
выбор был между мультитрендингом и мультипроцессингом
угу, спасибо (неиронично)
>Асинхронность это всё тот же один поток, где функции просто тормозят своё выполнение, если ничего пока не делают и дают порулить другим.
Так стрим обрабатывается батчами/сообщениями, там между ними прирывания как раз, хотя хз какой у него драйвер там и что вообще за стрим
Нихт. Не получается. Думаю сдаться, и всё-таки по-уебански не далать расширение файлов. А сделать как и по-идиотски следует, типа *.py. Жаль конечно. Грёбаный язык не умеет в расширения файлов. Ну что поделать, такой вот он. Не всем везёт.
Нихт. Не получается. Думаю сдаться, и всё-таки по-уебански не далать расширение файлов. А сделать как и по-идиотски следует, типа *.py. Жаль конечно. Грёбаный язык не умеет в расширения файлов. Ну что поделать, такой вот он. Не всем везёт.
>>684479
Ніколі не здавайся, нахіляй тэхналёгію пад сябе. Бо не чалавек існуе для кампутара, але кампутар для чалавека.
Я напісаў табе гатовае рашэнне. Пакладзі ў дырэкторы forms файл __init__.py са зместам https://www.online-python.com/hGp6rz9gnO
Так, анон. Ну ты предлагаешь просканировать директорию. Найти фсе вайлы на . py. Их просканировать, и исполнить (execute) . Ну это решение "в лоб" называется. Я так сам смогу сделать. Можно ли в вашем "петоне" сделать так, чтобы файлы .ui.py смог бы импортировать по-нормальному, без извращений????
Точки это часть синтаксиса доступа к модулям в пакетах. Так что если хочешь точки в именах, то импортируй через жопу, очевидно же.
Канал Ержана. Там много базы для смешариков. Но иногда он обсуждает разные интересные пакеты, и сторонние штуки, и некоторые неочевидные вещи. В целом норм фича ревью канал, можно посмотреть вечерком.
нет
В линупсах почти все символы валидны в именах. Сделай и импортируй файл с двоеточием в имени, например.
Ну да, боты в телеге вечно работают и норм, а мой виснет через время или пайчарм вылетает
Это копия, сохраненная 19 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.