Это копия, сохраненная 8 декабря 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2124389 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
>Есть где гайды быстро посмотреть что поменялось и в целом освежить знания? Только не надо официальный туториал или док, они пиздец какие водянистые. Просто без примеров короткое описание
Вообще тебе нужны именно официальные туториалы. Для всего достойного софта есть разделы "What's new in ..." где описываются изменения.
Вот про джанго, якорь на обратно несовместимое, выпиленное:
https://docs.djangoproject.com/en/3.2/releases/3.0/#backwards-incompatible-changes-in-3-0
https://ideone.com/R6qzl8
Как сделать это же, но через zip? Вероятно даже нужно использовать сразу 2 zip.
Да, нужны именно вложенные словари. Да, именно внутри списка как его элементы (отдельные вложенные словари).
Хрена. А у меня почему-то zip отказывался больше двух аргументов принимать когда я пробовал. Наверное что-то не так делал.
Но зачем ты нахуевертил три фора, там одного достаточно, индексы же одинаковые.
Хз. Я же только учусь, сделал, работает, задачку закрыл и дальше пошел.
Если они будут не одинаковы по размеру, то хуита получится в любом случае. Я же говорю - глупая задачка.
На сносном уровне владею:
стандартной библиотекой
библиотеки requests, bs4, selenium, pandas, nltk, gensim
git'ом, virtualenv
Имею представление об SQL
Сейчас учу SQLAlchemy
В скором времени собираюсь взяться за numpy, tensorflow, opencv, jupyter notebooks
Нужен ли мне докер? Нужно ли дрочить командную строку линукса? Хватит ли мне питона или нужно учить еще один язык (когда-то дрочил джаву, но не продвинулся дальше синтаксиса)?
itertools.zip_longest
Почти уверен, что ты соснешь хуйца. ML -- это такая хайповая область, а у тебя, наверное, даже корочки приличного ВУЗа нет. Вот скажи, зачем брать тебя, если каждый год выпускают тысячи задротов с топ-вузов, которые тоже мечтают вкатится в МАШИН ЛЕНИНГ и никаких проблем ни с погроммированием, ни с матанам у них не было еще до поступления?
Анон, ты очень злой и токсичный.
То есть по сути ты прав, конечно, но ты всё равно злой и токсичный.
>>38792
> requests, bs4, selenium, учу SQLAlchemy
это прямо типичный стек для "не хочу веб, хочу ML"
Мне кажется, что надо просто открывать книжки и курсы по ML, AI и т.п. и изучать их, если видишь, что что-то активно используется, вроде numpy, то может сначала разобраться с этими пакетами.
Docker скорее всего если нужен, то максимум на уровне пользователя, чтобы поднять локально какую-нибудь готовую сборку какого-нибудь готового сервиса.
Пока не смотрится, что ты хочешь изучать ML. Смотрится, что тебе нравится слово ML, но ты боишься в него влезать.
Но всюду втюхивают эти ваши контекстные менеджеры. Так что лучше - закрывать-открывать, или копить и высрать за раз менеджером?
Как рекомендуют лучшие питоноводы?
Понятно, что речь не идет о случаях, когда там гигабайты и копить смысла нет.
Стек парсеромакака. Они почему-то сейчас мутируют в телеграмоботомакак, вообще бессмысленная хуйня какая-то. Видимо на каких-то курсах втюхивают.
Если данные генерируются порциями, то просто пишешь каждую порцию. Потеряются только еще не записанные - одна порция, хз как это правильно назвать.
>Стек парсеромакака
Похоже на правду, тем более там ещё пакеты для анализа "естественных языков".
Может ему нужно направление, где обучающихся ботов писать. Тогда даже разумный стек.
Слишком не моё напревление, чтобы тут что-то писать на эту тему.
Длительный процесс можно запускать под контекстным менеджером
with open("file.txt", "w") as file:
____do_long_running_process(file)
Вопрос в том, открывать ли файлы и писать последовательно, или собирать и в конце всё писать.
Каждую строчку дописывать через контекстный менеджер это пидорство какое-то, нормальные люди так не делают.
А как еще писать поток данных к примеру с сокета? Просто постоянно дергаешь файл или пишешь в какой-нибудь буфер и сгружаешь с него.
> А как еще
Открываешь файл и используешь хендл по необходимости. В конце закрываешь. Можно флашить, если там что-то такое критическое. Везде так делают.
Ты выдумываешь проблемы. Вот условный пример демонстрационный, на картинке.
Открываешь контекстный менеджер, внутри получаешь значения, пишешь их в файл. Если вдруг словишь исключение, контекстный менеджер закроет файл и данные потеряны не будут.
Ну так да, хотя мне и не нравится лишний уровень вложенности.
А делать функцию и прокидывать туда хендл менеджера как-то убого выглядит.
Контекстные менеджеры это самый надёжный способ для контроля ресурсов. Чтобы ты их закрывал корректно.
Ок, допустим ты делаешь свой класс, где в конструкторе открываешь файл и ещё что-нибудь делаешь, а реальная работа в других методах.
Тогда всё равно принято делать метод условно run(), который контекстный менеджер, и в коде
my_class = MyClass()
with my_class.run():
____my_class.do_job()
в run() ты открываешь какие-нибудь ресурсы, которые сохраняются в инстансе класса. А по окончании или в случае исключения надёжно всё отлавливаешь и корректно закрываешь.
Если ты делаешь настоящее приложение с конкурентной архитектурой, то это уже не очень работает, там свои подходы. Но это когда многопоточка или asyncio с большим количеством параллельных задач.
Ну вот тебе конкретная задача, для которой и возник этот вопрос.
Скрипт для обновления стоков по api. Надо писать списки товаров для отчета. https://ideone.com/n8Hb9P
Отдельно открывать и настраивать всю эту хуйню и потом закрывать было бы коряво, так что я решил так. Но оно пишется только в конце, что имеет минусы. Вот я и задумался, как зделоть красиво и эффективно.
В твоём случае по логике может быть очень много разных файлов. Это другая история, чем один большой файл.
Вопрос по логике в том, как можно определить, что данные можно записывать, потому что ведь reports скорее всего может менять любую запись с любым title в произвольный момент. Скажем сначала создать и заполнить, а через пол часа сделать апдейт какой-нибудь.
Фактически ты делаешь свою БД типа ключ-значение. Возможно стоит подключить настоящую БД.
Есть вариант, что накостылять своё решение, когда ты делаешь MyDB, функцию update_record(title, vals), и раз в сколько-то операций дампить несохранённые данные.
Это скорее на случай, когда у тебя скрип работает постоянно, но ты всё-таки хочешь видеть сохранённые данные оттуда в виде файлов.
Но если ты уверен, что данные в records не перезаписываются, то на самом деле проще просто тупо дампить, как только соответствующая item готова.
Нет, это одноразовый процесс, прокручивающий все продукты по очереди, просто в процессе копит строчки отчетов, можно и сразу писать.
Ну честно не вижу проблемы ни в том, чтобы сразу писать, ни в том, чтобы сначала посчитать, а потом писать. По-моему это должно быть примерно одно и то же. Лишняя работа и потеря времени только в том случае, если тебе надо перезаписывать файлы.
Если у тебя скрипт во время расчётов может вылететь, можно расчётную часть обернуть в try-except, а в finally уже дампить reports.
Что почитать про паттерны и архитектуру приложений на питоне? А про дистрибьютед системы? Чтобы селари, эскьюэльалхимию и рэбит ещё объяснили. Только желательно современное?
Ну, мне действительно кажется это интересным. Впрочем, я понимаю, что это сложно, поэтому хочу попасть хоть куда-то (кроме веба).
>Вот скажи, зачем брать тебя, если каждый год выпускают тысячи задротов с топ-вузов, которые тоже мечтают вкатится в МАШИН ЛЕНИНГ и никаких проблем ни с погроммированием, ни с матанам у них не было еще до поступления?
Потому что сфера пока еще растет, и я надеюсь, что задротов не хватает. Ну и я собирался пойти в магу на это все дело, но видел вакансии, где приличный вуз не требуется, поэтому думал попробовать.
>>38948
Спасибо, анон!
>Мне кажется, что надо просто открывать книжки и курсы по ML, AI и т.п. и изучать их, если видишь, что что-то активно используется, вроде numpy, то может сначала разобраться с этими пакетами.
Да, это понятное дело. Я именно про какие-то специфичные библиотеки или технологии, которые нужны в мл.
>>38948
>>38956
Помогал знакомому с некоторыми проектами, тогда и разобрался с этими библиотеками.
>>38972
>пакеты для анализа "естественных языков"
Я учился просто на прикладной лингвистике (это бессмысленная херня) и там нам давали работать с этими пакетами.
Я так-то думал именно в NLP пойти.
Кассиром бы за один день вкатился.
sum- это ок, проблема, в том, что генерация всех комбинаций - это эксмонента, 101010...*10 а нужно придумать, как за полином высчитать все исходы такого выражения
Если у тебя только целые числа от 1 до 10, то у тебя всегда будут повторяющиеся последовательности внутри всех комбинаций. Это можно вывести в формулу комбинаторную.
Плюс для тебя комбинация 1+2+3+...+10 и 10+9+8+...1 одинаковые, т.е. инвертируемые, т.е. тебе половину не нужно чистать, а достаточно на 2 умножить.
Да это я учёл для выражений с плюсом и умножением, но в некоторых могут быть минусы, а это уже не коммутативно
>>39576
Там могут быть любые дешки d4+d8+d9 и тд
Это задача одна из двух в школу программирования headhunter, причём первая была изи на бинпоиск + жадный алгоритм, а тут у меня просто нет идей. И это помимо того, что мне пришлось искать в сети инфиксный калькулятор и модифицировать его
Полная версия задачи в пикриле
Есть тестовые примеры? Из условия не очень ясно, как интерпретировать, например, выражение d2 + d2. Бросается ли одна кость с n = 2 гранями и результат броска становится одним значением d2 для обоих слагаемых, или кость бросается два раза и оба операнда d2 независимы?
Увидел твои примеры. Если dn - одно и то же значение (для фиксированного n), то как-то так:
https://ideone.com/sKPki6
Твой пример во-первых считает некорректно, когда значения d одинаковые, во-вторых некорректно, потому что ты не учитываешь что d может быть равно N, и в третьих оно считает очень долго, ты делаешь полный перебор.
У них в условии сказано, что в dn значение n может быть 100000, достаточно записать выражение
d99999 > d99999
и у тебя перебор на 10 миллиардов значений, что очень долго считать. Хотя это выражение вычисляется как 0, 1 - равновероятно по 0.5
Ограничений в условии в любом случае недостаточно
будет в строке
d100000 * d100000
и на выходе должно быть на уровне 9 миллиардов строк, все возможные непростые числа и маленькие простые.
Так написано же, что это решение в предположении, что для каждого n dn определяется одним броском, что скорее всего и имеется в виду в условии, иначе будет как >>39791.
Кроме перебора тут ничего в общем случае не получится. Даже если ограничиться только линейными выражениями c1dn1 + c2dn2 + ... + ck*dnk, то подсчет числа всех возможных комбинаций значений dn-ов для заданного значения выражения сводится к подсчету числа целых точек в (k-1)-мерном многограннике, что нетривиально. Если разрешить умножения dn-ов на себя и добавить операцию <, то это уже поиск всех целых точек в нелинейном объекте. Делать это не перебором - явно не задача для вступительных экзаменов на онлайн курсы.
В любом случае сложноватая для вступительных в школу. И ещё слишком расплывчатая.
Можно решать методом монте-карло, то есть сделать N разных попыток и получить результат. На прикидку интуитивно, без формул на доверительные интервалы из матстатистики, на уровне 100 тысяч попыток, чтобы получить точность в 0.01%, как они просят.
знаю, "пошел нахуй, вкатыш"
Я яндекс практикусе курс по алгосам сейчас прохожу, он на факультете питона и мне норм, так что могу практикум советовать, но там упор на самообразование большой, сам материал хороший и можно вопросы задавать по ходу дела в чате. Если в практикуме реально ебашить, то польза будет + дедлайны будут подстёгивать учится.
мимо сдавший эту ебучую задачу из школы headhunter >>39605
Этот топик не для вкатышей, для вкатышей есть другие два.
Ты пишешь как все, хочу работать в IT, при этот тебе как будто пофигу, каким направлением вообще заниматься, как будто они все одинаковые.
> там упор на самообразование большой
> можно вопросы задавать по ходу дела в чате
Отзыв, это не самообразование, это издевательство.
>>39879
Анончик, я же сразу написал, что прошел вводный по питону, и хочу именно его, мне интересен именно бэкенд. Поэтому и зашел в тред, посвященный именно питону
> там упор на самообразование большой
> можно вопросы задавать по ходу дела в чате
Отзыв, это не самообразование, это издевательство.
>>39879
Анончик, я же сразу написал, что прошел вводный по питону, и хочу именно его, мне интересен именно бэкенд. Поэтому и зашел в тред, посвященный именно питону
Ну мне просто зашло то, как там подан материал, ну когда я по спрашивал, мне отвечали, да и остальным, я могу скрины из слака покидать, если хочешь, в гугл ни разу никого не посылали точно
Возможно не шибко практичный вопрос, но как в питоне привязать к объекту функцию в качестве метода? Обычная привязка как на скрине рузльтатов не дала
Функцию можно, но не метод, методу же нужен self, как и написано в твоей ошибке, тут нельзя как в js жонглировать контекстом вызова
Ну ничего себе приколы
https://ideone.com/jJq0q7
На пикче >>39916 было написано function method а не bound method. Надо посмотреть в доках про bound method
Спасибо. Чел рассказывает на расслабоне, лол. Непривычно.
Ну собственно при создании инстанса он связывается с функциями-аттрибутами класа и получаеся метод, это и есть тот самый binding.
Тут мы делаем его вручную позже.
Покидай пожалуйста. Как вообще в целом ощущения от учебы? Чувствуешь, что после обучения сможешь пойти работать куда-то?
Ну я-то уже работал, я просто с фронта на сервер хочу уйти и это курс я взял для собеседований, где алгоритмы спрашивают. А так я хз, если всё делать, то думаю да, но вообще, курсы - это такая штука, если тебе нужны какие-то рамки, дедлайны, то это норм, если ты достаточно самоорганизованный, чтобы учиться по книгам + ютубу, то курсы не нужны.
>>39916
>тут нельзя как в js жонглировать контекстом вызова
Контекст можно отправить через лямбду.
https://ideone.com/kjqq3e
Это замыкание.
Спасибо, анончик, можешь от себя посоветовать? Не хочу ограничиваться одним яндексом
Лично я в нетологии учился, было норм, ещё в отусе, но там дорого сейчас пиздец и loftschool ещё норм. Но это всё были frontend курсы.
Спасибо за помощь, правда
Создатель выглядит как бабажопа с семочками
Лол, яндексо-холопы опять обосрались на ровном месте. Прохожу курсы на Степике, в гугл нужно лезть экстремально редко, только если сам уж тупишь или для задач со звездочкой.
Прохожу тут курсики в Хекслете, мне нравится, все понятно и не так тупо, как в других всяких туториалах. Но вот я нихера не могу разобраться в их редакторе. Ну и вообще я в этом Питоновском шелле не очень разбираюсь.
Вот во-первых, как понять, че там не работет? Типа он запускает тесты и то, что написано после ассерт - это то, что он должен получить? Типа он должен был получить фолс, а у меня вывело тру?
Как вообще понять, как работает эта функция встроенная гет_квадрант? Типа там в тесте точка на оси лежит, ну и что в таком случае возвращает их гет квадрант? Как вот вообще это отлаживать или типа того? Я же не могу у себя это запустить на компьютере, потому что там импортируются какие-то функции их, которые я не знаю как устроены. А тут в терминале мне нихера не понятно, если честно. Я просто пишу у них в терминал "python3", запускается шелл, ну или как эта штука называется и че потом? Как мне это всё там запустить? Я просто копирую весь код и вставляю туда? Но потом чет нихрена не работает. Я пишу после этого типа "print(че-то там)", он пишет, что синтаксическая ошибка.
Или я вообще просто где-то в коде обосрался? Раздражает блин ошибки искать. Задания простые, но я наверняка обсираюсь в какой-то мелкой хуйне синтаксической и по полдня не могу её найти. Бывает какие-то алгоритмы поиска ошибок? А то я на каждом таком говнозадании застреваю очень надолго, хотя решаю в принципе сразу.
Какие конкретно курсы проходишь? От Института бионформатики в гугл лезть не нужно только потому, что там в комментах уже слазили и вылили всю боль.
Но курсы у них все равно годные.
Я прям базовые прохожу
https://stepik.org/course/68343/info
https://stepik.org/course/58852/info
Вот этот подход "если что - идите в гугл" я видел уже в ХТМЛ Академии. Говенный подход. Ты или всю необходимую теорию человеку давай или не берись курсы делать.
Люди делают курсы, некоторые даже берут за них деньги, а переписать общедоступную теорию своими словами - им лень. Это колхоз. Ну в случае с яндексом это колхоз, в котором сараи выкрашены в желтый цвет.
Ну это не самый плохой подход. Просто не все понимают, что нужно не только задачки решать, но и что-то полезное делать. Хотя бы парсер написать для каких-то своих нужд. Тупо чтобы закрепить навык. Иначе все впустую пройдет.
На опенеду, кстати, есть тоже курс для начинающих от ВШЭ. Там порой проскакивают довольно тонкие вещи, которые не упоминаются в других местах. https://openedu.ru/course/hse/PYTHON/
По-моему, можно импортнуть, повесить какой-то глобальный хендлер и запустить импортнутый код на выполнение.
Это понятно, как же по-другому. Хотел просто реакт использовать как шаблонизатор и из-за стейтов.
Самое основное использование — ленивая подрузка данных, чтобы не плодить методы get_name_from_db(), а просто написать user.name и все. Значительно упрощает интерфейс.
>>41241
Инкапсуляцию блять чего?
>>41244
С помощью проперти можно валидировать данные у сеттера? Ты себя слышишь?
>>41051
А в чем проблема? Рякт в обычный джс транслируется. Обычный джс спокойно отправляется вместе с хтмлкой.
Братан, "вся теория своими словами" это пара тысяч страниц. Никто такой хуйней заниматься не будет, да и ты охуеешь это читать. Привыкай, на работе вообще радоваться будешь, когда окажется, что документацию писали не полоумные дебилы с параличом, а уж если не просто перечислены все методы, а еще и описаны что в них нужно пихать с простейшим описанием того, что после этого произойдёт — будешь писать кипяточком от счастья. А если ты не смог осилить инфу из гугла, которая объяснена максимально подробно тысячи и десятки тысяч раз, то у тебя айкью двузначный и в айти делать тебе нечего.
Хуита. Если ты пишешь курсы - пиши перед задачками теорию. Не можешь - не пиши.
А то что "на работе говно будет - привыкай" это вообще пушка. Ровняться надо на лучшее, а не объяснять косяки уебанов из хуяндекса "мировой практикой".
Привычно обоссал пиар-менеджера путинской копро-корпорации.
> Хуита. Если ты пишешь курсы - пиши перед задачками теорию. Не можешь - не пиши.
Там пишут, я смотрел по диагонали когда-то. Просто довольно сжато и не углубляясь в подробности. А хули ты хотел — курсы для гоев. Неважно, платные они или нет — если ты решил вкатываться по курсам и не хуярить самостоятельно, то ты уже проиграл.
> А то что "на работе говно будет - привыкай" это вообще пушка. Ровняться надо на лучшее, а не объяснять косяки уебанов из хуяндекса "мировой практикой".
Максимально формальное, полное и подробное изложение теории это документация в связке со стандартом языка. Все остальное это упрощения в том или ином виде.
> Привычно обоссал пиар-менеджера путинской копро-корпорации.
Но ты забыл снять штаны(((
Как мне закинуть асинхронный коллбек для некого вызова? Вот есть некая async-функция, как настроить для нее коллбек, который будет асинхронно "стрелять" по ее завершении? В жс это делается нативно через цепочки промисов:
Promise.resolve(value).then( (result) => console.log(result) )
Цепочка в then не будет исполняться мгновенно, это выстрелит в тот момент когда промис будет выполнен и основной код тоже
Создаёшь задачу или берешь связанную Future и делаешь add_done_callback
Future это аналог промиса в JS, Task чуть более сложная штука поверх промиса
>С помощью проперти можно валидировать данные у сеттера? Ты себя слышишь?
Да. C помощью сеттера у проперти ты можешь валидировать данные при простом присваивание.
@x.setter
def x(self, value)
jopa.x = 10
>А в чем проблема? Рякт в обычный джс транслируется. Обычный джс спокойно отправляется вместе с хтмлкой.
А ссылки мне как сделать? React может содержать только ссылки из react-router, я не смогу сделать ссылку с помощью django template. Так как react и будет рендерить, а не django. И того получается, что у меня ссылки будут не нажимные или придется все приложение делать SPA.
обычно по описанию ошибки в пучарме или юпитере понятно почему она произошла. но не всегда. обычно.
а так поиск ошибок это самое сложное, гугление, искание.
густокашин ведущий. прикольный чел кстати, нормально объясняет. правда он задрот, наверное поэтому там в курсе и есть токие вещи. любит он изьебнутся.
>>40724
Я видел курсы яндекса по анализу данных.
это вообще пиздец.
там короче прост окно в браузере и децл текста. прочитал текст делаешь задание. в случае ошибки выдается просто типа - ошибка. и ебись как хочешь. причем ошибка может быть ебовой типа ты указал не тот путь к файлу, при том что код выдает верный результат по факту, но ошибка все равно пишется. то есть путь к файлу по сути - мусор, который не влияет на работу. просто пиздец. в любой непонятной ситуации предлагается писать в поддержку.
Ну на компе-то понятно, но тут какие-то тесты, не понятно что пишут. Но вообще я разобрался. Просто писал принты внутри функции и снаружи и запускал файл из тамошнего терминала. Ну в общем как на пека. Не знаю, чего я до этого не додумался раньше.
Асинхронная операция начинает выполняться в момент когда делаешь create_task?
И что если происходит эксепшн в момент его исполнения? Как ловить?
>Сеттер и геттер это разные вещи, если что. Так что я все еще не понимаю как у тебя геттер влияет на сеттер
Чел... декоратор setter это часть декоратора property. Сделать его просто так без проперти не получится.
В create_task задача закидывается в шедулер и потом когда нибудь выполнится при освобождении контекста. Если вылезает ошибка, то она падает и пишет в логи не прерывая основной поток исполнения.
Есть датафрейм вида
a b c d f
0 0 1 0 0 1
1 1 0 0 1 0
2 0 1 0 0 1
3 0 1 0 0 1
4 1 0 0 1 0
5 1 0 0 1 0
Ответ: b, f, 3
Как можно максимальное число пар вхождений посчитать? Не могу сообразить.
Че блять?
Задача на матрицы, но ты даже условие не можешь нормально написать.
А тут зависит от того какие ты логерры, если ты про стандартные в std, то там простоя процессора нет и от синхронности ты не избавишься
Есть список названий ['a','b','c'] и список позиций этих названий [0,0,0,1,0,2,0,0,1]
Как из них получить объединенный список вида: ['a','a','a','b','a','c','a','a','b'] ?
Двойным циклом прогнать? Или есть решения изящнее?
Да расставлял отношения
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 делают
они блядь охуели что ли? они за эти бабки потом на работу хоть устраивают?
> 3:14:50
Ты ёбу дал? Местным порриджам едва хватает аттеншен спана на видосики из тиктока, а ты тут ёбаную войну и мир притащил.
Нихуя, спасибо!
С каким же удовольствием я его лекции по алгоритмам смотрел. Жаль, что мне в МФТИ информатику преподавали люди совсем не такого уровня
А зачем это вообще смотреть? Обычное инттервью с вопросами ниочем. Его опыт в любом случае будет отличаться от опыта котррый получет анон. А каких-то интересных вещей по кодингу от не сказал.
Дудёвщина, которая пизжена из каких-то западных аналогов. Со всеми надо зделоть интервью.
В этом видосе нет ничего полезного, зачем мне убивать 3 часа на чьи-то истории?
Это мои высеры.
Если мне хочется посмотреть что-то интересное, то это не интервью. Тут сплошные шаблонные вопросы не применимые ко мне.
Если я хочу посмотреть что-то полезное для кодинга, то я иду в англоязычный сегмент сети и смотрю/читаю что-то по нужной теме.
Если бы ты поинтересовался, что это за человек, то вопросов, почему интервью с ним постят здесь, не возникало бы.
Постили бы ссылки на его обучающие видосы или отзывы о них - вопросов не возникало бы.
>Если бы ты поинтересовался, что это за человек,
И что за человек? Не Гуидо даже. Не создатель чего-то выдающегося.
Просто препод с физтеха, чьи лекции выложили на ютуб. Курсы средне-нормальные, но не уникальные и не выдающиеся. Просто нормальные курсы, потому что физтехом сделаны под физтех, а не какое-то говно он необразованных вкатунов для необразованных вкатунов.
Попробовал смотреть, там всё про то, как автор дошёл до жизни такой, начиная с самого детства. Но мне зачем все эти мемуары? Мне это не интересно. Лучше бы о том поговорили, как учиться чему-нибудь, чем физтех и образование там в ИТ отличается от васянского обучения. Это хотя бы имело бы смысл смотреть.
Не душни, плиз.
Менеджер яндекса - таблетки, срыг, спок. Приступай.
Необязательно нейросеть.
try/exept
Я их боюсь использовать до сих пор, этот их ask forgiveness для меня дикость. Что делоть?
>2143039
>Я их боюсь использовать до сих пор, этот их ask forgiveness для меня дикость. Что делоть?
Переходить на Go. Там все такие. В питоне без исключений никуда вообще.
Не, серьезно. Как вкатиться в всякие эксепшены, ООП и прочие тесты, если я не работаю в команде? Чтобы хуярить всё это налево-направо, как настоящий ДЕВЕЛОПЕР.
Просто берёшь доку и изучаешь. Эксепшены это совсем база языка. Вот тесты и ООП уже сложнее, это технологии.
Да я знаю, как это делается. Но нет ощущения, когда надо воткнуть.
b'' это "байтовая строка", особый тип данных. Когда у тебя не юникод-строка, как обычно, а именно набор байт.
f"" это f-strings. Специальная штука из современного питона, которая позволяет тебе форматировать строки, вставлять туда значения переменных и выражений через фигурные скобки
num = 12
frac = 1/13
s = f"demo: {num} {frac:.2f}"
при этом можно опции форматирования добавлять, как вот здесь в случае frac, аналогично как и с format и %-синтаксисом.
Ещё есть r"" для экранирования слешей в регулярных выраженях. И ещё есть u"", это юникод-строки, но это не надо использовать, потому что обычные строки тоже юникод. Нужно только для совместимости кода питон-2 при запуске в питон-3.
> b'' это "байтовая строка"
А какой в ней смысл если path.read_bytes() из файла с текстом abcde12345 дает b'abcde12345'?
> f"" это f-strings
Есть же .format()
Обычная строка - это юниокод строка. Её элементы это юникод-символы.
У байтовой строки элементы это байты.
Юникод символы могут быть размеров в 1, 2 и больше байт. Например русские символы по 2 байта. А многие байтовые символы на юникод не отображаются.
Попробуй в консоле питона сделать
s = "слово"
b = s.encode('utf-8') # это преобразование в байт-строку
ну или считать из файла что-нибудь из русских символов.
f-синтаксис это почти синтаксический сахар над format.
Просто строка форматируется в месте вызова.
Идеологически это грязное решение. И менее универсальное, чем format. Но в 90+% случаев годен, а читать код с f-синтаксисом проще.
А в нетекстовых файлах как? Jpeg или exe.
>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
Нахуя блять.
> У меня есть функция, которая возвращает True/False или None, если что-то пошло не так.
Пиздец, за такое надо по пальцам бить.
В питоне есть ламповые синтаксические штуки вроде
if is_user_registred:
do_smth()
Нет, буду костылить None, False, True, чтобы читающий охуел от простыни elif'ов с мало понятным содержимым, а пользующийся твой функцией начинал материться и лезть в исходники, чтобы понять чем возврат None отличается от False
>>43039
Бля, ну если тебе так не нравятся эксепшены, то сделай хотя бы возврат кортежа.
return successful, error
Первое значение это бул, второе код или там класс ошибки и None, если все успешно. И будет вызов не таким красивым, но хотя бы понятным:
result, error = do_smth
if not error:
foo()
else:
bar()
Именно так. Ты только что открыл для себя коды ошибок?
https://ru.wikipedia.org/wiki/Игра_«Жизнь»
Конечно забавно как оно мигает на экране консоли, но хотелось бы запилить хоть какую-то графику под это. Что юзать для Питона?
>но хотелось бы запилить хоть какую-то графику под это
Не начинай, точно тебе говорю! Я тоже запилил недавно на васме её, теперь сижу четвёртый день один яваскрипт пишу, вместо васма.
Могу и на яваскрипте, мне похер. Что-то примитивно тоже сойдет, мне совсем уж изъябываться не нужно
В консоли же символы. Возьми для начала фиксированный шрифт и сделай то же самое на символах в обычном printf.
Потом можно взять gtk, winapi и даже sdl2.
зачем ты мутишь это, братищка?
Как собрать шаблон в цикле таким образом, чтобы
он содержал элемент i и i+1 вместе с 1-4 пробелов между ними?
>>44574
Спасибо, но d - разве не для чисел используется?
Я имею ввиду, что есть s_list = [''абв','где','ёжз']
и мне надо получить шаблон который добавляет 1-4 пробелов между элементами и ищет по этому шаблону, например:
for i, j in enumerate(s_list):
__(s_listх[j])/s{1,4}(s_listх[j+1]) (не уверен, что шаблон правильный)
То есть мы будем искать этот шаблон в тексте, у нас на выходе находились "абв где", "абв где", "абв где", и так далее.
в примерах я проебался с backslah кстати
>он содержал элемент i и i+1
Ну я ж хз что ты под этим подразумевал. Искать этот шаблон где будешь? В большом тексте?
Скорее всего можно будет идти простым итерированием и юзать строковые методы для поиска подстроки вот и все
Ну или можешь ебнуть регулярку как у тебя. Потести сам, должно сработать
Там текст не чищенный, и количетсво пробелов сильно варьируется. Приходится использовать регулярку.
Спасибо за помощь.
Удачных не находил. Есть удобные для проверки готовых, но проверить готовое я и сам могу?
Что еще за фишка с запуском нескольких разных процессов джанги/лююого другого бекенд-приложения?
tkinter
Нет, не очень. А что, я какой-то секретный смысл пропустил, когда в одном сообщении ты пишешь, что есть, а когда тебя спрашивают, какие, ты тут же поворачиваешь жопой на 180° и предлагаешь самому написать? Тут даже моего умишки хватает.
А мог бы трахать их, извращенец.
Вкатился полгода назад. Заметил что начал тупеть (лол). Надо бы задачки дрочить чтобы потом перекатиться в более пиздатое место, а я бухаю для по шлюхам хожу. Пиздец
Зато вот ебал недавно
Писать на игрушечном языке, быть алкашом и ебать спиздозных блядей - это круто? Не знал.
Хочу сделать приложение, нужно читать данные с внешнего апи, обрабатывать их сохранять и параллельно выводить на фронтенд.
Думаю взять вля бэкенда фастапи и реакт для фронтенда, вопрос в том, как все связать для максимальной производительности и минимума задержек.
Ну ты напиши удобный, и тебе удобно и нам удобно.
В смысле как связать? А есть опции? Перекладыванием json-ов.
>Нихуя не знаешь, все хочешь?
Да, сразу хочется внедрить все технологии и хочется войти в ближнем будущем.
>Как отсортировать дерево справа-налево?
Пока круды шлепаю, но даже это так себе идёт, может надо было с фронтенда начинать.
[::-1]
бом
И как же запуск десятков процессов одного и того же приложения прокает? Как именно мы выбираем инстанс который будет обрабатывать запрос если их дохрена?
Раунд робин
> И как же запуск десятков процессов одного и того же приложения прокает?
Чего блять? Я нихуя не понял, но предположу, что ты имеешь ввиду "Как запустить несколько процессов?". Либо воркеры гуникорна условного сами за тебя все запустят, либо реплики докерконтейнера
> Как именно мы выбираем инстанс который будет обрабатывать запрос если их дохрена?
Балансировщики есть специально для этого. Что они делаю, думаю, и понятно из названия
А с чего ты взял что фотки отдает сервис на джанге?
Для говнопроектиков на цифровом океане за 5$ хватит и одного инстанса.
На крупных проеках у тебя клиенты 502, 503, а в основном 504 будут получать. Поэтому делаешь несколько инстансов, перед ними балансировщик стоит. Он распределяет что куда пойдет, поэтому нагрузка равномерно распределяется на все инстансы.
погугли haproxy, тебе понравится
В базовом варианте ты запускаешь просто несколько воркеров, а uwloop/gunicorn/nginx распределяют нагрузку между ними, тупо round robin, по кругу.
gunicorn/uwsgi запускаешь с опцией --workers N, и всё. Через nginx сложнее и не надо. В простых случаях этого за глаза хватает. Если жёсткие нагрузки, то там уже другое.
Главное, что надо понимать. Каждый инстанс джанго обрабазывает запросы последовательно. То есть он получил запрос, дальше долго его готовит, после чего отдаёт результат. И пока не подготовит, он не может приняться за следующий запрос, а подготовка может быть заблокирована из-за долгого запроса к БД, например. Поэтому и запускают много воркеров, причём можно сильно больше, чем количество логических ядер.
Postgre сажают в контейнер, но файлы базы оставляют снаружи. Nginx сажают в контейнер, но сертификаты оставляют снаружи, чтобы сертбот мог их обновлять. Зачем тогда их в контейнер сажать, непонятно.
Как вообще это правильно делать?
>Postgre сажают в контейнер, но файлы базы оставляют снаружи
Догадайся что будет, если файлы базы туда не сажать
они будут перезаписываться при каждом перезапуске контейнера
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 у меня норм встал. Это похоже, на то что мне админ просто блочит установку неизвестных модулей?
https://www.codepile.net/pile/Kk2Mw0ja
У меня есть функция db_connect - там я описываю подключение к базе данных.
Далее есть f1 - f3 - эти функции используют подключение к бд, чтобы выполнить какой-то запрос.
Я не понимаю, как мне передать в f1 - f3 результат подключения к базе из первой функции. У меня получилось запустить такой код только в том случае, если я во внутренности f1 - f3 скопипащу код из db_connect (строчки 1-37). А как мне сделать, что я один раз это подключение описал, и дальше я его могу в последующих функциях свободно использовать? (41-74)
Че? Какое еще подключение к базе? Ты открой любой курс/книгу "питон для самых маленьких" и учи азы на изи примерах
аргумент передавай
def f1(db_connection): query = db_connection.execute()
И мне тогда получается каждый раз при вызове функции нужно будет вызывать ее с db_connect в аргументе?
f1(db_connection())
f2(db_connection())
f3(db_connection())
Так что ли? Пайчарм мне еще почему-то подчеркивает аргумент. Говорит, что оно заслоняет переменную, определенную во внешней области видимости.
def get_db_connection(kwargs):
----return Client(kwargs)
db_connection = get_db_connection()
f1(db_connection)
f2(db_connection)
f3(db_connection)
Что-то все равно не так.
Если я удаляю unexpected argument и прогоняю код, то получаю ошибку
TypeError: __init__() missing 1 required positional argument: 'host'
Бля, чел, открой любой изи курс или книжку где учат синтаксис питона и его фичи по очереди. Зачем ты эти коннекшны к БД ебошишь вообще не понимаю
Ты путаешься в самых базовых понятиях, это если б чувак спрашивал как ему на машине стартовать с ручника с горки но путал бы поворотник и рычаг передач
У тебя kwargs через 2 звезды даны чтоб туда именованные аргументы закидывать, ты же туда ничего не прокинул, затем ты за каким-то хреном создаешь client внутри функции но не делаешь с ней вообще ничего. В f1 нихрена не передал, хоть он и будет резолвить твою переменную в глобальном скоупе но это косяк
Все мои предложения есть в шапке. А это довольно странный список от индусов, с примесью фронта\ДБА\ДевОПСа.
В a[0] лежит сама же переменная a. Оно бесконечно так будет рекурсивно раскрываться
Профит только в том чтоб завалить вкатыша на собесе. Вопрос прямиком из жопаскрипта
то что это рекурсивная херня, я понял, я не поняла как это создалось, что это за механизм упаковывания
>>45858
Распаковывается справа налево, просто записано максимально неочевидно.
https://ideone.com/aIHcLN
Запятая в конце делает это туплей с одним элементом, поэтому и происходит распаковка.
Всё равно не очевидно. Я думал, что знаю хотя бы основы питона, а оказывается нет.
Тут какая-то магия с тем, что двойное присваивание и сайд эффекты от этого. То есть ты не можешь это выражение в две строки расписать, эффект пропадает.
Я пока не понимаю.
>Всё равно не очевидно
Как ты думаешь что даст вот это результат в жс (проверь в консоли браузера):
{} + []
А вот этот:
[] + {}
?
Понял теперь что такое по-настоящему "не очевидно"?
Что делать с async методами, чтобы запустить их в обычном синхронном main? Что по итогу мы передаём в event loop? Как запускать корутины с аргументами, и чтобы потом этот набор корутин мне возвращал все результаты в один общий список?
Нужна инфа буквально для чайников. Все статьи "для нубов" годов так 2014-15, но я знаю, что уже всё с тех пор изменилось
А можешь своими словами объяснить, что вообще даёт асинхронность, без привязки к конкретным библиотекам и названиям?
Ты меня проверяешь или просто из тех, кто не шарит за асинхронность?
Поясню, так сказать, "нахуя" она мне
Пишу парсер, который проходится по всем страницам сайта.
Есть функция, которая достаёт то, что мне надо, с одной страницы. Соответственно, жрёт много времени на коннект и сбор контента. Поэтому я переделал её в корутину и запускаю в ивент лупе коллекцию Тасков(?) или Фьючеров(?), которые возвращают результат сбора в общий список.
У меня есть рабочий код, который я написал где-то год назад, и он прекрасно работает с приростом в скорости относительно синхронного варианта где-то в 2 раза.
Написать я его написал, но ничего в нём не понимаю. Сейчас я решил его переписать и разобраться, как это правильно сделать, чтобы при этом ещё было осознание того, что именно я делаю
>Пишу парсер, который проходится по всем страницам сайта.
Тут я напиздел. Не по всем страницам сайта, а лишь по определённому блоку, где есть пагинация
Нахуя?
Короче сидишь такой 3 недели, литерали 3 недели. С 2 девочками в чате в вк. Они там что-то рисуют, то-се, спрайтики, фоны, ахахахах, а вот тут тени, а вот тут дорисовать... Сидишь, чешешь яйца, думаешь - ну Ренпи... Че там. Я же матрицы делал.
Последние 3 дня - аааа, ничего на успеваем, сценарий вот, но его куски плохо соединяются и имеют дырки, вот тебе заплатки для дырок сценария, вот тебе музыка, она не играет что? так она во flac и wav, а Ренпи кушает только mp3, ахахаха, конвертируй, че смотришь? че то билд не билдиться, билдился же 5 минут назад, ахаххаа, а это ты комментарий не закрыл на 5389 строке из 10000 почти ахахахаха, а еще у нас тут в Ренпи есть автопроверка всей хуни, Линтер называется, но она отвалилась, ахахахаа, и что ты мне сделаешь? я в другом городе, дебаж ручками, сучка, а еще у нас тут уникальные имена у спрайтов, сиди переименовывай, как гук на рисовом поле по рисинке, выделять и переименовать ахахаха, а еще "девушки" слегка за 25 постоянно арты скидывают в разрешении, которое нужно передлывать, а вот тебе кстати еще патчики к спрайтикам, что? в сюжете есть спрайт, а в файликах нету? ну так сам додумай, ты ведь не маленький, уже полтора курса по Питону прошел, что? нет кнопки в меню? иди сам полазий по форумам и документациям, ахахаха, лазишь как черт по форумам Ренпи на англюсике 5+ летней давности, а там стены кода, и ты по ним ползешь, а потом стекаешь...
А в последние 2 часа вообще каждую минуту правки были. Ахахахах, вот тут текст раздели. Ахахахах, а вот тут музыка не играет, аахахахах а вот тут затемни, ахахахах, а вот тут спрайтиков не видно, а какого хя их не видно, они же правильно прописаны, а нет, это же я сам, чертов гений, их 3 раза переименовывал и во 2 раз переименовал не правильно... Ахахаха а вот тут переменную убери, а слово добавь, а вот тут... Кстати, если скачать новую версию Ренпи, то в ней Линтер идеально работает ахахахаха без всякой логики, просто скачиваешь, а он работает ахахахах и 100+ ошибок в лог файл, а времени осталось 20 минут...
Ебанись. Почувствовал себя на продакшане с горящим дедлайном, спасибо Ренпи.
Короче сидишь такой 3 недели, литерали 3 недели. С 2 девочками в чате в вк. Они там что-то рисуют, то-се, спрайтики, фоны, ахахахах, а вот тут тени, а вот тут дорисовать... Сидишь, чешешь яйца, думаешь - ну Ренпи... Че там. Я же матрицы делал.
Последние 3 дня - аааа, ничего на успеваем, сценарий вот, но его куски плохо соединяются и имеют дырки, вот тебе заплатки для дырок сценария, вот тебе музыка, она не играет что? так она во flac и wav, а Ренпи кушает только mp3, ахахаха, конвертируй, че смотришь? че то билд не билдиться, билдился же 5 минут назад, ахаххаа, а это ты комментарий не закрыл на 5389 строке из 10000 почти ахахахаха, а еще у нас тут в Ренпи есть автопроверка всей хуни, Линтер называется, но она отвалилась, ахахахаа, и что ты мне сделаешь? я в другом городе, дебаж ручками, сучка, а еще у нас тут уникальные имена у спрайтов, сиди переименовывай, как гук на рисовом поле по рисинке, выделять и переименовать ахахаха, а еще "девушки" слегка за 25 постоянно арты скидывают в разрешении, которое нужно передлывать, а вот тебе кстати еще патчики к спрайтикам, что? в сюжете есть спрайт, а в файликах нету? ну так сам додумай, ты ведь не маленький, уже полтора курса по Питону прошел, что? нет кнопки в меню? иди сам полазий по форумам и документациям, ахахаха, лазишь как черт по форумам Ренпи на англюсике 5+ летней давности, а там стены кода, и ты по ним ползешь, а потом стекаешь...
А в последние 2 часа вообще каждую минуту правки были. Ахахахах, вот тут текст раздели. Ахахахах, а вот тут музыка не играет, аахахахах а вот тут затемни, ахахахах, а вот тут спрайтиков не видно, а какого хя их не видно, они же правильно прописаны, а нет, это же я сам, чертов гений, их 3 раза переименовывал и во 2 раз переименовал не правильно... Ахахаха а вот тут переменную убери, а слово добавь, а вот тут... Кстати, если скачать новую версию Ренпи, то в ней Линтер идеально работает ахахахаха без всякой логики, просто скачиваешь, а он работает ахахахах и 100+ ошибок в лог файл, а времени осталось 20 минут...
Ебанись. Почувствовал себя на продакшане с горящим дедлайном, спасибо Ренпи.
> Почувствовал себя на продакшане с горящим дедлайном, спасибо Ренпи.
> Последние 3 дня
Все логично, антош
Это разные вещи. Тут магия в том, что код
(x, y) = x[:] = (['a'],['b'])
совсем не эквивалентен коду
x[:] = (['a'],['b'])
(x, y) = x
а равно и
x[:] = (['a'],['b'])
(x, y) = x[:]
Варианты что в две строчки очевидны и предсказуемы.
Вариант с двойным присваиванием и формированием циклической ссылки я не понимаю.
Видимо надо мануалы по поводу двойного присваивания читать.
>Тебе просто обманули и ты смотришь на =, а надо смотреть на запятые.
Я не вижу обмана, в том смысле, что если всё обернуть в скобки, то всё будет тоже самое.
Каким образом получить тот же эффект, но с одним знаком = на строчке? То есть как в виде двух строк это представить?
Операцию разворачивания кортежей я прекрасно знаю.
Нужен бот, который будет 24/7 онлайн на сайте + отвечать на входящие мессаджи по шаблону, в принципе это все. Самое для меня непонятное -- именно момент того, как законнектить бота с сайтом.
когда-то вкатывался в айти, даже успел немного поработать, сейчас свой мелкобизнес и стало очень интересно реализовать такое самому
>>46291
>>46315
>>46031
>>46024
>>45912
Короче, аноны, я вспомнил, что байтоёб со стажем, решил тупо глянуть, что там в коде происходит. А не пытаться читать стандарты языка, пепы всякие и т.п.
ХЗ, это баг или фича, должно быть по стандартам языка или нет, но так происходит из-за реализации в CPython
Надо просто тупо сделать
import dis
и тупо посмотреть код, который получается. Рекомендую попробовать сначала на примерах проще.
Всё из дизасма очевидно, проблема в двойном присваивании, которое разворачивается в
> 14 DUP_TOP
и из-за этого воникает этот эффект.
Могу разобрать построчно, что тут происходит в каждый момент, но это слов много и надо сначала примеры проще может разобрать. ХЗ, интересно кому-либо такой подкапотное байтоёбство.
А писать так не надо, конечно, это прямой кандидат на undefined behaviour
Ну в референсе тоже написано, тащемта, там весьма замороченные правила. Скорее просто намудрили, и в такой специфической комбинации оно дает такой результат. Реально, как анон сказал, для выебывания на собесах. https://docs.python.org/3/reference/simple_stmts.html#assignment-statements
Смотри там про слайсы.
По-моему это тоже не то, там расписывается механизм присвоения слайсу, что в какой последовательности, типа
a, x[func(a):func(a+2)] = [100]
а что происходит когда многократное присваивание
x = y = z
я там не вижу, или может я туплю.
Может кто цитату привести для этого случая или объяснение, как положено по стандартам?
А можно то де самое, но с занесением в список индексов только последних элементов подгруппы?
Т.е.
Список:
[1,1,2,3,1,5,1,4,1,2,2,6,1,5...]
Надо последовательно сгруппировать индексы элементов, если сумма элементов меньше или равна, например, 10.
Т.е. получить что-то вроде [4, 7,10,12...]
>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']]
Минимальным примером типа >>45836 будет
a = []
a.append(a)
Выглядит правдоподобно, надо будет ещё погонять эту хуйню.
Но таки да, надо лезть в этот ваш dis и смотреть кишочки по факту.
>Это разные вещи. Тут магия в том, что код
>(x, y) = x[:] = (['a'],['b'])
>совсем не эквивалентен коду
>x[:] = (['a'],['b'])
>(x, y) = x
>а равно и
>x[:] = (['a'],['b'])
>(x, y) = x[:]
Порядок другой. Эквивалентом будет
(x, y) = (['a'], ['b'])
x[:] = (x, y)
Ну инфа в шапке годная, не спорю. Но там в основном именно по изучению питона, а то что я скинул это скорее про в целом программирование, не? Я просто сам только вкатываюсь и как понимаю, просто питона недостаточно.
Список в целом бессмысленный, его изучать последовательно и целиком не нужно и не получится. Но определенную базу по большинству из этого ты получишь в процессе изучения и практики реальных задач.
Если мы через asyncio.gather запустим пару корутин, которые будут асинхронно че-то писать в базу то на самом деле эти корутины исполнятся синхронно, т.к. на уровне самой БД подобные транзакции будут лочиться
И есть словарь d= {'a':[0], 'b':[15, 3], 'c': [5]} , где значения - это индексы элементов из l
Как получить словарь по структуре идентичный d, но со значениями из l?
d2= {'a':[1], 'b':[33, 5], 'c': [4]}
> Я просто сам только вкатываюсь и как понимаю, просто питона недостаточно.
Антош, выучи вначале питон + фреймворки нужные для рынка. Затем устройся на работу и учи тот стек, что требуется там. Толку от того, что выучил МонгоДБ и никак не применишь - мало. А вот если выучишь Докер перед всем остальным(типа CI\CD & PostgreSQL) может такое и очень пригодиться, в том числе и при обучении.
Quickfix: l [ i ] вместо l
Есть подозрение, что в таких видосиках не показывают всего.
Пилишь сырой butch-update и радуешься
С таким ебалом надо бы пострематься вебку включать
Правильно, нужно учить паскаль, он то точно полезнее
В чем то он прав. После питона, остальной синтаксис кажется хуйней, причем нечитабельной. Остальные языки нужны под конкретные задачи. Сеть - это питухон, игрухи - всякие си подобные, явы и прочее. Хули тут обсуждать. Смысл учить шарп чтобы написать инсту.
Хаскель и Лего на одной полке.
Ты можешь написать и на питоне игру, вопрос в производительности.
Рад что гуру пикапа занялся программированием.
Почти четверть R написана на Фортране: https://github.com/wch/r-source
Это помимо всяких там сторонних пакетов: https://github.com/orgs/cran/repositories?language=fortran
Достаточно ебуче все это выглядит.
https://github.com/wch/r-source/blob/79298c499218846d14500255efd622b5021c10ec/src/library/stats/src/kmns.f
А потом они рассказывают вам про совершенные коды.
На Степике от Beegeek, 2 штуки. Поколение Питон
Что поделать. Это legacy code аж 1979 года. Зато все оптимизировано донекуда. В современном Фортране больше модульности, есть ООП. Есть поддержка параллельных вычислений.
С чего ты взял, что оптимизировано? Думаю диды-профессоры какие-то циркулем чертили на доске, а потом выпустили методичку. Ну а там забацали на эвм и допиливали какие-то хвосты и подставляли подпорки, чтобы оно не развалилось на более современных версиях.
Походу кто-то недавно его смотрел, судя по обсуждениям выше
Ну или неебаца как совпало, да
>Походу кто-то недавно его смотрел, судя по обсуждениям выше
Заведомо или это видео автор смотрел, или другой общий источник, может где-то обсуждали материал из этого видео, или это видео снято по обсуждениям.
Вирусная же хрень. Мне понравилось.
Думаю теперь такое начнут на собесах спрашивать.
>Думаю теперь такое начнут на собесах спрашивать.
Долбоеб, впервые прочитавший задачку и решение на подготовленном листочке будет важно раздувать щеки и ехидно посмеиваться, когда соискатель не сможет ответить на этот идиотский вопрос. Nice
"я назову тебя дурак из-за того что ты не знаешь хуйни, которую я сам узнал 15 минут назад"
> Весь состав нашей кафедры бьётся сейчас над тем, как можно доказать эту теорему. Если сможем, включим доказательство в программу экзамена.
Всегда так было.
На самом деле такие штуки могут показать, что ты крутишься в тематических тусовках, посвящённых платформе. Народ сталкивается с чем-то интересным и репостит, в результате все из тусовки знают. Такое своеобразное 1488, для определения свой-чужой.
Да это пиздец пытаться понять этот мусор после питона
Кстати интересная хуйня с игрой СИМС.
Симс 4 питоне и там скрипты и всякие взаимодействия дико тупят и багают. ну бля, питон медленный.
но ПРИКОЛ В ТОМ что предыдущая часть - СИМС 3 - написана на СИ и БЛЯДЬ ОНА ТОЖЕ ТОЧНО ТАК ЖЕ ЛАГАЕТ.
И какой вывод из этого следует? Приколист, блять, твои намеки детский сад.
На чем там написан верхний уровень в игре поебать вообще. Думать что вызов gl функций из ассемблера будет заметно быстрее чем из питона будет только макакен или школьник.
Поэтому все правильно они сделали. А лагает очевидно из-за того что код хуевый сам по себе, может там через диск каждое действие обрабатывается, чтобы мгновенное сохранение сделать, вот и лагает. Хоть на ПЛИС делай, обращение к диску быстрее не станет.
>ну бля, питон медленный.
Расскажите-ка нубу, а использование pypy или numba ускорят питон в таком случае?
Зачем его ускорять, это встроенный язык в данном случае, его скорости за глаза. Ну а молотить на питоне какой-то графоний не очень идея в любом случае. Вон те же шарповики свой юнити на плюсах сделали и в хуй не дуют.
Кстати, есть же IronPython3. Можно ли через него делать игрушки на юнити?
Или это - жуткая костылеобразная затея, и лучше шарп выучить?
Union это не то. Мы тут оперируем не классами а уже объектами
Ну хуй знает, первая альфа, я бы не лез туда пока, лул.
Так ты в Union объекты закидываешь, что бы классы ебошить нужно явно Type прописывать
Спасибо.
А если l у нас список списков и для каждого надо вычислить d2, мы ещё один цикл добавляем в эту часть [l for i in d[key]] или вне её?
так я про это и написал
Писал свои васянские реализации для таймера (отложенного исполнения асинхронной функции) и периодического таймера (одна и та же асинхронная функция должна исполняться с периодичностью в N миллисекунд). Таймер (пик1) реализовался как надо, проблем нет, но какого хрена create_interval (пик2) не пашет как надо? Он блин исполняется всего 1 раз и все, хотя там цикл while вроде как
В жопаскрипте аналогичное самописное решение конечно же работает как надо
https://ideone.com/ChD174
Ждем IO - 3 секунды, больше не ставил, т.к. ideone не вытянет долгого выполнения.
Видно что мой асинхронный коллбек test_func выполнился всего 1 раз а должен был "стрелять" каждые 500 мс
Передавать нужно не футуру
А корутину
Генератор же истощается и подыхает. Один хер что он асинхронный, все равно генератор
Я не совсем понял как у него рантаймэррор не получился, он же одну и ту же корутину дважды эвейтит
>как
Питон
Тут должен warning или error вылезать. Но ничего не вылезло. Хер знает в каком месте это может быть "фичей"
Если просто вызвать завершенную корутину дважды, то все нормально, ошибка вылезает, а тут какая-то хуйня
>2016
лол
Я понял в чем проблема - из-за того что все обернуто в Task. Поэтому вопрос: как бля поставить коллбек на обработку ошибок в таске? С промисами это хороший тон - хуярить catch в каждый промис после then, иначе высрется uncaught error
Это не баг, там написано. Тебе нужно что-то такое
t1 = create_interval(test_func(), 500)
await asyncio.sleep(3) # long await
await t1
>2016
А что не так?
>из-за того что все обернуто в Task
Из-за того, что у тебя на таску ссылка есть, без t1 исключение должно сразу отработать.
И зачем же 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, который он не может спарсить.
Есть ли способ загрузить в программу без собственно-написанного парсера?
https://ideone.com/JPdwyC
Ебнул декоратор который добавляет к корутине хендлер для ошибок. С обычным таском он работает (test1) но когда юзаю мой васянский create_interval (test2), то же самое - он тихо сдыхает. И в конце высирается ворнинг что мой хендлер который должен был обработать ошибку (тоже корутина) так и не был вызван. Странно
У тебя какой-то фетиш на коллбеки? Хуй сразу же встает что ли?
Благодарю, анон, всё получилось!
не старую*
Что мне нужно сделать в сериализаторе или в модели, чтобы при запросе все номера были сгруппированы в отдельный объект json, как на скрине?
Собственно в методе возвращаешь PersonPhoneSerializer(person).data, можешь еще контекст в аргументы прокинуть, если он необходим.
Для ровных пацанов есть вечная Python Cookbook от Бизли. Но для нулевых не покатит. Все остальное есть в доках.
Да ну, кукбуки это одни из самих унылых книг. Имели смысл бумажные в каких-то девяностых-нулевых, но сейчас то хули, всё за пять сек можно нагуглить.
У Бизлича вот недавно вышла новая книга про всякие современные интермедиейтные штуки, вот это должно быть интересно, но пока не спиздили пдфку.
Net.
>Имели смысл бумажные в каких-то девяностых-нулевых, но сейчас то хули, всё за пять сек можно нагуглить.
Это зря, в кукбуках надо читать не чтобы решение твоих проблем найти, а чтобы узнать, какие проблемы бывают и как их решают. Очень полезно.
>Все остальное есть в доках.
На самом деле официальный туторал от питона очень-очень хорош, не хуже большинства книг.
Разве что на английском. Но если немного с английским дружишь, то даже хорошо, заодно и язык подтянуть можно. Он там средний, не самый простой, но и не убойный.
Я там сразу начинаю по всем ссылками лазить и всё смотреть, лол. Времени не напасешься.
В книге хоть читаешь как-то последовательно, хотя тоже паралельно бегаю в гугл и доку, но поменьше.
как я могу получить в виде отдельных строк все части этого пути: /home/ home/huipizda /home/huipizda/hui/ и т.д.?
Модицифируй create_interval
и ты всё увидишь,
> Exception 'coroutine' object is not callable
тебе надо делать await coro, а не await coro(), ты ведь уже готовую корутину передаёшь в create_interval
Да, ещё использовать табы вместо пробелов это полный зашкван.
И ещё вместо такого while цикла лучше
for i in itertools.count()
специально для этого
И ещё такой момент, этот код не эквивалентет setInterval из JS.
Например если у ты вызываешь функцию с интервалом в секунду, а она работает пол секунды, причём это может быть io-bound-sleep задержка, а не cpu-bound, то реальный интервал будет в полторы.
Аналог setInterval, это если ты в цикле создаёшь новую задачу.
И ещё, если тебе так нужны коллбэки, то просто сделай
t1.add_done_callback(cb)
где cb это
def cb(task): # не корутина, просто функция
____exc = task.exception()
____if exc:
_________process_exception
Итерируй os.path.split
Питон по-определению чувствителен к пробелам. Стандартная рекомендация настраивать в редакторе замену таба на 4 пробела. А код с табами не совместим с кодом с пробелами.
Табы вообще отстой и не нужны, если ты только make-файлы для си не делаешь, боль она боль.
Делаешь dir_splitted = dir_path.split('/')
Затем
paths = []
for i in range(1, len(dir_splitted)+1):
----paths.append(''.join(dir_splitted[:i]))
Это что бы у всех код выглядел одинаково без дополнительного пердоленья и смены удобных тебе настроек
from pathlib import Path
mypath = '/home/abc/def/gggg'
paths = [str(path) for path in Path(mypath).parents]
> код выглядел
В жопу выглядел. У тебя табы и пробелы несовместимы. Если в одной строке табы, а в другой пробелы, будут проблемы. То есть тупо код не сопровождаемый из-за этого.
Никто табы не делает, пусть кто найдёт репозиторий с кодом мало-мальски большого проекта, где есть табы.
Долбоеб, в любом редакторе вроде пуйчарма пойдет автоматическая замена табов на пробелы
Мне делать больше нехуй кроме как по 4 раза дрочить клавишу пробела во время каждого перевода?
>Никто табы не делает, пусть кто найдёт репозиторий с кодом мало-мальски большого проекта, где есть табы.
Вся магия заключается в том, что современные IDE конвертируют табы в пробелы
>Мне делать больше нехуй кроме как по 4 раза дрочить клавишу пробела во время каждого перевода?
Долбаёб ты. Ты просто настраиваешь редактор на автозамену, и вместо табов в коде будут пробелы.
Но в твоём коде именно табы.
Слышал про некие машины состояний, но там вроде переход только от одного к другому.
Знаю что задача часто встречается, но хз как решить
if data not in db:
___do1()
elif data in db:
___do2()
else:
___do3()
делает. Или лишнее, или же do1() меняет db, но тогда это стрёмная штука в плане отладки из-за внутренних скрытых состояний.
Если doN() вот именно такие, то можно сделать хелпер-функцию, которая внутри будет этот if делать и возвращать новое состояние.
Код станет сильно компактнее.
def _helper(func_true, state_true, func_false, state_false):
____if response in ...:
________true_func()
________return state_true
.....
и дальше по строчке на каждое состояние.
Машина состояний полноценная нужна, если тебе надо вверх по коду идти, а не только вниз.
>>48937
словарь не подходит
>>48943
>>48945
Если кратко, то состояние хранится у клиента, я получая запрос смотрю состояние, и делаю ответ(do1(), do2())
# в схеме немного не правильно указал, сама функция и меняем состояние
В зависимости от состояния разные ответы, ответ меняет состояние, на следующее и предыдущее.
Мне говорили что тут паттерн стратегия нуже, но я что-то не понимаю как применить его.
А ещё, что за полноценная машина состояний?
Все что тебе нужно получить это калбэк и new_state. После новый стейт присваивается а калбэк исполняется. Все.
Словарь спокойно это может решить
В крайнем случае создаешь класс State где и реализуешь бизнес-логику для каждого стейта
Всем все подходит.
Составляешь словарь
states = {'state1': (do1, do2), 'state2': (do3, do4)}
А потом получаешь нужную функцию по текущему стейту
states[state][response in 'test']()
а потом тебя увольняют за такой говнокод
Ну какбе стейт машина это тоже простыня из свитчей в бесконечном цикле.
По отдельности все понятно, но никак не могу понять как они работают в связке.
Знаю перл и пхп (на уровне пофиксить или накидать что-то несложное). Планирую ещё закатиться в го и ноду, но пока душу питона до хорошего уровня, поделывая на нем некоторые проекты со скрипом.
Какие проекты пилишь? Что вообще актуально делать для портфолио чтобы взяли на РАБоту?
ГОвно
У каждого разный дефолт
>в чем проблема поправить код автоматически?
Анон расшарил код. Я его скачал, попробовал что-то добавить и словил ошибку, потому что у него табы вместо пробелов. Не помню, когда последний раз с таким сталкивался.
Ок, я в виме делал, набрал команду
:%s/\t/(четыре пробела/cg
и все эти табы заменились на пробелы, как надо, работа на секунды.
Дальше я делаю правки. Если я свои правки с пробелами вышлю ему, или у нас будет общий репозиторий, ошибку словит он, если попытается только содержательный код скоприровать, либо перепишет весь свой с табами моим, с пробелами. А в гите весь код будет показываться как мой, а не его. А когда он попытается дальше работать над кодом, использую табы, тоже будет ловить ошибки.
Потому что табы и пробелы несовместимы.
То есть всё ок, пока ты работаешь один. Но если ты работаешь не один, то начинаются очень серьёзные проблемы.
Поэтому нужны единые стандарты. А единые стандарты это пробелы, а не табы.
Если нужна серьезная разработка, то подключается редактор с произвольным импортом-экспортом и линтер.
А если мне сниппет накидать в каком-то айпитоне или ideone, или там одноразовый скрипт, то зачем мне дрочить те пробелы?
А вообще, надо сделать какой-то опциональный normal mode, что позволит юзать скобки. Ну реально же хуйня с этими отступами.
Ты пытаешься придумывать проблемы на пустом месте, а дальше накручивать какие-то оболочки для решения.
Есть де-факто стандарт, это использовать пробелы. По 4 штуки, последнее уже вроде в pep8 прописано.
Всё, нет проблем. Все так работают, вот найди хоть один большой проект, где табы используются. Нет, обязательно надо какие-то надуманные преимущества придумать и их проталкивать.
Табы и не в питоне скорее исключение.
Любой продвинутый редактор тебе автоматом автоотступы делает, поэтому "дрочить по пробелу" необходимости нет.
Я тебе говорю, откуда табы могут взяться, а не призываю использовать их, лол.
У меня глаа разбегают от обилия обучаок. На ютубе. в гугле, на русском и английском(владею им).
Что делать?????
Вот первая ссылка в гугле - https://www.learnpython.org/ - она норм?
или на курсере/edX лучше? Мб по курсу МФТИ на ютубе? Или на openedu.ru?
Так много вариантов, я сижу и не знаю что делать!
Мой опыт: хеллоу ворд на Го и в вузе Дельфи был
Берешь любой и всё. Как выучишь основы, дальше делаешь что хочешь, параллельно смотря гитхаб с примерами, примеры либ в доках и т.д.
Ты больше времени потеряешь, если будешь искать идеальную обучалку.
По моим ощущениям книга лучше, причем чем толще. Ты можешь скипнуть материал какой-то, а потом вернуться и почитать подробности, если потребуется.
Видео, если быстро хочется вкатиться и без подробностей/предельных случаев и т.д.
>Вот первая ссылка в гугле - https://www.learnpython.org/ - она норм?
Посмотрел, очень даже норм для начала. Как раз чтобы первое впечатление было и руку набить. Советовать конкретно сложно, у всех разные мозги и разный бекграунд.
>>49924
Минус ссылки только в том, что там по старому питону сделано, форматирование строк бросается в глаза, оно там из второго питона, %-стиль.
Возможно ещё что-нибудь такое есть.
Но сам подход, чтобы сначала в оболочке разобраться, очень-очень правильный, это такая сильная фича питона, что возможность есть. Очень быстро понимать начинаешь.
Потом, конечно, уже надо будет нормально писать.
Как Я вижу:
Объявляем словарь "x" и список "y"
Через цикл for и if выполняем проверку нахождения (ключа или элемента????) в словаре "x".
Если (ключа или элемента????) из списка "y" есть в словаре "x", то мы его передаем в ключ в переменную "z"
После выводим ключ и значение словаря.
>Если (ключа или элемента????) из списка "y" есть в словаре "x",
> if i in x:
для словаря означает проверку, что i есть среди ключей словаря.
Ты тоже запусти питоновскую оболочку и руками команды понабивай. Вот создай там словарь и проверяй условия вроде
'Bob' in x, "Pasha' in x
и т.п.. Доки, конечно, параллельно читай.
Но в любом случае запусти консоль интерпретатора и в ней играй. На твоём уровне очень полезно.
Я потыкал код. Только не понял почему z сохраняет значение элемента словаря, а не сам ключ.
Иди прочитай хоть одную книжку, у тебя вопросы уровня почему базовый функционал работает как должен.
Не, не на каждую же кату мутить репу. В одну репу лить решения для питухона и все. Забавно сравнил с инстой, лол.
И кстати, люди тоже льют решения, я чекнул по поиску, ну и что тут такого, разные кушки льют, мб даже лично для себя. Я вот плотно засел за изучение гита и понял, что можно было прокачать гит тупо на катах :3, но в целом пох.
Ты просто не понимаешь смысл таких сайтов.
Выкладывание решений на гитхаб это что-то вроде повесить школьную контрольную на стену в рамочку. Это не достижение, просто проверка твоих знаний.
Мимо анон
Ну можно так похвастать, что умеешь решать сложные алгоритмические задачки, и решения свои показать. В принципе лучше, чем ничего, а дополнительных затрат никаких.
Всё-таки задачки с алгоритмами получше, чем туду-листы. Конечно, если там не easy и не одны медиумы, а hard тоже хватает.
Ну реально, задачки уровня хард это большой такой фан в том числе для взрослых программистов. Если ты это любишь, это хорошо о тебе говорит. А если ещё и оформлена хорошо, то совсем здорово.
А вот ту-ду лист, расрашенный публично это да, тебе нечего показать и ты грузишь мир мусором.
Проблема в том, что ты эти решения можешь посмотреть и скопипастить, это не имеет смысла.
А вот на собесе тебе дают рандомную задачку и там уже видно, знаешь ты что-то или нет. Поэтому смысл сайтов в том чтобы погонять задачки и набрать практики в их решении, подтянуть какие-то области, в которых ты плаваешь.
>>50137
>Ну можно так похвастать, что умеешь решать сложные алгоритмические задачки, и решения свои показать
> Если ты это любишь, это хорошо о тебе говорит. А если ещё и оформлена хорошо, то совсем здорово.
Этот код пиздится за пару кликов, так как на большинстве платформ открытый банк решений. Ну и к слову, джуну все равно ничего серьезного не доверят, да и на 95% проектов дрочь сложных алгоритмов нахуй не нужен. Гораздо лучше иметь там какой-нибудь небольшой проект, где ты сам сделал пару сервисов по ковырянию каких-нибудь сторонних апишек и вывода данных для пользователя, настроил для них докер, бд, сделал CI/CD и написал тесты.
>Проблема в том, что ты эти решения можешь посмотреть и скопипастить, это не имеет смысла.
Вряд ли кто будет решение принимать по гитхабу. Само собой спросят.
Но то, что у тебя такие увлечения, как олимпиадные задачки, говорит о тебе очень хорошо и вообще привлекает внимание. Потому что значит ты внутри программист. Может без опыта и прикладных скиллов, но программист. По крайней мере пока эта тема не заезжена. Всё-таки там мало кто делает, а вот ту-ду листы у всех.
Если на это пойдёт мода, то смысл, очевидно, потеряется. Потому что и копировать будут, и выделиться сложно.
>Ну и к слову, джуну все равно ничего серьезного не доверят, да и на 95% проектов дрочь сложных алгоритмов нахуй не нужен.
Сеньёру тоже алгоритмы не нужны, сеньёру надо уметь большие проекты тянуть. Если ты в юниорстве не можешь сложные задачи решать, то не сможешь и в сеньёрстве.
Умение решать сложные олимпиадные задачки показывает, что у тебя есть мозги. А если есть мозги, то значит всему сможешь научиться. Поэтому олимпиадников загрегают топ компании очень активно.
А вот CI/CD это уже прикладные инженерные вещи. Им можно научиться на месте по необходимости. Причём как раз джуну это никогда не доверят огранизовывать, потому что здесь надо понимать, как работают большие проекты, а у джуна опыта работы на больших проектах нет по определению.
> Если на это пойдёт мода, то смысл, очевидно, потеряется. Потому что и копировать будут, и выделиться сложно.
Так в том-то и дело, что давно пошла. Может ты судишь по рунету, где нулевые вкатуны бегают с сертификатами цыганских курсов, лол.
https://coggle.it/diagram/XgtVOa6K4obH730X/t/🐍💻-python-developer-roadmap-💻🐍/0b172b9775a0f8f50c3cda856b4e3bd59c3f7c53f53f63282d116d69447072fe
Настраивать джун конечно ничего не будет, но это показывает его самостоятельность, что очень важно, никому не нужен дурачок, который не сможет решать проблемы, а будет бегать к мидлосеньорам что бы каждый пук разжовывали.
>Умение решать сложные олимпиадные задачки показывает, что у тебя есть мозги
Нет, это показывает дрочь олимпиадных задачек, причем иногда в ущерб качеству кода. Компановка кода, его поддерживаемость, этому нихуя не учат олимпиадников. Я сам в вузике ходил в олимпиадный кружок. Было нормальным называть переменные в 1-2 буквы, не знать ООП, делать грязные хаки, которые делали код нечитаемым (потому что его второй раз никто читать не будет) и все это ради пары милисекунд перфоманса.
>Поэтому олимпиадников загрегают топ компании очень активно.
Потому что у них такая схема найма персонала. Сначала набираются олимпиадники и прочие алгоритмодрочеры. Работают год и проходят перфоманс ревью и прочие KPI, если качество кода оставляет желать лучшего, то человек идет нахуй. Так можно получить обучаемых инженеров с математической подготовкой для сложных проектов. Проблема в том, что на это нужно куча бабла, что бы содержать челиков, которые еще сидят в инкубаторе и их судьба о дальнейшем устройстве не решена.
Когда очередная среднеконторка начинает думать что она гугл, то процесс найма очень затягивается, так как они хотят рокстара, который сразу бы ебошил годный код, а человек даже функции в нормальный класс скомпоновать не может, а задач под такую алгоритмическую базу у компании нет.
Вангую, что следующим шагом будут анимированные и звуковые символы юникода, чтобы они ещё блестели и пердели, тогда совсем заебись станет.
Смотрю про циклы и условные операторы. Полет нормальный .
Опыта программирования на утро сегодняшнего дня - 0.
Боба?
Ну и нахуй ты тут нужен, иди читай книжки, смотри видосики. Через пару месяцев приходи - будем смотреть, получится ли из тебя что.
>но это показывает его самостоятельность
Но ты же понимаешь, что тут тоже можно склонировать чужой проект. Более того, скорее большинство именно клонирует. В таких вещах принято тупо копипастить чужие решения, не понимая, что там зачем, и править какие-то параметры под себя.
Это даже не мошенничество, так просто люди "учатся", или сами искренне считают, что учатся.
Поэтому нужно разбирать проект и спрашивать что, как и зачем кандидат так сделал. А если говорить про то, как все ИРЛ происходит, то гитхаб вообще никто не смотрит.
Чем Блокнот плох для обучения азам и вообще первым программам/работам/проджектам?
Автокомплита и подсветки синтаксических ошибок нет, в начале у тебя со всем этим проблемы будут, а IDE явно тебе все покажет.
Replit тебе хватит на первое время
программисты, что не так в этом коде?
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)
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)
ПОДКОРРЕКТИРОВАЛ
> в начале у тебя со всем этим проблемы будут,
в чем трабла тупо текст из обучалок перепечатывать?
Зачем ты это родил в принципе?
Ты bx не реверснул. Вернее изменение не перезаписал
Почему range у тебя 1000? Почему не 1001 и не 500?
Потому что в один момент ты забудешь поставить двоеточие и начнешь срать в тред с просьбой разобраться что у тебя с кодом не так, ведь ты все скопировал с учебника
Что бы обосраться достаточно одной строки
Блять... нахера ты вообще за прогинг берешься если в глаза ебешься?
он все равно не работает, я на этот сайт с айдла перепечатывал
Тебя не смущает что ты перевел число в 7-ричную систему но потом на похуй вычитаешь из него единицы?
до 999
для начала: ты не понимаешь как работают системы счисления
И почему бы заранее не найти комбинации числа с 12-ю 6-ми и потом уже их привести к нужному числу?
У тебя получилось int в 7-ричной системе. Но int похер, он воспринимает его все равно как 10-ичное. Ты вычитаешь из него единицы, какой результат по-твоему получится?
Эту задачку надо решать на бумаге, а не на ЯП.
Подсказка: 343 это 7 в четвёртой степени, то есть 1000 в семиричной системе.
Вторая посказка, считай 90% решения. Задача сводится к тому, чтобы найти максимальное число из 15 7-ми ричных цифр, в котором 12 цифр 6.
Очевидно, что это число
666_666_666_666_555
оставшиеся 10% сам.
Покажи как курс выглядит. Особенно интересно как у них задачки с автопроверкой выглядят.
И ты будешь чисто по пдф-кам и видосам изучать?
Вот я например хочу порешать задачки на ООП - куда мне идти? Я пока только Юдеми нашел или на Кодеварс задачки вылавливать.
Да, мало сидеров. кряк от вурдалака
сам придумай себе задачки, идеальным вариантом задачи на ооп будет игра эрпоге
там же классы как раз.
вот выдумай себе классов кучу и ебошь
подклассы хуйклассы и тп.
Конечно, я вообще больше по книгам, но по этой теме и питону что-то не густо, так что решил глянуть такой курсец.
Про задачки не знаю. Я самостоятельно практикую, задачки разве что всякие алгоритмические балуюсь.
Где все. Литкод, кодворс.
все.
Уже прошло 7 месяцев с изучения языка программирования Python
За это время я -
1 - Написал 2ch на джанго, сейчас пишу аналитику инстаграма.
2 - Сделал бота для изучения английского, бот парсит инфу с сайтов, кучу, выдает, там не просто пару возможностей, кучу всяких функций. ( Телега - аиограмм )
3 - Подтянул sql запросы, могу написать простенькие запросы
4 - Поднял немного знания как работает инет, что такое HTTP,HTTPS,POST,DELETE и т.д
5 - Изучаю сейчас с# в планах сделать игрушку для андроида
6 - Написал небольшой сервис на Golang
7 - Ну и мы учили с++, там чисто прям фигню знаю
8 - Немного HTMl/CSS, особо не верстал, по мелким вещам.
9 - Jira,Postman
10 - знаю что такое тест кейс, баг репорт, чек лист, уровни тестирования, виды тестирования и по мелким вещам.
И т.д по мелким вещам.
Почему я не могу найти работу, даже на джун в удаленку брать не хотят, стажировку проходить я не могу, хотя была возможность, но я ебал 1+ месяц стажировки. Мне ещё рано? Нормально ли в таком этапе уже искать работу, или стоит подучиться больше, сделать ещё пару пет проектов?
Потому что у тебя винегрет из разных ЯПов и направлений? Не пробовал углубиться во что-то одно?
Да мне в кайф быть многосторонним, везде что-то делать. Я думаю тяну на Python джуна, но меня даже на собесы не зовут, ну и как мне показывать свои способности если даже шанса не дают. Говорят я им не подхожу, хотя мой стек подходит +- и я быстро обучаюсь
Ебало стяни тогда и топай на стажировку.
Украина, работы на джун-удаленку пару штук, я ещё студент, пока в офисе не могу сидеть.
>Украина
>работы пару штук
>я ещё студент
>в офисе не могу сидеть.
>Почему я не могу найти работу?
Действительно. Сам угораю с него.
Как теперь все это запилить на сервер?
Это копия, сохраненная 8 декабря 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.