Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
>>1793238 → у тебя список. очень большой. нужно сравнить все со всеми. и удалять дубли из списка как только их встретил питон 3.7
элементарно решается с потоками, но с процессами я задумался чтобы дать доступ каждому процессу к мутабельному!!! списку и простого решения в голову не пришло. Идеи конечно были, но вот "да хуле там делать изи" не было
>>1793247 → Меня тоже этот момент смущает. Вообще надо смотреть раскладку, сколько занимает картинка в закодированном состоянии, сколько времени она декодируется и какой декодированный размер.
Из этого уже можно проектировать алгоритм.
Если все сравнивать со всеми, то одну картинку надо передать в каждый воркер в любом случае, каждый воркер будет сравнивать со своей частью базы картинок, не всей.
Но пересылка данных не такая дорогая операция. То есть или ты упираешься в процессор, и тогда выгодно пересылать в раскодированном виде, или ты упираешься в объём данных, тогда проще распаковывать в каждом процессе отдельно. Кроме того, вопросы возникают по тому, как вообще это сравнение работает и нельзя ли там радикально оптимизировать.
Вообще задача выглядит из тех, что хорошо распараллеливается. Есть очень неудобные задачи, но другого класса.
Вот ты пишешь, что на шарпе это работает 4 минуты, а на питоне 5 часов. Но это значит, что у тебя именно код медленный. Ты ведь мог бы запустить на одном процессоре, а не на 4-8. Невозможно выиграть больше, чем в 4-8 раз соответственно в многопоточной версии. Скорее всего будет меньше выигрыш, наверняка, из-за общей памяти, кешей и т.п. А у тебя разница в 80 раз.
Ну само собой многие операции на питоне тормозные, если сравнивать производительность в один поток. На чём-то можно и в 100 раз проиграть относительно других платформ, особенно если ускорялками не пользоваться.
>>1793247 → >Почему нельзя картинку взять сразу в воркере? Зачем её прогружать в мастере? Судя по всему у тебя мастер как-то агрегировал эти картинки. Мог ли воркер сделать частичную агрегацию на своей стороне, а потом отдать только результат для финального мержа? Результат все равно пришлось бы копировать в основной процесс, где находилась нейронка. Вариант чуть лучше, но производительность все равно в разы ниже, чем при использовании потоков. >>1793252 → >Может у тебя там сериализация тормозила? Или мастер тупил. Ну реально, звучит как хуета что оперативка не справляется с копированием. Проблема не в скорости копирования в оперативки, а в имплементации копирования между процессами на питоне. Не забывай, что у каждого процесса свое адресное пространство памяти, и просто взять и скопировать не получится. >>1793259 >То есть или ты упираешься в процессор, и тогда выгодно пересылать в раскодированном виде, или ты упираешься в объём данных, тогда проще распаковывать в каждом процессе отдельно. Я упирался в место на диске, поэтому пришлось шакалить картинки, которые потом хотел разжимать в реальном времени при помощи нескольких потоков (процессов).
>>1793258 > элементарно решается с потоками Ну это пока оперативы на компе хватает. По-хорошему надо разбивать на части.
> чтобы дать доступ каждому процессу к мутабельному!!! списку Вот здесь надо было остановиться и писать на шарпе, если очень нужно решение "в лоб". Самое забавное что гил замедлил бы твой код в количество процессоров раз. Вон у тебя 4 минуты на шарпе, стало бы допустим 30 минут. А ты нагородил такого, что аж 5 часов работало.
>>1793271 > в имплементации копирования между процессами на питоне Ну о чём я и говорил, ты сильно терял на сериализации. Причём удивительно, что это не куча мелких объектов, а бинарный кусок, и это по идее тормозить не должно. Такое ощущение что там сериализация пошла по каким-то бэкреференсам и выносила чуть ли не весь стейт интерпретатора в сообщение.
>>1793271 Когда ты пишешь, что 90% времени идёт на копирование, мне кажется, что проблема в архитектуре или реализации.
Ну здесь просто варианты, декодировать в нескольких процессах, запускать нейронку в нескольких процессах и т.п.
Описанная задача выглядит как такая, что хорошо распараллеливается.
Я вообще не вижу принципиальных проблем с пересылкой большого количества данных, хоть через сокеты можно, но если объёмы действительно большие, то насколько оптимально дальше эти данные обрабатываются?
Факт, питон не предназначен совсем для обработки бинарных и численных данных. Без неконвенционных оптимизаций просадка в десятки раз легко может быть. PyPy и некоторые другие инструменты иногда позволяют очень прилично разогнать, но всё равно.
Но в том, что ты описываешь, меня в первую очередь архитектурный вопрос распределения задач смущает. Надо разбираться :)
>>1793269 > Ты ведь мог бы запустить на одном процессоре, а я это прямо и написал что на питоне была однопоточная версия потому что мне не пришла в голову простая реализация на питоне учитывая что я знаю шарп где даже мудрить не нужно я переделал на шарпе сделал дело и забыл
но я не забыл что мне было неудобно решать ее на питоне именно из за природы процессов, необходимости дать процессам один список, да еще чтобы он был мутабельным. Я привык к обычным задачам где "сделал пул, дал им задачи и они перемололи друг на друга им плевать", а тут плотное взаимодействие
собственно об том, что гил заставляет брать процесы и городить костыли (ибо это процессы) я и сказал в самом начале
>>1793294 Ну то что ты называешь мудрить это вообще-то нормальный человеческий подход, разделить задачу на части. И собственно в самом начале про гил всегда и говорится, что многопоточные вычисления над неделимым стейтом в питоне будет больно. Твоя ошибка в том, что ты не подумал и начал откровенно колхозить, закономерно облажался, и теперь пришёл рассказывать что гил жить мешает.
Твоя задача кстати разделяется относительно легко. Разделяешь большой список на N частей, затем с помощью itertools.combinations_with_replacement каждому воркеру говоришь какие из двух частей прогрузить и однопоточно перебрать. Результат, найденные дубликаты, пишешь в виде индексов, и после основного map делаешь постпроцесс, который их по индексам удаляет.
>>1793349 Ну ты можешь любой жсон свалидировать любой схемой. К примеру конфиг приложения, или пришедшие данные от юзера, да что угодно может быть. К примеру проверить что в жсоне используется только словарь с определёнными ключами, или что аррей содержит только числа от 0 до 10, и чтобы этот аррей был длиной ровно 3.
Ещё хороший юзкейс только для жсонсхемы это динамические валидаторы, к примеру пользователи могут на твоём сервисе задать вид жсонов, которые они хотят получать от других пользователей. Для этого они отправляют тебе жсон схему, а ты уже делаешь валидацию. Всякие pydantic такое не умеют, так как жёстко вбиты в код приложения.
>>1793350 Ну тогда awesome interview questions в зубы и вперёд. Думаю вряд ли кто-то решает олимпиадные задачи чтобы постоянно держать анус закалённым. Перед поиском новой работы месяца-двух хватит чтобы снова надрочиться.
>>1793302 >Ну то что ты называешь мудрить это вообще-то нормальный человеческий подход нормальный человеческий подход это потоки, которые работают параллельно по настоящему. В этом и есть суть потоков - иначе зачем они нужны. Процессы вместо потоков это костыли - параллелить надо. а потоками не выходит ибо гил
>всегда и говорится, что многопоточные вычисления над неделимым стейтом в питоне будет больно чавоооо? я же это и говорю, что в питоне не всегда удобно делать многопоточные вещи, потому что там не настоящие потоки из-за гил
>закономерно облажался я всего лишь здраво оценил количество гемора в такой задаче в питоне и количество "гемора" в шарпе и сделал правильный выбор но как это отменяет то, что в питоне приходится ебаться с "а как распаралеллить, потому что потоки гил?". ответ: никак
>и теперь пришёл рассказывать что гил жить мешает я с этого и начал.
>Твоя задача кстати разделяется относительно легко. разное у нас понимание слово относительно. Конечно для питона это "относительно легко". Но по сравнению с потоками это "нихера себе конструкция на ровном месте". И ЕДИНСТВЕННАЯ причина городить такой огород - гил
>>1793517 Не, проектировать структуру приложения и прочее - я не про это. Имею в виду, вот я разбил свою задачу на кучу маленьких. Допустим, первая подзадача - прочитать xml и забрать такой-то тег. Я в 100% случаев тупо возьму кусок из своих старых наработок, или, если похожего нет, тупо возьму с инета и переделаю под себя. И чем дальше, тем больше я такого за собой замечаю, так как я ленивый пиздец, наработок все больше и больше, а писать 2 раза я не люблю. Руками с нуля почти не пишу, в результате забываю многие простые вещи, и поэтому без наработок и инета под рукой (или возможности им пользоваться, например за собесе), я жидко перну и обосрусь.
>>1793549 Тогда будет медленно шопипец. По джаве у меня был собес давно как-то. Сказали написать какую-то херь онлайн при них. Без IDE. Я забыл какую-то мелочь типа порядка аргументов в методе, мне сказали ЦОК ЦОК ЦОК ПОНЯТНО ВСЕ С ТОБОЙ. Я говорю - ребят, ну вы че епт, я когда пишу - есть автодополнение IDE и документация под рукой, я не могу такие вещи помнить наизуть. Мне главное знать как оно работает, каким способом решать ту или иную задачу, а синтаксис и вот такие нюансы типа порядка аргументов - это несущественно и решается/вспоминается на месте. А вы мне мол даете аля блокнот и типа давай пиши работающее нахуй приложение. Послали тогда нахуй, в общем. Было обидно.
>>1793497 >я всего лишь здраво оценил количество гемора в такой задаче в питоне и количество "гемора" в шарпе и сделал правильный выбор И о чём это? Кто-то не знает, что потоки в питоне слабо реализованы? Это проблема не только питона, но и многих других динамических языков.
В питоне будет больно в одном месте, в языках со статической типизацией в другом месте.
В твоём случае налицо ещё проблема проектирования. Конкурентное программирование требует грамотного проектирования.
В тех задачах, которые могут сильно выиграть в производительности именно на потоках, а не процессах, питон чаще сольёт по другим причинам, то есть он сольёт и в однопоточном режиме тоже и это ограничивает питон сильнее, чем проблема GIL.
Думаю пришло время искать новую работу, отработал полтора года единственным питонистом на дно проекте, надоело, хочется в нормальной команде поработать ну и зп поднять. Короче поставил в резюме 130к, вот думаю адекватно или нет.
>>1793616 >Кто-то не знает, что потоки в питоне слабо реализованы? потому и говорю, что в питоне параллелить не всегда удобно. Что то не так? Не говори, что "там все изи" и я не буду говорить обратное
>со статической типизацией в другом месте это уже софистика
>Конкурентное программирование требует грамотного проектирования само собой. но я рассматриваю вопрос не "как грамотно делать многопоток", а "сколько преград ставит яп при этом". И почему итоговый огород именно такой, а не что-то проще
>чем проблема GIL это не мешает работе. я знаю что беру питон за практичность, а не за скорость. и меньшая производительность питона не заставит меня мудрить хитрожопую конструкцию. А гил заставляет.
>>1793616 конкретно в этой задаче в шарпе я заменю foreach на Parallel.Foreach добавлю логов для списка и проверку выхода за границы и все
в питоне же придется думать как это разбить на чанки, как давать процессам воркерам, как получать результат, как учесть то, что элементы удаляются и нехорошо воркерам работать с тем, что уже удалено и так далее.
Я не говорю, что питон плохой. я люблю питон но GIL зло, а процессы это просто костыли
>>1793629 >отработал полтора года единственным питонистом на дно проекте, >могу калькулятор сделать или игру "виселица", вот Выпей кофе и подумай как ты реально можешь описать проект. Тут все пишут на питоне, лол.
>>1793632 > Тут все пишут на питоне, лол. Писал небольшой монолит на джанге + селери, БД постгрес, в БД приходилось писать хранимки, так как в том кейсе без них нельзя было обойтись, писал разные парсеры selenium + bs, писал сервера для вебсокетов, либы для джанги которые юзали на других проектах, был опыт написание либы на С. Также занимался автоматизацией сборки и деплоя, но в рамках стейдж инфраструктуры. Ну и в жс и реакт могу.
>>1793635 > какая несусветная глупость. условия задачи почитал бы Какая же? На питоне есть один способ ускорить cpu задачу это раскидать по процессам, для ввода вывода лучше использовать асинхронность. Ну есть варианты завернуть С/C++/Rust в питон биндинг, так обычно и делают.
>>1793636 если ты ленивая жопа, ссылайся на NDA, а то спросят почему GitHub пустой. тут уже кто-то советовал отвечать "пет проектов нет, во внерабочее время занимаюсь семьей/собакой/попугаем"
>>1793640 Бро, не я тебя собеседую. Ты уже понял, что надо делать. Никто не мешает кстати искать работу, пока сидишь на своей галере.
>>1793642 Смотри вакансии habr'a и vc для начала, потом копайся в говне на hh и прочих. Можешь посмотреть что на upwork творится, надо будет ИП открывать для этих целей. Опять же на VC и Habr все разжевано.
>>1793639 Правильно советовали. Большая часть программистов в мире программирует ради денег, а не ради жизненного признания, в том числе и те долбоебы, что его будут собеседовать. Если воротят нос из-да отсутствия какой-то ебалы, не имеющей отношения к работе, можно считать это подарком судьбы, что тебя не взяли в говноконтору. Это то же самое, что хрюши с их "мы не нашли тебя в соцсетях, нам скрытень не нужен" или "мы нашли фотку, где ты пляшешь на столе в баре, поэтому код писать мы тебя не возьмем".
>>1793644 Ну если на проекте ты кодишь по 10-12 часов, то как бы какое нахуй свободное время? Тем более в одно рыло тащить репозиторий. Таких единицы. Скорее всего это студенты CS или фрилансеры. Хотя есть и люди которым 8 часов хватает на все и их совесть не тревожит.
>>1793626 >потому и говорю, что в питоне параллелить не всегда удобно. Что то не так? Всё так, в этом ничего нового, что многопоточность в питоне примерно никакая. В го хорошая.
>>1793638 >На питоне есть один способ ускорить cpu задачу это раскидать по процессам я это знаю. и мой аргумент звучит так - не все задачи хорошо раскидываются по процессам и в результате может получиться знатная монструозная хрень И считать такую хрень нормой есть дикость а дикость сия спровоцирована гил
так что аргументы тех кто грит "асинкио хватит, а остальным охуенчик мультипроцессинг" суть фантазеры которые не видели что такое реально охуенчик
зы: в данной задаче executor.map(...) не в тему. там общий мутабельный набор данных мутации которого всем воркерам нужно бы знать
>>1793902 Что ты подразумеваешь под тренажером? Если изучать хочешь, то ставь питон, качай/покупай книгу и вперед, обычно всегда есть упражнения для закрепления знаний из главы. Если тебе потренироваться, то литкосы/кодварсы/любой другой онлайн ресурс с задачками, где есть градация по сложности, встроенные тесты и т.д.
Сап датасцаентисты. В библиотечке ОП-поста есть книжки с примерами-задачами, которые предлагается самостоятельно выполнить обучающемуся? Крайне желательно, чтобы был ещё и разбор полётов.
>>1793910 >я это знаю. и мой аргумент звучит так - не все задачи хорошо раскидываются по процессам и в результате может получиться знатная монструозная хрень >И считать такую хрень нормой есть дикость >а дикость сия спровоцирована гил Не понимаю, к чему ты это говоришь. Хочешь просто понабрасывать, и всё.
Любые технологии имеют свои плюсы и минусы. Архитектура высокоуровневых интерпретируемых языков позволяет делать массу всего, чего стандарные компилируемые не могут, и благодаря чему они удобнее. Но это же усложняет их реализацию, в том числе поддержку многопоточности. Потому что вот совсем не понятно, так тягать все эти машины в разных потоках, как синхронизировать данные, менеджмент памяти и др.
Это ограничение, оно есть, из-за него потоки теряют вычислительный смысл. Но кстати их не для этого придумывали изначально, треды на всех платформах появились тогда, когда в основном все компьютеры были однопоточными. Треды нужны были чтобы разделить потоки исполнения, а не пытаться накручивать производительность.
При этом примеров, когда именно потоки критичны, не так много. Особенно для питона. Хорошая архитектура должна быть спроектирована так, чтобы более-менее легко было портироваться на много процессов.
Если у тебя много разных мютексов в коде, то это лапша в стиле лапши из goto из очень древних времён. Сейчас это не комильфо, сейчас принято использовать концепции каналов, очередей, заданий и т.п.
Обычно треды могут дать большое ускорение в том виде кода, который на питоне в принципе работает медленно, потому что питон плохо работает с прямой обработкой численных и бинарных данных.
Треды плохо масштабируются. А если у тебя спроектировано на много процессов, то ты легко можешь поддерживать кластеры, микросервисы и т.п.
Наконец, если тебе хочется потоки и без GIL, ты можешь глянуть на решения вроде Stackless Python. Это альтернативный, но официально признанный интерпретатор.
>>1793362 >К примеру проверить что в жсоне используется только словарь с определёнными ключами, или что аррей содержит только числа от 0 до 10, и чтобы этот аррей был длиной ровно 3. Так ведь все это я могу реализовать обычными тулсами и кондишинами?!
>>1794087 >Не понимаю, к чему ты это говоришь к тому что в питоне вместо потоков процессы. я сказал что это доставляет проблем, что не всегда удобно использовать процессы вместо потоков меня спросили пример - я его привел меня стали критиковать "ты не умеешь готовить, ничего не понима, бла бла, бла бла ,бла"
я своих аргументов не менял. Если кто то забыл с чего все началось то это его проблемы
>>1794098 JSON Schema это как документация. Подключаешь OpenAPI, создаёшь демостенд и твою систему тестируют. А главное JSON schema не привязан к языку и ее можно будет портировать. А так вообще pydantic хватало за глаза.
>>1794113 Такого не бывает, хочешь сам напиши такую книгу. Задач и инструментов овердохуя. Определись что ты хочешь узнать и это уже расписано на StackOverflow или в документации интересующего тебя инструмента.
>>1794098 Очень много повторений будет. Если ты начнёшь абстрагировать это всё в функции, рано или поздно изобретёшь что-то вроде жсонсхемы. Зачем изобретать своё если можно взять готовое? Где уже съели пуд соли, пофиксили пару тысяч багов и даже спецификацию написали.
Аноны, понимаю, что наверное это скорее в работа-тред, но каким было ваше первое резюме? Хочу закинуть на питониста-ждуна, смотрю всякие нормы составления - везде пишут 1-2 страницы, опыт и прочее, а в итоге выходит половина А4. Может посоветует кто какие-то гайды еще или примеры?
>>1794209 Ниоткуда. Я сам это сделал. Моя задача добавить содиржимое словаря по ключам, где значения показывает кол-во элементов в арреи. То есть, если один раз встречается, то 1, если 2, то 2 и тд. По сути счет.
Пытаюсь написать __repr__ метод для класса, в классе 10+ штук различных атрибутов, как это все красиво уместить?.. Я написал начало типа: def __repr__(self): ----return "MyClass(\
и собираюсь на каждой отдельной строке обозначать новый атрибут, чтобы было читаемо, экранирование с помощью \ позволяет переносить строки, но сцука итоговый результат получается с большими пробелами между атрибутами, потому что табуляция внутри строки сохраняется, как убрать и ее?
Пагни, спасибо всем здесь за комменты, это охуенный форум! Меня взяли джуном, старт послезавтра и у меня уже сейчас трясутся руки лол. Потому что я не знаю даже с чего начать. Пока мне менеджер сказал, поверхностно изучи гит, мы дадим тебе аккаунт - Что это значит ??? что мне нужно делать с самого начала? git init в рабочей папке ? Потом git pull master? ХЭЛП
>>1794292 Заведи аккаунт на гитхабе, сделай приватный реп. Изучай git clone, add, commit, push. Осознай что add не перманентный, оттуда файлы можно вернуть или вообще стереть изменение, это как бы черновик коммита.
Дальше учись работать с ветками. Осознай что ветки это всего лишь указатели на определённые коммиты, и если checkout выбрал именно ветку, то при коммите она автоматически сдвинется на новый коммит. Осознай что ветки легко добавляются и стираются в репозитории, что до push они у тебя живут локально и ты можешь их не публиковать.
Дальше merge/rebase. Это уже не поверхностный уровень. Поверхностно нужно только представлять почему случаются конфликты изменений и чем мерж от ребейза отличается.
Дальше узнай про remote. Ты можешь синхронизироваться сразу с несколькими репозиториями, например с основным и с форками. origin это всего лишь имя ремоута по умолчанию, и таких имён можно надобавлять целую кучу.
>>1794359 >Дальше учись работать с ветками. Осознай что ветки это всего лишь указатели на определённые коммиты, и если checkout выбрал именно ветку, то при коммите она автоматически сдвинется на новый коммит. Осознай что ветки легко добавляются и стираются в репозитории, что до push они у тебя живут локально и ты можешь их не публиковать. Спасибо, но как это сделать?
>>1794464 Собеседовался недавно, спросили за гит. Сказал, что юзал SVN всегда, а гит один раз ставил чисто от нехуй делать, пробовал конвертнуть репозиторий. Получилось, ну и забил, ибо нахуй он мне нужен. Мне сказали УУУУ КАК ТЫ БЕЗ ГИТА ЖИВЕШЬ, НЕ НУЖЕН ТЫ НАМ ТАКОЙ. Дебилы, блядь. Как будто принципиальная разница есть. Пересесть и привыкнуть за полдня можно, если потребуется. Тем более есть клиенты, за которыми даже похер что у тебя, типа черепашки.
>>1794471 Похуй. Во-первых, это написано в резюме. Во-вторых, я не люблю пиздеть. В третьих, я был только рад отказу, когда понял, что меня собеседуют 2 начальника, один из которых формально у них главный разраб, но из программирования знает только заученные определения из книжек. Искали замену челу, который от них съебался на жопной тяге. Устроишься в такую залупу, и будешь один везти все на своем горбу, пока такие толстопузы будут бабло получать. Еще пиздели, что команда у них там, а на самом деле ты да я, да мы с тобой - вот и вся команда была бы. Сейчас глянул, до сих пор вакансия открыла, лол.
>>1793243 (OP) Всем привет Появлялся с месяцок назад, спрашивал про питон как бэкэнд для браузерной игры на коленке Собственно, не забросил, понемногу двигаюсь. Только вот немного не понятно, как примастить пользователя Вот, к примеру, пользователь ловит рыбу, 10 минут, через 10 минут получает результат Получается, я должен привязаться к реальному времени? когда время станет такое, то, выполнить проверку результата и все записи в sql? И как питон поймет, что пора (собственно, время настало). Есть какой-то аналог крона, который заставляет его каждое определенное время проверять? Мб немного сумбурно, но подскажите, что и как гуглить.
>>1794551 Надо не так. Сохрани когда пользователь последний раз поймал рыбу. И когда с фронта придёт запрос словить следующую рыбу, проверяй чтобы между сейчас и предыдущим разом прошло 10 минут, иначе болт. Ну или что там, забрать результат ловли. Крон довольно примитивная вещь, для нормальных приложений нужен либо планировщик (если ты рассылаешь с сервера в сокеты), либо валидатор (если запросы идут с фронтов).
>>1794571 >>1794596 Ладно, уговорили. Я даже начал читать 4 издание что в шапке. Но тут меня посетили смутные сомнения, ведь там говорится и г питоне 2.6 и 3.0. И я оказался прав, есть 5 издание.
Есть время, которое записывается модулем time. Там дохулион секунд. Желаю перевести его в человековаримый формат делаю: from datetime import datetime humantime = datetime.fromtimestamp(time).strftime("%A, %B %d, %Y %I:%M:%S") Вроде бы все норм получается, но результат обгоняет на 12 часов. Показывает, что время для time = сейчас 3 часа ночи. Что я делаю не так? В данной конструкции все корректно и стоит искать проблему в конструкции, которая генерирует time?
>>1794879 Ну да, помогло >>1794872 Если кому интересно, корректно работающий вариант humantime = datetime.fromtimestamp(time).strftime("%Y.%m.%d %H:%M:%S")
Хочу сделать небольшой генератор текста на основе сообщений в чате (каждое слово из новых сообщений добавляется в словарь, назначаются какие-то пары слов, потом по запросу выдается мешанина из этих пар), но как лучше сделать?
Есть функция которая читает каждое сообщение и функция по запросу выдающая текст, надо ли засовывать логику самих генераторов внутрь этих функций или можно к примеру в отдельном файле .py сделать генератор и подружить его с основным файлом? Или писать в основном, но отдельными функциями где-то ниже/выше?
Суп, програмач! Учу джангу, есть вопрос: Есть модель, там таблица линкуется с другой таблицей. Например,
class Table_1(models.Model): name = models.CharField(max_length=255, default='')
class Table_2(models.Model): Table_1_id = models.ForeignKey(Table_1, on_delete=models.CASCADE) subject = models.CharField(max_length=255)
Есть страничка с формой на которой вводятся данные для этой Table_2. By design при открытии я уже знаю, какой из элементов Table_1 мне нужен, чтобы запихнуть его в Table_2.Table_1_id и не хочу выводить его на форму. В общем, я вижу два варианта: 1. Заставить форму передавать значение элемента, не выводя его (но я для этого плохо знаю фронтэнд, простых примеров не нашёл, в одном из примеров, на которые наткнулся подобное решалось через JQuery и AJAX, что явно оверхед, особенно с учётом того, где я вообще видел фронтэнд в гробу я его видел - мне нужно сделать рабочую болванку и передать её тому, кто умеет в HTML+CSS+Djinja+etc). 2. Добавить элемент прямо в view.py перед сохранением значений формы, но я что-то вообще не соображу, как. Я тогда в ответе я получаю только <QueryDict: {'csrfmiddlewaretoken': ['многабукаф'], 'subject': ['example_subject']}>, а при попытке накинуть дополнительное значение -- "AttributeError: This QueryDict instance is immutable" (в доках говорится, что это нормально, а метод appendlist работает только если QueryDict был заиничен как мутабл, но штатные не такие и вот дальше я уже ни фига не понял).
Нормальный ли этот метод по поиску 10 значных телефонных номеров в тексте? Учитывая, что похуй что телефон не верный, просто возвращение 10 цифр подряд.
import re def readFile(file1): count = 0 number = '' with open (file1) as f: text = f.readline() digits = re.findall("\d{10}", text) return digits return None
>>1795195 Всегда удивлялся долбоебам, считающим, что кто-то рандомно парсит рандомные сайты на предмет сначала номеров аськи, а потом номеры телефонов придумали. Ещё и коверкают, чтобы не спарсили, лол. В сто раз проще и эффективнее купить готовые базы как у владельца, так и ломанные, тут тебе сразу и таргетинг готовый.
Короче есть такой ввод: старт\стоп работы, Имя работника, время начал\закончил start Serega, 100 start Masha, 110 start Vanya, 120 stop Masha, 140 stop Vanya, 150 start Pidr, 160 stop Pidr, 180 stop Serega, 200 Вывод: Serega, 100 (отнимает стоп от старта) -Маша, часы -Ваня, часы и тд. То есть нужно показывать стукруту по пробелам, кто зашел и кто ушел.
>>1795209 И в чем проблема? Ассоциативный массив, время старта, нашли время стопа - отняли и забыли. Если имена могут попадаться несколько раз - ну два массива, окей. В чем проблема-то?
>>1795221 Ты не понял. Вывод должен содержать структуру проблов типа: Иван:время ' 'Вася: время ' 'Петя: время ' 'Маша: время ' 'Тетя Мотя: время ' 'Пидр: время С помощью листа ты не сможешь следить за старт\стоп и выстроить такую структуру, ибо первый стоп относится к последнему стартовавшему работу.
>>1795230 Блядь. Абу режет пробелы, я поставлю тире, где должны быть пробелы: Иван:время - -Вася: время - -Петя: время - - -Маша: время - - - Тетя Мотя: время - - - - -Пидр: время
Привет, я считаю, что вдоволь начитался-накодился с алгоритмами и структурами данных. Хочу узнать что делать дальше? Например у меня появился интерес в создании сетевых приложений. Что стоит изучить и что почитать? Или это пока рано?
>>1795209 Убираешь запятые и итерируешься через каждый 2й объект(имя). Во время итерации составляешь словарь где имя - ключ, если перед именем старт - заносишь время с -, если стоп - с +. Как вывести словарь - сам как-нибудь подумай
>>1795303 Работаю полтора года и нет ощущения что близок к мидлу, думаю нужно искать работу с сильной командой и более высокой зп. Самому себя сложно оценить, единственный питонист на проекте.
>>1795197 Верните мне 2007. Я про парсинг базы и говорю. Автоматизация звонков. Тебе что кроме Linphone надо? Спарсил записи, прошелся по всем номерам (список из БД) и все дела, еще на успел на прогулку.
>>1795292 >А они уточняли Они сказали "технологии на ваше усмотрение" кек Я таки получил работку, но в другом месте (нет, не на Джанго, в принципе мне похрен на чем писать, знал бы эти заскоки в принципе к Джанге не прикоснулся бы при решении тестового - там прост кейс уж больно удобно под DRF ложился)
>>1795275 это когда невозможно создать более одного экземпляра от класса а при попытке создания возвращается либо новый либо уже существующий в петухоне делается через декоратор
Подскажите про регулярки плз, как сделать замену в словах, которые состояли бы не менее чем из двух символов и до бесконечности, чет не соображу, ну если слооб то \b\b, а какой метасимвол мне нужен? {2} будет искать ровно из двух, как задать интервал до бесконечности {2, .*}? Чет нихуя не получается, хэлп плз.
Аноны, вопрос матерым помидорам. Есть один сервер, находится он в СШП на восточном берегу, есть клиенты по всему миру, пинг для европки.сшп - збс, пинг для океании уже не торт. Как пофиксать? Вижу два варианта: 1. Самый простой и легко создаваемый на коленке. Сделать как в играх - разместить дополнительный сервер поближе к океании и перед конектом юзер должен будет пинговать сервера все и выбирать наиболее подходящий для него. 2. Заюзать "Global Server Load Balancing" но тут уже придется подключать доп.сервисы и, я так понимаю, принцип работы у них как и мой п.1 Что анон думает на этот счет? Использую Nginx.
>>1795464 Туда в любом случае будет хуевый пинг, надо более близкий сервер, да. Вроде в ЮВА более-менее локация, ну или прям локально там. Как туда направлять решает сдн/балансировщик, обычно просто по айпи, какие там пинги, лол.
>>1795489 > Как туда направлять решает сдн/балансировщик Так вот я хочу запилить свой балансировщик. Обычнобалансировщик(тот же Nginx) не обладает возможностью распределять трафик согласно IP.
>>1795464 Ну наверное что-то из серии 1. Но при этом ты можешь автоматом выбирать сервер, правда на более высоком уровне, чем nginx.
Но это всё можно прозрачно сделать. Твой клиентский софт сам пингует сервера из списка (который можно автоматом получать) и автоматом выбирает тот, который лучше.
>>1795492 server appserv1.example.com:12345 weight=5; server appserv2.example.com:12345 fail_timeout=5s; server backup1.example.com:12345 backup; server backup2.example.com:12345 backup; }
>>1795492 Я думаю, nginx можно допилить - это востребованная фича, хотя чаще решается сторонними сдн или облачными хостингами с дохуя точек присутствия. >>1795494 \b\w{2,}\b Будет то же, что у тебя.
>>1795498 >Твой клиентский софт сам пингует сервера из списка (который можно автоматом получать) и автоматом выбирает тот, который лучше. Так и планировал, да. >>1795500 Но антош, веса это не то, как и бэкап. + Мой балансировщик стоит в амурике и до него в принципе пинг большой.
>>1795504 >Мой балансировщик стоит в амурике Тогда какая разница? Я попадают на твой балансировщик с пингом до US. Ну если у тебя будет качать данные, я замечу, что просадки по скорости. Бери данные по GeoIP и перенаправляй в соответствии. У Google же именно такая политика.
>>1795508 >Тогда какая разница? Разница в том, что я хочу для океании отдельный балансировщик поднимать. Понятно что я не буду гнать запрос из океании в амурику.
> Бери данные по GeoIP и перенаправляй в соответствии. У Google же именно такая политика. Можно чуть подробней? Ну или ссылочку какую для почитать.
Поясните за фриланс. Не то, чтобы я хотел быть 300кк в наносекунду (хотел бы конечно, но речь не о том) Скорее просто интересно посмотреть, какие рабочие задачи могут быть вообще у питон программиста, понять, чем придется заниматься скорее всего, мб цепануть какую-то работку не для денег, а для портфолио, чтобы было что в резюме закинуть при поиске на первую работу. Какие сайты юзаете?
>>1795538 Во фрилансе на жс и тем более питоне больно громадная конкуренция с индусами да и вообще с целым светом. Для себя можешь пофрилансить, но на какой-то бабос особо не рассчитывай
Здравствуйте. Есть ли какие-то онлайн-дрочильни вроде Codecademy для быстрого вкатывания в Питон, но без необходимости оплачивать подписку за кучу ЮСД долларсов? Так-то в принципе начал читать книгу Гэддиса алсо, что скажете про нее, но на книгах у меня как правило меньше усидчивость. Благодарю.
>>1795658 Индусы в курсе о го, просто на го никто особо не делает екоммерс хуету или прототипы в отличие от жс питона пхп, он в больших компаниях как вспомогательный хай перформанс язык обычно вдобавок к чему-то медленному
>>1795332 >Если ты можешь понять зачем NoSQL на проекте и в чем плюсы и минусы MQ уже можно миддлом назваться потом переобуешься по дороге. Такую хуйню у меня спрашивали на интервью в ШША на позицию Тест Инженера Автоматчика. Так что, если ты думаешь это уровень мидла, у меня для тебя плохие новости.
>>1795464 Такс, тут ещё мысль подкатилась: А що с БД делать, ведь она тоже на серве в амурике. Иметь Н-штук БД и между собой синхронизировать периодически? Или забить хуй т.к. из одного датацентра в другой оверхед по пингу будет терпимый(надо проверить)?
Есть один сайтик на джанге, который по запросу пользователя отсылает пачку запросов на сторонний сервис, затем собирает результаты всех запросов и отдает их пользователю в веб-морду. Проблема в том, что запросы выполняются долго, веб-морда устает ждать(или веб-сервер) и дропает соединение по таймауту. Как обычно это решается? Как мне вернуть пользователю ответ уровня "принял, обрабатываю" сразу, а когда все будет готово вернуть результат?
>>1796132 1. Верни пользователю ответ, что все ок - обрабатываю, запусти фоновую задачу на запрос к другим сайтам, запиши итоги и заставь морду сделать запрос через время после первого ответа и если есть данные - выведи их. 2. Вебсокет
Я хочу получить ответ в формате json, тут написано "JSON Include the query parameter `json` or set the HTTP header `Content-Type` to `application/json` to return the fact and associated meta-data as a JSON object, with the properties..."
Я должен был догадаться, что 'json' = True, или я ебусь в шары и это тут где-то прямо написано?
И 2 вопрос, гляньте на пикрил, задача была чекать из файла числа на предмет "интересности" через это api, можно ли было api_url как-то более адекватно собрать? Если бы я хотел например собирать не только math, то все равно надо было бы строки складывать?
Заигрался тут в мамкиного дебаггера. Я игрался с traceback либой и где-то даже был удачный сниппет по превращению traceback в формат JSON. НО, это работает только для простого вывода, а хочется traceback забирать еще и из корутины. Наткнулся только на custom_handler для обработки ошибки, но не понимаю как вытянуть traceback. Где я туплю? Хочется выцепить стак: где произошла ошибка.
Нахуя? Пока не знаю, скорее всего проще будет через StreamHandler и exception это делать, но хочется иметь полную картину и возможность манипулировать форматом сообщения.
>>1796148 Первый вопрос не понял. Чтобы был жсон, надо отправить параметры в виде жсона или добавить такой параметр в урле, всё указано. В общем-то, так и делается. Ещё через Accept иногда. Второе - f-strings. f"https://hui.com/{huivar}/{pizdavar}/1.html"
Ну глянь у меня на пикче на params, я просто 40 минут просидел, пытаясь понять что надо написать не что-то типа: params = { 'json' } а params = { 'json' : True } Тут про это явно не сказано нигде.
>>1796174 Спасибо на добром слове, анон. Еще бы ты меня успокоил в целом, про запоминание синтаксиса. Вот вроде какое-то время назад занимался словарями, задачки решал, все ок. А тут несколько дней развлекаюсь с регулярками и реквестами, словари вообще не трогал, в итоге для джсона они понадобились и я понял, что именно команды все нахрен позабывал, благо я хоть курс конспектирую и у меня все в тетрадке выписано, но все равно шарить по ней не круто
Чем чаще будешь пользоваться определенными встроенными библиотеками, тем больше запомнишь. Но вообще это хуйня помнить все наизусть. Иногда даже на SO захожу посмотреть как не надо делать
есть flask rest приложуха с докером, как мне грамотно связать с vue, в плане отдельно ли фронт от бека? а деплоить как два серва поднимать для фронта и для бека? Типо рендерить из фласка vue js было бы наверно глупо, но за то так будет 1 сервак. Посмарел гитхаб/гитлаб шаблоны вроде есть, но мб подскажут best practies
>>1796234 >>1796237 У тебя в примерах они по разному делают, одни запускают серв, другие вон про проду через билд также пишут, только рендерят самим фласком. Билд как минимум минимизирует твой жс код из-за чего сайт будет грузиться активнее. Рендерить можешь как в примерах или Nginx-ом раздавать статику
>>1796245 всё, увидел, но я хочу уточнить используют ли в проде такое разделение фронт и бек на разных серверах, ведь логично же рендерить фласком билд
# set custom handler loop.set_exception_handler(custom_exception_handler) loop.create_task(run_division(1, 0)) loop.run_forever()
На выходе JSON {"message": "Task exception was never retrieved", "exception": "division by zero", "at": [" File \"/home/rost/Development/Test/loop_handler.py\", line 8, in run_division\n return a / b\n"]}, который можно запихнуть себе в анус, ибо никто не пишет так логи азазаза в БД
>>1795292 >1. Я полагаю, ты про это https://docs.djangoproject.com/en/3.1/ref/forms/widgets/#hiddeninput Ы-ы-ы! Я ведь находил что элементы могут быть скрытыми, но подумал, что он скрывает дропдаунлист с неправильно выведенным значением по-умолчанию. Сейчас ещё пару раз перечитал и оказалось, что в темплейт можно добавить ><input type="hidden" name="Table_1_id" value="{{ Table_1.id }}"> и так сработало! Вот тебе в благодарность. >2. Покажи как ты это делаешь, ничего не понял. Примерно так (удолил лишний код, не связанный с этой операцией, запостил раньше, чем понял, как можно и теперь жалко тупо удолять, так что оставлю, вдруг кого на какие мысли натолкнёт): https://dumpz.org/ctnD3DFabp5G Теперь соответственно после 50-й строки добавлено то, что выше гринтекстом подсвечено.
То что в нём уже есть менять нельзя. Можно только вешать декораторы куда угодно и создавать новые методы. Нужно чтобы в функции test оба метода проходили проверку результата. Функция, которая результат проверяет нестатичная и определена в классе. Поэтому нужно как-то self передавать в декоратор. И он успешно передаётся. Но в моём декораторе не хочет вызываться метод с декоратором classmethod. Хотя в классе он вызывается с использованием self. Что мне поменять чтобы он тоже вызывался и проходил проверку результата?
>>1796456 пара замечаний 1 декоратор принимает в себя результат другого декоратора. ВАЖЕН ПОРЯДОК. то есть твоя fix_result принимает в себя не ориг функцию, а что там создал classmethod. Банально поменяй порядок декораторов 2 все равно self неоткуда взять и он упадет.
>>1796462 Я сначала свой декоратор поставил чтобы self не терялся, а был первым аргументом в моём декораторе. Поэтому self должен сохраниться. Как только теперь его передать дальше чтобы вызвать classmethod?
>>1796465 ну ты же понимаешь что f в твоем декораторе это не целевой метод класса, а обертка classmethod?
а значит при вызове нужно копнуть глубже что то вроде def wrap(args, kwargs): fun = f if hasattr(f, '__func__'): fun = getattr(f, '__func__') result = fun(args, kwargs)
>>1796470 но это лютый костыль. мало ли че там может быть навешано. к тому же "что там навешено" оно навешано и при определении декоратора и сразу можно достать конечную функцию то есть этот код можно вынести из враппера
>>1796474 что значит как? магии не бывает. если класс чего то не может, то нужно это переписать если не дают менять код класса, то переписать класс в рантайме.
>>1796476 Я не могу переписать. Это базовый класс и у него десятки дочерних. И всего более 1000 функций test где используется метод c. Мне проще в базовом классе повесить декоратор на c чтобы проверку в конце делать, чем переписывать 1000 вызовов этого метода.
>>1796482 В теории я могу все поправить. Но если я возьмусь править дочернии классы, то это работа на несколько месяцев. Я могу и метод с поправить. Но это может что-то сломать т.к. иногда он как self.c вызывается, а иногда как cls.с. Поэтому мне проще повесить декоратор и когда он вызываетс через self, то тогда в добавок функцию check вызывать чтобы результат валидировать. Я бы мог сразу в функции test после вызова c ставить вызов check, но это потребовало бы 1000 функция редактировать. Ещё мог бы поправить исходник метода c, но раз он в декораторе classmethod, то внутри я self никак не найду, а сначит и check не вызову. Убрать декоратор classmethod не могу т.к. это точно что-то сломает. Остаётся повесить ещё один декоратор, который будет проверять как вызван метод и по возможности вызывать метод check. Другого решения не вижу
>>1796486 >иногда он как self.c вызывается, а иногда как cls.с если оно у тебя где-то вызывается как cls.с, то декоратор работать не будет. Ибо неоткуда ему взять self. Этот твой декоратор сам должен вести себя как classmethod чтобы пробрасывать то селф, то cls и правильно поправить исходники, а не изворачиваться так
>>1796492 >если оно у тебя где-то вызывается как cls.с, то декоратор работать не будет Знаю. Поэтому перед основным кодом сделаю проверку что там в аргументах. И если там нет self, то просто не буду продолжать
Аноны, прохожу тему про csv, json, xml. С цсв и жсоном все нормально и понятно более менее, а что за дичь вообще с хмл. Просто смотрю на пикрил и охуеваю, тут инфы с гулькин нос, и ради этой залупы разбираться с деревьями, тегами, все пиздец запутанно выглядит, если сравнить с каким-нибудь ламповым словариком для жсона. Эта залупа вообще часто юзается?
>>1796428 А, в нескольких местах не поменял названия переменных и классов. Дятел. Ну и да, кое-чего не дописал, например, поля "state" В общем, я делаю table_1 = Table_1.objects.filter(state=1)[0] У меня by design в той таблице может быть только одна строка, у которой state = 1. После чего передаю дзиндзе в темплейт "'Table_1': table_1"
В моём коде, неисправленном из представления "Table_1" это "Event".
>>1796504 Дрочу любые sql'и, файлы, xml'и и прочую лабуду на нескольких языках, но никогда не смогу в нормальное программирование. Всякая ебала с 100000 фрейморками, либами, паттернами и прочим ООП для меня сложнее.
кто нибудь использует dynaconf? поясните почему он видит рядом лежащий settings.toml но не settings.json или у жсона должен быть особый формат чтобы он его распарсил к себе? как вообще увидеть где эта ебала файлы ищет ибо среди имен файлов что он там генерит "на поискать" есть settings.json но где он его ищет я хз
>>1796861 То что спустя несколько часов она отжирает кучу памяти и лагает, даже если в ней ничего не делали - это джава джетбрейнсам в штаны насрала опять?
>>1796870 >То что спустя несколько часов она отжирает кучу памяти и лагает Память очищается если кликнуть на индикатор памяти в правом нижнем углу. Или можно настроить ограничение по памяти. >это джава джетбрейнсам в штаны насрала опять Наоборот, джетбрейнсы выжали из джавы максимум и при этом сделали нормальный интерфейс.
>>1796878 >Первая часть твоего коммента никак не объясняет первопричину проблемы. Потому что "проблема" существует только в манямирке нищих пердолей с 10-летними ноутбуками.
Это вчерашний анон, у которого были сложности с xml. Объясните плз, как можно по элементу понять степень его вложенности. (не уверен, что правильно юзаю термины, но надеюсь). Т.е. вот гляньте на пикрил из злоебучей задачи, блу это рут, т.е. у него это вложенность грубо говоря один, у ред вложенность уже 2, т.к. это дети блу и у грин уже вложенность 3, т.к. это ребенок ред. Как узнать эту вложенность элемента в моей рекурсивной функции, чет не понимаю, но мне кажется как-то можно.
>>1797112 <cube color="blue"><cube color="red"><cube color="green"></cube></cube><cube color="red"></cube></cube> Надо чтобы выдало 4 3 1 Остальные тесты на сайте с курсом скрыты, их там 18 штук
>>1797167 Ну, если тебе самому интересно, то вот задача целиком, я выше ее уже постил. Но только если тебе интересно, я как выше уже писал мб и кривожопо, но сделал
>>1797186 я так понял имеется в виду н аркоманская пирамида, синий кубик два красных зеленый кубик верхний стоит один, ряд ниже стоит 2 и т.д., т.е. синий кубик 1Х1 = 1 два красных 2X2 = 4 зеленый кубик 1X3 = 3
Антуаны, с чего начать изучение нубу? Открыл сейчас саммерфилда, а там на первых же страницах пишут, что это книга для людей с опытом программирования. Посоветуйте что-нибудь для совсем нуба.
>>1797353 использовать основные элементы Python – списки, функции, модули; рисовать при помощи встроенных инструментов Python; анимировать изображения с tkinter; написать настоящие игры – “Прыг-скок!” (клон знаменитой игры Pong) и бродилку “Человечек ищет выход”, где нужно прыгать по платформам, чтобы добраться до выхода.
Аноны, поясните за хтмл парсинг и бютифул суп. Не понимаю эту фразу из документации (контекст на 1 пике): "Beautiful Soup then parses the document using the best available parser. It will use an HTML parser unless you specifically tell it to use an XML parser." Я недавно начал вкат, что собственно есть хтмл парсер?
Я думал что парсер это программа, которая позволяет обрабатывать информацию и как-то ее фильтровать, т.е. у меня задача учебная из хтмл документа на определенной ссылке достать все юрлы, причем их еще особым образом обработать. Собственно до этого момента я считал, что я как бы и пишу какой-то примитивный парсер. Чет я запутался
>>1797454 Алсо такой вопрос, чет в документации не вижу метода get, это же не гет из реквестс, и не гет который юзается для словарей, где почитать, откуда он берется, как работает?
>>1797498 Ты же сам сказал "для выдирания информации из HTML.". Вот я получил это содержимое, в данном примере распечатал, а могу например регуляркой в нем что-то конкретное поискать, могу всю эту хуйню засунуть в какую-нибудь переменную, что тогда ты понимаешь под выдиранием информации?
>>1797538 хтмл это всего лишь текст браузер парсит этот текст на составляющие (дерево тегов) по правилам хтмл парсинга (разбора) красивыйсуп точно так же парсит строку которую возвращает сервер в структуру к которой ты можешь делать запросы для извлечения
Анчоусы, сколько примерно времени надо, чтобы найти работу за еду? Стажировку там, что угодно. И что для этого надо выучить/узнать. Сам на 3 курса уника и надо бы уже на тему работы задуматься
>>1797709 >>1797702 Поясните мимокроку, а асинхронность и многопоточность это не одно и то же? Я как-то делал прогу, которая должна совершать определенные действия раз в n секунд, действия были достаточно сложные, поэтому если я задавал делать что-то 20 раз с интервалом 5 секунд это занимало не 100 секунд, а больше, т.к. она делает действие пару секунд, потом 5 секунд ждет, потом опять действие пару секунд и выходит скажем 110 секунд на выполнение такой хуйни.
Описанное мной многопоточностью фиксится, или асинхронностью?
>>1797728 >Поясните мимокроку, а асинхронность и многопоточность это не одно и то же? Нет, асинхронность работает в 1 треде >Описанное мной многопоточностью фиксится, или асинхронностью? Без разницы
>>1797728 многопоток выполняется одновременно параллельно при асинхроне дает возможность выполнить другое если текущее ушло в ожидание (ответа из сети, ответа от диска, ответа от базы. от другого процесса и т.д.)
а твое фиксится выставлением периода ожидания в конце каждого выполнения
Посмотрел ролики от удеми по питону. Про пентестинг. В целом, подойдет ли питон для пентестина, хакинга, для написания стиллеров, граберов, создание ботнета. Или лучше для пентеста юзать другие яп. Показался питон - легким для освоения и написания кода. Что думаете? Лучше он или другой яп.
>>1797780 https://cloud.mail.ru/public/25VT/PEYkh8Bff/ Вот. Реквест прежний. Подойдет ли питон для написание стиллеров, граберов, ботнета и прочего в хакинге. Например, для создания ботнета. Клиент-сервер есть, сокеты тоже. Норм будет? Или для стилера. Например, дох програм на кали написаны на питоне, всякие там брутфорсеры и прочее.
>>1797775 Если ты задаёшь такие вопросы, то асинк тебе ещё не нужен. Читай про сокеты, процессы, потоки, примитивы синхронизации, как с нуля без фреймворка написать сервер/клиент на сокетах. Можешь сначала классику сделать: одно соединение = один поток. Соединяй к этому серверу 10 тысяч клиентов и смотри как система захлёбывается от кучи процессов/потоков и тугой синхронизации между ними. Потом читай про тредпулы и очереди обработки короткоживущих запросов, можешь даже простенький http сервер написать. Потом попробуй туда прикрутить вебсокеты. Вот тут как-то оно не встанет, так как соединения живут долго и забирают воркер из тредпула на вечно, не позволяя подключать новых клиентов. Возвращаешься к классике, соединение=поток, всё работает, но на 10к соединений всё так же тормозит. И вот здесь уже читай что такое epoll/kqueue и чем они отличаются от select, что такое эвентлуп и нахуя было переизобретать планировщик ядра в юзерспейсе. Потом читай про колбэки и почему с ними очень сложно писать код. Потом читай про асинхронность, корутины, неблокирующие сисколлы, вот тогда завеса тайны немного приоткроется.
>>1797778 > для написания стиллеров, граберов, создание ботнета Судя по уровню твоих знаний питон тебе точно не помешает. А насчёт малвари, ну сам подумай, питон и установить не так-то просто, и весит он немало, как ты его будешь незаметно внедрять жертвам?
По ошибке указал, что последняя работа была три месяца позже, чем на самом деле. Сейчас идет проверка и мне говорят, где три месяца, чувак? Если я честно признаюсь, что в глаза проебался, то меня все равно нахуй отправят? Или что можно сказать? Походу 5 часов и месяц интервью улетают в дупу. :(
>>1797731 >Нет, асинхронность работает в 1 треде А можно сделать многопоточность с асинхронностью с каждом потоке? Или это слишком сложно и там куча подводных камней?
Сколько такая хуйня стоит, регулярно приходит. Швайноиндусы с 6 сразу мимо, мой выставленный рейт в 40 тоже маловат, сколько? Всякие куберйобы и терраформы не знаю, но можно и подучить.
>>1797864 Можно. Я все ебусь с оберткой-классом Process, чтобы как в GoF красиво было. Суть в том, что каждый тред/процесс должен запускать свой eventloop.
>>1797870 И всё равно стоит вопрос >>1797685 >вы часто используете асинхронность? >Как в ней попрактиковаться? Ну, со вторым вроде выяснили, что можно чат написать. А что насчёт первого? Если ты не с какой-нибудь обработкой видео работаешь, то насколько часто асинхронность нужна?
>>1797796 кста, а не подскажешь что-нибудь про тестирование нагрузки сервера, типо сымулировать трафик в 200к как в erlang делают (смарел какую-то презентацию аля python vs erlang), спрашиваю у тя так как видно ты компетентен
Аноны, 2 день сижу, помогите плз. Есть ссылка https://pastebin.com/raw/hfMThaGb Надо с нее вытащить все <a> теги и из них юрлы, причем о резать вот так:
Код с 1 пикчи позволяет получить сами ссылки из тагов, а как их теперь вменяемо обрезать?
Самый близкий к нужному эффект дает urlparse(link).netloc, но он не справляется например с такой хуйней в конце домена ":1345", и ссылки типа bya.ru отправляются нахуй.
Как написать скрипт, который будет блокировать ту или иную программу на компьютере(виндовс) по расписанию? Скрипт нужен только для одной программы. Это вообще сложно сделать? Сам я изучаю питон чуть больше недели и пока даже не представляю, как к такому подступиться. Вообще звучит очень просто, но на деле хуй знает.
>>1798206 Также думаю, что можно прописывать нужные адреса в хосты, чтобы программа открывалась, но не работала. Такой вариант меня тоже устроит. Как проще сделать? Самое главное, чтобы всё по расписанию было.
>>1798174 там в сэмпле есть ссылки которые начинаются на frp://, а еще есть ссылки вообще вида mail.ru/huipizda, но вообще я уже с юрлпарс получше разобрался и через него сделал
>>1798210 Да, чтобы она не запускалась в определённое время. Но при этом в другое время должна запускаться. > Можно по процессам лазать и рубить ее нахуй, например. это сложно сделать? что гуглить?
>>1798215 >тобы она не запускалась в определённое время Не очень понимаю формулировку "не запускалась". А запускается она как, по планировщику ОС или ее пользователь не должен запускать? Если рубить процесс не вариант, то нужно способ к конкретному случаю подбирать. >это сложно сделать? что гуглить? python kill process by name пробовал в гугел вводить?
>>1798217 Я включаю прогу и она должна вообще не запускаться или сразу после запуска выключаться. >>1798218 А это второй вариант, если первый слишком сложно сделать.
>>1798231 Если тебе нужно сделать аля кряк, то лучше поищи в инете, 99% что это уже сделали. Фотошоп например частично так крякается + хосты заворачиваются в анус, чтобы он не лез стучать.
>>1798233 Нет же. Мне нужно, чтобы я не мог запустить программу в определённое время, чтобы не отвлекаться на неё. Типа как блокировка сайтов, но только программ.
>>1798235 Боже, ты настолько слабовольный? Выведи себе вместо ярлыка запуск через батник, который проверит время, и если оно то самое, то вместо запуска пошлет тебя нахуй.
>>1798216 я посмотрел хауди хо джанга за час но оказываеца надо было знать питон пришлось смотреть питон за час и мне сразу пазванили и пригласили за 299к/наносек бэкенд делать, но я ж не дурачок себе цену знаю и среднюю цену на рынке и нахуй их послал они еще какую то хуйню про сикать спрашивали сикуль какой то извращенцы ебаные на сиках помешаные с такими разговор кароткий
>>1798322 >Python3 и PyQT5 Думаю это рано еще для него, сначало надо выучить с десяток гофовских патернов, прежде чем предисловие читать , или это тролинг какой то?
>>1798333 В первой части этой книги - классика - переменные, типы, циклы и прочее. А PyQT5 вторая часть книги посвящена. Её можно пролистать по диагонали. Или вообще не читать.
>>1798384 СИДИШЬ НА УЮТНОЙ РАБОТЕ, ЛЕНИВО ИЩЕШЬ МЕСТО НА ВЫРОСТ ПОЛУЧШЕ @ ПРОШЕЛ СОБЕС, ТЕБЯ ГОТОВЫ ВЗЯТЬ @ БЕЗОПАСНИКИ ЗВОНЯТ ХРЮШЕ С ТВОЕЙ ТЕКУЩЕЙ РАБОТЫ трустори кстати
>>1797865 >120+ микросервисов Соа говно, микросервисы заебись. Когда уже микросервисы станут тоже говном, а в треде будут наносервисы, чтобы совсем для каждого чиха был отдельный сервис?
>>1798448 Рассказала начальнику, тот подвалил ко мне с темой "ты там охуел работу искать у меня за спиной, что не нравится тебе?". Посрались в итоге на этой теме, когда я сказал ему, что это он охуел хотеть, чтобы я с ним согласовывал свои жизненные решения, и что в следующий раз позвоню ему когда буду цвет труселей выбирать себе. Он потом извинился. Сказал, что вспылил, что понимает, мол важно смотреть рынок периодически. Но я все равно ушел, только в другое место уже.
На первый вздляд скрипты одинаковы: в самом начале запускается бесконечный цикл, и интерпретация никогда не продолжится дальше.
Однако:
Первый скрипт при запуске потребляет 12000 кб анонимной памяти (VmRSS: 16 MiB).
Второй - 3800 кб анонимной (VmRSS: 8 MiB).
В чем подвох? С более старыми версиями проблемы не было. С новым интерпретатором - аномально высокое потребление анонимной памяти. Это норма? Каково возможное объяснение явления?
Анон, пояни за scikit. Есть код (пикрил), который на основе невероятного датасета рисует границы принятия решений. Вопрос - как? Как сука он это делает? Я понимаю что в coef_ записан "тангенс угла наклона", а в intercept_ сдвиг по оси y. Но простого понимания как все это рисует линию ("a = -(line * coef[0] + intercept) / coef[1]") нет. Кто нибудь, обьясните долбаебу (мне) как это работает.
Аноны, дебильный вопрос про пучарм. Пытаюсь начать ковырять джангу, и нужно ковырять файлики из двух разных папок на одном уровне (подчеркнуты красным на первом пике). Но смотрим на 2й пик, слева видно только содержимое собственно папки мейн, как подняться на папку выше, открыть папку майсайт, и файлик из нее тоже открыть?
А то не хочется пучарм в тысяче окошек открывать, хочется чтобы все файлы были вкладочками в одном окне (у автора курса который смотрю саблайм, и не очень хочется еще и с ним разбираться, там это удобнее я так понял)
йо, питонеры. в шараге нужно потыкать win32 api и порекомендовали писать на шарпе или плюсах. знаю, что для питона есть pywin32. так вот вопрос, стоит ли вспоминать плюсы чебы написать эту сраку или легче будет изучить pywin?
Бля, как же сложно джанго учить. Такое ощущение, что на тебя вываливают сразу грузовик каких-то непонятных деталей, которые хз как взаимодействуют, хз с чего начинать и все такое. Берешь курсы - ну мы скачали джанго, вводим команду и вдруг ХУЯК У ТЕБЯ ВЕЗДЕ МИЛЛИОН ФАЙЛОВ, ВСЕ ДРУГ У ДРУГА НАСЛЕДУЮТ ШОТО, КУДА СМОТРЕТЬ ХУЙ ЗНАЕТ.
Так и должно быть, или я рано полез? До джанги изучал просто питон и его синтаксис и задачки решал, ну от совсем базовых типа как цикл for работает, заканчивая какими-то основами ооп и классов, реквестами, несколькими популярными модулями.
>>1798894 Ну хуй знает, чем тебе помочь. Практика, практика. В Джанго 4 базовых вещи - urls, models, views и settings. Вначале создаём модели в models. Затем создаём урлы в urls, чтобы принимать get и post запросы. Во views принимаем request, пишем/читаем из моделей и отдаем response. Вот это надо понимать. Это был платный курс по основам Джанго, с тебя $50, Антон.
>>1798969 Но вообще смущает то, что после того, как я поучил синтаксис такое ощущение, что все, что я учил пошло нахуй и неактуально, тут из самого питона одни импорты ну и классы, а так куча каких-то своих методов, функций, хуй разберешься. Понятно, что есть документация, но просто сидеть и читать документацию мне кажется это не путь с нуля, нужно понимать, что ты в ней ищешь, чтобы нормально пользоваться
>>1798994 А ты как хотел. Каждая крупная библиотека закрывающая свои задачи - фактически отдельный язык. А то и два, если на стыке питона и, например, джаваскрипта... А то и три. Четыре...
>>1799037 Так-то у яндекса отличный адаптив, и крайне объемный, в спринт укладывают то, что по-хорошему месяц учить, а потом еще и проект по этому делать.
Только дорого пиздец просто, конский ценник. Откуда у них студентов-вкатывальщиков столько, способных по 120к выложить. А потом говорят что в россии бедных много.
>>1799045 >А потом говорят что в россии бедных много. Я таким же вопросом задаюсь, когда вижу, как раскупают квартиры за оверпрайс в новостройках за считанные недели, когда вокруг меня ездят дорогие машины, и это в регионе со средней зарплатой меньше 30к, а медианная наверно вообще ближе к 20 чем к 30. Скажете - да они все в кредитах, ипотеках. Согласен отчасти, но ты блять иди ипотеку с автокредитом возьми при зарплате в 20-30к. Еще и детей при этом заводят, и одевают нормально.
>>1799051 Ну в моем городе все под чистую скупают Казахи, так что ответ хоть на один вопрос у меня есть.
Но когда я увидел сколько вкатывальщиков в яндексе - я прихуел. Особенно в питон. Там по сотне людей в месяц к ним поступает только на бэкенд на питоне. Аналитиков и сатанистов тоже дохуя. Эдак скоро на одну вакансию будет конкурс, как на дворника.
>>1799054 Так и есть, до этого момента нас спасала конченая система образования в снг, которая умеет готовить не те кадры, которые нужны, а которые были нужны.
>>1798994 Все постепенно. Основной вопрос в разработке - какие данные нужно отправлять по обращению к адресу? Это будет html или json? Html? Отлично. Будем использовать шаблон из папки templates. А затем строка за строкой - реализуем. Этот базовый механизм нужно понимать. На этом этапе не нужно знать все, потому что всего крайне дохуя и оно пока лишнее. От всей статьи про протокол http нужно лишь два метода - get и post. Даже коды ответа от сервера (200, .. 500) можно не знать, т.к. Джанго умное и само вставляет нужные коды в response. Вообще Джанго выполняет много работы внутри, оставляя на поверхности синтаксический сахар для удобства реализации первичного функционала - перехода по urls. Что ещё нужно - использовать дебаггер - в pycharm он крайне удобный - чтобы останавливаться на нужных строках кода и смотреть в переменные. Найти там объект request, например )
Насколько большим может быть словарь для быстрой работы питоноскрипта? Типа миллион ключей со значениями уровня "десять тысяч списков строк" с постоянным добавлением туда, поиском и удалением этих ключей будет нормально работать или лучше это куда-то записывать? В базу данных там или еще куда. Как нормальные пацаны делают?
>>1799095 Мне кажется, если у него возникла необходимость держать в памяти словарь на миллионы ключей и как-то дрочить его в процессе, то он с самого начала сделал что-то не так.
>>1799098 ну на миллионы это я загнул но просто интересно, нормальная ли это практика работать с большими словарями >>1799100 не знаю, может и проще как раз, но никогда не работал
>>1799102 Ну я под такие кейсы на серваке разворачиваю постгресс, потом уже из него скриптом получаю информацию, обрабатываю и записываю обратно. Но я хуй знает что у тебя там.
Аноны, я только начал питон тыкать, до этого еще посмотрел ксс хтмл, думал, фронт или бэк мне интереснее, и возник такой вопрос, вот анон выше про джанго спрашивал, я сейчас маленько посмотрел, а чем собственно ее профит? Ну весь дизайн же можно просто сделать в хтмл с кссом, вбить в а таги ссылки на другие странички, которые прихуяришь к сайту, всякие красивости жаваскриптом доделать типа всяких менюшек и т.д.
Единственное, что мне вообще непонятно сейчас с моего нубского уровня - это как заставить работать нарисованную мною допустим кнопку логина (я понимаю, что "единственное" это громко сказано, и в этом и есть огромная суть бэка, но все же). Т.е. всякие фласки и джанго это то, что работает с базой данных и выдает из нее данные, когда мы жмем на сайте кнопки? Т.е. условно отвечает за регистрацию, логин, переписку допустим, да?
>>1799122 Джанго больше не для интерфейса, а для бэкенда. Всякая обработка запросов, выдача тебе нужных страничек, взаимодействие с базами данных. На фронтэнд чаще что-нибудь адекватное используют, Vue, например.
Необходимо реализовать таблицу рекордов при помощи модулей pickle и shelve, которая будет храниться в бинарном файле. Режим доступа ab+ это дозапись и чтения из бинарного файла. Но почему-то, сохраняется только первые имя - рекорд. Подскажите, что я делаю не так?
>>1799150 Сори, я тебе ничем не помогу, сам недавно начал, но другой вопрос, зачем вообще делать как на твоей пикче, типа f = open... когда есть охуенная штука с with open... которая сама закрывает файл и визуально куда приятнее и читабельнее?
>>1799101 Реально, рынок очень голодает по бэкэнд специалистам а особенно если еще и по петону, в половине случаев сами всему обучат лишь бы были желающие, сам вкатился джуном после просмотра хауди хо джанго за час
>>1799162 идеальным вариантом будет включить х2 скорость у видео и параллельно начать раскидывать резюме повсюду, хотя это необязательно, обычно не успеваешь досмотреть видео до конца, как хрюши начинают звонить и готовы на все что угодно лишь бы ты к ним пошел
>>1799182 Да а зачем обучаться? берешь таску пару строчек говна высираешь, а потом тащишь это вместе с заданием сюда, а аноны решают пока сам в это время думаешь как будешь тратить свои кк в наносек
Помогите плиз, передать айдишник(data.id) из шаблона в форму, он отображается в инпут. Файл загружается, если id прописать вручную, как на первой пикче.
Всё куда проще чем вы думаете. Мидл это не тот человек, который много знает, а тот, кто умеет решать задачи поставленные бизнесом самостоятельно. Умеешь решать задачи с определенным стеком самостоятельно? Ты мидл.
>>1799694 смотря где работаешь я работал в банке одном, где был чел в "отделе разработки по" насколько я помню, он разработал в доисторические времена дрочилку на delphi для запроса и разбора xml кредитной истории с какого-то бюро и несколько лет сидел ее поддерживал, иногда дрочил хранимки для другого старого говна, но это было редко
Полгода назад создал сделал дрочилку для подключения к оракловой базе и отработке некоторых данных. Сейчас понадобилось разово сделать почти то же самое, только с другим запросом. Создаю в том же сука пичарме проект, на той же версии питона. Устанавливаю той же персии cx-oracle. И он мне пиздит, что на компе нет оракл клиента. При этом предыдущий проект с ровно той же конфигурацией заебись работает. Ну и параша ебаная блядь.
>>1799742 Тупо скопировал модули из другого venv и заработало. На всякий случай проверил на новом проекте, слил последнюю версию либы, в ней та же параша. Сука уроды нахуй они старые версии в репозитории перепилили, конченые блядь. Возможность программировать, собирая приложение из чужих кубиков, дико увеличила производительность и возможности одного человека, но за это приходится платить тем, что тебе кто-то в салат насрет когда не ждешь.
>>1794292 >что мне нужно делать с самого начала принять факт что гит кривое говно и начать разбираться в этом говне (читать читать читать читать и еще раз читать)
>>1799663 Ну ок. А о каком уровне Решения мы говорим? Сказали сделать и ты сделал? А как же проектирование и тп? Я имею в виду что это работа командная, тебе дали какой-то модуль, ты знаешь его запилить грамотно. Но без опыта работы ты мидлом не будешь, даже, если ты умеешь решать задачи.
>>1799929 Наверное да, хотя я постоянно учу новое, да и на этом проекте приходится добавлять разные технологии, вот сегодня выкатили еще требования. Ну и приходится быть девопсом, так как у нас не мог их набрать. По сути у меня только фронты и тестеры есть, все остальное я делаю, да и то тестеры не могут в авто тесты.