Вышел второй релиз кандидат для версии 3.11 с бустом производительности. Строим планы на пятилетку, когда питон разгонится до отрицательного времени исполнения и потребуются процессоры с отрицательной тактовой частотой.
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: — А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. Исходник: https://dumpz.org/bASGKD8cCFDf
>>2462413 Это единственная проблема шапки? >— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать >Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком) Человек, написавший это, не читал ни sicp, ни свою хуйню. И тем не менее написал. Теперь мир стал чуточку хуже из-за него. И спорим что этот чел свято уверен, что никак не повлиял на ввод войск на украину?
Привет! Работая сись админом понял чем хочу заниматься, гуглив, выбирая из c#, node.js, python, go, выбор пал на питона, хочу вкатиться в DevOps, По жизни кодил мало, еще в на засратых курсах, давно короче, линуксом не пользовался, планирую поставить ubuntu и изучать его попутно.
По поводу питона, хочу найти курсы на торрентах, которых миллион, что же выбрать? В шапке какие-то мутные ссылки, большинство не базовые и упор держащие именно на синтаксис языка, Хочу общий начальный курс питона с торрентов, который наведет на путь истины и даст возможность изучать более сложные стези языка, желательно на русском, уровень английской B1, средний.
Кто уже крутится в этом, какой курс вы бы посоветовали, так сказать с нуля? Или может быть книгу? По поводу Луца, 1.3к страниц, надо ли?
>>2462413 Да ладно, упругие деды в лайвкодинге разбирают кишки питона. Есть что лучше?
Шапка устарела вообще: Лутц в принципе говно, неправильно его форсить в шапке. Don't think about yellow elephants.
Харьянов на любителя. Джанго уже четвертая версия. SICP говно, от него даже в MIT отказались, а питон-курс только частично на питоне, потом они меняют его на схему и вообще неполный.
>>2462884 >я раз в год пишу это сообщение, кстати я заметил, я пытаюсь понять, что у тебя за травма такая, что конкретно этот ролик тебя задевает, а всё остальное норм.
Что толку от ссылок на АПИ, когда ты не понимаешь кишки, как всё это работает? В механизме асинкио очень неочевидные кишки. Причём сейчас они ещё глубже спрятаны. Но понимать их очень-очень полезно.
>>2462887 Предложи нормальный вариант. Пока были только ссылки на свою страницу от какого-то анона, но там был какой-то непригодный рандомный шлак
Меня больше всего раздражает пункт с джангой, потому что сейчас совсем другие версии. И отсылка к Лутцу.
>>2462935 Мы об одном и том же ролике говорим? Ты его смотрел? Я не вижу там никакого перечисления АПИ и никаких рекомендаций в духе how to. Обычно все ролики показывают примеры, как что-то сделать.
А там другой концепт, "хочешь понять как работает операционная система - напиши свою собственную". Вот там начиная с базы показывают проблемы тредов и шаг за шагом строят модель свой собственный event loop. Как посмотришь, так сразу будет понятно, как это работает.
>>2462937 Ты прав в целом. Но у питона есть отличие от других языков: питон вырос в академической среде, он пришёл оттуда. В этой среде очень много тех, кто специализируется на образовании и умеет учить, составлять материалы обучающие. Поэтому и для питона сделали очень хорошие обучающие материалы.
Официальные обучающие материалы по питону очень хорошие, образцовые. Ещё очень хорошие материалы по джанго. Вот со всем остальным уже слабо, хорошо если API мало-мальски адекватно задокументируют.
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
— Какие книги считаются лучшими? На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых? Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
— Какие книги считаются лучшими? На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых? Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
старая версия шапки, треды 90-148 и ранее: https://dumpz.org/bASGKD8cCFDf ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
>>2463074 >Для автотестеров инфы бы Если не брать синтаксис языка, то, думаю, книги с пика хватит. Сам не читал, не знаю настолько хороша англ. А у селениума хорошие доки, статьи в интернете - тут книги не нужны.
>>2463085 У тебя не будет нормального понимания, если ты просто будешь запоминать правила, как что-то работает внутри. Вот ты когда сам что-то попробуешь реализовать, или хотя бы посмотришь, как это другие делают, то сразу получишь огромный буст в своём уровне, многие вещи становятся очевидными, что до этого было непонятной магией.
>>2462810 >Если ты не новичок - Седер читай. Это очень краткая книжка. Тоже какое-то говно мамонта. Переизданное и подретушированное.
В книжке ни слова про typing. Ни слова про asyncio. Ни одного использования оператора := . Ничего про датаклассы, не говоря уже про внешние пидантики. Ничего про тестирование в unittest/pytest. Экскурса в продвинутые темы вроде многопотока тоже нет, хотя бы поверхностного.
f-строки есть, появились в 3.6, но это не делает книгу современной.
Ладно асинхронщина, это сложная нишевая тема, далеко не всем надо в принципе. Но нельзя в современном питоне без хотя бы поверхностного обзора аннотаций типов. Ты открываешь примеры документации и видишь там аннотацию, как этот код читать и понимать?
И у тебя снова будет одна переменная. Это переименование, ты можешь проверить по id(a), id(b). Надеюсь ты знаешь, что в питоне всё объект, а переменные всего лишь указатели на них.
Сап двач. Есть задача пик1 и ее решение пик2. Вопрос. А что если в условии задачи не стояла бы необходимость в замене города на дефис, что нужно прописать в тернарном операторе и почему его невозможно использовать без else ? И почему тогда list comprehension на пик3 можно использовать и с else и без?
>>2463298 >тернарном операторе >невозможно использовать без else Тернарный без елс би лайк: в чем разница между уткой? >можно использовать и с else и без Наверное потому что не всякий иф создает тернарник, а в хвосте компрехеншнов иф имеет другое значение. Ознакомься с синтаксисом компрехеншнов и все встанет на свои места.
>>2463482 А мы не знаем. Ты же тут вкатун, а не мы. И спросить по-честному не у кого. Ведь вкатунов, которые не вкатились тут нет по очевидной причине.
>>2463601 смотря чему учится. в аннотации написано что для продвинутых. но ты можешь например начать с нее изучать asyncio, в отличие от невнятного ролика на "американском" языке
Возможности для логирования действий юзеров в django. Выявил две опции: 1) from django.contrib.admin.models import LogEntry 2) pip install django-activity-stream
Первый вариант попроще, вторая сильно более мудрёная, но там и функционал более разнообразный. Сталкивался ли кто с такой задачей и\или юзал что-то подобное?
>>2463744 Слишком дохуя часов на левую поебистику - первые три модуля. Вся ручная теория и тулы максимум 36 часов. И то если начать не с ютюба, а с Савина, в противном случае можно за 24 часа управится, вместе с практикой на тренажерах от комьюнити.
Слишком мало часов на питон и автоматизацию. Особенно учитывая, что это не чистые часы проведенные за кодом, а размазанные сопли "преподов" в видеоформате. Так что смело дели на два или даже четыре.
Алсо. С трудоустройством тебе не сильно помогут. Дадут шаблон резюме, может еще чатик с вакансиями, где сидят тысячи таких же как ты, на этом все.
Яб за такое даже 20к не отдал, даже не смотря на то, что вся инфа есть в свободном доступе, либо на бесплатных курсах. А уж 105к...
Недавно начал писать на Питоне и не до конца понимаю методы импортирования своих функций в другие проекты. Если короче, то создаю папку под проект, в ней папку например lib, куда кладу файлы скриптов. Как мне из lib вызвать класс Down, который лежит в файле down.py? from lib import down.Down?
>>2464278 Очень некрасиво и ненаглядно. Со строками отдельный разговор, потому что строки это иммутабельный тип. Ты не можешь дополнить строку, ты можешь только перезаписать переменную новой строкой. Даже если ты делаешь s += 'tail' будет создана новая строка. Поэтому str() совсем лишено смысла.
Со словарями и списками это стандартная рекомендация и общепринятая практика, так нагляднее и не перегружено. Хотя в pep8 вроде бы ничего нет про это.
>>2464278 А ещё должно быть единство стиля. Пустые объекты это частные случаи просто объектов. Ты же стрки с содержанием не через str() создаёшь? И списки, в которых что-то есть, через скобочки скорее всего. И словари. Почему в случае пустых объектов должна быть особая политика?
Если знаю базовый синтаксис, теперь куда двигаться дальше? Не хочу просто дрочить сидеть, хочу проводить время с пользой и потом со свободной душой делать что хочу.
>>2464720 Вот тебе скрипт для проверки поёбанных и починенных после майнинга видеокарт. https://pastebin.com/NFSaukdn Меня впечатлило в своё время. Это тебе не символы считать в задачках для даунов.
>>2465107 Так, но если у тебя знаний больше чем у них, то поебать. Ну вернее не совсем поебать, если тебя отфильтруют до того как ты эти знания сможешь продемонстрировать, надо ведь сначала до собеса дожить, или хотя бы тестового, но дальше уже поебать.
Хочу программировать на питоне, но у меня макпук. Я бы даже и заплатил за пользование пайчармом, но иностранные компании не хотят брать мои деньги. Какие есть варианты, чтобы кодить на маке?
>>2466125 Анон про другое я думаю. Базовый образ очень большой, он 900 мегабайт. Если ты на его основе делаешь свой образ, от будет ещё больше. Если ты по сети гоняешь готовый образ, то будешь гонять все 900 мегабайт. А собирать на другой машине докер тоже не вариант, потому что тебе внутрь надо класть какие-то данные с машины разработки.
Альпина в чистом виде не совсем пригодна, потому что там нет возможности собирать некоторые вещи.
Самый правильный подход в этих случаях, это двухшаговая сборка. Когда снячала на основе тяжёлого образа собирается всё, а потом копируется в лекговесную альпину нужные файлы и окружение. При желании можно вообще с нуля собирать сумерлёгкий образ, но это извращение и так не принято.
>>2466148 Ты эти 900 метров гоняешь один раз, и то если у тебя нет в кэше слоя с убунтой от другого образа. Дальнейшие обновления будут гонять только изменившийся слой, то есть твои 2кб говнокода.
>>2466343 Это если ты настроишь локальный репозиторий, а не будешь гонять образы целиком. Но для этого его надо создавать и настраивать, организовывать процесс, чтобы закачивать туда образы и т.п. Наверное это правильно, но сложно.
А вот отправить образ целиком - просто, через docker image save
>>2466399 Это как? Вот я делалаю docker save -o exprort.tar my_image и получаю огромный tar-файл. Я могу его только целиком выслать. А на другом компьютере его уже загрузят
>>2466422 Надо сделать докерфайл, который развернет такую хуйню на основе стандартной болванки, ты же просто развернутую хуйню пересылаешь, это бессмысленно.
>>2466430 Ломающие изменения в минорном релизе, например. Или что какой то долбоеб решил что большие числа это волнерабилити, может тогда все вычисления без доказуемой константной стоимости выкинуть, хуле.
Привет почаны. Хорошо знаю Жанго, OpenCV, numpy и всякую другую мишуру. Хачю заработать бабосек, вопрос собсна в "Где деньги Лебовски". Слышал что у мои дружки-пирожки в конфах прогеров сидят и там иногда просят всякую жижу написать, но сам я никогда не торчал в таких местах, где для пиитонеров такое? Сам я опыт коммерческой имею, пару проектов писал, но сейчас где заказы брать хз, пробовал на фриланс сайтах, но там меня в только игнорили, а потом нахуй выкинули с сайта после 24 февраля. Где работу то найти, чтобы скрипточек накалякать и кайфовать? И мб у кого конфы питонистов есть?
>>2466444 Я другой анон, чем вот этот >>2466010 но его проблемы понятны.
Ты не можешь взять и собрать образ по докерфайлу. У тебя в докерфайле будет что-нибудь вроде COPY app /app, ты копируешь локальный каталог в образ. Но на билд-сервере не будет этого каталога. Тебе надо как-то тогда решать вопрос с этим. Например выкачивать из гит-репозитория. Или выкачивать архив. Но это лишняя возня.
Намного проще, если ты создаёшь докер-образ, высылаешь его на другой компьютер, там его загружают в систему и гоняют какие-то тесты. Чисто для разработки, для тестирования. Хотя наверное это колхоз.
>>2466466 Видео посмотри. Выкинули потому, что это угроза безопасности. И не афишировали, чтобы не привлекать внимание и чтобы не бросились эти возможности использовать.
Арифметика с большими числами сохраняется. Они убрали только возможность печатать сверх большие числа в недвоичном виде. Но зачем тебе на экране число в 10 тысяч знаков? Причём если надо, то исправляется одной строчкой.
>>2466478 > Например выкачивать из гит-репозитория. Он уже должен быть при разработке. Но возней ты считаешь это, а не пересылание гигабайтов бессмысленного говна.
>>2466486 Не всё нужно хранить в гите. У тебя может быть масса отладочных артефактов, они нужны для запуска отладочной копии, но не нужны в гите. Тебе могут понадобиться какие-то медиа файлы, которые ты не хочешь держать в гите. Даже код, у тебя может быть тестовая версия. Я так понимаю, что тут вопрос отладки.
Другие нюансы: у тебя образ собирается например FROM python:3.10 а вот здесь >>2466403 приводится пример, что после минорного апдейта по разному работают интерпретаторы. Вот пусть ты печатаешь число в 30k знаков. На одной версии работает, на другой нет. Как отлаживать?
>>2466483 Я то видео смотрел, но только я не такая внушаемая Манька как ты и если мне на говно говорят это не говно - я все равно не поверю в это. > Но зачем тебе на экране число в 10 тысяч знаков? Причём если надо, то исправляется одной строчкой. Чтобы посчитать любимый факториал, зачем еще скриптовое говно нужно. Откуда я вообще просру про эту строчку и нахуя мне это надо, я просто хочу нормально работать с длинной арифметикой и мозги не ебать. А эти "срочные" обновления для вашей же безопасности это вообще отдельная тема для рейджа. Индустрия пизданулась, уж лучше сидеть по 50 лет ничего не обновлять чем так.
КАК БЛЯТЬ установить версию моего пакета? Я, сука, что только не делал, но на importlib.metadata.version("моя_хуйня") он выдаёт полную хуйню. Я сейчас все нервы себе сожгу от злости.
>>2466493 >предлагает собирать образы из артефактов мимо контроля версий >видимо не в курсе существования веток >не указывает конкретную версию корневого образа >На одной версии работает, на другой нет. Как отлаживать? Я бы начал с найма кого-то компетентного.
>>2467036 Так а как установить? Я вроде setup.py, pyproject.toml, прописывал __version__ в __init__.py, нихуя не сработало. Может я на каком-то моменте проебался просто.
>>2467521 Ну у меня после перетаскивания и активации пипки команда pip -V начинает выводить ошибки (в активной (.venv) оболочке), либо ссылается на глобальную пипку (C: appdata).
>>2467734 > Ниже пишут, что языки с динамической типизацией говно и используются чтобы написать пару скриптов, а нормальные продукты пишут на Java или С++. Ну и ты пиши, если хочется.
Почему не удается применить код 307 для flask в методе return redirect('/index', code=307). Выдает 405 Method not allowed, хотя в справочнике кодов HTTP четко указано, что лучше применять 307 вместо 302.
>>2467774 НИ РАЗУ за дохуя лет не видел 307. 302 или 303 для редиректа, 301 и 304 для некоторых других целей. По 307 написано, что надо использовать тот же метод, у тебя есть ручка пост на /index?
Чота не могу сообразить, как с помощью url_for в Flask сделать подключение стилей к странице. Сделал include "_style.html", в нем пишу {% for style in stylesheets %} <link rel="stylesheet" href="{{ url_for('static', filename='css/style') }}"> {% endfor %} Естественно это не работает. Как добраться до переменной style?
>>2468764 Сделал так, но чувствую, что можно было бы сделать изящнее. {% for style in stylesheets %} <link rel="stylesheet" href="/static/css/{{ style }}"> {% endfor %}
>>2468759 >https://www.pythontutorial.net/ >Годно для новичка? Кстати очень прилично, и даже не только для новичков, там продвинутые вещи есть и как-то очень внятно изложены
>>2468772 >>2468759 Ещё чуть дополню, вряд ли это может быть пособием по введению в программирование с нуля, но если самую базу на любом языке умеешь, то уже нормально.
Что самое главное, там много именно специфики питона. Там есть про современные вещи, вроде асинхронности, тайпинга и датаклассов. С эти беда у подавляющего числа книг, я реально ни одной книги рекомендовать не могу из-за этого.
И снова здравствуйте. Я опять по Flask. Хочу присвоить css-атрибуты полям формы. На SO пишут, что можно делать что-то типа class_=".btn-primary" прямо в аргументах wtforms. Насколько это правильно? Есть ли другой способ, потому что во всплывающих подсказках по формам нет такого аргумента как class_.
Суп, анончики. Дайте, пожалуйста, идей для программок. Ковыряю сам, книжки не читаю. так интересней Калькуляторы писать не интересно, а ничего кроме них на ум не приходит
>>2470810 Древнее говно мамонта. Про TCL\Tk который у него там внутре уже никто и не помнит. Но под задачу подходит, даже можно кроссплатформенное приложение наваять.
>>2470926 Затуп на 10 минут. В итоге понял, что нужно нажать таб после if и перед print. Вроде сработало. Я правильно понял? Пока что не совсем понимаю логику этих действий, надо поискать статью отдельную
ПЛЮСКОВ АЛЕКСАНДР НИКОЛАЕВИЧ16.6.1987ОБЛ. НИЖЕГОРОДСКАЯ, Г. ВЫКСА, МКР. ГОГОЛЯ, ДОМ 49, КВАРТИРА 202208088371ОТДЕЛЕНИЕ УФМС РОССИИ ПО НИЖЕГОРОДСКОЙ ОБЛ. В ВЫКСУНСКОМ Р-НЕ
>>2469741 Напиши гуишную программу, чтоб клиент для кубернейтса, редиса, постгри был сразу. Вкладки или еще что угодно. Для кубов, просмотр подов, секретов, возможность удалить, масташтабирование и т.д Для постгри - структура таблиц, вьюх, триггеров, возможность выполнять запросы, модификация полей после вывода и т.д Редис - просмотр баз, просмотр содержимого, поиск ключей и т.д.
Все это не трудно, просто обертка над консольными программами. Если отсутствуют - предложи скачать
Двач, как наложить одну фотокарточку на другую? Есть две фотки, одна побольше, другая поменьше. В той которая поменьше есть альфа канал и она меньше чем первая.
Как ее наложить на первую с прозрачностью? ОпенЦВ ебет мозги, что они разных размеров.
>>2472125 Вообще в целом мне подойдет, если подскажите как ресайзнуть изображение, чтобы оно увеличилось в размере, но сама картинка осталась нетронутой, просто по краям увеличилось место с прозрачностью.
Как сделать так чтобы сервер на фласке + nginx принимал данные (видео поток) с приложения на плюсах передавал его программе на плюсах ,принимал изменные данные и отправлял обратно два пути через cycpyton интерпритировать в Си, но тогда нужен ли Wsgi 2 , написать отправку на плюсах и вообще через gstreamer.
>>2472020 Две недели отпуска прошли. Я как-то 3 дня убил, чтоб один символ поправить. Но там ошибка локально не ловилась, а на проде подробного логгирования пользовательских данных не было.
>>2472125 Почти разобрался, дело осталось за малым
Код пикрил выдает ошибку error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function 'binary_op'
Маску при этом выводит нормально, как и должно? Что я делаю не так? Я даже не нагуглил, что эта ошибка означает. В результате должна получиться одна картинка наложенная на другую по маске.
>>2472020 Въебал пару дней на алкоголь, рикаминдую. Ты что-то напрягаешься,таски-хуяски, стресс. А тут пару дней пропало, почта ломится, все ноют, а ты лежишь и чувствуешь облегчение. Потом догнался, отпизделся и по новой. Красота. Хотелось бы ещё заноркоманить, но это меня убъёт, жалко.
Ку, пару лет назад освоил книгу "кусь писюна". С тех пор много времени утекло, вот хочу опять поробовать в изучение языка. Посоветуйте книжку/курсы для нубика :3
Ребята, можете посоветовать что почитать про сетевое программирование, веб программирование на Python. Я понимаю как делать базовые задачки, но не секу как, например, делать архитектуру веб приложения и прочее. Хотелось бы такую книжку, которая покажет все на примерах от сырых сокетов, до какого-то фреймворк-монстра, которым можно решать прикладные задачи веба. Спасибо
>>2462085 (OP) Cап аноны. Даётся массив чисел и какое то число x. Нужно найти в этом массиве 3 значения сумма которых наиболее близка к данному числу x. Короче я сам делал, но на сайте пишет что код нихуя не оптимальный и занимает слишком много времени. Потом я махнул рукой и скопировал чужой код (кстати алгоритм как у меня, но чуть чище и лучше написано), но сайт его тоже не принимает. Как тут можно ещё оптимизировать? https://codeshare.io/OdvJW7
http запрос с кукисами, есть рабочий код в powershell
adg1626/09/22 Пнд 23:19:42№2475028194
Сап двач, я тут второй раз в жизни поэтому ссаным тряпкам буду рад Для РАБоты нужно хуйню автоматизировать, в программировании я как в сексе чисто листва 33 уровня, спиздил с девтулсов хрома хттп запрос powershell, работает как часы Попытался по старой памяти че-то на c# высрать, нихуя не получилось, прыгнул на питон, тут все как-то почеловечнее, все равно нихуя 401 unathorized Помогите пожалуйста понять где я еблан а где я хуесос Кукисов там добавляется штук 20, я подтер их на всякий случай: https://pastebin.com/yvun88GJ
>>2474670 Это у тебя какой-то бинарный поиск в две стороны сразу. Но какой от этого профит в данном случае, хз, не проще ли просто брать про три значения с начала?
>>2475126 Добился того что оба запроса выглядят АБСОЛЮТНО идентично (чекаю в фидлере), павершел по прежнему 200 в любой ситуации, питон 401 Памагити пж :(
Блин, не у кого спросить, поэтому тут. Как сделать так, чтобы по переключателю (radio) в HTML открывалось или закрывалось дополнительное текстовое поле под ним? Я даже не знаю как нагуглить такое, сорян.
>>2475184 Раньше такое делалось на жквери и гуглилось за пять сек. Сейчас за жквери закидают ссаными валенками, но тебе сойдет небось. Но нормально гугли, по-английски. Я не фронт вообще, чтобы в это говно лезть.
>>2475226 Ну короче, я почитал, это реально вариация на тему бинарного поиска. Вместо три раза брутить тот же список вложенными циклами он сортируется и потом индексы сдвигаются с одной из сторон, если сумма больше или ниже ожидаемой. Третий индекс просто идет с начала. Компуктер саенс!
>>2474604 >Какие шансы вкатиться без матеши? Математика и не особо нужна. Даже в дата саенсе там она на уровне первого курса тех вуза. Сортировки всякие, поиски знать надо. Но это всё осваивается быстро.
>>2475469 >буквы можно множить на буквы какой долбоеб это придумал Хз о чем ты, но наверное можно. Представь вместо букв цифры, например 2 x 3 это 2 + 2 + 2 или 3 + 3. Что тебе мешает вместо цифр подставить буквы и сложить букву a b раз? По факту тебе нужно освоить всякие мелочи, адекватно называть переменные, соблюдать стиль кода, писать максимально понятно, чтобы любой кто будет допиливать код после тебя легко понял что ты там хотел сделать. Комментировать свой код или писать документацию. На самом деле от большинства кодеров никто не ждёт что они будут изобретать охуенные алгоритмы или высчитывать миллионные цифры после запятой в pi. Достаточно просто хорошо делать свой минимум и этого уже достаточно чтобы вкатиться в айти. Даже вышка не нужна.
Знаю на ок кресты, пишу на них всякое CV, чтоб быстро работало (cuda, sse и прочее говнецо). Упёрся в то, что в более-менее адекватных конторах хотят питон как основной язык. Отсюда вопрос - с чего быстрее вкатиться, минуя темы для нюфань про алгоритмы, ооп, классы, и всякое такое?
>>2476690 Нет. Ты че, ебанутый. Это гражданскую поеботку еще лепят на питоне. Хули там задач то, слетать по координатам, сделать фото в нужных точках. В том же мавике какая-то своя хуйня на основе, емнип, руби, для пульта и связи с ним. И чето низкоуровневое для железок дрона.
>>2477028 Фундаментально? Веди подсчёт, на каком по счёту элементе ты находишься. Потом значение этого счётчика возвращай. Есть несколько функций, которые сделали это за тебя.
>>2477037 Чёт глянул на for с enumerate и проиграл - это ж ебать создаётся объект-корутина, который на каждой итерации for возвращает кортеж, для которого делается flatten. При этом счётчик в цикле или range() считается non Pythonic.
>>2477040 Вот дока: https://docs.python.org/3/library/functions.html#enumerate Написано: Equivalent to: ... yeld ... Выглядит как ко-ко-ко-рутина, которая по совместительству closure (лямбда-функция) в контексте вызова. Вызов видимо такой: for idx, val in enumerate(list) : print(idx, val) где idx, x и есть flattening кортежа
>>2477047 >генераторная функция Она называется "функция". Но по факту это безымянный объект, хранящий состояние для возврата управления через yeld. Да, это не асинхронный вызов выполнения работы в отдельном потоке. И естественно, что по сравнению со счётчиком, эффективностью тут не пахнет. >распаковка Ну да, а как ты ещё доберёшься до полей безымянного кортежа, возвращаемого методами типа __next__()?
>>2477052 Слыш, ну чо ты сразу с козырей-то заходишь? Дай поцану объяснить тебе, как он это видит. Он лучше знает, что эффективнее, чем какой-то там таймер.
>>2477048 >Клозуры это не корутины Я этого не говорил. Closure - это лямбда. Вызываемый объект, захватывающий параметры из области видимости. Корутина тоже вызываемый объект, но она хранит состояние, которое влияет на результаты вызова. Может быть ленивой и выполняться отложено в том же потоке (это генератор) или собственно асинхронной (это видимо питонячья корутина).
>>2477056 Хз, ни разу не видел, чтобы генераторы корутинами называли. Так-то и мотоцикл можно машиной назвать, он ведь это техническое устройство, выполняющее механические движения для преобразования энергии, материалов и информации, но во избежание путаницы так не делают. Так и тут, есть устоявшееся понятие для сабрутины и для генераторов (которые в определённой классификации являются их сабсетом) его не применяют.
>>2477068 range тоже не так плох. Хотя доступ через [] тянет за собой лишнюю арифметику.
>питоник вей Python’s lists are really variable-length arrays, not Lisp-style linked lists. Список это не список, а генератор это не сопрограмма. Ладно, попробую как-нибудь затерпеть. Деваться всё равно некуда.
Здравствуй Двачик, недавно начал изучать питон и заглох на вот этом. Суть в том, что нужно реализовать способ в котором пара ключ+значение будет равняться ключем в другом словаре. Я изначально достал список Person, затем разложил его на ключи и значения і превратил спиоск [1,2,3] в кортеж. Однако при попытке собрать все это назад через zip получается хуйня. Подскажите, что делаю не так
>>2477305 Реализовать способ, при котором каждый элемент данного словаря (ключ и значение) станет ключом в другом словаре. Если в качестве значения выступает последовательность (список), значит – каждый элемент списка становится ключом + сам список также становится ключом (для этого превращаем его в кортеж). Помним: цикл может включать в себя вложенный цикл. Сам функционал нацелен только на этот словарь.
>>2477335 Нужно через дикт компрехеншен делать у меня пока только с третим вышло dct3 = {element: element for element in zip((dctKeys[2], dctValues[2]), dctValues[2])} и выводит: {('after_set', 'hello'): ('after_set', 'hello')}
Есть два массива float, нужно из обоих поэлементно сравнить значения и в зависимости от результата сравнения по-разному посчитать значение, которое в итоге должно пойти в третий массив. Как лучше осуществить это? Сам ничерта не понимаю.
Т.е. условно первый массив [1.5, 7,8], второй - [0.5, 10.6]. Если значение первого массива больше, оно делится на значение из второго, если меньше - наоборот. В итоге должен получиться массив типа [3.0, 1.358].
>>2477057 > не видел, чтобы генераторы корутинами называли Видел еще лет 10 назад как к генераторам приделывают трамплин какой-то и получаются типа корутины. Нахера это надо народному хозяйству я так и не понял.
>>2477533 >Нахера это надо народному хозяйству я так и не понял. На случай, если генераторы есть, а корутин нет (во всяком случае на вики так написано)
Там на методы нужно декораторы цеплять чтобы экспешены хэндлить. При этом декораторов может быть несколько. Мне нужно добавить возможность в рантайме добавлять/удалять эти декораторы при каком-то условии. Как это лучше сделать? Пока что план вешать 1 декоратор с списком пар эксепшен-колбэк, а этот список как раз в рантайме генерировать. Какие есть ещё варианты и чтобы много не переписывать?
>>2477666 Есть ещё вариант в декораторе добавить опциональный аргумент кондишен и если он false, то игнорить этот хэндел и уже в рантайме нужным хэндалам проставлять этот кондишен в зависимости от рантайм данных. Что ещё можно придумать и какой вариант лучше?
>>2477675 Ну писались эти хэндлы до меня. Мне новый нужно добавить. Но чтобы работал он когда процесс в определёном окружении запущен. Метод детекта окружения я сделал. Теперь бы как-нибудь этому хэндлу сказать срабатывать только в нужном окружении. Дргие хэндля переписывать не хочу. И сделать хочется красиво, а в голову одни костыли лезут
Делаю для работы с orm отдельный класс. Типовые методы будут для многих моделей повторяться, поэтому решил вынести в базовый класс логику, но вот какая хуйня - если делать для каждой модели свой репозиторий, то класс модели известен и можно прямо в методе его юзать, а в случае с базой - придётся каждый раз передавать параметром. Оцените решение - хуйня или норм?
>>2477928 Задание заключалось в том, чтобы каждый Клемент словаря сделать ключом и если идёт список или другой словарь то разобрать его и сделать ключом каждый отдельный елемент.
>>2476881 По собственному опыту - за один вечер читаешь вводную часть любого самоучителя про синтаксис, за второй вечер пишешь реальную прогу, не хелловорлд. На этом все, вкат закончен. И да, на ооп и классы надо обратить основное внимание ибо там много петухон-специфики, но в принципе за 1 вечер осваивается, далее шлифуешь на практике.
Анонасы, какой бест практис в предоставлении passphrase приложению? Через переменные окружения? Можно в истории это посмотреть. Через файл, доступ к которому имеет только юзер, который и запускает приложение, типа как www-data?
>>2478131 > Можно в истории это посмотреть. Шелл умеет не сохранять историю при желании пользователя. В современных достаточно пробел поставить перед командой. А так сейчас systemd получил несколько фич этого направления https://systemd.io/CREDENTIALS/
>>2478030 Мне больше для собесов надо. Именно особенности и как по-нормальному на нём писать, а не c-style (если понадобится какое-то тестовое натужить).
>>2462085 (OP) Пишу бекенд и аналитику на питухоне да и вообще, но не прошел тест на навыки в LinkedIn , лул, как такое возможно? Вроде все правильно ответил, ну бля, смех. Допускаю что было пару ошибок, но бля 13/15 мало что ли ?
Вопросы от джависта. Я привыкч что мне все подсказывает IDE, я по сути больше 1/3 названия метода никогда не запоминаю, не говоря уже про количество и имена параметров метода. Привык к постоянному пользованию автокомплитом. Начал изучать питон как второй язык и просто охуел. Пайчарм мне выдаёт в лучшем случае мессиво с кучей ... kwargs, "", ... | "arg_name1", Union[ABC] и подобного бреда, если вообще что-то выдает. Ни о какоц всплывающей документации речи не идет. Нередко подчеркивает желтым поля к которым обращаюсь, хотя я блять знаю, что они там есть и программа работает. В общем, я в полной растерянности.
Питонисты, вы реально пишите код с открытой во второй полоаине монитора документацией и каждый раз когда хотаите что-то найти в ней пользуетесь ctrl+F??? И вы реально запоминаете названия всех методов, названия аргументов, ИМПОРТОВ?? У меня ощущение, что я что-то делаю не так. Неужели я должен реально днржать в голове всю эту бесполезную инфу, вместо того, чтобы думать над более полезными вещами, типа быстродействия написанного алгоритма или правильной архитектуры?
>>2479775 >Указывай типы, тогда будет работать. Но в таком случае смысл питухона пропадает У меня были точно такие же мысли. Видимо придётся как-то надрачиваться сидеть с докой в отдельном окне :/
>>2479711 >Я привыкч что мне все подсказывает IDE, я по сути больше 1/3 названия метода никогда не запоминаю, не говоря уже про количество и имена параметров метода. Привык к постоянному пользованию автокомплитом.
Кто шарит в асинхронность, подскажите плиз - правильно я делаю или хуйню?
В общем, хочу реализовать метод для выполнения задачи по таймеру. Погуглив стало ясно, что для этого на высоком уровне кода есть либо threading.Timer либо asyncio.sleep.
Решил пока написать на асинхронно слипе, т.к. он вроде просто понятнее. Как я понял, при вызове такой функции в event loop будет поставлен таймер, а сама программа может выполнять дальше другой код. И всякий раз при вызове этой функции в event loop будут отгружаться новые таймеры, ну а когда слип закончится будут отправлять запросы.
если я вызову этот метод дважды, сначала с таймером 1 день, а потом 1 час, то вызова функции отправятся в event loop, и сначала сработает с таймером на час, а потом на день, соответственно.
Уважаемый двощь. Хотелось бы узнать как вы организуете окружение на Винде(10). Пробовал винду и линук. Винда однозначно говно. Так вот назрела делема, как быть. Есть варик через подсистему линук на винде(wsl) или же линукс на виртуалке или же можно как то грамотно на винде заебенить. Интересно ваще мнение
>>2479711 Работаю в виме, автокомплит любых названий по табу, работает шикарно во всех языках. Если у какой-то херни совсем непонятный API то либо грузишь ее в ipython шелл чтобы потыкать, либо ставишь в проге перед непонятным местом ipdb.set_trace() и разбираешься какой вариант работает и делает то что нужно конкретно в этом контексте.
>>2479886 Пользуюсь WSL на win10, всё норм в целом. Но докер на ней так просто не запустится ибо systemd нет, и поэтому с ним вероятно будет попаболь. Хотя в последних версиях вроде завезли systemd, но я не пробовал
>>2480173 Изначально как раз нашел код с использованием low-lever API, но затем прочел в доке, что в "бытовых целях" чаще всего стоит использовать именно highl-lever интерфейс, ну и показалось что слип\таймер самое простое.
>>2480205 Ну смотри, в low-level случае ты получаешь возможность вызвать синхронный коллбэк. Если тебе дальше надо делать асинхронный вызов из этого колбэка, то не подходит в любом случае. Но если что-то простое синхронное, то вариант
Задачи более тяжеловесны, но если что-то сложное или асинхронное, то лучше их
>>2479780 А чем тебе питон для бека не нравится? Здесь же есть пару охуенных фреймворк с которыми го пока не сравниватся.
Го хоть и легкий язык и имеет всего там около 20 ключевых слов, но все же разработка какого-то большого проекта на нем мерзость, лучше уж питон с его фастапи/django/flask идеальной документацией, а не голанг где разработчики даже не запариваются называть переменные.
А когда ты у них спрашиваешь, почему у вас большинство переменных в 1-3 буквы, они говорят - Ну так надо, ты че не понимаешь? Очевидно же.. Сверх челы какие-то.
Го это когда ты заходишь почитать нормальную документацию какой-то либы, а 80% ее даже не пишут видимо, так набросали немного кода, функций че делают на основном сайте го и хватит.
Го это когда с возрастанием проекта код превращается в кашу и минус глаза, хотя синтаксис довольно простой, но вот с питоном не сравится, даже когда в питоне разрастается проект ты хотя бы можешь понять что за что отвечает.
Го это когда миллиард фреймворков как и в питоне для разработи какого-то веба, но нихуя нормального наподобие фастапи нет
Лучше используйте ноду/c#, чем го, для меня го это зайти написать какую-то обертку для докера/кубера других девопс штучек и т.д
>>2478554 Вообще для такого селери слишком жирно. Можно глянуть на эти две либы
https://pypi.org/project/futurist/ Это просто удобная обёртка на тредами. Никаких зависимостей и нет HA https://pypi.org/project/taskflow/ Это штука то же самое, но сохраняет своё состояние в редис и резервный воркер может продолжить выполнять таску если главный упадёт. Это у него такой HA
>>2480384 Не математикой единой. Железячники и красноглазики тоже любят по 3 буковки: dc, ctx, wd, sz, err, msg, num, val, buf. Другое дело, что пердиксов-питонистов никто не пустит хайлоад или фреймворки пилить.
Пучарм 2022.2.2 в фоне при некоторых открытых проектах свёрнутый кушает 20% цп на 6(12) ядерном процессоре. Раньше такого не было.
Другие проекты кушают 0% в фоне, и 3-5 при редактировании и прокрутке. Я кликнул repair ide - и оно выдало какую-то ошибку джавы мне, и отправило об этом репорт. Но функционально всё работает, ну по крайне мере из очевидного. Что я ещё могу сделать? Мне не норм, что кулеры гудят и мешают.
>>2480350 >А чем тебе питон для бека не нравится? Здесь же есть пару охуенных фреймворк с которыми го пока не сравниватся.
Разве что FastApi
Не нравится тем, что типы опциональны, один человек их пишет, другой нет, поскольку сам язык для девочек 3класниц хуевое комьюнити вкатунов, действительно профессионалов питонистов я встречал пару человек, в большинстве хуевая документация, одна документация Django как пример. По FastAPI в принципе хорошая, но мне вообще не понятно нахуя нужны фреймворки, в гошке стандартная библиотека делает ВСЕ что мне надо, единственное, я использую роутер не стандартный,но который реализует интерфейс стандартного net.http роутера
>разработка какого-то большого проекта на нем мерзость Пиздун, единая структура проекта, хорошие практики написания кода да и вообще, уровень разрабов повыше чем на питухоне. Мне писать на Го приятнее, вот копаться в джанге мерзость
>называть переменные а нахуя их называть в функции 10 строк , где после := понятно что происходит, ну слабенько вижу у тебя по пониманию кода, раз это для тебя проблема. Где нужно переменные делают нормальной длины, где уместно оставляют короткими Твои проблемы и придирки. Как говорят французы, сир, вы не компетентны.
>Го это когда с возрастанием проекта код превращается в кашу и минус глаза, хотя синтаксис довольно простой, но вот с питоном не сравится, даже когда в питоне разрастается проект ты хотя бы можешь понять что за что отвечает.
С возрастанием проекта его разбивают на микросервисы выполняющие конкретный бизнес кейс, если уж до этого дошло. Почему минус глаза? Паттерн репозитории минус глаза? Или то, что есть прослойка ввиде сервиса минус глаза?
>Го это когда миллиард фреймворков как и в питоне для разработи какого-то веба, но нихуя нормального наподобие фастапи нет
Пиздун, еще раз, тебе изначально не нужен никакой фреймворк и уж тем более ОРМ чтобы писать ВЫСОКОНАГРУЖЕННЫЙ веб.
>Лучше используйте ноду/c#, чем го, для меня го это зайти написать какую-то обертку для докера/кубера других девопс штучек и т.д
>>2480516 Нет, это какой-то баг кеширования или индекса пучарма, и вот то что он ошибку с джавой выдал ещё. Если посмотреть, там внутри пучарма были треды с загрузкой по 0.3-0.5 процентов из одной и той же dll-ки, но несколько десятков штук.
Я пытался найти в чём дело - эта штука появлялась когда был открыт файл с кодом из ткинтера и ещё нескольких библиотек, даже если 10 строк хелло ворлда - этого уже хватало. Причём если закомментировать импорты так что это будут просто вызовы неизвестных методов и классов - то ничего не меняется. Но если создать новый проект, то проблемы нет.
В общем я просто все файлы пучарма поудалял, оставив только мои файла кода, и переоткрывал папки как проекты, и стало норм. Что-то забыли протестировать, и пучарм вис и баговал из-за своих старых файлов кеша или что он там делал.
Выглядит как весьма бесполезная приблуда, если все равно там будет лежать стринга. Плюс, сам интерпретатор не ругается на такую хуйню, но странно что в поле color у нас будет лежать экземпляр класса, который держит стрингу. Не похерится ли ли тот же intellisense, c подсказками по методам стринги?
2) Можно ли как-то изъебнуться и указать:
@dataclass() class Data(object) --color: str --type: str --backup: Data
Рекурсивно передавать данные внутрь не интересует, просто чтобы хинты подсказывали что Data().backup.color это валидное поле, ну или Data().backup.backup.type. Это будет все на первом уровне вложенности. Просто в backup планируются держать поля color и type. Иначе придется как-то так?
class Backup(object): --color: str --type: str
@dataclass() class Data(object) --color: str --type: str --backup: Backup
3) Дефолтные значения для полей которые пришли как None можно поставить в 3.9.5 питоне? Я читал как это делали люди на SO, через __post_init__ (который вроде как и не работает с frozen датаклассами, поэтому и не подходит), там еще костыли предлагали, но может в этой версии такой инструмент появился нативный. Или в 3.10, я бы тогда обновил.
>>2480521 >ВЫСОКОНАГРУЖЕННЫЙ веб Это что за зверь такой? Высоконагруженность решается через масштабирование на уровне архитектуры. Можно писать хоть на пыхе как мета с гуглом делала.
>>2480217 Я с асинхронностью знаком путём nodejs, в питоне юзал мало. И тут не прямо уж из коробки функционал идет, т.е. asynio юзать надо, в отличии от js с его интерфейсами типа promise, setTimout и тд.
Но мне кажется суть должна быть та же самая, потому что цикл событий это универсальная абстракция. Я понимаю, что в Python есть GIL, т.е. по сути Event Loop в питоне всегда будет в одном треде, и при последующих (в рамках запущенного процесса) все новые таймеры\корутины\фьючеры и тд будут в рамках одного event loop'а
>>2481014 В JS тоже один поток. Неким аналогом промисов в питоне служат Future, но в норме тебе с ними работать не надо, это конкретный low level.
В ноде довольно много путаницы, потому что изначально нода была построена на коллбэках, все старые библиотеки там такие. А механизм async/await, который внутри другой, принесли в ноду позже. Из-за этого появляется лапша из разных подходов, что неудобно.
То, что один поток, не всегда проблема. Ты приложения обычно можешь масштабировать запуском нескольких инстансов, обычно так и делают.
Когда у тебя несколько инстансов, тебе сложно синхнонизировать состояние, то делать приложение с внутренним состоянием считается в принципе дурным стилем. Кроме того, проблемы блокировок доступа к такому состоянию из кучи тредов тоже никто не отменял.
В общем это проблема, но не фундаментальная.
Кстати, вот есть Redis, очень известный продукт. Так он тоже однопоточный, и ничего, всё равно все им пользуются и особых альтернатив нет.
>>2481014 >Python есть GIL, т.е. по сути Event Loop в питоне всегда будет в одном треде, И здесь уточнение. В любом случае тред стартует только тогда, когда ты руками его создаёшь и вызываешь. Ты можешь стартовать несколько тредов, но из-за GIL в каждый момент будет работать только один тред. Кроме того, asyncio не threadsafe, там тебе придётся довольно сильно возиться, чтобы совмещать многопоток и асинхронность.
Это уже продвинутая тема, но может быть востребована в каких-то случаях, например когда ты делаешь GUI приложение с асинхронностью.
>>2481028 >приложения обычно можешь масштабировать запуском нескольких инстансов
А насколько безопасно использовать event loop, если он запускается в child proccess воркера? Допустим воркер всего один и он всегда запускает один и тот же child proccess. Как в этом случае на низком уровне будет происходить взаимодействие с циклом событий? Или цикл событий Твёрдо и Чётко один на одну запущенную питоновскую программу и все асинхронные задачи\таймеры находятся в одном пространстве имён и в одной области памяти?
>>2481052 Я не очень понимаю, как может быть несколько event loop, если ты только сам специально несколько не запустишь?
Технически ты можешь в нескольких тредах запустить по своему event loop, но тебе придётся это делать явно, там больше магии, недостаточно даже asyncio.run() просто сделать.
Если же ты хочешь несколько инстансов запускать, то тут много камней может быть. Тебе надо как-то балансировать нагрузку и распределять трафик между инстансами, как-то контролировать, чтобы скажем одна сессия обрабатывалась одним инстансом и т.п.
В общем да, в таком контексте неудобно и не для всего этот подход работает. Но мне кажется, что это не очень частые системные задачи.
Скорее всего тебе надо хранить данные в каком-то внешнем сервисе, вроде редиса, очередей, БД и т.п.
>>2481067 >одна сессия обрабатывалась одним инстансом и т.п.
Да, тоже об этом подумал. Думаю, пока что остановиться на gevent пуле, вроде пока что это то что надо, как раз честный один поток, + операции только IO bound
>>2481095 В 2022 gevent не нужен. Это легаси изобретение до-asyncio времён, сейчас несерьёзно в принципе. Асинкио работает хорошо и достаточно. Это стандарт современного питона.
>>2481137 Не очень понятно, что тебе надо. У тебя есть какой-то сервисный процесс на сервере, который выполняет какой-то функционал. В нём крутится один event loop.
Дальше тебе надо как-то с этим процессом взаимодействовать. Например снаружи, через http/websocket, тогда ты его ставишь за nginx. При необходимости запускаешь несколько воркеров, а nginx балансирует нагрузку.
Либо же твой воркер подключается к очереди сообщение или чему-нибудь в этом духе. Под Celery, насколько я помню, работает rabbimq или redis, ты можешь напрямую работать с редисом через aioredis, там есть поддержка pub/sub паттерна. Либо можешь подключаться к раббиту. Ну или к целери.
Либо ты можешь со своим воркером работать через сокеты, но это скорее всего будет изобретением велосипепдов.
за нубские вопросы по питону ИТТ нахуй посылают? питон не первый мой язык и я хочу его освоить просто по приколу, но некоторые вещи с первого раза не гуглятся и мне чот лень запариваться
>>2481148 Дело в том, что некоторые воркеры могут создавать несколько потоков, в каждом из которых будет event loop, а мне надо чтобы контекст у всех асинхронных вызовы был один, иначе будет лажа а результат может быть непредсказуемым.
По этому мне нужно чтобы был один потокТвёрдо и чётко, с одним циклом событий. Вот и всё.
>>2481243 >Дело в том, что некоторые воркеры могут создавать несколько потоков, в каждом из которых будет event loop, Зачем? Я не представляю вообще, где такое может появиться. Тебе надо архитектуру чистить, у тебя какой-то ад, так не должно быть. Вообще совмещать многопоток и асинкио грязно, если такое есть, то скорее всего это твой косяк.
Если у тебя много потоков по какой-то причине, то держи только один поток с асинкио, создавай его на старте приложения. Но потом придётся сложно с ним коммуницировать, потому что основные примитивы асинкио не threadsafe. Поэтому тебе надо будет пользоваться функциями вроде loop.call_soon_threadsafe, внутри которой, например, класть что-то в асинкио-очередь. А из асинкио возвращать данные в прочие потоки тоже через очереди, то уже из модуля queue, потому что они потокобезопасные, в отличии от asyncio.Queue
Но есть подозрение, что ты пока плохо понимаешь, что тебе надо, и делаешь что-то не то, за что потом тебе будет стыдно
Аноны, а где можно почитать подробнее как питон работает с памятью для встроенных типов. Вот например. a = 500 b = 500 В данном случае это один объект А вот если сделать так b = b + 1 - 1 То это уже два разных объекта
В каких случаях происходит присвоение одинакового айди и когда он меняется? Гарантируют ли разные айдишки выделение памяти на каждый объект или под капотом может быть так, что эти переменные все ещё ссылаются на один участок памяти с 500?
>>2481430 Там некорректный счётчик скорее всего. Они недавно его в веб версию вставляли, потом убрали. Так вот, там счётчик показывал глобальные отклики судя по всему, с момента создания вакансии. Если вакансия старая, закрывалась-открывалась, то счётчик не сбрасывается судя по всему.
Посмотри на этот же счётчик завтра, сколько там будет откликов, это будет показательно.
По id вакансии можно понять, старая она или новая.
>>2481430 У меня 9 лет опыта. Хрюши сами бегают за мной. Пусть набирают вкатунов, через некоторое время поймут, что 90% из них делают лютейший кал без присмотра. Тогда уже они готовы выделить бюджет на более разрабов
>>2481425 По-моему сейчас до 256 у тебя гарантия, что объект будет один, иначе уже разный. В твоём случае одинаковый изначально потому, что тут из констант он инициализируется. А вообще тебе не нужно об этом думать вообще, это всё детали реализации машины. Тебе со значениями надо работать, а не со ссылками.
Сегодня собес на джуна, сдал тестовое задание, им понравилось.
Написал тестовое задание на - FastAPI/Docker/K8s/SQLAlchemy, но тестами не покрыл, дефолтные крудики.
Я уже имел коммерческий опыт разработки на питоне, но все мои собеседований были не больше 30 минут, иногда даже за 10-15 минут заканчивали техническое собеседование, я не знаю почему так выходило и вопросы в целом были легкие. Уже долгое время не проходил прям технического интервью.
Подскажите к каким серьезным вопросам можно готовиться в общем, не по питону, вакансия веб разработчика.
Я думаю смогу пояснить за то какие HTTP методы есть, что такое REST, распределенные транзакции, шердинг БД, как правильно делать распределение БД по вертикали или горизонтали, в каких случаях это нужно, солид, асид, нормализация - все это зазубрил как отче наш, знаю около 10 +- паттернов и в целом сейчас пытаюсь разобраться в архитектуре, читаю боба.
К каким можно серьезным вопросам готовиться? Мой первый заваленный собес был из-за того что я не знал что такое нормализация и в целом плохо понимал БД, индексы и т.д.
>>2481439 У меня просто есть очень большой стейт (на 500 мб) который представляет из себя многоуровневый словарь где ключи и значения представляют из себя строки до 5 символов. При этом уникальных значений этих строк немного, около 10к, они часто повторяются и известны заранее и кроме добавления/удаления по данным их приходящих жсонов и далее с ними никаких действий не производится. Собственно я бы хотел что бы каждое одинаковое значение было гарантированно одним объектом, так как потенциально это бы сильно сократило потребление памяти. Пока в голову ничего кроме того, что бы сделать свои строки-синглтоны в голову не приходит.
>>2481371 Согласен, бро, возможно я делаю костыли, но выхода нет, надо пробовать, только так можно чему то научится.
Вообще, если абстрагироваться от предметной области, то в данный момент у меня есть воркер, который переодически делает GET запросы к стороннему API, если запрос успешный, то на выходе получается две пачки данных - одну надо переслать на другое API сразу, а другую через какое-то время.
Ну вот и я сначала пробовал с asyncio, теперь с Celery и asyncio. Что я придумал? Я запускаю в воркере задачу на опрос, в этой же задаче смотрю результат, и если в нём есть условия на таймер, то спавню новую celery задачу - поставить таймер и вернуть управления в главный поток, чтобы воркер мог дальше запускать опрос сервера каждые 5 минут. Когда таймер закончится - отправить данные.
>>2481537 Ты что-то не то меряешь. В варианте с sys.intern будет у всех одинаковых строк одинаковое id() поэтому result вообще больше 100 никогда не растет. Если твои 500мб это стандартные ключи плюс какие-то полезные значения то так и надо мерять -- чтобы все 10^7 ключей оставались в памяти висеть
>>2481675 Крч, прошел собеседование на джуна, вопросы были такими
1 - АСИД 2 - Солид 3 - Отношения в БД 4 - Индексы(Sparse,Dense) 5 - Транзакции 6 - GIL - Конкуретность, процессы, треды и т.д 7 - DJANGO - Lasy QuerySet 8 - N+1 проблема 9 - Вопросы по фастапи 10 - Какие тесты писал, пирамида тестирования 11 - типы данных 12 - как работает внутри сет 13 - неизменяемые изменяемые 14 - генератор итератор
+ Тестовое задание, сделал хорошо как он сказал, но был 1 вопрос почему не использовал GROUP BY вместо фильтра в алхимии.
Крч, я на все ответил, но обосрался с самой легкой задачей, мне так стыдно давно не было, я даже харакири хотел сделать после собеседования, он меня успокаивал что все хорошо, но пиздец как же стыдно мне было после того.
Предыстория: Я много читаю, у меня хорошая теория и т.д, но я месяц уже не прогал, только тестовое сделал.
Задача - Напиши мне генератор которые выдает четные числа
(как я сделал) - Он говорит. а так мы будем выдавать всегда одно значения? Я охуел и подумал, точно блять, какой же я даун, переписал 1 Вариант even_numbers_generator(num:int) -> int: if num % 2 == 0: yield num
2 Вариант
even_numbers_generator(num:int) -> int: for i in range(num): if i % 2 == 0: yield i
for number in even_numbers_generator(10): print(number)
Он говорит, что окей, но как мы можем сделать это через другой способ? - И вот тут я охуеваю и начинаю жестко тупить - Какой второй способ? Ну можно через класс сделать, он говорит не надо, другой способ, тут тоже все будет через цикл, я начинаю тупить и писать что-то вроде for i in yield(), он начинает подсмеиваться, я начинаю уже пиздец тильтовать, я давно не проходил собесы + нервничал.
Потом дошло, что через while можно, но и я начал тупить тут, писать типо while num < 10 и не понимать что нужно конутер добавить.
Ну и как-то так
Я никогда в жизни так не обсырался, вот собес закончился 2 часа назад, я ответил блять на довольно сложные вопросы и т.д, но как можно было так обосраться на генераторе мне пиздец стыдно, я конечно изначально не понимал что он хочет, но это пиздец, фу блять.
Все же думаю у меня есть шансы что возьмут, так как ответил на все вопросы и затупил только на решение этой хуйни, но до харакири не далеко.
>>2481719 Так если я буду юзать обычные строки, то они будут уже давать этот оверхед в 500мб, просто потому что они вообще используются. Это не говорит о том сколько будет весить итоговая структура, но показывает сколько можно сэкономить.
>>2481735 Я привык ничего не повторять, у меня как вроде хороший фундамент, мы в унике это все прям зубрим ещё, просто я практически не практикуюсь, я не знаю какие пет проекты писать, дефолтные круды не хочется делать, что-то сложное идей нет. Поэтому пытаюсь найти работу, что бы начать делать стоящие вещи.
>>2481722 Ну смотри: строка 5 символов это 5 байт (6 если с нулем), 64-битный указатель это 8 байт. Если ты интернишь строки то в твоем гигасловаре все равно ключи будут занимать минимум по 8 байт. Потому что каждый ключ должен ссылаться на уникальную строку. Поэтому сравнивать вариант когда result длиной 10^7 и когда он 100 получается некорректно. Сделай result = list() и добавляй туда все строки. Тогда померяется ровно оверхед от строк.
>>2481761 >строка 5 символов это 5 байт (6 если с нулем) Питонячьи строки это не только ее содержимое, но и метаданные дающие по 49 байт
>As you can see, depending on the content of a string, Python uses different encodings. Note that every string in Python takes additional 49-80 bytes of memory, where it stores supplementary information, such as hash, length, length in bytes, encoding type and string flags. That's why an empty string takes 49 bytes of memory
Питонисты, к вам вопрос: допустим есть директория и нужно рекурсивно во всех директориях внутри нее открыть файл с одним названием. Например в баше могу сделать так - cat /home/*/config.conf, как на питоне так же сделать? Желательно покороче
Это уже не говоря о том, что мне готовая демка с пояснениями выпала по первому запросу. И не говоря о том, что поглядя на формат выдаваемого значения можно самому догадаться, что это координаты, сгруппированные (видимо по отдельным контурам). Я не смотрел, но вот они нарисовались так же, как функцией drawContours.
>Дана функция, принимающая рандомное количество элементов и выводящая на принт множество- длина которой не более 10 элементов. Здесь понадобится преобразование типов.
если кратко то список нужно как-то превратить в set через функцию k = func2([1],2,3)
>>2482089 Тут без навыков телепатии не разобраться что имеет ввиду задающий задачу. Пытаясь максимально удовлетворить запрос, я бы что-то такое примерно написал(https://pastebin.com/FYJN47XX), которое по возможности пытается разворачивать списки.
>>2482062 > k = func2([1],2,3) это из задания или ты сам придумал? а то хуй знает, если бы задача была на обеспечение хэшабельности объектов, может бы об этом поподробнее сказали
а то вот я преобразовал тип аргс из листа в сет: def f(*args): return set(args[:10])
В каком формате лучше (в плане быстродействия) всего хранить таблицу 1) в которую в три столбца записываются некие id, короткая строка и достаточно длинная строка. 2) из которой надо быстро доставать либо конкретную строку со всеми данными, либо случайную строку по фильтру
Я сейчас использую библиотеку SQLite3, но может зря?
Анон, нужно на питоне написать скрипт который будет открывать несколько приложений на пк + открывать браузер и производить в не определенные действия. Писать планирую на питоне, какую необходимую базу нужно иметь под рукой, если ты нихуя не понимаешь в этой теме?
>>2483454 в остальном пока не планировал. Погуглил про пюпитр, не совсем понял такой момент - в этих ваших интернетах пишут, что это безголовый браузер, я не понял он будет какие-то действия без визуализации производить, или с помощью него я буду открывать свою уютненькую оперу на автомате?
Сап. Есть целери и прометеус. Прометеус будет забирать метрики из легковесного сервера с одной страничкой. Сервер поднят в основном процессе селери. Так вот, как этот ебаный регистр для многопроцессорной сборки метрик сделать? Или я дебил или что-то не так. Он писать в файлы должен, но каталог пустой.
>>2482017 Вот смотрите, аноны. Этот скрин анон сделал 4 октября в 11:37. Было 347 откликов
Сейчас 7 октября, а откликов только 417. За более, чем три дня, добавилось только 70 откликов
Правда вакансия до сих пор не закрыта. Но не очень показательно ещё потому, что там "отклик без резюме", можно напрямую по почте высылать, это в статистику не попадает
>>2462085 (OP) Всем привет Наверняка тут есть местные, которые разворачивали свои сайты Планирую написать сайт на джанге (эксперимента ради), сайт простой с точки зрения функционала (всего парочку таблиц и скриптов), но хочу его сделать относительно пестрым, красивым и быстрожействующим На какие параметры сервера мне ориентироваться? Гиг оперативы мне вряд ли хватит под джангу, если ничего особо спецом не крутить? Или как раз хватит?
Цель: парсер, который 24/7 собирает данные и сохраняет в Json файл.
Если просто загружать Json, добавлять элемент и сохранять, это ведь хуевый вариант, да? Если вдруг при очередной записи пойдет что-то не так, то может похериться весь файл. Как по уму это сделать?
>>2462085 (OP) У Героя есть 5 разных характеристик, они могут варьироваться от 1 до 10. Надо при старте их рандомно сгенерировать. Проблема в том что общее число поинтов которое будет распределено тоже рандомно - от 20 до 30. Как это сделать?
>>2484246 Будет лучше, если ты не будешь перезаписывать файл, а откроешь его, и не закрывая будешь по мере поступления дописывать в него новое. Или открывай в режиме append, где запись в уже имеющуюся часть файла запрещён. Тогда если что-то сломается, старая часть будет целая.
Я не знаю умеют ли такое pickle и json в питоне - я бы просто открывал файл в бинарном режиме, через json или что тебе нужно данные просто в bytes закидывал (можно ещё какую-то метку, чтобы если что-то сломается и будет неправильны размер записан - можно было найти метки на начала частей - или вовсе хранить их рядом в соседнем файле в виде небольшой таблицы, где хранится начало в файле, размер и хеш), и писал бы в файл размер новой части и эти байты. Старые уже записанные данные бы не трогал естественно вообще.
>>2484255 Рекомендую использовать вариант с sample.
>>2484267 Чего? По какому ещё определению, совсем ту-ту? Ты не можешь свою функцию придумать, которая без перезаписи будет дописывать в файл второй json?
Что мне мешает данные (json или что угодно ещё) записать в свой бинарный файл как мне захочется? У тебя 4 байта идёт размер следующего json-а, а потом его бинарное представление, потом ещё 4 байта размера и ещё одно представление json-а, и так сколько захочешь раз.
>>2484267 А, ты про то что json надо обновлять... Так у тебя же акцент на том, чтобы данные не повредились. Ты полученные изменения-обновления сохраняешь отдельно, а потом объединяешь. Если один кусок не правильно загрузится, и хрен с ним - все остальные будут целые и корректно сохранены. Это и безопаснее, и эффективнее.
Типа, если у тебя там будет 10000 отдельных кусков, то слить в конце можно за 10000 операций, а если ты на каждом шаге будешь открывать json размера 1, 2, 3... 9998, 9999 и всё в нём менять, то это довольно медленно будет, не говоря уже про беднягу жёсткий-диск (или что у тебя там). Ну, если там данные накапливаются, а не перезаписываются, естественно.
>>2484276 Смысл в том, что в json есть замыкающие скобки и т.п. Поэтому просто делать append не получится. Поэтому тебе надо придумывать какие-то грязные хаки.
Если надо обновлять файл целиком, то стандартный паттерн такой, что создаётся новый файл сначала с новыми данными, а потом старый и новый переименовываются. Есть варианты с символическими ссылками, не суть.
Другие варианты - это уже придумывать свои БД. Скорее надо не придумывать, а брать готовые решения. Ну или придумывать свои схемы по аналогии с тем, как это используют в известных системах.
>>2484302 Я понял. Я про то, что если новые данные приходят каждую минуту - тебе не нужно перезаписывать файл, можно дописывать полученный кусок данных в виде, в котором он пришёл (в бинарном, мать его - и итоговый файл, это не json, а твой собственный сырой формат). Вообще не важно что там со скобками или без. А уже потом открываешь и объединишь.
И это не бд, это 4 строчки на сохранение, и столько же на загрузку. Или около того. >Скорее надо не придумывать, а брать готовые решения. Из пушки по воробьям в такой простой задаче. Тебе нужно просто дописывать данные в файл, а потом загрузить их все вместе. Две операции. Не надо никаких аналогий с известными системами. Все "системы" ориентированы на общие задачи и у них функционал значительно выходит за рамки двух функций.
Это как я загуглил как в торче оператор лапласс к тензору применить - и там предлагают целую либу загружать через пип. Хотя такой оператор, это очень просто и требует только 3 строчки, название класса, перегрузка функции и одна строчка кода. Это, блять, просто пиздец. Уже пошёл готовые решение использовать. Вместо a+b буду писать pip install add_two_number, и потом использовать add_two_number.sum_two_number(a, b). Ну а хули, готовое решение, нужно использовать. Поехавшие. И я почти уверен, что такая либа есть. Не знаю шутки ради или не совсем, но почти точно есть что-то подобное.
Гайс, как продолжить обучение после учебника начального уровня? Дальше долбить книжки особого энтузиазма нет, хочется часами втыкать в сложный код и охуевать. Где можно найти реальные задачи? Или может начинать осваивать фреймворк? Какой посоветуете попроще и интереснее?
Помогите студенту, преподка нихуя не понимает, я нихуя не понимаю. Почему 160 выводит программа? Если сумма всех дней меньше 160 судя по терминалу, но если считать ручками( то будет 149.5)
current = 10 sum = 0 progress = float(1.1)
for i in range(1,11): print(i, '', current, 'км') current += progress sum += current
>>2484469 >Где можно найти реальные задачи? На работе >Или может начинать осваивать фреймворк? Какой посоветуете попроще и интереснее? Тебе нужно вкатится, смотришь вакухи в твоем городе, если находишь что-то кроме джанги стараешься устроится туда. Фастапи, аиохттп, саник, не важно. По сути все это вебморда для микросервисов, а джанга это полный комбайн в виде монолита. С первым на порядок больше шансов найти компанию с более современным стеком.
>>2484641 >если находишь что-то кроме джанги стараешься устроится туда. Фастапи, аиохттп, саник, не важно. Для начала ему тогда надо разобраться с асинхронностью, написать что-то простенькое тестовое, их его слов не очевидно, что он в этом хоть что-то понимает. Тема не простая, а во многих книгах вообще про это ничего нет.
Стандартный учебный пример - это какой-то простенький чат
>>2477072 он просто пади на cpython тупо написан, а петухон как фреймворк для него. хз зачем он приводит в пример работу кода петухоновского если там написано что это просто эквивалент.
>>2481721 чот какое то душнилово как по мне >>как работает внутри сет кого вообще это ебать должно, важно что ты понимаешь для чего он нужен. >>1 - АСИД лол
>>2483991 >Правда вакансия до сих пор не закрыта. Блять тут в питере многие вакансии вижу месяцами и год наверное висят. Причем там на отклик никак не реагируют зачастую даже. С какой целью размещают такой сомнительный околоскам хз — заявить о своей компании, мол заказчики загуглять а там ебаать тевстировщиков за 100к ищут и питонистов за 150к, ниххуя себе контора!¡ (таких идиотских студий куча)
>>2481721 >Он говорит, что окей, но как мы можем сделать это через другой способ? Анон, сейчас я тебя ещё больше расстрою, потому что есть range(start, end, step) и ты мог бы написать for i in range(1, 10, 2) (или до 20, не понял твою задачу) ну или можно for k in range(10): return 2*k
Со стороны твой подход и твои слова смотрятся стрёмно, но да ладно, все иногда обделываются
>>2484688 >чот какое то душнилово как по мне Ну ты зря, ХЗ кто в конкретном случае собеседовал и что у него в голове, но эти вопросы на то, чтобы оценить твой кругозор, общее понимание платформы, как мозги работают и т.п. Ещё как ты реагируешь на вопросы, ответы на которые не знаешь.
>>2484772 >Блять тут в питере многие вакансии вижу месяцами и год наверное висят. Причем там на отклик никак не реагируют зачастую даже. Недавно откликнулся на вакансию, которая до этого несколько месяцев висела, по Middle+/Senior. Пришло автоуведомление, что типа ждите, обязательно рассмотрим ваше резюме. Самое забавное, через пару дней вакансию закрыли, но другой реакции никакой, впрочем от этих я и не ждал
Чаще же даже автоуведомления нет, это когда напрямую высылаешь, даже хз, там активный ящик или его вообще никто не читает, а всё в спам отправляется
Совсем оскотинились хрюши, писали бы хотя бы "мы может быть рассмотрим Вас, когда вновь наступит 2021", я бы всё понял
>>2484809 >>чтобы оценить твой кругозор, общее понимание платформы, как мозги работают Звучит как полнейшая херня. За 7 лет работы так и не увидел что бы это вообще как то перекликалось с реальность, кроме случаев когда челы просто заучивали абривиатуры и термины.
Помогите придумать алгоритм для отслеживания появления различных баннеров на сайте Баннеры на хтмл появляются в рандомном порядке и мешают дальнейшему парсингу Как закрыть баннер я знаю, а как сделать постоянное отслеживание появления определенных элементов с известными айди - я не представляю Использую селениум, но интересует именно алгоритм Я нуб, могу что то не знать В общем ткните носом Спасибо
Гайз, есть вопросы. Допустим я импортирую две библиотеки через import jopa и import govno, в которых названия функции zalupa пересекаются. В коде я использую соответственно a = jopa.zalupa() и b = govno.zalupa() Результаты будут разные или одна функция заменит другую из-за названия, так как две библиотеки импортированы подряд? Тогда стоит ли постоянно использовать from jopa import zalupa - jopa.zalupa()- from govno import zalupa - govno.zalupa()
>>2486000 Во-первых, ты можешь это проверить создав свой объект и смотря за его __del__, __exit__ и другими. Во-вторых, даже наоборот, у тебя значение переменной file останется, просто для него выполнится метод __exit__, а во второму случает у тебя никаких переменных не останется.
Вроде как разница в том, что если у тебя в функции json.load произойдёт исключение, то будет немного отличаться что-то.
Лучшая либа для работы с S3 хранилкой? Вижу что везде написано про boto3, но мб есть какие-то альтернативы? Учитывая что мое приложение будет только читать данные из бакетов, ничего не создавая. Может есть что-то асинхронное?
>>2462085 (OP) Привет. Помогите разобраться с concurrent.futures. Генерируется число функцией random() Записывается в переменную authtoken Переменная записывается в словарь data['Token'] = authtoken К data['Token'] прибавляется еденица и записывается в переменную badtokensum Вывод: IP: 2.2.2.2 Token: 0.5771020017377818 IP: 2.2.2.2 TokkenSUM: 1.202102093048409 Более конкретный пример который можно запустить: https://pastebin.com/EJsxuM15
Посоны, кто знает Почему один крупный сайт палит работу хромдрайвера через селениум? Я перепробовал почти всё и у меня всё заработало с помощью библиотеки selenium-stealth. Но на днях скрипт опять перестал рабоать. С помощью вот этого сайта bot.sannysoft.com я узнал что написанный мной бот на selenium-stealth почему то не подменяет web-gl и возможно именно из за этого сайт палит меня как бота
Так или иначе, может быть кто то знает как скрыть работу хромдрайвера чтобы сайт не понял, что работает скрипт? Или может быть кто знает аналоги для автоматизации действий на сайте
>>2486557 Палит сразу при заходе на сайт? Если нет, то через какое количество запросов в минуту? юзай fake user_agent, прокси, вместо перехода по ссылкам используй . click ()
>>2486558 >Палит сразу при заходе на сайт? Нет, палит при введении логина и пароля - не логинит. Если без бота, то всё норм
>юзай fake user_agent, прокси, вместо перехода по ссылкам используй . click () Всё это знаю и практикую - палит. Я даже на сайт захожу через гугол, а не просто по ссылке как дурак. Всё равно палит. Скрипт открывается с машины которая физически заграницей, так что прокси не использую, да и не всё так с ними просто в селениуме
Хелп. Любая помощь. Я всё перегуглил Может подскажете где спросить?
>>2486558 >Палит сразу при заходе на сайт? Хотя вот может быть селениум в консольке начинал ругаться на web-gl как только я заходил на сайт (в гугле где я через селениум гуглил этот сайт, типа я человек - всё норм, консоль молчит) Повторюсь, после ввода логина и пароля - не логинит. сори я отрубаюсь, но надеюсь на советы. Спасибо)
но даже в этом случае будут не тождественны, так как файл не закроется при эксепшне во время обработки джейсона, а with в этом случае автоматически закроет файл. называется context manager
Позвали на собес на стажера бэк-энд разраба на пайтон по знакомству, сам искал позиции аналитика, так как пайтон не особо знаю, да и в целом прогаю так себе. Согласился, так как сказали, что по языку знания минимальные, типа всяких массивов, множеств, списков. Что могут попросить написать по этим темам? И как вообще за пару дней получше подготовиться? Сказали, что в первую очередь будут смотреть на софт скиллы.
>>2486688 Аналитики самые бесполезные черви-пидоры. Учи давай программинг сука. Страна в опасности в кольце врагов, а ты все хочешь на дурачка проскочить.
>>2484624 У меня так получилось после фиксов 1) У тебя в первый день он пробежал 11, а должно быть 10 2) На второй день у тебя должно получится 10 + 10%, а у тебя там фмксированное число прибавляется
Привет, двач, нужна помощь. Есть значения словаря котыре нужно превратить в сет ewfwef = '9', qqwe='12334',green = 'graas', a = '123', f=[7]) нужно добавить проверку и перед выводом превратить список в тюпл. Как это можно сделать?