Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: — А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. Исходник: https://dumpz.org/bASGKD8cCFDf
>>2138598 → >Есть где гайды быстро посмотреть что поменялось и в целом освежить знания? Только не надо официальный туториал или док, они пиздец какие водянистые. Просто без примеров короткое описание Вообще тебе нужны именно официальные туториалы. Для всего достойного софта есть разделы "What's new in ..." где описываются изменения.
Аноны, что мне нужно еще выучить, чтобы имело смысл искать работу? В веб не хочу, хотелось бы в машин лернинг, но я матан (пока) не так хорошо знаю. На сносном уровне владею: стандартной библиотекой библиотеки requests, bs4, selenium, pandas, nltk, gensim git'ом, virtualenv Имею представление об SQL Сейчас учу SQLAlchemy В скором времени собираюсь взяться за numpy, tensorflow, opencv, jupyter notebooks Нужен ли мне докер? Нужно ли дрочить командную строку линукса? Хватит ли мне питона или нужно учить еще один язык (когда-то дрочил джаву, но не продвинулся дальше синтаксиса)?
Почти уверен, что ты соснешь хуйца. ML -- это такая хайповая область, а у тебя, наверное, даже корочки приличного ВУЗа нет. Вот скажи, зачем брать тебя, если каждый год выпускают тысячи задротов с топ-вузов, которые тоже мечтают вкатится в МАШИН ЛЕНИНГ и никаких проблем ни с погроммированием, ни с матанам у них не было еще до поступления?
То есть по сути ты прав, конечно, но ты всё равно злой и токсичный.
>>2138792 > requests, bs4, selenium, учу SQLAlchemy это прямо типичный стек для "не хочу веб, хочу ML"
Мне кажется, что надо просто открывать книжки и курсы по ML, AI и т.п. и изучать их, если видишь, что что-то активно используется, вроде numpy, то может сначала разобраться с этими пакетами.
Docker скорее всего если нужен, то максимум на уровне пользователя, чтобы поднять локально какую-нибудь готовую сборку какого-нибудь готового сервиса.
Пока не смотрится, что ты хочешь изучать ML. Смотрится, что тебе нравится слово ML, но ты боишься в него влезать.
Есть длительный процесс, генерирующий данные, которые нужно записать. Открываем файл и пишем себе, потом закрываем. Но всюду втюхивают эти ваши контекстные менеджеры. Так что лучше - закрывать-открывать, или копить и высрать за раз менеджером? Как рекомендуют лучшие питоноводы? Понятно, что речь не идет о случаях, когда там гигабайты и копить смысла нет.
>>2138948 Стек парсеромакака. Они почему-то сейчас мутируют в телеграмоботомакак, вообще бессмысленная хуйня какая-то. Видимо на каких-то курсах втюхивают.
>>2138966 Если данные генерируются порциями, то просто пишешь каждую порцию. Потеряются только еще не записанные - одна порция, хз как это правильно назвать.
>>2138971 Вопрос в том, открывать ли файлы и писать последовательно, или собирать и в конце всё писать. Каждую строчку дописывать через контекстный менеджер это пидорство какое-то, нормальные люди так не делают.
>>2138980 > А как еще Открываешь файл и используешь хендл по необходимости. В конце закрываешь. Можно флашить, если там что-то такое критическое. Везде так делают.
>>2138979 Ты выдумываешь проблемы. Вот условный пример демонстрационный, на картинке.
Открываешь контекстный менеджер, внутри получаешь значения, пишешь их в файл. Если вдруг словишь исключение, контекстный менеджер закроет файл и данные потеряны не будут.
>>2138996 Контекстные менеджеры это самый надёжный способ для контроля ресурсов. Чтобы ты их закрывал корректно.
Ок, допустим ты делаешь свой класс, где в конструкторе открываешь файл и ещё что-нибудь делаешь, а реальная работа в других методах.
Тогда всё равно принято делать метод условно run(), который контекстный менеджер, и в коде my_class = MyClass() with my_class.run(): ____my_class.do_job() в run() ты открываешь какие-нибудь ресурсы, которые сохраняются в инстансе класса. А по окончании или в случае исключения надёжно всё отлавливаешь и корректно закрываешь.
Если ты делаешь настоящее приложение с конкурентной архитектурой, то это уже не очень работает, там свои подходы. Но это когда многопоточка или asyncio с большим количеством параллельных задач.
>>2139008 Ну вот тебе конкретная задача, для которой и возник этот вопрос. Скрипт для обновления стоков по api. Надо писать списки товаров для отчета. https://ideone.com/n8Hb9P Отдельно открывать и настраивать всю эту хуйню и потом закрывать было бы коряво, так что я решил так. Но оно пишется только в конце, что имеет минусы. Вот я и задумался, как зделоть красиво и эффективно.
>>2139018 В твоём случае по логике может быть очень много разных файлов. Это другая история, чем один большой файл.
Вопрос по логике в том, как можно определить, что данные можно записывать, потому что ведь reports скорее всего может менять любую запись с любым title в произвольный момент. Скажем сначала создать и заполнить, а через пол часа сделать апдейт какой-нибудь.
Фактически ты делаешь свою БД типа ключ-значение. Возможно стоит подключить настоящую БД.
Есть вариант, что накостылять своё решение, когда ты делаешь MyDB, функцию update_record(title, vals), и раз в сколько-то операций дампить несохранённые данные.
Это скорее на случай, когда у тебя скрип работает постоянно, но ты всё-таки хочешь видеть сохранённые данные оттуда в виде файлов.
Но если ты уверен, что данные в records не перезаписываются, то на самом деле проще просто тупо дампить, как только соответствующая item готова.
>>2139038 Ну честно не вижу проблемы ни в том, чтобы сразу писать, ни в том, чтобы сначала посчитать, а потом писать. По-моему это должно быть примерно одно и то же. Лишняя работа и потеря времени только в том случае, если тебе надо перезаписывать файлы.
Если у тебя скрипт во время расчётов может вылететь, можно расчётную часть обернуть в try-except, а в finally уже дампить reports.
>>2138718 (OP) Что почитать про паттерны и архитектуру приложений на питоне? А про дистрибьютед системы? Чтобы селари, эскьюэльалхимию и рэбит ещё объяснили. Только желательно современное?
>>2138929 Ну, мне действительно кажется это интересным. Впрочем, я понимаю, что это сложно, поэтому хочу попасть хоть куда-то (кроме веба). >Вот скажи, зачем брать тебя, если каждый год выпускают тысячи задротов с топ-вузов, которые тоже мечтают вкатится в МАШИН ЛЕНИНГ и никаких проблем ни с погроммированием, ни с матанам у них не было еще до поступления? Потому что сфера пока еще растет, и я надеюсь, что задротов не хватает. Ну и я собирался пойти в магу на это все дело, но видел вакансии, где приличный вуз не требуется, поэтому думал попробовать. >>2138948 Спасибо, анон! >Мне кажется, что надо просто открывать книжки и курсы по ML, AI и т.п. и изучать их, если видишь, что что-то активно используется, вроде numpy, то может сначала разобраться с этими пакетами. Да, это понятное дело. Я именно про какие-то специфичные библиотеки или технологии, которые нужны в мл. >>2138948 >>2138956 Помогал знакомому с некоторыми проектами, тогда и разобрался с этими библиотеками. >>2138972 >пакеты для анализа "естественных языков" Я учился просто на прикладной лингвистике (это бессмысленная херня) и там нам давали работать с этими пакетами. Я так-то думал именно в NLP пойти.
как супер быстро посчитать все результаты выражения вида "d10+d10+d10+d10+d10+d10" в котором d10 - это возможные числа от 1 до 10, то есть я придумал создавать декартово произведение и делать полный перебор, но можно ли как-то быстрее, чем за экспоненту?
>>2139572 sum- это ок, проблема, в том, что генерация всех комбинаций - это эксмонента, 101010...*10 а нужно придумать, как за полином высчитать все исходы такого выражения
>>2139575 Если у тебя только целые числа от 1 до 10, то у тебя всегда будут повторяющиеся последовательности внутри всех комбинаций. Это можно вывести в формулу комбинаторную.
>>2139575 Плюс для тебя комбинация 1+2+3+...+10 и 10+9+8+...1 одинаковые, т.е. инвертируемые, т.е. тебе половину не нужно чистать, а достаточно на 2 умножить.
>>2139579 Да это я учёл для выражений с плюсом и умножением, но в некоторых могут быть минусы, а это уже не коммутативно
>>2139576 Там могут быть любые дешки d4+d8+d9 и тд
Это задача одна из двух в школу программирования headhunter, причём первая была изи на бинпоиск + жадный алгоритм, а тут у меня просто нет идей. И это помимо того, что мне пришлось искать в сети инфиксный калькулятор и модифицировать его
>>2139610 Есть тестовые примеры? Из условия не очень ясно, как интерпретировать, например, выражение d2 + d2. Бросается ли одна кость с n = 2 гранями и результат броска становится одним значением d2 для обоих слагаемых, или кость бросается два раза и оба операнда d2 независимы?
>>2139685 Твой пример во-первых считает некорректно, когда значения d одинаковые, во-вторых некорректно, потому что ты не учитываешь что d может быть равно N, и в третьих оно считает очень долго, ты делаешь полный перебор.
У них в условии сказано, что в dn значение n может быть 100000, достаточно записать выражение d99999 > d99999 и у тебя перебор на 10 миллиардов значений, что очень долго считать. Хотя это выражение вычисляется как 0, 1 - равновероятно по 0.5
>>2139782 Ограничений в условии в любом случае недостаточно будет в строке d100000 * d100000 и на выходе должно быть на уровне 9 миллиардов строк, все возможные непростые числа и маленькие простые.
>>2139782 Так написано же, что это решение в предположении, что для каждого n dn определяется одним броском, что скорее всего и имеется в виду в условии, иначе будет как >>2139791.
Кроме перебора тут ничего в общем случае не получится. Даже если ограничиться только линейными выражениями c1dn1 + c2dn2 + ... + ck*dnk, то подсчет числа всех возможных комбинаций значений dn-ов для заданного значения выражения сводится к подсчету числа целых точек в (k-1)-мерном многограннике, что нетривиально. Если разрешить умножения dn-ов на себя и добавить операцию <, то это уже поиск всех целых точек в нелинейном объекте. Делать это не перебором - явно не задача для вступительных экзаменов на онлайн курсы.
>>2139810 В любом случае сложноватая для вступительных в школу. И ещё слишком расплывчатая.
Можно решать методом монте-карло, то есть сделать N разных попыток и получить результат. На прикидку интуитивно, без формул на доверительные интервалы из матстатистики, на уровне 100 тысяч попыток, чтобы получить точность в 0.01%, как они просят.
Короче рофел в том, что они в итоги поменяли временные лимиты и признали, что это перебор и моё решение заехало даже с полным перебором >>2139818 >>2139810
Начинается последний курс вуза по специальности "бесполезная гуманитарная параша". Куда идти и что делать дальше кроме как вкатываться в забитый индусами поезд it я не знаю. Помогите пожалуйста, я прошел вводный курс яндекс практикума по питону, хотел купить платную часть, но, судя по отзывам, это просто выкидывание денег на ветер. Мне впервые за всю жизнь стало интересно учиться, но у меня нет никакого плана и структуры обучения. Я не знаю за что взяться. Готов сидеть сутками, читать книги тоннами, спать по 4 часа, все, что угодно, только скажите как, прошу. У меня есть год чтобы научиться чему-то. Книги в шапке я увидел, спасибо. Есть еще что-то? Ютуб/курсы/сайты? Что угодно. Я знаю, что зп будет 25к первый год, проживу. Либо так, либо в петлю знаю, "пошел нахуй, вкатыш"
>>2139871 Я яндекс практикусе курс по алгосам сейчас прохожу, он на факультете питона и мне норм, так что могу практикум советовать, но там упор на самообразование большой, сам материал хороший и можно вопросы задавать по ходу дела в чате. Если в практикуме реально ебашить, то польза будет + дедлайны будут подстёгивать учится.
мимо сдавший эту ебучую задачу из школы headhunter >>2139605
>>2139877 > там упор на самообразование большой > можно вопросы задавать по ходу дела в чате Отзыв, это не самообразование, это издевательство.
>>2139879 Анончик, я же сразу написал, что прошел вводный по питону, и хочу именно его, мне интересен именно бэкенд. Поэтому и зашел в тред, посвященный именно питону
>>2139877 > там упор на самообразование большой > можно вопросы задавать по ходу дела в чате Отзыв, это не самообразование, это издевательство.
>>2139879 Анончик, я же сразу написал, что прошел вводный по питону, и хочу именно его, мне интересен именно бэкенд. Поэтому и зашел в тред, посвященный именно питону
>>2139890 Ну мне просто зашло то, как там подан материал, ну когда я по спрашивал, мне отвечали, да и остальным, я могу скрины из слака покидать, если хочешь, в гугл ни разу никого не посылали точно
>>2138718 (OP) Возможно не шибко практичный вопрос, но как в питоне привязать к объекту функцию в качестве метода? Обычная привязка как на скрине рузльтатов не дала
>>2139940 Ну собственно при создании инстанса он связывается с функциями-аттрибутами класа и получаеся метод, это и есть тот самый binding. Тут мы делаем его вручную позже.
>>2139953 Ну я-то уже работал, я просто с фронта на сервер хочу уйти и это курс я взял для собеседований, где алгоритмы спрашивают. А так я хз, если всё делать, то думаю да, но вообще, курсы - это такая штука, если тебе нужны какие-то рамки, дедлайны, то это норм, если ты достаточно самоорганизованный, чтобы учиться по книгам + ютубу, то курсы не нужны.
В Django можно создать несколько файлов css,для соответствующих страниц,если у меня один базовый шаблон html,который расширяют другие шаблоны html,и если да,то как их подключить?Просто прописать в каждом шаблоне соответствующий тег link?Или это по другому делается?
>>2139890 Лол, яндексо-холопы опять обосрались на ровном месте. Прохожу курсы на Степике, в гугл нужно лезть экстремально редко, только если сам уж тупишь или для задач со звездочкой.
Всем привет. Прохожу тут курсики в Хекслете, мне нравится, все понятно и не так тупо, как в других всяких туториалах. Но вот я нихера не могу разобраться в их редакторе. Ну и вообще я в этом Питоновском шелле не очень разбираюсь. Вот во-первых, как понять, че там не работет? Типа он запускает тесты и то, что написано после ассерт - это то, что он должен получить? Типа он должен был получить фолс, а у меня вывело тру? Как вообще понять, как работает эта функция встроенная гет_квадрант? Типа там в тесте точка на оси лежит, ну и что в таком случае возвращает их гет квадрант? Как вот вообще это отлаживать или типа того? Я же не могу у себя это запустить на компьютере, потому что там импортируются какие-то функции их, которые я не знаю как устроены. А тут в терминале мне нихера не понятно, если честно. Я просто пишу у них в терминал "python3", запускается шелл, ну или как эта штука называется и че потом? Как мне это всё там запустить? Я просто копирую весь код и вставляю туда? Но потом чет нихрена не работает. Я пишу после этого типа "print(че-то там)", он пишет, что синтаксическая ошибка.
Или я вообще просто где-то в коде обосрался? Раздражает блин ошибки искать. Задания простые, но я наверняка обсираюсь в какой-то мелкой хуйне синтаксической и по полдня не могу её найти. Бывает какие-то алгоритмы поиска ошибок? А то я на каждом таком говнозадании застреваю очень надолго, хотя решаю в принципе сразу.
>>2140581 Какие конкретно курсы проходишь? От Института бионформатики в гугл лезть не нужно только потому, что там в комментах уже слазили и вылили всю боль.
Вот этот подход "если что - идите в гугл" я видел уже в ХТМЛ Академии. Говенный подход. Ты или всю необходимую теорию человеку давай или не берись курсы делать.
Люди делают курсы, некоторые даже берут за них деньги, а переписать общедоступную теорию своими словами - им лень. Это колхоз. Ну в случае с яндексом это колхоз, в котором сараи выкрашены в желтый цвет.
Вот крутится у меня сервак на условном aiohttp. Как сделать так чтобы в случае Exception-а в одном из запросов он гарантированно не подыхал целиком а продолжал крутиться, просто возвращая ошибку?
>>2140724 Ну это не самый плохой подход. Просто не все понимают, что нужно не только задачки решать, но и что-то полезное делать. Хотя бы парсер написать для каких-то своих нужд. Тупо чтобы закрепить навык. Иначе все впустую пройдет.
На опенеду, кстати, есть тоже курс для начинающих от ВШЭ. Там порой проскакивают довольно тонкие вещи, которые не упоминаются в других местах. https://openedu.ru/course/hse/PYTHON/
Всем привет, у меня приложение, где бэк всё рендерит, но хотелось бы только на одной странице сделать рендер на фронте (там много меняющихся объектов). Можно ли для одной страницы использовать React или придется какими-то третьесортными шаблонизаторами всё делать?
>>2141239 Самое основное использование — ленивая подрузка данных, чтобы не плодить методы get_name_from_db(), а просто написать user.name и все. Значительно упрощает интерфейс. >>2141241 Инкапсуляцию блять чего? >>2141244 С помощью проперти можно валидировать данные у сеттера? Ты себя слышишь? >>2141051 А в чем проблема? Рякт в обычный джс транслируется. Обычный джс спокойно отправляется вместе с хтмлкой.
>>2140724 Братан, "вся теория своими словами" это пара тысяч страниц. Никто такой хуйней заниматься не будет, да и ты охуеешь это читать. Привыкай, на работе вообще радоваться будешь, когда окажется, что документацию писали не полоумные дебилы с параличом, а уж если не просто перечислены все методы, а еще и описаны что в них нужно пихать с простейшим описанием того, что после этого произойдёт — будешь писать кипяточком от счастья. А если ты не смог осилить инфу из гугла, которая объяснена максимально подробно тысячи и десятки тысяч раз, то у тебя айкью двузначный и в айти делать тебе нечего.
>>2141347 Хуита. Если ты пишешь курсы - пиши перед задачками теорию. Не можешь - не пиши.
А то что "на работе говно будет - привыкай" это вообще пушка. Ровняться надо на лучшее, а не объяснять косяки уебанов из хуяндекса "мировой практикой".
>>2141008 >>2140933 Нужно именно пропатчить несколько файлов, так как ним будет обращаться пользователь. Я бы мог попробовать переименовать эти скрипты и уже из скриптов с оригинальным названием импортить оригинальный код, но это еще хуже.
>>2141369 > Хуита. Если ты пишешь курсы - пиши перед задачками теорию. Не можешь - не пиши. Там пишут, я смотрел по диагонали когда-то. Просто довольно сжато и не углубляясь в подробности. А хули ты хотел — курсы для гоев. Неважно, платные они или нет — если ты решил вкатываться по курсам и не хуярить самостоятельно, то ты уже проиграл. > А то что "на работе говно будет - привыкай" это вообще пушка. Ровняться надо на лучшее, а не объяснять косяки уебанов из хуяндекса "мировой практикой". Максимально формальное, полное и подробное изложение теории это документация в связке со стандартом языка. Все остальное это упрощения в том или ином виде. > Привычно обоссал пиар-менеджера путинской копро-корпорации. Но ты забыл снять штаны(((
>>2138718 (OP) Как мне закинуть асинхронный коллбек для некого вызова? Вот есть некая async-функция, как настроить для нее коллбек, который будет асинхронно "стрелять" по ее завершении? В жс это делается нативно через цепочки промисов:
Сап, програмач. Вкатываюсь в Пайтон по книге Эрика Мэтиза Изучаем Python. В книге описана настройка Саблайм Текст на пикрил. Я все сделал как там написано, но при запуске хеллоу ворлда он мне пишет No build System и не запускает программу. Как это фиксить?
>>2141341 >С помощью проперти можно валидировать данные у сеттера? Ты себя слышишь? Да. C помощью сеттера у проперти ты можешь валидировать данные при простом присваивание.
>>2141341 >А в чем проблема? Рякт в обычный джс транслируется. Обычный джс спокойно отправляется вместе с хтмлкой. А ссылки мне как сделать? React может содержать только ссылки из react-router, я не смогу сделать ссылку с помощью django template. Так как react и будет рендерить, а не django. И того получается, что у меня ссылки будут не нажимные или придется все приложение делать SPA.
>>2140702 обычно по описанию ошибки в пучарме или юпитере понятно почему она произошла. но не всегда. обычно. а так поиск ошибок это самое сложное, гугление, искание.
>>2140904 густокашин ведущий. прикольный чел кстати, нормально объясняет. правда он задрот, наверное поэтому там в курсе и есть токие вещи. любит он изьебнутся. >>2140724 Я видел курсы яндекса по анализу данных. это вообще пиздец. там короче прост окно в браузере и децл текста. прочитал текст делаешь задание. в случае ошибки выдается просто типа - ошибка. и ебись как хочешь. причем ошибка может быть ебовой типа ты указал не тот путь к файлу, при том что код выдает верный результат по факту, но ошибка все равно пишется. то есть путь к файлу по сути - мусор, который не влияет на работу. просто пиздец. в любой непонятной ситуации предлагается писать в поддержку.
>>2141539 Ну на компе-то понятно, но тут какие-то тесты, не понятно что пишут. Но вообще я разобрался. Просто писал принты внутри функции и снаружи и запускал файл из тамошнего терминала. Ну в общем как на пека. Не знаю, чего я до этого не додумался раньше.
>>2141537 Ну с этим уже все сложнее, я не компетентен в этом вопросе, просто предложил вариант исходя из своих знаний. Про "в чем проблема" был не ироничный вопрос. >>2141528 Сеттер и геттер это разные вещи, если что. Так что я все еще не понимаю как у тебя геттер влияет на сеттер
>>2141477 Асинхронная операция начинает выполняться в момент когда делаешь create_task? И что если происходит эксепшн в момент его исполнения? Как ловить?
>>2141579 >Сеттер и геттер это разные вещи, если что. Так что я все еще не понимаю как у тебя геттер влияет на сеттер Чел... декоратор setter это часть декоратора property. Сделать его просто так без проперти не получится.
>>2141580 В create_task задача закидывается в шедулер и потом когда нибудь выполнится при освобождении контекста. Если вылезает ошибка, то она падает и пишет в логи не прерывая основной поток исполнения.
>>2141580 >>2141586 А что кстати насчет логирования? По идее когда мы пишем logging.warning('Some shit happened') то эта операция исполняется синхронно, блокируя основной поток, вроде просто высрали текста а он блочит. Есть какие-то асинхронные логеры на основе той же херни что ты упомянул? мимохуй
Анон, вопрос ввел в ступор. Есть список названий ['a','b','c'] и список позиций этих названий [0,0,0,1,0,2,0,0,1] Как из них получить объединенный список вида: ['a','a','a','b','a','c','a','a','b'] ? Двойным циклом прогнать? Или есть решения изящнее?
>>2139492 Да расставлял отношения first_id = Column(INTEGER(), primary_key=True) second_table = relationship("second_table", lazy="joined", cascade="all, delete", passive_deletes=True, backref="first_table") а потом во второй first_id = Column(INTEGER(), ForeignKey("first_table.first_id", ondelete="CASCADE"), primary_key=True)
а потом в коде собственно
async with session.begin(): stmt = delete(first_table).where(first_table.first_id == entered_id) await session.execute(stmt)
только оно продолжает удалять только в первой таблице, хотя если через sqlite браузер делать, то норм да и просто если в нем же пишу DELETE FROM first_table WHERE first_table.first_id == 1
ну и примеры в документации чуток устарели, там же через query делают
>>2142486 Нихуя, спасибо! С каким же удовольствием я его лекции по алгоритмам смотрел. Жаль, что мне в МФТИ информатику преподавали люди совсем не такого уровня
>>2142632 А зачем это вообще смотреть? Обычное инттервью с вопросами ниочем. Его опыт в любом случае будет отличаться от опыта котррый получет анон. А каких-то интересных вещей по кодингу от не сказал.
>>2142758 Это мои высеры. Если мне хочется посмотреть что-то интересное, то это не интервью. Тут сплошные шаблонные вопросы не применимые ко мне. Если я хочу посмотреть что-то полезное для кодинга, то я иду в англоязычный сегмент сети и смотрю/читаю что-то по нужной теме.
>>2142791 >Если бы ты поинтересовался, что это за человек, И что за человек? Не Гуидо даже. Не создатель чего-то выдающегося.
Просто препод с физтеха, чьи лекции выложили на ютуб. Курсы средне-нормальные, но не уникальные и не выдающиеся. Просто нормальные курсы, потому что физтехом сделаны под физтех, а не какое-то говно он необразованных вкатунов для необразованных вкатунов.
Попробовал смотреть, там всё про то, как автор дошёл до жизни такой, начиная с самого детства. Но мне зачем все эти мемуары? Мне это не интересно. Лучше бы о том поговорили, как учиться чему-нибудь, чем физтех и образование там в ИТ отличается от васянского обучения. Это хотя бы имело бы смысл смотреть.
У меня есть функция, которая возвращает True/False или None, если что-то пошло не так. Но появился дополнительный случай что-то пошло не так, который надо обработать отдельно. Как бы это оформить?
>2143039 >Я их боюсь использовать до сих пор, этот их ask forgiveness для меня дикость. Что делоть? Переходить на Go. Там все такие. В питоне без исключений никуда вообще.
>>2143066 Не, серьезно. Как вкатиться в всякие эксепшены, ООП и прочие тесты, если я не работаю в команде? Чтобы хуярить всё это налево-направо, как настоящий ДЕВЕЛОПЕР.
>>2143422 b'' это "байтовая строка", особый тип данных. Когда у тебя не юникод-строка, как обычно, а именно набор байт.
f"" это f-strings. Специальная штука из современного питона, которая позволяет тебе форматировать строки, вставлять туда значения переменных и выражений через фигурные скобки num = 12 frac = 1/13 s = f"demo: {num} {frac:.2f}" при этом можно опции форматирования добавлять, как вот здесь в случае frac, аналогично как и с format и %-синтаксисом.
Ещё есть r"" для экранирования слешей в регулярных выраженях. И ещё есть u"", это юникод-строки, но это не надо использовать, потому что обычные строки тоже юникод. Нужно только для совместимости кода питон-2 при запуске в питон-3.
>>2143433 Обычная строка - это юниокод строка. Её элементы это юникод-символы. У байтовой строки элементы это байты. Юникод символы могут быть размеров в 1, 2 и больше байт. Например русские символы по 2 байта. А многие байтовые символы на юникод не отображаются.
Попробуй в консоле питона сделать s = "слово" b = s.encode('utf-8') # это преобразование в байт-строку
ну или считать из файла что-нибудь из русских символов.
>shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None) >Additionally, when finding the cmd in the path, the PATHEXT environment variable is checked Нахуя блять.
>>2143022 > У меня есть функция, которая возвращает True/False или None, если что-то пошло не так. Пиздец, за такое надо по пальцам бить. В питоне есть ламповые синтаксические штуки вроде if is_user_registred: do_smth() Нет, буду костылить None, False, True, чтобы читающий охуел от простыни elif'ов с мало понятным содержимым, а пользующийся твой функцией начинал материться и лезть в исходники, чтобы понять чем возврат None отличается от False >>2143039 Бля, ну если тебе так не нравятся эксепшены, то сделай хотя бы возврат кортежа. return successful, error Первое значение это бул, второе код или там класс ошибки и None, если все успешно. И будет вызов не таким красивым, но хотя бы понятным: result, error = do_smth if not error: foo() else: bar()
Пилил тут реализацию игры Жизнь: https://ru.wikipedia.org/wiki/Игра_«Жизнь» Конечно забавно как оно мигает на экране консоли, но хотелось бы запилить хоть какую-то графику под это. Что юзать для Питона?
>>2144394 >но хотелось бы запилить хоть какую-то графику под это Не начинай, точно тебе говорю! Я тоже запилил недавно на васме её, теперь сижу четвёртый день один яваскрипт пишу, вместо васма.
>>2144394 В консоли же символы. Возьми для начала фиксированный шрифт и сделай то же самое на символах в обычном printf. Потом можно взять gtk, winapi и даже sdl2.
Как Инстаграмм умудряется работать с Джанго? В Инсте же куча фоток, которые надо подгрузить, сконвертировать и оперативно отправить клиентам, синхронное джангоговно ж в помине с таким не справится (да и питон в целом)
>>2144572 >>2144574 Спасибо, но d - разве не для чисел используется? Я имею ввиду, что есть s_list = [''абв','где','ёжз'] и мне надо получить шаблон который добавляет 1-4 пробелов между элементами и ищет по этому шаблону, например: for i, j in enumerate(s_list): __(s_listх[j])/s{1,4}(s_listх[j+1]) (не уверен, что шаблон правильный)
То есть мы будем искать этот шаблон в тексте, у нас на выходе находились "абв где", "абв где", "абв где", и так далее.
>>2144585 в примерах я проебался с backslah кстати >он содержал элемент i и i+1 Ну я ж хз что ты под этим подразумевал. Искать этот шаблон где будешь? В большом тексте? Скорее всего можно будет идти простым итерированием и юзать строковые методы для поиска подстроки вот и все Ну или можешь ебнуть регулярку как у тебя. Потести сам, должно сработать
>>2144811 Нет, не очень. А что, я какой-то секретный смысл пропустил, когда в одном сообщении ты пишешь, что есть, а когда тебя спрашивают, какие, ты тут же поворачиваешь жопой на 180° и предлагаешь самому написать? Тут даже моего умишки хватает.
Есть обычный синхронный код. Как запустить из него асинхронный, да так чтобы ничего не блокировалось? Если я заделаю ioloop из asyncio, закину туда свою кортуину которую надо исполнить и запущу это все в другом треде, то это норм будет работать?
>>2144931 Вкатился полгода назад. Заметил что начал тупеть (лол). Надо бы задачки дрочить чтобы потом перекатиться в более пиздатое место, а я бухаю для по шлюхам хожу. Пиздец
Подскажите видосы или статьи по архитехтуре приложений. Хочу сделать приложение, нужно читать данные с внешнего апи, обрабатывать их сохранять и параллельно выводить на фронтенд.
Думаю взять вля бэкенда фастапи и реакт для фронтенда, вопрос в том, как все связать для максимальной производительности и минимума задержек.
>>2145050 >Нихуя не знаешь, все хочешь? Да, сразу хочется внедрить все технологии и хочется войти в ближнем будущем. >Как отсортировать дерево справа-налево? Пока круды шлепаю, но даже это так себе идёт, может надо было с фронтенда начинать.
>>2145123 И как же запуск десятков процессов одного и того же приложения прокает? Как именно мы выбираем инстанс который будет обрабатывать запрос если их дохрена?
>>2145129 > И как же запуск десятков процессов одного и того же приложения прокает? Чего блять? Я нихуя не понял, но предположу, что ты имеешь ввиду "Как запустить несколько процессов?". Либо воркеры гуникорна условного сами за тебя все запустят, либо реплики докерконтейнера > Как именно мы выбираем инстанс который будет обрабатывать запрос если их дохрена? Балансировщики есть специально для этого. Что они делаю, думаю, и понятно из названия
>>2145129 Для говнопроектиков на цифровом океане за 5$ хватит и одного инстанса. На крупных проеках у тебя клиенты 502, 503, а в основном 504 будут получать. Поэтому делаешь несколько инстансов, перед ними балансировщик стоит. Он распределяет что куда пойдет, поэтому нагрузка равномерно распределяется на все инстансы. погугли haproxy, тебе понравится
>>2145129 В базовом варианте ты запускаешь просто несколько воркеров, а uwloop/gunicorn/nginx распределяют нагрузку между ними, тупо round robin, по кругу.
gunicorn/uwsgi запускаешь с опцией --workers N, и всё. Через nginx сложнее и не надо. В простых случаях этого за глаза хватает. Если жёсткие нагрузки, то там уже другое.
Главное, что надо понимать. Каждый инстанс джанго обрабазывает запросы последовательно. То есть он получил запрос, дальше долго его готовит, после чего отдаёт результат. И пока не подготовит, он не может приняться за следующий запрос, а подготовка может быть заблокирована из-за долгого запроса к БД, например. Поэтому и запускают много воркеров, причём можно сильно больше, чем количество логических ядер.
Анончик, я вот пытаюсь понять как мне красиво джангу деплоить со всеми ее друзьями. Нашел несколько туториалов, в которых все распихивают по контейнерам, но при этом, например, для celery используют volumes, чтобы она могла лезть в код джанги за тасками. Разве с volumes не теряется весь смысл контейнеров? А как тогда контейнеры, допустим, разнести по разным серверам, если они все связаны через volume? Postgre сажают в контейнер, но файлы базы оставляют снаружи. Nginx сажают в контейнер, но сертификаты оставляют снаружи, чтобы сертбот мог их обновлять. Зачем тогда их в контейнер сажать, непонятно. Как вообще это правильно делать?
>>2145481 >Postgre сажают в контейнер, но файлы базы оставляют снаружи Догадайся что будет, если файлы базы туда не сажать они будут перезаписываться при каждом перезапуске контейнера
Пытаюсь установить модуль через pip install в юпитере на шинде на рабочем компе и мне пишет ошибку WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1125)'))': /simple/miner-text-generator/ При этом pandas у меня норм встал. Это похоже, на то что мне админ просто блочит установку неизвестных модулей?
У меня есть функция db_connect - там я описываю подключение к базе данных. Далее есть f1 - f3 - эти функции используют подключение к бд, чтобы выполнить какой-то запрос.
Я не понимаю, как мне передать в f1 - f3 результат подключения к базе из первой функции. У меня получилось запустить такой код только в том случае, если я во внутренности f1 - f3 скопипащу код из db_connect (строчки 1-37). А как мне сделать, что я один раз это подключение описал, и дальше я его могу в последующих функциях свободно использовать? (41-74)
>>2145687 И мне тогда получается каждый раз при вызове функции нужно будет вызывать ее с db_connect в аргументе?
f1(db_connection()) f2(db_connection()) f3(db_connection()) Так что ли? Пайчарм мне еще почему-то подчеркивает аргумент. Говорит, что оно заслоняет переменную, определенную во внешней области видимости.
>>2145702 Что-то все равно не так. Если я удаляю unexpected argument и прогоняю код, то получаю ошибку TypeError: __init__() missing 1 required positional argument: 'host'
>>2145710 Бля, чел, открой любой изи курс или книжку где учат синтаксис питона и его фичи по очереди. Зачем ты эти коннекшны к БД ебошишь вообще не понимаю Ты путаешься в самых базовых понятиях, это если б чувак спрашивал как ему на машине стартовать с ручника с горки но путал бы поворотник и рычаг передач
У тебя kwargs через 2 звезды даны чтоб туда именованные аргументы закидывать, ты же туда ничего не прокинул, затем ты за каким-то хреном создаешь client внутри функции но не делаешь с ней вообще ничего. В f1 нихрена не передал, хоть он и будет резолвить твою переменную в глобальном скоупе но это косяк
>>2145836 В a[0] лежит сама же переменная a. Оно бесконечно так будет рекурсивно раскрываться Профит только в том чтоб завалить вкатыша на собесе. Вопрос прямиком из жопаскрипта
>>2145882 Всё равно не очевидно. Я думал, что знаю хотя бы основы питона, а оказывается нет.
Тут какая-то магия с тем, что двойное присваивание и сайд эффекты от этого. То есть ты не можешь это выражение в две строки расписать, эффект пропадает.
Пацаны, есть ли какой-нибудь видос/статья с хорошим доступным и простым объяснением за asyncio? В частности, волнует вопрос про Task и Future. Я кучу всего перечитал и пересмотрел, но всё ещё не могу понять их разницу. Что делать с async методами, чтобы запустить их в обычном синхронном main? Что по итогу мы передаём в event loop? Как запускать корутины с аргументами, и чтобы потом этот набор корутин мне возвращал все результаты в один общий список?
Нужна инфа буквально для чайников. Все статьи "для нубов" годов так 2014-15, но я знаю, что уже всё с тех пор изменилось
>>2146052 Ты меня проверяешь или просто из тех, кто не шарит за асинхронность? Поясню, так сказать, "нахуя" она мне
Пишу парсер, который проходится по всем страницам сайта. Есть функция, которая достаёт то, что мне надо, с одной страницы. Соответственно, жрёт много времени на коннект и сбор контента. Поэтому я переделал её в корутину и запускаю в ивент лупе коллекцию Тасков(?) или Фьючеров(?), которые возвращают результат сбора в общий список. У меня есть рабочий код, который я написал где-то год назад, и он прекрасно работает с приростом в скорости относительно синхронного варианта где-то в 2 раза. Написать я его написал, но ничего в нём не понимаю. Сейчас я решил его переписать и разобраться, как это правильно сделать, чтобы при этом ещё было осознание того, что именно я делаю
>>2146077 >Пишу парсер, который проходится по всем страницам сайта. Тут я напиздел. Не по всем страницам сайта, а лишь по определённому блоку, где есть пагинация
Записался на конкурс по Ренпи. Месячный. Думаю, если Питон учу, то нужна практика.
Короче сидишь такой 3 недели, литерали 3 недели. С 2 девочками в чате в вк. Они там что-то рисуют, то-се, спрайтики, фоны, ахахахах, а вот тут тени, а вот тут дорисовать... Сидишь, чешешь яйца, думаешь - ну Ренпи... Че там. Я же матрицы делал.
Последние 3 дня - аааа, ничего на успеваем, сценарий вот, но его куски плохо соединяются и имеют дырки, вот тебе заплатки для дырок сценария, вот тебе музыка, она не играет что? так она во flac и wav, а Ренпи кушает только mp3, ахахаха, конвертируй, че смотришь? че то билд не билдиться, билдился же 5 минут назад, ахаххаа, а это ты комментарий не закрыл на 5389 строке из 10000 почти ахахахаха, а еще у нас тут в Ренпи есть автопроверка всей хуни, Линтер называется, но она отвалилась, ахахахаа, и что ты мне сделаешь? я в другом городе, дебаж ручками, сучка, а еще у нас тут уникальные имена у спрайтов, сиди переименовывай, как гук на рисовом поле по рисинке, выделять и переименовать ахахаха, а еще "девушки" слегка за 25 постоянно арты скидывают в разрешении, которое нужно передлывать, а вот тебе кстати еще патчики к спрайтикам, что? в сюжете есть спрайт, а в файликах нету? ну так сам додумай, ты ведь не маленький, уже полтора курса по Питону прошел, что? нет кнопки в меню? иди сам полазий по форумам и документациям, ахахаха, лазишь как черт по форумам Ренпи на англюсике 5+ летней давности, а там стены кода, и ты по ним ползешь, а потом стекаешь...
А в последние 2 часа вообще каждую минуту правки были. Ахахахах, вот тут текст раздели. Ахахахах, а вот тут музыка не играет, аахахахах а вот тут затемни, ахахахах, а вот тут спрайтиков не видно, а какого хя их не видно, они же правильно прописаны, а нет, это же я сам, чертов гений, их 3 раза переименовывал и во 2 раз переименовал не правильно... Ахахаха а вот тут переменную убери, а слово добавь, а вот тут... Кстати, если скачать новую версию Ренпи, то в ней Линтер идеально работает ахахахаха без всякой логики, просто скачиваешь, а он работает ахахахах и 100+ ошибок в лог файл, а времени осталось 20 минут...
Ебанись. Почувствовал себя на продакшане с горящим дедлайном, спасибо Ренпи.
>>2146045 Это разные вещи. Тут магия в том, что код (x, y) = x[:] = (['a'],['b']) совсем не эквивалентен коду x[:] = (['a'],['b']) (x, y) = x а равно и x[:] = (['a'],['b']) (x, y) = x[:]
Варианты что в две строчки очевидны и предсказуемы. Вариант с двойным присваиванием и формированием циклической ссылки я не понимаю.
Видимо надо мануалы по поводу двойного присваивания читать.
>>2146291 >Тебе просто обманули и ты смотришь на =, а надо смотреть на запятые. Я не вижу обмана, в том смысле, что если всё обернуть в скобки, то всё будет тоже самое.
Каким образом получить тот же эффект, но с одним знаком = на строчке? То есть как в виде двух строк это представить?
Операцию разворачивания кортежей я прекрасно знаю.
Ребята, реквестирую помощь с тг ботом. Тг ботов никогда не делал, как это работает знаю, соответственно прошу кратко расписать как это реализовать. Нужен бот, который будет 24/7 онлайн на сайте + отвечать на входящие мессаджи по шаблону, в принципе это все. Самое для меня непонятное -- именно момент того, как законнектить бота с сайтом. когда-то вкатывался в айти, даже успел немного поработать, сейчас свой мелкобизнес и стало очень интересно реализовать такое самому
ХЗ, это баг или фича, должно быть по стандартам языка или нет, но так происходит из-за реализации в CPython Надо просто тупо сделать import dis и тупо посмотреть код, который получается. Рекомендую попробовать сначала на примерах проще.
Всё из дизасма очевидно, проблема в двойном присваивании, которое разворачивается в > 14 DUP_TOP и из-за этого воникает этот эффект.
Могу разобрать построчно, что тут происходит в каждый момент, но это слов много и надо сначала примеры проще может разобрать. ХЗ, интересно кому-либо такой подкапотное байтоёбство.
А писать так не надо, конечно, это прямой кандидат на undefined behaviour
>>2137650 → А можно то де самое, но с занесением в список индексов только последних элементов подгруппы?
Т.е. Список: [1,1,2,3,1,5,1,4,1,2,2,6,1,5...] Надо последовательно сгруппировать индексы элементов, если сумма элементов меньше или равна, например, 10. Т.е. получить что-то вроде [4, 7,10,12...]
>>2146395 >An assignment statement evaluates the expression list (remember that this can be a single expression or a comma-separated list, the latter yielding a tuple) and assigns the single resulting object to each of the target lists, from left to right.
Надо еще иметь в виду, что в списках хранятся ссылки на объекты. В частности, может хранится ссылка на себя. Применительно к (x, y) = x[:] = (['a'], ['b']) имеем
Шаг 0. Вычисляется "the single resulting object" - создаются два списка a = ['a'] и b = ['b'] (имена пригодятся), и упаковываются в кортеж.
Начинаются присваивания слева направо.
Шаг 1. Первый target list - (x, y). При распаковке, x становится a, y становится b. Т.е. x и a теперь ссылаются на один и тот же объект в памяти ['a']. Аналогично, для y, b.
Шаг 2. Второй target list - x[:]. В силу предыдущего шага, это то же самое, что a[:]. Присваивание срезу меняет соответствующий список, в частности, в нашем случае меняет и его размер с 1 до 2. Первым элементом становится ссылка на объект a = ['a'], т.е. на самого себя. Вторым элементом становится ссылка на ['b'].
Разворачивая двойное присваивание, все это эквивалентно a = ['a'] a[:] = [a, ['b']]
Минимальным примером типа >>2145836 будет a = [] a.append(a)
>>2146287 >Это разные вещи. Тут магия в том, что код >(x, y) = x[:] = (['a'],['b']) >совсем не эквивалентен коду >x[:] = (['a'],['b']) >(x, y) = x >а равно и >x[:] = (['a'],['b']) >(x, y) = x[:]
Порядок другой. Эквивалентом будет (x, y) = (['a'], ['b']) x[:] = (x, y)
>>2145759 Ну инфа в шапке годная, не спорю. Но там в основном именно по изучению питона, а то что я скинул это скорее про в целом программирование, не? Я просто сам только вкатываюсь и как понимаю, просто питона недостаточно.
>>2147005 Список в целом бессмысленный, его изучать последовательно и целиком не нужно и не получится. Но определенную базу по большинству из этого ты получишь в процессе изучения и практики реальных задач.
Мне кажется или этот узкоглазый обосрется с подобными асинхронными записями в базу (вернее результат будет отличен от желаемого) Если мы через asyncio.gather запустим пару корутин, которые будут асинхронно че-то писать в базу то на самом деле эти корутины исполнятся синхронно, т.к. на уровне самой БД подобные транзакции будут лочиться
Есть список l= [1,4,3,5,2,4,1,3,4,7,3,5,52,9,6,33,8,2,3,5,9,2...] И есть словарь d= {'a':[0], 'b':[15, 3], 'c': [5]} , где значения - это индексы элементов из l Как получить словарь по структуре идентичный d, но со значениями из l? d2= {'a':[1], 'b':[33, 5], 'c': [4]}
>>2147005 > Я просто сам только вкатываюсь и как понимаю, просто питона недостаточно. Антош, выучи вначале питон + фреймворки нужные для рынка. Затем устройся на работу и учи тот стек, что требуется там. Толку от того, что выучил МонгоДБ и никак не применишь - мало. А вот если выучишь Докер перед всем остальным(типа CI\CD & PostgreSQL) может такое и очень пригодиться, в том числе и при обучении.
>>2147107 В чем то он прав. После питона, остальной синтаксис кажется хуйней, причем нечитабельной. Остальные языки нужны под конкретные задачи. Сеть - это питухон, игрухи - всякие си подобные, явы и прочее. Хули тут обсуждать. Смысл учить шарп чтобы написать инсту.
>>2147161 Что поделать. Это legacy code аж 1979 года. Зато все оптимизировано донекуда. В современном Фортране больше модульности, есть ООП. Есть поддержка параллельных вычислений.
>>2147227 С чего ты взял, что оптимизировано? Думаю диды-профессоры какие-то циркулем чертили на доске, а потом выпустили методичку. Ну а там забацали на эвм и допиливали какие-то хвосты и подставляли подпорки, чтобы оно не развалилось на более современных версиях.
>>2147250 >Походу кто-то недавно его смотрел, судя по обсуждениям выше Заведомо или это видео автор смотрел, или другой общий источник, может где-то обсуждали материал из этого видео, или это видео снято по обсуждениям.
>>2147480 >Думаю теперь такое начнут на собесах спрашивать. Долбоеб, впервые прочитавший задачку и решение на подготовленном листочке будет важно раздувать щеки и ехидно посмеиваться, когда соискатель не сможет ответить на этот идиотский вопрос. Nice "я назову тебя дурак из-за того что ты не знаешь хуйни, которую я сам узнал 15 минут назад"
>>2147489 > Весь состав нашей кафедры бьётся сейчас над тем, как можно доказать эту теорему. Если сможем, включим доказательство в программу экзамена.
Всегда так было.
На самом деле такие штуки могут показать, что ты крутишься в тематических тусовках, посвящённых платформе. Народ сталкивается с чем-то интересным и репостит, в результате все из тусовки знают. Такое своеобразное 1488, для определения свой-чужой.
>>2147149 Кстати интересная хуйня с игрой СИМС. Симс 4 питоне и там скрипты и всякие взаимодействия дико тупят и багают. ну бля, питон медленный. но ПРИКОЛ В ТОМ что предыдущая часть - СИМС 3 - написана на СИ и БЛЯДЬ ОНА ТОЖЕ ТОЧНО ТАК ЖЕ ЛАГАЕТ.
>>2147736 И какой вывод из этого следует? Приколист, блять, твои намеки детский сад. На чем там написан верхний уровень в игре поебать вообще. Думать что вызов gl функций из ассемблера будет заметно быстрее чем из питона будет только макакен или школьник. Поэтому все правильно они сделали. А лагает очевидно из-за того что код хуевый сам по себе, может там через диск каждое действие обрабатывается, чтобы мгновенное сохранение сделать, вот и лагает. Хоть на ПЛИС делай, обращение к диску быстрее не станет.
>>2147743 Зачем его ускорять, это встроенный язык в данном случае, его скорости за глаза. Ну а молотить на питоне какой-то графоний не очень идея в любом случае. Вон те же шарповики свой юнити на плюсах сделали и в хуй не дуют.
Надо сделать тайпинг следующим образом: функцию будет возвращать строго один из объектов, либо объект Citizen либо Town, как правильно это прописать в тайпинге?
Union это не то. Мы тут оперируем не классами а уже объектами
>>2147071 Спасибо. А если l у нас список списков и для каждого надо вычислить d2, мы ещё один цикл добавляем в эту часть [l for i in d[key]] или вне её?
>>2138718 (OP) Писал свои васянские реализации для таймера (отложенного исполнения асинхронной функции) и периодического таймера (одна и та же асинхронная функция должна исполняться с периодичностью в N миллисекунд). Таймер (пик1) реализовался как надо, проблем нет, но какого хрена create_interval (пик2) не пашет как надо? Он блин исполняется всего 1 раз и все, хотя там цикл while вроде как
Ждем IO - 3 секунды, больше не ставил, т.к. ideone не вытянет долгого выполнения. Видно что мой асинхронный коллбек test_func выполнился всего 1 раз а должен был "стрелять" каждые 500 мс
Я понял в чем проблема - из-за того что все обернуто в Task. Поэтому вопрос: как бля поставить коллбек на обработку ошибок в таске? С промисами это хороший тон - хуярить catch в каждый промис после then, иначе высрется uncaught error
>>2148104 >2016 А что не так? >из-за того что все обернуто в Task Из-за того, что у тебя на таску ссылка есть, без t1 исключение должно сразу отработать.
>>2148107 И зачем же await-ить t1 если он фоном в ивент-лупе уже исполняется? Только лишь чтобы поймать ошибки? Бред какой-то, для этого хендлер-коллбек просто нужен и все.
{'terminalVS': {'2021_09_02': {dlib.vector([-0.13334, 0.0858562, 0.0471418, -0.0853292, ... и т.д.
Как можно выгрузить данные на жесткий диск, чтобы потом снова собрать в словарь при следующем запуске программы?
Пробовал через ast.literal_eval, но тот выдает исключение ValueError: malformed node or string, думаю, дело в dlib.vector, который он не может спарсить.
Есть ли способ загрузить в программу без собственно-написанного парсера?
Ебнул декоратор который добавляет к корутине хендлер для ошибок. С обычным таском он работает (test1) но когда юзаю мой васянский create_interval (test2), то же самое - он тихо сдыхает. И в конце высирается ворнинг что мой хендлер который должен был обработать ошибку (тоже корутина) так и не был вызван. Странно
Вопрос по django rest. К примеру у меня есть модель Person, у нее есть поля name, position, fax_phone, personal_phone, work_phone. Что мне нужно сделать в сериализаторе или в модели, чтобы при запросе все номера были сгруппированы в отдельный объект json, как на скрине?
>>2148527 Да ну, кукбуки это одни из самих унылых книг. Имели смысл бумажные в каких-то девяностых-нулевых, но сейчас то хули, всё за пять сек можно нагуглить. У Бизлича вот недавно вышла новая книга про всякие современные интермедиейтные штуки, вот это должно быть интересно, но пока не спиздили пдфку.
>>2148529 >Имели смысл бумажные в каких-то девяностых-нулевых, но сейчас то хули, всё за пять сек можно нагуглить. Это зря, в кукбуках надо читать не чтобы решение твоих проблем найти, а чтобы узнать, какие проблемы бывают и как их решают. Очень полезно.
>>2148527 >Все остальное есть в доках. На самом деле официальный туторал от питона очень-очень хорош, не хуже большинства книг.
Разве что на английском. Но если немного с английским дружишь, то даже хорошо, заодно и язык подтянуть можно. Он там средний, не самый простой, но и не убойный.
>>2148539 Я там сразу начинаю по всем ссылками лазить и всё смотреть, лол. Времени не напасешься. В книге хоть читаешь как-то последовательно, хотя тоже паралельно бегаю в гугл и доку, но поменьше.
Есть путь до директории: /home/huipizda/hui/pizda/yadebil как я могу получить в виде отдельных строк все части этого пути: /home/ home/huipizda /home/huipizda/hui/ и т.д.?
>>2148229 Модицифируй create_interval и ты всё увидишь, > Exception 'coroutine' object is not callable тебе надо делать await coro, а не await coro(), ты ведь уже готовую корутину передаёшь в create_interval
Да, ещё использовать табы вместо пробелов это полный зашкван.
И ещё вместо такого while цикла лучше for i in itertools.count() специально для этого
>>2148229 И ещё такой момент, этот код не эквивалентет setInterval из JS.
Например если у ты вызываешь функцию с интервалом в секунду, а она работает пол секунды, причём это может быть io-bound-sleep задержка, а не cpu-bound, то реальный интервал будет в полторы.
Аналог setInterval, это если ты в цикле создаёшь новую задачу.
>>2148816 Питон по-определению чувствителен к пробелам. Стандартная рекомендация настраивать в редакторе замену таба на 4 пробела. А код с табами не совместим с кодом с пробелами.
Табы вообще отстой и не нужны, если ты только make-файлы для си не делаешь, боль она боль.
>>2148858 > код выглядел В жопу выглядел. У тебя табы и пробелы несовместимы. Если в одной строке табы, а в другой пробелы, будут проблемы. То есть тупо код не сопровождаемый из-за этого.
Никто табы не делает, пусть кто найдёт репозиторий с кодом мало-мальски большого проекта, где есть табы.
>>2148877 Долбоеб, в любом редакторе вроде пуйчарма пойдет автоматическая замена табов на пробелы Мне делать больше нехуй кроме как по 4 раза дрочить клавишу пробела во время каждого перевода?
>>2148877 >Никто табы не делает, пусть кто найдёт репозиторий с кодом мало-мальски большого проекта, где есть табы. Вся магия заключается в том, что современные IDE конвертируют табы в пробелы
>>2148879 >Мне делать больше нехуй кроме как по 4 раза дрочить клавишу пробела во время каждого перевода? Долбаёб ты. Ты просто настраиваешь редактор на автозамену, и вместо табов в коде будут пробелы.
Анончик, подскажи каким образом избавляться от вложенности ифов? Учитывая что проверяется obj['state'], а конечных состояний больше чем на схеме(штук 20). Слышал про некие машины состояний, но там вроде переход только от одного к другому. Знаю что задача часто встречается, но хз как решить
Не очень понятно, что у тебя паттерн if data not in db: ___do1() elif data in db: ___do2() else: ___do3() делает. Или лишнее, или же do1() меняет db, но тогда это стрёмная штука в плане отладки из-за внутренних скрытых состояний.
>>2148935 >>2148937 словарь не подходит >>2148943 >>2148945 Если кратко, то состояние хранится у клиента, я получая запрос смотрю состояние, и делаю ответ(do1(), do2()) # в схеме немного не правильно указал, сама функция и меняем состояние В зависимости от состояния разные ответы, ответ меняет состояние, на следующее и предыдущее. Мне говорили что тут паттерн стратегия нуже, но я что-то не понимаю как применить его. А ещё, что за полноценная машина состояний?
>>2148951 Все что тебе нужно получить это калбэк и new_state. После новый стейт присваивается а калбэк исполняется. Все. Словарь спокойно это может решить
В крайнем случае создаешь класс State где и реализуешь бизнес-логику для каждого стейта
>>2148951 Всем все подходит. Составляешь словарь states = {'state1': (do1, do2), 'state2': (do3, do4)} А потом получаешь нужную функцию по текущему стейту states[state][response in 'test']() а потом тебя увольняют за такой говнокод
>>2148965 Вот тут подробней можно, или пример похожей реализации. >>2148967 Я знаю про словари, но мне кажется что иметь глобал словарь на 30 строк не очень идея
>>2149157 Знаю перл и пхп (на уровне пофиксить или накидать что-то несложное). Планирую ещё закатиться в го и ноду, но пока душу питона до хорошего уровня, поделывая на нем некоторые проекты со скрипом.
>>2149187 >>2149191 Задачи какие дают. В основном всякий е-комерс и автоматизации вокруг него. У меня есть некоторая наработанная клиентская база, просто перекатываюсь на более актуальные технологии.
>>2149510 >в чем проблема поправить код автоматически? Анон расшарил код. Я его скачал, попробовал что-то добавить и словил ошибку, потому что у него табы вместо пробелов. Не помню, когда последний раз с таким сталкивался.
Ок, я в виме делал, набрал команду :%s/\t/(четыре пробела/cg и все эти табы заменились на пробелы, как надо, работа на секунды.
Дальше я делаю правки. Если я свои правки с пробелами вышлю ему, или у нас будет общий репозиторий, ошибку словит он, если попытается только содержательный код скоприровать, либо перепишет весь свой с табами моим, с пробелами. А в гите весь код будет показываться как мой, а не его. А когда он попытается дальше работать над кодом, использую табы, тоже будет ловить ошибки.
Потому что табы и пробелы несовместимы.
То есть всё ок, пока ты работаешь один. Но если ты работаешь не один, то начинаются очень серьёзные проблемы.
Поэтому нужны единые стандарты. А единые стандарты это пробелы, а не табы.
>>2149610 Если нужна серьезная разработка, то подключается редактор с произвольным импортом-экспортом и линтер. А если мне сниппет накидать в каком-то айпитоне или ideone, или там одноразовый скрипт, то зачем мне дрочить те пробелы?
А вообще, надо сделать какой-то опциональный normal mode, что позволит юзать скобки. Ну реально же хуйня с этими отступами.
>>2149613 Ты пытаешься придумывать проблемы на пустом месте, а дальше накручивать какие-то оболочки для решения.
Есть де-факто стандарт, это использовать пробелы. По 4 штуки, последнее уже вроде в pep8 прописано.
Всё, нет проблем. Все так работают, вот найди хоть один большой проект, где табы используются. Нет, обязательно надо какие-то надуманные преимущества придумать и их проталкивать.
Табы и не в питоне скорее исключение.
Любой продвинутый редактор тебе автоматом автоотступы делает, поэтому "дрочить по пробелу" необходимости нет.
>>2149924 Берешь любой и всё. Как выучишь основы, дальше делаешь что хочешь, параллельно смотря гитхаб с примерами, примеры либ в доках и т.д. Ты больше времени потеряешь, если будешь искать идеальную обучалку. По моим ощущениям книга лучше, причем чем толще. Ты можешь скипнуть материал какой-то, а потом вернуться и почитать подробности, если потребуется. Видео, если быстро хочется вкатиться и без подробностей/предельных случаев и т.д.
>>2149924 >Вот первая ссылка в гугле - https://www.learnpython.org/ - она норм? Посмотрел, очень даже норм для начала. Как раз чтобы первое впечатление было и руку набить. Советовать конкретно сложно, у всех разные мозги и разный бекграунд.
>>2149937 >>2149924 Минус ссылки только в том, что там по старому питону сделано, форматирование строк бросается в глаза, оно там из второго питона, %-стиль.
Возможно ещё что-нибудь такое есть.
Но сам подход, чтобы сначала в оболочке разобраться, очень-очень правильный, это такая сильная фича питона, что возможность есть. Очень быстро понимать начинаешь.
Объявляем словарь "x" и список "y" Через цикл for и if выполняем проверку нахождения (ключа или элемента????) в словаре "x". Если (ключа или элемента????) из списка "y" есть в словаре "x", то мы его передаем в ключ в переменную "z" После выводим ключ и значение словаря.
>>2149949 >Если (ключа или элемента????) из списка "y" есть в словаре "x", > if i in x: для словаря означает проверку, что i есть среди ключей словаря.
Ты тоже запусти питоновскую оболочку и руками команды понабивай. Вот создай там словарь и проверяй условия вроде 'Bob' in x, "Pasha' in x и т.п.. Доки, конечно, параллельно читай.
Но в любом случае запусти консоль интерпретатора и в ней играй. На твоём уровне очень полезно.
>>2150099 И кстати, люди тоже льют решения, я чекнул по поиску, ну и что тут такого, разные кушки льют, мб даже лично для себя. Я вот плотно засел за изучение гита и понял, что можно было прокачать гит тупо на катах :3, но в целом пох.
>>2150102 Ты просто не понимаешь смысл таких сайтов. Выкладывание решений на гитхаб это что-то вроде повесить школьную контрольную на стену в рамочку. Это не достижение, просто проверка твоих знаний.
>>2150119 Мимо анон Ну можно так похвастать, что умеешь решать сложные алгоритмические задачки, и решения свои показать. В принципе лучше, чем ничего, а дополнительных затрат никаких.
>>2150125 Всё-таки задачки с алгоритмами получше, чем туду-листы. Конечно, если там не easy и не одны медиумы, а hard тоже хватает.
Ну реально, задачки уровня хард это большой такой фан в том числе для взрослых программистов. Если ты это любишь, это хорошо о тебе говорит. А если ещё и оформлена хорошо, то совсем здорово.
А вот ту-ду лист, расрашенный публично это да, тебе нечего показать и ты грузишь мир мусором.
>>2150137 Проблема в том, что ты эти решения можешь посмотреть и скопипастить, это не имеет смысла. А вот на собесе тебе дают рандомную задачку и там уже видно, знаешь ты что-то или нет. Поэтому смысл сайтов в том чтобы погонять задачки и набрать практики в их решении, подтянуть какие-то области, в которых ты плаваешь.
>>2150122 >>2150137 >Ну можно так похвастать, что умеешь решать сложные алгоритмические задачки, и решения свои показать > Если ты это любишь, это хорошо о тебе говорит. А если ещё и оформлена хорошо, то совсем здорово.
Этот код пиздится за пару кликов, так как на большинстве платформ открытый банк решений. Ну и к слову, джуну все равно ничего серьезного не доверят, да и на 95% проектов дрочь сложных алгоритмов нахуй не нужен. Гораздо лучше иметь там какой-нибудь небольшой проект, где ты сам сделал пару сервисов по ковырянию каких-нибудь сторонних апишек и вывода данных для пользователя, настроил для них докер, бд, сделал CI/CD и написал тесты.
>>2150144 >Проблема в том, что ты эти решения можешь посмотреть и скопипастить, это не имеет смысла. Вряд ли кто будет решение принимать по гитхабу. Само собой спросят.
Но то, что у тебя такие увлечения, как олимпиадные задачки, говорит о тебе очень хорошо и вообще привлекает внимание. Потому что значит ты внутри программист. Может без опыта и прикладных скиллов, но программист. По крайней мере пока эта тема не заезжена. Всё-таки там мало кто делает, а вот ту-ду листы у всех.
Если на это пойдёт мода, то смысл, очевидно, потеряется. Потому что и копировать будут, и выделиться сложно.
>>2150147 >Ну и к слову, джуну все равно ничего серьезного не доверят, да и на 95% проектов дрочь сложных алгоритмов нахуй не нужен. Сеньёру тоже алгоритмы не нужны, сеньёру надо уметь большие проекты тянуть. Если ты в юниорстве не можешь сложные задачи решать, то не сможешь и в сеньёрстве.
Умение решать сложные олимпиадные задачки показывает, что у тебя есть мозги. А если есть мозги, то значит всему сможешь научиться. Поэтому олимпиадников загрегают топ компании очень активно.
А вот CI/CD это уже прикладные инженерные вещи. Им можно научиться на месте по необходимости. Причём как раз джуну это никогда не доверят огранизовывать, потому что здесь надо понимать, как работают большие проекты, а у джуна опыта работы на больших проектах нет по определению.
>>2150150 > Если на это пойдёт мода, то смысл, очевидно, потеряется. Потому что и копировать будут, и выделиться сложно. Так в том-то и дело, что давно пошла. Может ты судишь по рунету, где нулевые вкатуны бегают с сертификатами цыганских курсов, лол.
>>2150154 Настраивать джун конечно ничего не будет, но это показывает его самостоятельность, что очень важно, никому не нужен дурачок, который не сможет решать проблемы, а будет бегать к мидлосеньорам что бы каждый пук разжовывали.
>Умение решать сложные олимпиадные задачки показывает, что у тебя есть мозги Нет, это показывает дрочь олимпиадных задачек, причем иногда в ущерб качеству кода. Компановка кода, его поддерживаемость, этому нихуя не учат олимпиадников. Я сам в вузике ходил в олимпиадный кружок. Было нормальным называть переменные в 1-2 буквы, не знать ООП, делать грязные хаки, которые делали код нечитаемым (потому что его второй раз никто читать не будет) и все это ради пары милисекунд перфоманса.
>Поэтому олимпиадников загрегают топ компании очень активно. Потому что у них такая схема найма персонала. Сначала набираются олимпиадники и прочие алгоритмодрочеры. Работают год и проходят перфоманс ревью и прочие KPI, если качество кода оставляет желать лучшего, то человек идет нахуй. Так можно получить обучаемых инженеров с математической подготовкой для сложных проектов. Проблема в том, что на это нужно куча бабла, что бы содержать челиков, которые еще сидят в инкубаторе и их судьба о дальнейшем устройстве не решена. Когда очередная среднеконторка начинает думать что она гугл, то процесс найма очень затягивается, так как они хотят рокстара, который сразу бы ебошил годный код, а человек даже функции в нормальный класс скомпоновать не может, а задач под такую алгоритмическую базу у компании нет.
>>2150182 >но это показывает его самостоятельность Но ты же понимаешь, что тут тоже можно склонировать чужой проект. Более того, скорее большинство именно клонирует. В таких вещах принято тупо копипастить чужие решения, не понимая, что там зачем, и править какие-то параметры под себя.
Это даже не мошенничество, так просто люди "учатся", или сами искренне считают, что учатся.
>>2150204 Поэтому нужно разбирать проект и спрашивать что, как и зачем кандидат так сделал. А если говорить про то, как все ИРЛ происходит, то гитхаб вообще никто не смотрит.
>>2138718 (OP) программисты, что не так в этом коде? x=3435+73-1 bx='' while x>0: bx+= str(x%7) x=x//7 bx[::-1] bx=int(bx) for i in range (1,1000): p=bx-i p=str(p) if p.count('6') == 12: print(i)
>>2150218 x=343(в степени 5)+7(в степени 3)-1 bx='' while x>0: bx+= str(x%7) x=x//7 bx[::-1] bx=int(bx) for i in range (1,1000): p=bx-i p=str(p) if p.count('6') == 12: print(i)
>>2150229 Потому что в один момент ты забудешь поставить двоеточие и начнешь срать в тред с просьбой разобраться что у тебя с кодом не так, ведь ты все скопировал с учебника
>>2150257 У тебя получилось int в 7-ричной системе. Но int похер, он воспринимает его все равно как 10-ичное. Ты вычитаешь из него единицы, какой результат по-твоему получится?
>>2150263 Вторая посказка, считай 90% решения. Задача сводится к тому, чтобы найти максимальное число из 15 7-ми ричных цифр, в котором 12 цифр 6. Очевидно, что это число 666_666_666_666_555
>>2150380 сам придумай себе задачки, идеальным вариантом задачи на ооп будет игра эрпоге там же классы как раз. вот выдумай себе классов кучу и ебошь подклассы хуйклассы и тп.
>>2150380 Конечно, я вообще больше по книгам, но по этой теме и питону что-то не густо, так что решил глянуть такой курсец. Про задачки не знаю. Я самостоятельно практикую, задачки разве что всякие алгоритмические балуюсь.
Уже прошло 7 месяцев с изучения языка программирования Python
За это время я - 1 - Написал 2ch на джанго, сейчас пишу аналитику инстаграма. 2 - Сделал бота для изучения английского, бот парсит инфу с сайтов, кучу, выдает, там не просто пару возможностей, кучу всяких функций. ( Телега - аиограмм ) 3 - Подтянул sql запросы, могу написать простенькие запросы 4 - Поднял немного знания как работает инет, что такое HTTP,HTTPS,POST,DELETE и т.д 5 - Изучаю сейчас с# в планах сделать игрушку для андроида 6 - Написал небольшой сервис на Golang 7 - Ну и мы учили с++, там чисто прям фигню знаю 8 - Немного HTMl/CSS, особо не верстал, по мелким вещам. 9 - Jira,Postman 10 - знаю что такое тест кейс, баг репорт, чек лист, уровни тестирования, виды тестирования и по мелким вещам. И т.д по мелким вещам.
Почему я не могу найти работу, даже на джун в удаленку брать не хотят, стажировку проходить я не могу, хотя была возможность, но я ебал 1+ месяц стажировки. Мне ещё рано? Нормально ли в таком этапе уже искать работу, или стоит подучиться больше, сделать ещё пару пет проектов?
>>2150690 Да мне в кайф быть многосторонним, везде что-то делать. Я думаю тяну на Python джуна, но меня даже на собесы не зовут, ну и как мне показывать свои способности если даже шанса не дают. Говорят я им не подхожу, хотя мой стек подходит +- и я быстро обучаюсь
Ок, я написал приложение с фронтендом из Реакт и бэкендом Фастапи. В приложении есть возможность загружать файлы и описание к ним, которое хранится в ДБ. Как теперь все это запилить на сервер?
Сап аноны, есть программа, которая на протяжении нескольких часов проводит монотонные математические вычисления над массивами. Посмотрел нагрузку, оказалось, что она загружает цп на 90%, а видеокарты nvidia с cuda на 20%. Можно ли сделать так, чтобы видеокарты больше задействовались?