Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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
Как сделать по красоте? Есть JSON с постами двача. Из поста качаю картинку. Потом опять получаю свежий JSON. Как мне хранить метку, о том, что файлы из поста были скачаны?
>>1954145 На дваче вроде бы посты иммутабельны, их можно разве что удалить. Храни метку, номер поста до которого ты уже скачал картинки. Ну или любое key-value хранилище, где ты прямо урлы картинок хранишь, какие скачал, какие нет. Я не понял для чего тебе пикл, ты видимо перезапускаешь программу, можешь например sqlite использовать чтобы не изобретать свою базу данных.
Добрый день, возможно ли вкатиться в питон и найти раб оту в питере или москве за год обучения дома? в день смогу уделять +/-8 часов. Сейчас начал проходить курсы на степике.
Я не знаю какие фреймворки есть на других яп, но я прочитал почти всю доку дрф и попробовал на практике, это просто нечто, ничего более гениального я пока не видел, а если не вдумываться в методы которые под капотом, то вообще словно магия происходит, вопрос зачем нужны другие яп с их фреймворками?
Подскажите плз, есть проблема с парсингом. Хочу получить для начала html страничку, но с одним сайтом происходит какая-то дичь. вот код: https://pastebin.com/R30vHZva на выходе html в одну строку, при запуске которой (если сохранить ее на комп и потом запустить в браузер) выходит 404 Для примера в этот код вставлял другие сайты и все было норм. Я так понимаю, скорее всего там есть какая-то особенность в самом сайте, которую я не знаю. Если что я полный ноль и только учусь. Если есть возможность пояснить плз в чем проблема
>>1954773 Нет, мидлом стать легко, сиди годик-три на работе и все, а вот что из вкатыша превратиться в джуна придется сейчас жопу порвать, хотя если тебе >= 23 и есть законченная вышка(техническая), то будет проще
Двощане, важный для меня вопрос, как часто в работе вы используете чистый sql, без орм, потому что на практике я еще ни разу не делал запросы без орм, только при изучении(разве что для отладки иногда инсерт, делит, селект и т.д), если будут ответы да, то так же вопрос как часто приходится сталкиваться с пониманием как работает бд, с транзакциями, с функциями, индексами и т.д, а так же где об этих темах можно почитать, реквестирую
>>1954896 Даже .format() это метод для объекта строки, пока можешь просто запоминать, а когда осознаешь как все работает будешь в шоке, у меня так было
>>1954876 техническая вышка энергетика + заканчиваю вышку юриста магистр которую могу поменять на айти без проблем. Помоги пожалуйста, какая последовательность действий что учить кроме питона непосредственно и где учить?
>>1954907 > речь русская, а ничего не понятно Это как раз потому, что речь русская. Вообще, 90% русскоязычной литературы по ЯП и, вообще, по IT - лютейшее говно, причём даже в случае с крупными издательствами, потому что всё переведено инъязовским планктоном.
>>1954982 Ну тут вопрос возникает насколько хорошо нужно знать инг, чтобы читалось понятнее чем на русском, у меня в голове только гугл транслейт максимум года 2010
>>1954956 Синтаксис питона(ветвление, циклы и т.д), структуры данных, алгоритмы, углубляешься в питон(ооп и пр.), смотришь более сложные вещи, потом если бек интересен начинаешь учить линукс, потом базы данных, html, css, потом уже вебфрейморки, джангу пожалуй, потом углубляешь еще сильнее в язык, асинхронность, многопотчность и прочее, постоянно начинаешь курить документации всего подряд, в это же время пилишь какую-то хуйню, можешь пробовать подавать резюме, получаешь тестовое, делаешь, продолжаешь уить смежные технологии, drf, celery, docker, я пока перед докером остановился, дальше ничего посоветовать не могу, но думаю примерно в это время надо найти работу. Параллельно читаешь умных людей с хабра. Есть курсы на степике, особенно рекомендую веб-технологии, там и про джангу(правда старую) и про современный фронт - ajax, и про протоколы - tcp, http, в остальном курсера есть, куча статей и документаций, кто-то кодварс дрочит, можешь попробовать когда поймешь что можешь писать свои функции. Асло другие аноны, скажите что пропустил
>>1955136 Ну там рассказывалось про фуллстак фрейморк с шаблонизатором и т.д, этим сейчас не пользуются, а про аякс рассказано, очевидно что знать как вью работает вне рамок курса
Есть у меня список в духе: [информация, команда, время]
В заданное время должна сработать команда манипулирующая информацией.
Как организовать стек с выполнением по таймеру? Каждую секунду чекать весь список? Есть встроенные функции для такого? Нужно что-то вроде времени жизни значения из redis.
>>1955489 Зависит от контекста. Есть например threading.Timer, есть библиотечка sched, а можно и по классике: while True: time.sleep(t) Для полного эффекта ентерпрайза можешь даже Twisted заюзать
>>1955489 Есть всякие штуки, которые по расписанию работают(название не помню, но там вроде по запросу scheduler python должно вывалиться что-то) А вообще, можешь взять Celery, там есть постановка задачи на нужное время. Недавно на работе тоже самое делал.
Возникла необходимость отдавать медиа файлы - мп3 на фронт, правильно понимаю, что достаточно просто переавать файл через обычный urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) и на фронте он нормально скачается и зальется куда надо там? А самое важное как в таком случае настроить безопасность, пользователи не должны смотреть чужие файлы, пользуюсь drf, есть пермишшоны, придеться вместо обычного urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) Переписывать метод retrive у вьюсета?
>>1954138 (OP) Друзья, вопрос по fixture. Как настроить такую, которая будет при запуске каждого тест класса будет заполнять переменную, скажем Count, которая будет запрашиваться из другого метода. Далее, если смотрим if count > 2: делай это, елсе: делай то.
>>1955848 Ниче не понял что ты там хочешь сделать, но у каждого файла в базе данных можно сделать ссылку, по которой он открывается. Просто проверяй авторизацию при запросе к мп3 и все.
>>1955848 Обычно вроде делается так: 1. Джанга проверяет пермишоны, отдает ссылку на файл 2. По ссылке файл отдает какой-нибудь nginx Можно отдавать файл сразу в ответе, например, я энкодил пдф в base64 и пихал прям в тело json(и мне не стыдно), но тогда его надо будет обрабатывать на фронте. >>1955926 А не проще ли запускать тест с разными параметрами? Сначала с count < 2, а потом с count > 2.
Боже, чому нет хороших библиотек для работы с офисом мелкософта? Нашел pywin32 более-менее работающий, но он состоит из костылей. docx либа берёт только docx, панда только эксели.
>>1954138 (OP) Сап. Есть такая простая модель, пикрилейтед. Два последних поля - это проджект менеджер и список сотрудников, участвующих в проекте. Хочется, чтобы при создании проекта PM сразу добавлялся в employee. Как можно добиться такого поведения?
>>1956344 Не знаю как правильно. Я бы в форму добавил автоматическое добавление, а то потом окажется, что в каком-то месте не надо добавлять и придется еще одно условие в save добавлять, а потом еще одно, а потом ну ты понял.
>>1956361 >Именно это ManyToMany field и делает. Я это понимаю, но тогда зачем тебе 2 раза хранить инфу о человеке, если он одновременно и пм в таблице проекта, и эмплои в кросс-таблице? >Просто если туда кастомные колонки впихивать - ORM сломается. Ну и говно эта ваша заливная орм пиздец, самому надо по работе в это вкатываться
В дополнение к этому >>1956364 Если у тебя в проекте пм поменяется, тебе и в проекте надо апдейтить его, да ещё и в кросс-таблице удалять, если он из проекта вышел совсем, а не стал лидом каким-нить.
>>1956364 > зачем тебе 2 раза хранить инфу о человеке Чтобы не делать несколько запросов к БД, если нужны вывести список проектов, в которых участвует конкретный человек, как минимум. Такой API в целом удобнее для человека будет
>>1956373 Не вижу тут дополнительных запросов, только дополнительный джойн в запросе и условие в where на 'пмность'. Но это твоё дело, я лишь со своей кукаретской позиции дата аналитика рассуждаю, что такой подход странный, базисты бы меня на старом месте на хуй послали бы схему бд переделывать за такое.
Где искать какие-то годные видео или статьи с объяснением смысоового применения модулей? В каждом видео про нумпи или панду идёт какая-то хуйня с простым перечислением возможностей, почему никто не объясняет на реальных прикладных задачах? Алсо, хочу вкатиться в дата саенс, какого рода математика мне нужна и как быстрее всего её подтянуть?
>>1956682 Это значит, что у тебя каждый элемент коллекции это тоже коллекция, в которой ровно столько элементов, сколько у тебя переменных после for, это синтаксический сахар, например, пусть, у нас есть список пар чисел pairs = [(1, 3), (5, 2), (0, 9)], вместо того чтобы писать:
for pair in pairs: x = pair[0] y = pair[1] # делаем что-то с x и y
Мы пишем:
for x, y in pairs: # делаем что-то с x и y
Это называется распаковка, и она работает не только с циклами:
x, y, z = [7, -1, 4] # в x будет 7, в y будет -1, в z будет 4
Только надо быть внимательным, переменных должно быть ровно столько, сколько элементов в распаковываемой коллекции
Кто-нибудь на линупсе сталкивался с тем что пучарм зависает намертво, но только до тех пор пока не откроешь что-то, только нажимаю на ярлык терминала - сразу отпускает, хз что это такое вообще
Двач, поясните за инпут. Нужно переменную ввести, но она должна быть и инт и флоат зависит от данных как сделать, если переменная по сути инт "12.0", отображалась не как флоат?
>>1956321 Я, конечно, тот ещё говнокодер, но можешь попробовать создать триггер на добавление записи в таблицу Project. Ну или мб там есть какое-то default value, не знаю
>>1956086 >А не проще ли запускать тест с разными параметрами? Сначала с count < 2, а потом с count > 2. Не слышал об этом, как это выполняется? Или я не понял тебя.
>>1955809 Раньше pyside забагован был ужасно, щас они одинаковые. Но если юзаешь старые версии, то бери pyqt. Разницы никакой, тем более для россиянина, тут все хуй кладут на лицензии.
>>1954896 Копипасти код с каких нибудь заданий или гайдов, изменяй под себя, делай что-то по подобию этого кода и со временем поймёшь как этот кусок кода работает. Повторяй этот алгоритм пока не задрочишь все основы. А потом уже можно статьи читать и понимать о чем там.
>>1956640 > не объясняет на реальных прикладных задачах? > Алсо, хочу вкатиться в дата саенс Ебать довен. Начинай математику с 7 класса и до матана из универа иди.
>>1956956 Я про это: @pytest.mark.parametrize("count", [1,2,3,4,5]) def test_huest(count): ....assert count == 4 Так у тебя тест запустится 5 раз с разным count. Это если тебе надо просто проверять поведение с разными входными значениями. А если тебе подменить значение, которое метод возвращает, то это тебе monkeypatch нужен. Ты бы конкретнее написал, что и зачем тестируешь, а то непонятно чего ты добиться хочешь.
Аноны, как гуглить методы и инструменты для безопасности сайта, https понятно, авторизация окей, но ведь есть еще много всяких вещей, ддос, у меня есть медиа, которые можно брутфорсить, чтобы забирать данные и т.д, уже узнал что от брутфорса спасает какая-то проверка через логи, но как в общем жта тема называется, что гуглить, подскажите
>>1954138 (OP) Мне нужно передавать некую переменную от страницы к странице, например - выбранный пользователем проект. На основе этой переменной будет рендерится контент на других страницах. Как это лучше всего реализовать? Запихнуть значение в request, или завести столбец в бд last_project?
Аноны, короче нужна помощь с прогой под кодовым названием shithole. Поступил заказ от организации (завод), прога должна отсеивать на входе людей так называемых SHITFACE основной функционал я уже написал if shitface == True: lock door and fuck out else: welcome motherfucker Осталось собственно написать нейронку которая будет детектить шитфейсы.
>>1957359 >Осталось собственно написать нейронку которая будет детектить шитфейсы. Ее не надо писать, ее надо обучить. Для это тебе потребуется набор размеченных данных для обучения нейронки - фотокарточки шитфейсов. Разбиваешь датасет на две части, на одном обучаешь, на другом проверяшь. Все.
>>1957366 Специалисты нужны, чтобы подкручивать параметры нейронки для увеличения процента распознавания. Для шитфейсов и стандартная из библиотеки сойдет.
>>1957380 Именно для этого и нужна проверка на второй половине датасета. Я точно не знаю, но вроде бы, 1% процент ошибок уже считается плохим результатом. Но это скорее зависит от задачи.
>>1957405 Никакой подписки о невыезде, она была бы, если бы работал на гос.структуры. Тут же частная компания, но выиграла грант от государства. Соглашение на 5 лет подписано. Ушел потому что не мое, работа напряженная очень. Перекатился в веб и вроде не жалею
>>1957433 Бля, если я написал C, без всяких ебучих шарпов и плюсов - что тебе не ясно? И при чем тут паскаль и бейсик? Дефолтный интерпритатор пистона на С написан, и есть неплохая возможность интеграции этих двух языков. Интересно узнать, пользовался ли ей кто.
>>1955809 >>1957560 О, как удачно я к вам зашел! Как раз на питончике ковыряю Qt. Пока туговато конечно идет, решил фронт для mpv запилить (как будто их мало) под свои нужды.
Так вот, есть может курс какой/набор литературы/рекомендаций по изучению? Я конечно с разбегу сейчас вхожу и с гуглом это работает, но через боль, карго культизм и стену непонимания ключевых концепций. На срутрекере книга на русике есть python3 и pyqt. Так там первая половина, блядь, это описание самого питона...
Двочане, я спрашивал ранее про асинхронный селери и прочее, сейчас задача для меня прояснилась, а я узнал о некоторых деталях селери, хочу рассказать о том как я хочу реализовать нужный функционал. Задача такая: при определенном запросе берется до нескольких тысяч записей(беруться сразу или потом по очереди пока неважно), для каждой записи нужно сделать запрос по сокету, ответ появляется спустя время(i/o bound), примерная нагрузка ~10 таких запросов в секунду на пике которые нужно отправить и обработать, но запросов которые отправляют может быть много и у каждого есть свой тариф, сколько запросов в час можно делать, а так же дни недели и часы в которые можно делать запросы. Отсюда мое решение: есть генеральная таска селери, которая принимает тысячи записей, дни недели, часы, тариф, после этого она берет текущее время, день недели и максимально плотно создает микротаски, которые запланированны на время, которое считается как время прошлой таски + тариф/3600, а так же проверяется можно ли в это время и эту неделю выполнять таску, если нет, то опять плюсуем время, пока не закончатся записи, после того как все микротаски созданы проходит время и они запускаются, вся их цель это взять из бд данные(либо получить через атрибуты просто(тут вопрос о том сколько памяти это будет занимать)) и запихнуть их в брокер в нужное время, далее асинхронная часть: есть контроллер, который в бесконечном асинхронном цикле мониторит брокер, если в нем появилась запись, то он добавляет в асинхронный луп таску, в ней формируется логика запроса и awaitится запрос к серверу, после ответа мы проделываем еще манипуляций с бд и завершаем таску, таким образом как мне кажется можно добиться высокой производительности и легкой скейлиться в случае увеличения числа запросов. Оцените мой опус, чувствую себя не обезьяной даже немного, очень бы хотел увидеть критику и предложения
Зайки, котятки, рыбки, объясните чому в питоне сигналы переменные класса а не инстанса и как это работает вообще. Это типа ради понта сделано или глубокий смысл есть. https://pastebin.com/Pj76UkUR
>>1957792 Писал сюда во многом для того, чтобы точно сформулировать что я буду делать и понял важный момент пока перечитывал: можно откладывать время благодаря обычному asyncio.sleep(n), тогда задача селери сводится к тому, чтобы просто отдать нужные базы с записями в этот распределитель через брокер, а распределитель быстро создает асинхронные таски, у которых сразу установленно спать нужно время, потом они делают асинхронный запрос на сокет, ждут ответа и заносят в бд
>>1957792 Так же один анон сказал подумать над тем что делать с перезагрузками, как думаете лучше использовать redis или просто добавить поле в sql бд которое будет проверяться при перезапуске?
>>1957794 Разве это не nested class? Ты через parent класс обращаешься к nested и конструктором создаёшь уже объект. Почему так сделано хуй знает, чекни исходник
Как по-православному реализовывается execution branching при использовании argparse? Допустим, есть скрипт, в котором два опциональных аргумента - не писать же для него четыре if-statement'а?
>>1957832 Опциональность на то и опциональность, что добавляет какой-то дополнительный функционал, а не кардинально другой. Т.е. расширенный вывод или там запись в файл. Что у тебя за опции такие?
>>1957833 Первая отрезает последнюю часть потока, вторая (--path) задаёт альтернативный аргумент для функции из в любом случае остающейся части потока.
>>1957840 Да, ты просто неправильно структурировал. Сначала определяешь дефолтные паремтры, потом при наличии опции заменяешь. Т.е. param1 = default1 param2 = default2 if opt1: param1 = opt1 И в конце один вызов.
>>1957850 Лол, как так. У тебя там большая часть логики с еблей с args.path Почти вся эта портянка заменяется на один иф if args.path: target_path = args.path И один вызов encrypted_name = Логику с upload_to_mega я не уловил, но тоже решается одним ифом скорее всего. Это же классический DRY, о котором в любой нубской книге талдычат.
>>1957855 > if args.path: > target_path = args.path Это очевидно, но с таким подходом там всё равно будут почти одинаковые вызовы, потому что одна из опций отрезает часть дефолтного потока (как раз upload_to_mega). Будет спагетти, короче.
>>1957792 Три раза прочитал, мало что понял. Это у тебя все в одном потоке? Обработка ответа не будет блокировать луп? Как ты реализуешь точное время запуска таски? Почему-то кажется, что эта штука будет потихоньку смещать запуск асинхронных задач и в итоге захлебнется. Но, повторюсь, я мало что понял. >>1957881 https://pastebin.com/78Q5TBqp
Кстати, подскажите ещё мне какое-то йоба-решение современное, заодно попрактикуюсь. Есть список кейвордов, надо каждый день последовательно делать запросы для некоторого количества из них в определенное время. Т.е. сегодня ночью первые 1000, завтра ночью следующие 1000 и т.д. Всего это занимает пару недель, потом в следующем месяце всё по новой. Пока я сделал простецкий, но надежный вариант - смотрим сегодняшнее число и берем такой по счету кусок списка из файла, потом для каждого кейворда формируем путь month/day/kw.html и если такого файла нет, то делаем запрос и пишем. Ну и по крону хуярить. Можно бы переделать на БД, но особого профита нет, мне кажется. Что могут предложить всякие брокеры-очереди и прочие современные хуйни?
>>1957947 Смещение тасок это то о чем я думал, блокирующая функция будет выполняться например 5 секунд, тогда все функции у которых был слип на 1,2,3,4 секунды просто встанут в очеред и после блокирующей выполняться сразу подряд без ожидания, т.е они запустяться либо в точное время, либо чуть позже, когда блокирующие завершаться, но это действительно резонный вопрос, поэтому есть еще 3-й вариант, не использовать в одном патоке расчет времени для таски, а оставить его в селери и тогда опять же передавать именно в брокер все данные + отложенное время, которое будет браться главной всинхронной таской в лупе, это так же важно для скейлинга, чтобы забирать сообщения могли другие потоки/процессы(до сих пор не углублялся в разницу). Если я могу объяснить что-то подробнее, то напиши что, а то я так доволен своим решением что некоторые вещи кажуться очевидными для меня. Единственная проблема в том что я до сих пор не нашел как добавлять таски в луп и делать асинхронные запросы по сокету, обычно только про http пишут, но думаю мне просто нужно поискать
>>1958010 >блокирующая функция будет выполняться например 5 секунд Из-за чего она блокироваться будет? Из-за загрузки процессора или ещё из-за чего-то?
>>1958093 Поэтому мне кажется лучше выносить ее в селери, и она в брокер будет отдавать просто записи с нужным временем, а при необходимости асинхронную хуйню можно вынести на отдельную машину, можно мультипроцессинг сделать(т.к операции однотипны и простыее мне не нужны треды, разве что процессы, верно ведь?)
пацаны если не смогу найти себе контору говна, реально ли в текущем году зарабатывать фрилансом если ты не сеньор 300к/сек с кучей заказчиков в друзьях на фб? и если реально, где вы это делаете
>>1958296 >реально ли в текущем году зарабатывать фрилансом Ну вот смотри, прямо сейчас в треде чувак страдает мультипроцессингом, асинхнонщиной, всякими селери, и прочей технологически и алгоритмически ёмкой хернёй, уже недели две страдает.
Ради этого ему пришлось пройти анальное собеседование, выдержать конкуренцию среди других таких же на этот контракт, подписать договор, до этого работать вообще бесплатно за рейтинг. И вот за эти мучения, когда они закончатся, он получит аж целых 800 долларов.
Вот и сам думай. А ты сам понимаешь, чем асинхронное программирование отличается от многопоточного? Обеими технологиями владеешь?
>>1958162 >Поэтому мне кажется лучше выносить ее в селери Я сам не очень умею с селери работать, так никак не засяду за неё, может и годная вещь, но по ощущениям это просто некая дополнительная оболочка, нужная, чтобы в синхронном коде поддерживать задачи. Это же не самостоятельный пакет, а надстройка над другими MQ.
Не уверен, что от неё большой профит, если у тебя на базе asyncio проект.
Если у тебя большие cpu-bound задачи, то тут только вариант воркеров.
Одна схема, когда у тебя есть внешние процессы-воркеры, они могут быть на чём угодно реализованы, они берут задания из сервиса по обмену сообщениями, вроде раббита, считают, заносят результат в базу.
Другая схема схожая, упрощённая. В своей программе ты сам создаёшь пул процессов-воркеров , которые берут задания из очереди внутри твоего родительского процесса.
Так ты используешь несколько ядер процессора (во второй схеме), или даже несколько машин со всеми ядрами(первая схема), и у тебя нет блокировки.
Можно ещё иначе, ты можешь переделать свою задачу так, чтобы она была не блокирующей, если там большой цикл, то разрешить в какой-то момент переходить на исполнение других задач, вставить регулярные await asyncio.sleep(0.00001), но не 0, это мы обсуждали уже. Можно свою процедуру - корутину сделать для переключения, но работать она будет не быстрее.
Чтобы раз в 0.1 секунду, например, подобная операция вызывалась и разрешала переключить задачу.
Слишком часто вызывать не надо, переключение задачи на самом деле довольно дорогая операция.
>>1958403 Ты путаешь многопоточность и параллельность.
Технологии многопоточного программирования появились совсем с другими целями. И ещё тогда, когда почти все машины были с одним процессором и одним ядром.
Их цель обходить блокировки в первую очередь.
Многопоточность - это несколько потоков-ветвей исполнения кода, когда у каждой свой стек вызовов и свои регистры.
>>1958404 Да, та задача по высчитыванию таймера для каждой записи cpu bound, там тупо вычисления и поэтому я ее оставлю на celery, смогу спокойно поднимать воркеров, а слип(0.00001) буду использовать для проверки в цикле брокера на новые сообщения. Да, celery здесь не нужен на самом деле, потому что я всю планировку перенес на asyncio.sleep() у себя в голове, я его хочу оставить только потому что он позволит отдавать ответ джангой сразу, а вычислениями займется позже, а asyncio нужен потому что сами вычисления с записями это строк 10, не больше, проблема в том что внешний сервер может отдавать значение долго, возникает i/o bound, а если из-за нагрузки внешний сервер начнет по 5 сек отвечать, тогда даже не знаю как без асинхронности, создавать по процессу/воркеру/потоку на каждую запись не вижу смысла, там одного потока достаточно? да и опыта с многопоточностью не было нормального, кроме хело ворлд
>>1958385 Сгущаешь краски, после выполнения спрошу кто были конкуренты, я то сам по ощущениям вообще ребенок, собесы это просто моя самопрезентация, показывал что я адекватный и рассказывал про опыт и как планирую реализовывать проект, поэтому еще недели 1,5 назад спрашивал, пока прогал 3,5 дня и уже получил свои 230$, просто пришлось час потратить на документацию drf и потом написать, протестировать код, сейчас пишу сюда скорее для общения и почитать чужие мысли, сами технологии не слишком сложные ведь, прочитал квик старт, почитал доки, если надо залез в исходный код и по переопределял что надо, все >>1958296 Если опыта нет, а кушать нужно вчера, то такая себе идея, я только вкатываюсь во фриланс по сути, это мой первый коммерческий опыт, искал изначально на веблансере, писал парсеры, бота, небольшой бек, немного работы просто с вебом, потом зарегался на хабр фриланс и нынешний заказчик нашел меня сам, как закончу с этим меня ждет старый клиент и один еще написал что ему нужна помощь, но я не уточнял какая, попасть на разработку бота или нормального бека сложно, в основном там требуются знания битрикса, сrm, и прочего пхпшного, у меня пара заказов слетали после переговоров, в остальном мне нравится, для студента самое то, вместо анальной галеры в маке я вот чаек пью
>>1957947 >Это у тебя все в одном потоке Там есть метод, который по названию теста выбирает юзера из листа юзеров. Например, запускаю тест - тест_почты - перед запуском метод выбирает соответствующего юзера из списка, который будет тест_почта_юзер1, которых скажем 4 для параллельного запуска. Далее тест ранится, никаких проблем. Так же есть ещё тесты завязанные на этого же юзера. Когда запускаешь по одиночке все работает. Теперь, когда запускаешь несколько тестов сразу И выбираешь несколько параллельных инстеесес-n4 (ранит сразу 4 теста за раз используя всех 4 юзеров). Проблема: когда запускаешь несколько свитов, которые используют одинаковых юзеров, как только юзеры в листе закончились пайтест xgist возьмёт по новой юзера, который уже ранит тесты. Тот юзер будет logged out и тест будет фейл. Надеюсь так примерно понятно.
>>1957798 В следующий раз пиши это не на двач, а в свой блокнот, и, перечитывай несколько раз, рефактори свои мысли и формируй план действия/рисуй рисуночки. Когда поймешь, что план готов, можешь уже и начинать реализовывать, а можешь и анону отправить.
Уже четвертый год так живу. Зависимость есть. Такой метод называется рассказать утке, только вместо утки рассказываешь блокноту (себе).
Ух бля, кбучий селери. Половину рабочего дня пытался понять что такое celery exited with 'signal 11 (sigsegv). Оказалось, что это баг селери и его не собираются принципиально фиксить, пока не переедут на новую архитектуру. Какое же говно, пиздец
>>1958657 Если бы я сразу сюда писал, то это вообще треш будет, так да, сначала в блокнот формулирую, рефакторю, но потом когда отправляю как обычно умные мысли приходят сразу, поэтому у меня по итогу суммарно 3 способа вышло, каждый лучше предыдущего
>>1958732 Я сегодня ахуел с того что в пучарме есть баг с импортами, он не видит нормально иногда модули и подсвечивает красным, а это так тригерит, что даже нашел комментарий, который убирает, а потом переделал структуру вообще, чтобы этой зуйни не было, но самое отвратительное, что год назад я только вкатывался и как же я себя тупо чувствовал, когда мне скинули проект, я его открыл, а там строк 10 красных, гуглить не умел, спрашиваю что за ошибка у человека кто скинул, а он говорит нет там ничего, все нормально и только вот сегодня узнал что это был баг и за год его не пофиксили
Анон. Есть дохуя текста, текст этот постоянно меняется, но там есть строка которая никогда не меняется, мне нужно взять слово находящееся слева от этой строки, слово это может быть любой длины, как это можно сделать?
>>1958968 Да, чтобы у меня курсор ввода перескакивал в терминал, а то часто запускаю его и вместо ввода данных сру в код, потому что курсор не перескачил.
>>1958981 Либо вот у меня ctrl+alt+n. Но я таким не пользуюсь, у меня все через входной файл работает, за редким исключением.
Помощь по Python
Аноним06/03/21 Суб 15:23:27№1959026198
Анон, прохожу онлайн интенсив не скилбокс и тд . Зашел в итоговые задания после прохождения всего материала +250часов и там вообще не выкупаю нихуя. Дан набор
Помощь по Python
Аноним06/03/21 Суб 15:29:47№1959030199
try n2. Дан набор данных: 3 YKW89OEOCITYODO,2018-07-24T14:40,1000.00 XMV928G6WUX582L,2020-09-09T06:45,9500.30 0PEZX4TUY3I4ZRZ,2018-03-31T04:33,5320.45 нужно привести к: Номер бронирования YKW89OEOCITYODO, забронирован 2018-07-24T14:40. Цена: 1000 руб. 00 коп. и тд. Как читать эти данные построчно с добавлением нужного текста? Данные вводятся через input и должны сами читаться и выводиться в заданном формате в строку. Как проигнорировать это число N в первой строке в выводе.
Такая вот вещь. Есть массив и я его транспонирую через стандартное array.transpose() А как можно сделать другие виды этой хуйни? Как на пике ниже? Можно ли через transpose или надо самому всё перебирать? 1 пример реализован стандартной функцией
>>1958985 >>1958980 >>1958978 >>1958977 >>1958968 >>1958957 Всё. Сделал, посоны. Сделал как хотел просто поменяв в конфигураторе запуска 12 строчку на externalTerminal и теперь при запуске кода он просто открывает консольку внешнюю.
https://itman.in/python-windows-virtualenv/ Написано "Для установки выполните команды: pip install virtualenvwrapper-win pyassoc" Какой еще нафиг pyassoc, его нигде нет, что это за скрипт такой?
Какие могут быть причины связанные с устройством языка, чтобы выбрать python или node, типа кроме случаев что у нас уже есть проект на одном из яп, вроде библиотек достаточно и там и там, типизация в ноде строгая, разве что разработка в питоне быстрее или есть существенные различия. А так же как вы думаете стоит ли свитчиться на жс?
>>1959030 Как ты вообще планируешь заниматься дальше? Задача элементарная Накидал навскидку, проверки сам допилишь def get_data(): val = input() val = val.split(',') if len(val) != 3: print('fuck you nigger') return get_data() money = val[2].split('.') if len(money) == 2: return val[:2] + money print('fuck you') return get_data()
n = input() try: n = int(n) except ValueError: print('fuck you nigger') exit(0)
assert n > 0
l = [] for i in range(n): data = get_data() print('{}, {}, {} {}'.format(*data)
Как проитерироваться через лист чтобы вытащить индексы по правилу от первого 0 до последней единицы в последовательности(сорян за кривое объяснение в скрине вторая строка, это что я хочу получить, палочками отделил нужные последовательности).
>>1959863 > типизация в ноде строгая Кого ты хочешь наебать? Нода это обычный жс в котором стройгой типизации отродясь не было. есть всякие тайпскрипты, но это другое. Тайп скрипт компилится в нетипизированый жс. > Какие могут быть причины связанные с устройством языка Во-первых, читаемость. В питоне отступы это часть синтаксиса и просто бегло взглянув на код можно понять где что находится. ЖС это ехал калбек через калбек и все это в одну строку. да, не все пишут как мудаки, но сам язык никак это не регулирует. Так что в код каждой библиотеки будешь вчитываться как в первый раз. Во-вторых, сложность анализа чужого кода. Тебе придется рано или поздно лезть в код библиотеки что бы понять какого хуя происходит. Библиотек дохуя, а документации нихуя. В жс это особенно выражено по моему личному опыту. И если ide типа пучарма как то пытаются найти откуда взялся этот класс или функция и предложат на выбор несколько мест. То в жс текстовый поиск твой лучштй друг. Импорт это просто текстовая строка котопрую нода переваривает внутри себя. Оно импортируется и рабоатет, но не факт что текстовый поиск найдт откуда она взялась. В-третьих, отсутствие обратной совместимости. Питон можно обновлять спокойно и быть увепеным, что код для 3.5 запустится на 3.9 Ноду тебе придется откатывать. Ты сидишь на своей 12 и никого не трогаешь, но потом нужная тебе библиотека говорит что ей нужна от 10 до 11.
> А так же как вы думаете стоит ли свитчиться на жс? Это путь в один конец. Люди которые начинали с ноды потом очень хуево пишут на нормлаьных ЯП. мы уже от двух таких на работе избавились. Но решать конечно тебе.
>>1959863 >Какие могут быть причины связанные с устройством языка, чтобы выбрать python или node, Сама нода хороша, по некоторым моментам удобнее питона, часто быстрее, но JS слишком убог и крив, ни в какое сравнение с питоном не идёт.
В JS отсутствуют такие банальные вещи, как словари. Там вместо словарей используют объекты, что может приводить к большим сюрпризам. Ты вроде как помещаешь в словарь какой-то элемент данных, например элемент с именем "hasOwnProperty", а потом оказывается, что ты тем самым испортил системный или собственный метод этого объекта.
В питоне очень удобная работа со списками, словарями, срезы, генераторы, проверка на вхождение, всё очень компактно и лаконично. В современных стандартах JS с этим получше, чем раньше, но до питона далеко.
В питоне очень удобный механизм передачи параметров в функции, именованные аргументы со значениями по умолчанию и др. В ноде такого нет, принято использовать костыли, передавать специальный объект с параметрами.
Вообще очень много всего такого.
Питон как язык программирования несопоставимо лучше JS.
Но в реальной жизни тебе надо не языки, а платформы выбирать. Ноду используют для сервисов на серверах. Там хорошая поддержка асинхронности, питон с его asyncio несколько проигрывает. Асинхронность в питоне слабенькая и довольно медленная, с кучей граблей.
Правда с нодой тоже не так просто, потому что её делали по принципу callback based, а сейчас стандарт это async/await. В JS с этим нормально, но проблема в том, что ключевые либы всё-таки в старом стиле сделаны.
>>1960107 >Питон можно обновлять спокойно и быть увепеным, что код для 3.5 запустится на 3.9 Ну нет всё-таки. Как и в ноде, всё зависит от конкретных либ.
В случае либ на базе asyncio, там довольно много фич с depricated поведением, про которые сказано, что из выпиливают с версии 3.5-3.8-3.9-3.10 и т.п.
А область применения ноды как раз пересекается с питоном по asyncio.
>>1960161 Типо питон медленнее переключает задачи асинхронные? Вроде и там и там асинхронноть на генераторах сделана, непонятно тогда почему так, бенчмарков не нашел никаких, если у тебя есть, то скинь. >Ноду используют для сервисов на серверах. Неужели эта скорость настолько критична? Тогда что остается питону из бека, если не сервисы
Аноны, какого хуя в pyqt не работает драгндроп изображений? Текст перетаскивает, изображения нет. Сначала подсмотрел способ тут: https://learndataanalysis.org/how-to-implement-image-drag-and-drop-feature-pyqt5-tutorial/, потом скопировал полностью, но один хер. Менял hasImage() на hasFormat('image/*'), тоже ничего. мб есть что-то более вменяемое, чем qt-высер, потому что это просто, блять, акт поедания говна
>>1960161 https://www.techempower.com/benchmarks/ Хз что это за бенчмарки, но судя по ним у питона совсем все грустно( И ведь действительно, если важна скорость переключения задач, то может вообще писать с++ каком-нибудь, чтобы была прям максимальная производительность
как открыть ебучий IDLE из командной строки?
Аноним07/03/21 Вск 22:59:35№1960316225
Суть такова, что нужно установить python на несколько машин и тратить время на поиск и создание ярлыка для стандартной IDLE попросту нет. Как известно процесс стандартной оболочки идет под именем pythonw.exe. Вбиваю в cmd это и...нихуя! В чем дело блять? Любая другая залупа всегда открывается через win-r + выполнить, но не IDLE. В чем может быть дело???
Не хочу набрасывать, правда интересно. Как пишут сложные вещи на Питоне? Со сложной иерархией и все такое. Просто не понимаю, вот например: реализую какой-нибудь лисенер, в него падают различные обьекты. Явных типов нет, так что для того, чтобы понять что это за обьекты, что в них надо подергать - надо лезть в кишки или в доку, потому что в обьектах( да и сами обьекты) может быть что угодно. Может прилететь обьект-носорог, а может гироскутер - делай с этим что хочешь. Например в тех же строгих языках вроде джавы все сразу ясно - вот описан в параметре носорог, будем работать с носорогами.
>>1960286 >Хз что это за бенчмарки, но судя по ним у питона совсем все грустно Эти тесты в основном слишком синтетические и некорректные. Там какие-нибудь примитивные запросы используются, одни фреймворки только примитивные запросы и умеют, другие ориентированы на сложные, там ещё может быть куча middleware запускаться по-умолчанию, которые не используются, и которые можно в принципе выпилить при желании и тем самым сильно ускорить. Ещё нюансы вроде кеширования накладываются и т.п.
>>1960286 >И ведь действительно, если важна скорость переключения задач У питона очень дорогая операция по переключению задач в asyncio, вообще асинхронность недостаточно в движке поддержана, слишком тяжёлый код крутится чисто питоновский. uvloop не то, чтобы радикально этот момент решал. pypy может быстрее работать, но он опаздывает с поддержкой версий и не все важные библиотеки под него портированы.
Нода быстрее, но там, кстати, в коробке много чего нет, что есть в питоне. Банально нет очередей или аналогов даже, это уж совсем абсурд какой-то.
Быстрый go, он как раз вот на такие задачи заточен, но уж слишком low level.
>>1960318 > Например в тех же строгих языках вроде джавы все сразу ясно - вот описан в параметре носорог, будем работать с носорогами. Зато не можешь в одном словаре хранить и носорогов, и гироскутеры одновременно.
"типизация" джавы преувеличена. У тебя параметр может принимать или метод может возвращать не носорога, а просто объект "хрень какая-то", от которой наследуется и носороги, и гироскутеры. Это, батенька, ООП. Вот и улетела твоя типизация.
Если ты не понимаешь, что должна возвращать функция, то тебе в любом случае надо лезть в документацию. Ты должен понимать, что твой код делает, иначе только дольше потом ошибку искать. Метод ведь тебе не просто носорога возвращает, а что-то с ним делает.
От простых ошибок, если ты вместо объекта возвращаешь список объектов, или не учёл, что может быть объект, а может быть None, полноценно защищает typing.
>>1960345 Я вот кстати наоброт не понимаю темы с типизацией, в питоне она благо строгая, но если у тебя есть метод или функция, то ты сначала читаешь что в нее нужно передать, если нужно передать инт, то как ты можешь туда словарь запихнуть непонятно, насколько сложным должно быть приложение, чтобы в параметр типа time_stamp передать строку и потом жаловаться на питон
Джангисты, хелп, мне нужно вместе с джангой включать отдельную программу, а в ней я бы хотел просто использовать модели из джанго орм, но когда пытаюсь имортить их, то все идет по пизде, как это можно реализовать, просто импортить наверное плохое решение, ибо там луп бесконечный, тредить или мультипроцессить я не хочу и думаю это плохая идея, как быть, выручайте
>>1960358 > в питоне она благо строгая Где вы этих сказок наслушались? Допустим есть код: a = 1 a = 'one'
В питоне он отработает без ошибок и переменная будет иметь тип str Но попробуй тоже самое сделать в строго типизированном языке и получишь ошибку. > но если у тебя есть метод или функция, то ты сначала читаешь что в нее нужно передать, если нужно передать инт, то как ты можешь туда словарь запихнуть непонятно Смотри пример выше. Просто берешь и пихаешь. Питон не компилируемый язык и компилятор тебе ошибку не подсветит. Есть плагины, которые при написании кода в фоне пытаются его скопмилить и вот они уже подсвечивают ошибки. Но это все костыли. Сам язык слишком гибкий и позволяет жанглировать типами. По сути все объекты в питоне это просто указатели на память. А вот уже у того что там лежит есть тип. Но передаешь ты именно ссылку.
>>1960374 Нихуя непонятно что ты хочешь. тебе нужна просто орм как в джанге потому что джангу ты использовать не собираешся вообще? Или тебе параллельно с работающей джангой нужно иметь возможность шатать базу?
>>1960376 2-е надо, уже нашел решение вроде как, создал свою команду для manage.py и если ее писать, то запускается отдельное приложение, которое вроде может юзать орм
>>1960375 Так это другое вроде, я, конечно, не эхсперт, но питон в отличии от жса не позволяет неявно преобразовывать типы, типа "one"+int(1) получишь ошибку, надо сначала поменять тип переменной, это ведь строгость, зато она неявная и поэтому можно писать a = "foo" a = 1
>>1960382 Нахуя тебе mange.py? Какую хуйню ты творишь? Просто импортируй в скрипт модели и саму джангу. Выполни в первых строках django.setup() и дальше работай с моделями как в джанге.
>>1960384 Строго типизированный язык требует что бы ты указал сначала какого типа переменная, а уже потом присваивал ей значение. Питон этого не тебует.
>>1960375 >В питоне он отработает без ошибок и переменная будет иметь тип str >Но попробуй тоже самое сделать в строго типизированном языке и получишь ошибку. Если у тебя такие ошибки, то это исключительно твои проблемы. В своём типизированном коде ты сделаешь a = 1 ... a = 2 и получишь ошибку, потому что будешь думать, что у тебя a=1. Или там у тебя разные области видимости.
Типизация тебя не спасёт никак.
Если у тебя ОО программа, то ты легко можешь словить ошибку типа, когда у тебя функция может возвращать разные объекты, возвращает их класс-родитель, но ты ждёшь наследника другого типа. Один-в-один ситуация, как в питоне, просто в питоне ты object ловишь.
>Есть плагины, которые при написании кода в фоне пытаются его скопмилить и вот они уже подсвечивают ошибки. Но это все костыли. Это позволяет избавиться от большинства ошибок. Например, если ты возвращаешь строку '1', а не число 1, то это отловится на ура. Это не плагины, а специальные модули вроде mypy. Более частая история, это когда у тебя функция может вернуть объект, а может None, но ты этого не учёл. Вот на раз ошибка будет обнаружена, что твой код ситуацию не обрабатывает. А в типизированных языках не всегда, кстати, потому что в таких случаях возвращают NULL, на который надо проверять явно, иначе segmentation fault. Довольно частая ведь история.
Статическая типизация страхует от примитивных ошибок, хотя нередких, но инструменты вроде typing с этим тоже справляются неплохо. Они же и документируют неплохо. Хотя неэстетичны в плане кода.
Динамическая типизация добавляет очень много гибкости. Многие вещи просто неприятно делать на статических языках, из-за чего используют костыли вроде специальных генераторов кода по шаблонам. Но это не менее криво.
Серьёзный профит от статической типизации совсем в другом, не в ловле ошибок. Она в том, что позволяет оптимизировать код очень сильно. Сложить две переменные статического типа int, это классово другая история, чем применить операцию сложения к двум объектам типа int. В первом случае одна инструкция процессора и возможности для дополнительной оптимизации кода, во втором случае немеренный оверхед. Настолько дикий, что арифметика и байтовые операции могут работать в сотни раз дольше. Вот именно здесь критически важна статическая типизация. А никак не в ловле ошибок.
>>1960387 Главная разница в том, что в статическом случае компилятор знает, какой тип, и делает соответствующий машинный код. Там другой тип поставить невозможно, и работает это быстро.
В динамическом проверка проводится runtime, машина лезет в объект, видит, какой-там тип, и применяет операцию к этому типу. Классический полиморфизм, классическое ООП прямо на самом базовом уровне.
Самая главная проблема в том, что это дико накладно. Всё остальное не проблема.
>>1960390 > Серьёзный профит от статической типизации совсем в другом, не в ловле ошибок Уже именно в ловле ошибок. Потому что люди на работу приходят с таким минимальным набором заний, что вся надежда только на IDE и ее встроенные првоерки. Если вы пошли работать в питон, то это уже не про скорость работы программы. Это про скорость разработки. Во всяком случае у нас так.
>>1960387 Ору, только что пытлася писать что какой дурак не поймет что передавать в функции и т.д и сейчас фиксил минут 15 баг в асинхронном скрипте, который не писал ошибку, пока я try except не поставил и не увидел что у меня почему-то строка передается, а не инт
>>1960278 Сделал то, что требовалось, на Kivy, столкнулся лишь с проблемой пермишнов на винде, которая фиксится принудительным запуском в нормал моде. Если найдется знаток pyqt, пусть объяснит, собственно, какого хуя нельзя реализовать примитивный функционал без сеанса копрофагии.
как открыть ебучий IDLE из командной строки? Суть такова, что нужно установить python на несколько машин и тратить время на поиск и создание ярлыка для стандартной IDLE попросту нет. Как известно процесс стандартной оболочки идет под именем pythonw.exe. Вбиваю в cmd это и...нихуя! В чем дело блять? Любая другая залупа всегда открывается через win-r + выполнить, но не IDLE. В чем может быть дело???
>>1960345 >>Зато не можешь в одном словаре хранить и носорогов, и >>гироскутеры одновременно.
Могу, никто не мешает в дженерик Object сунуть. Другой вопрос что это будет плохой код в большинстве случаев. Опять же есть PECS(<? super T>, <? extends T>) .
Typing не использовал, кстати. К сожалению во всяких нужных мне либах его тоже не использовали. Поэтому приходилось лезть в исходник/читать доку. В то же время в джаве тут куда понятнее все - приму такие то обьекты, отдам такой то.
>У тебя параметр может принимать или метод может возвращать не носорога, а просто объект "хрень какая-то", от которой наследуется и носороги, и гироскутеры
Это будет не какая-то хрень, а базовый тип. Который, скорее всего, позволит мне сделать все то, что я хочу сделать(если абстракция хорошая). Если нет - ну буду приводить, куда деваться. И с виду это лучше, чем попытаться дернуть поле и не получить его, потому что обьект тот, кек.
всем привет, хочу вкатиться в питон, чтобы с помощью него вкатиться в сэб(джанго). наслышан о томе, что надо знать матан, диффуры, интегралы и вот это вот всё и только тогда ты поёмешь питон. какие сложность будут в изучении у меня? 25 лет, знаю только верстку, чуть-чуть на базовом синтаксисе пыху и сам по себе не тупой васян. туповатый слегка, но не тупой.
>>1960808 > наслышан о томе, что надо знать матан, диффуры, интегралы и вот это вот всё и только тогда ты поёмешь питон. Тебе напиздили. Вообще ничего знать не нужно. > какие сложность будут в изучении у меня? Если вместо того что бы почитать что такое джанга, ты постишся на дваче у тебя уже проблемы с поиском источников информации.
>>1960821 Спасибо за ответ! Я знаю, что это за фреймворк и для чего он нужен. Просто я сторонник того, что для начала надо выучить язык достаточно хорошо, а только потом садиться за фрейм. Но всё равно, благодарен за ответ тебе
>>1960967 Есть всего один способ выучить язык - это сесть и начать на нем писать. Не эти ваши псевдокурсы, а реальную программу у которой может быть релаьное применение. даже если это применение нужно только тебе. Проэтому садись и пиши.
>>1960433 Ради любопытства дожал pyqt и выяснилось, что нужно либо использовать hasUrls(), чтобы не было привязки к типу данных, либо вешать setAcceptDrops на мэйн виджет после инстанциирования. Киви понравился мне больше - видно, что документацию писали нормальные люди для людей.
Есть некое устройство с описанными методами: чтение/запись, для него возможно создать несколько вариантов реализации Serial или Usb, хочу инкапусулировать логику по выполнению команд (вынесены в DeviceProtocol): типо: class DeviceProto: proxy = DeviceProxy()
proxy.write(b'\x01\x02')
Но потом при реализации мне надо подменить proxy реализацией.
>>1954138 (OP) Значит так, есть две кнопки: одна запускает цикл с мониторингом сайта, а другая по идее должна убивать его нахуй, как реализовать? Пишу примитивного бота, используя aiogram, спасибо
Можно как-то значения из метода одного класса передать в метод другого класса? Решил обернуть свою программу в PyQt5, а там оказывается при запуске моего цикла дохнет цикл интерфейса. А если подключать QThread, то он в отдельном классе и хуй передашь переменные введенные в окне. НУ ЙОБАНАРОТ. https://pastebin.com/8cPUgrfk
Как же сложно оценить производительность, я думал запросов 10/сек это уже небольшая нагрузка на программу, которая должна делать запросы, хранить все в памяти, делать вызовы и работать с бд, по итогу все делается идеально и потребляет всего 1-3% от цпу/озу на моем некрокомпе, расскажите сколько запросов может выдерживать средний впс?
>>1961430 Да я уже там запутался, точно помню что есть структура name1/name1/name2/script.py и пучарм не хочет импортить from name1.name2.script, подчеркивает коасным, но запускается, но если поменять на from name1.name1.name2.script, то пучарм скажет все окей, маладца, а питон уже пошлет нахуй. А еще есть релятивные импорты из-за которых отдельный файл джанги не запустишь, а с обычным нерелятивным импортом не запустится уже джанга. Импорты вроде и удобные, но с ними энивей так много ебли, когда вообще в питоне не понимал это вообще ад
>>1960688 >>1960502 Надо добавить соответствующие пути в системную переменную path, в ней содержатся пути, по которым система ведет поиск, когда ты забиваешь команды без полного пути
>>1960375 > > в питоне она благо строгая > Где вы этих сказок наслушались? > Допустим есть код: > a = 1 > a = 'one' > В питоне он отработает без ошибок и переменная будет иметь тип str > Но попробуй тоже самое сделать в строго типизированном языке и получишь ошибку. И как из этого следует, что язык не строго типизированный? Динамическая типизация о том, какой тип данных можно положить в переменную. Строгая типизация о том, как в процессе работы с типами данных они могут измениться. Ты тёплое с мягким путаешь.
>>1961452 Нет, он не путает вроде, сам перечитал вчера, есть явная/неявная, сильная/слабая, статическая/динамичная, я так полагаю что строгой называют просто явную сильную статическую типизацию, как в с++ вроде, а в питоне она динамическая и неявная, поэтому ее не называют строгой я так полагаю
>>1961435 Да не, с импортами в питоне все просто, когда разберёшься))) Есть два типа импорта — относительный и абсолютный. Абсолютный импорт идет относительно точки входа программы, а относительный импорт идет относительно файла, в котором он используется. Если на примере, то будет так: tochka_vhoda.py papka1 ---file1.py ---papka2 ------file2.py И если ты в tochka_vhoda.py импортишь file1, то будет import papka1.file1 Если в tochka_vhoda.py импортишь file2, то будет import papka1.papka2.file2 Если из file1 импортишь file2, то будет уже import .papka2.file2 То есть, добавляешь точку, показывая, что импорт относительный. Если импортишь вверху относительно, к примеру, из file2 импортишь file1, то будет import ..file1 Но главная проблема в том, когда тебе надо из file2 импортить что-то из tochka_vhoda.py Это кажется кривым, пока не оказывается, что импортить относительно нельзя не только из самой точки входа, но и из всего, что находится в одной папке с ней. А сюрприз-сюрприз в джанго файл мэнэдж находится на одном уровне с приложениями. И импортить что-то из одного в другое каждый раз пиздец геморрой. И отображение таких финтов в пукчарм каждый раз идет с ошибкой
>>1961456 > Нет, он не путает вроде, сам перечитал вчера, есть явная/неявная, сильная/слабая, статическая/динамичная > я так полагаю что строгой называют просто явную сильную статическую типизацию, как в с++ вроде > строгой как в с++ Сходи перечитай еще раз
Посаны, вопрос такой. Я только недавно вкатился, знания хуевые. Написал пару штук по работе, рутинные задачи оптимизировал, подключение по http, получение данных, загрузка их в пандас и это все прочее говно. Тут мне более менее все понятно. Сейчас хочу по работу написать тестирование, где люди будут на вопросики всякие отвечать. Допустим беру я django,ide pycharm, так как js не знаю и ебаться сильно пока с ним не хочу беру bootstrap. БД юзаю сейчас postgresql (хотя это уже особо не важно). Вопрос какой - средств django и bootstrap мне хватит чтобы тестирование на вебе сделать? Я просто пока не до конца понимаю как это реализовать. Человек выбирает категорию, ему подтягиваются вопросы бд, выводятся, он жмякает, передает данные на бэк. Опять же представляю все это пока примерно, но сдается мне, что скорее всего без js я не обойдусь?
>>1961467 В джанго есть шаблоны жинжа2АРЯЯ ЭТО ШАБЛОНЫ ДЖАНГО А НЕ ЖИНЖА ТВЕРДО И ЧЕТКО. Тебе хватит с головой, если не собираешься что-то прям невероятное мутить на фронте. И даже если соберешься, то в шаблоны можно подтянуть рякт и запихнуть в статикфайлы. Джанго это же комбайн, там все что угодно можно намутить
>>1961056 Окей, антош. Пояснишь за киви? Как дезигн делал? Как код проекта получился, не перегружен ли? Доки киви шагнули вперёд, за последние года 2-3? Получилось замутить исполняемый файл для линупса/винды? КуТэ-кун
>>1954138 (OP) Сап, програч. Я сам студент-биолог, хочу узнать о применении питона в моей сфере - я слышал, что это полезно дохуя для матанализа. Буду рад как кратким ответам, так и ссылкам на литературу по теме (если такое вообще есть).
>>1961543 Это всё зависит от конкретных запросов. Ты можешь быть неприятно удивлён, когда сначала читаешь статьи, как сервер БД разогнали до миллиона запросов в секунду, а у тебя начинаются проблемы на 100 запросах в секунду, причём не то, чтобы сложных.
Как прописывать путь к файлу, который нужно открыть? Понятно, что есть open. Но не понимаю, почему в одних случаях он открывает файл без расписывания путей со слешами, а в другом он требуется. Как файл исполнения с прописанным путем будет выглядеть?
>>1958404 >процессы-воркеры берут задания из сервиса по обмену сообщениями, вроде раббита, считают, заносят результат в базу. А разве celery делает по-другому? >>1958441 Ты каждый раз собираешь пересчитывать таймеры, если что-то пойдет не так? У тебя вроде тарифы уровня "n запросов в час", у celery есть rate limit на каждый воркер, правда, не знаю насколько гибкие настройки, но может cгодится. >>1958524 Это я не у тебя спрашивал. Тебе я скинул пример теста. >>1960382 Нормально сделал, management command вполне себе решение.
>>1961654 Просто в одном случае файл лежит рядос со скриптом, который его читает. а в другом он лежит по другому пути. Алсо, не забывай про текущую директорию.
Короче говоря, учусь по учебнику ''Укус Питона'' от индуса. Это преамбула. Пока все было норм, но сейчас дошел до этого кода, который буквально напечатан в учебнике:
from math import * n = input("введите диапазоны:- ") p = [2,3] count = 2 a = 5 while (count < n): b=0 for i in range(2,a): if( i <= sqrt(a)): if(a % i == 0): print("a neprost",a) b = 1 else: pass if (b != 1): print("a prost",a) p = p + [a] count = count + 1 a = a + 2 print (p)
При инпуте выдает: Traceback (most recent call last): File "C:/Users/username/AppData/Local/Programs/Python/Python38-32/EEE.py", line 6, in <module> while (count < n): TypeError: '<' not supported between instances of 'int' and 'str'
>>1961748 Бля, импорты это единственная часть питона, за которую нужно сесть и пару часов потратить вплотную на изучение, вчитываясь в каждое слово и разбирая каждый пример+прогоняю свои тестовые скрипты. Так на пальцах не расскажешь
Есть некий проект. Если ошибка есть, то она отлавливается и отдается нужное сообщение. Как сделать глобальный отловщик ошибок для лога? sys.exc_info() уже пустой на момент, когда доходит обработка логгера.
>>1961692 Не понимаю, или ты тонкий тролль, или действительно есть книжка, которая такой лютый пиздец в каждой строчке. Но я пока таких книжек не встречал. Обычно если кто-то в состоянии собрать книжку, а не вводную статью на форуме, то такого пиздеца уже не делает.
Вопрос, наверное, больше по VS Code, но попробую спросить тут. Я создал абстрактный класс с абстрактными методами. Как сделать так, чтобы при наследовании от него, ИДЕ мне подсказывала, что я еще не реализовал абстрактные методы? Может в докстрингах где-то такое прописывается? Когда учил Яву, и Эклипс, и Нетбинс выдавали предупреждение об этом.
Как блджат вызывать генератор в классе? Хочу генерить порядковый айди на генераторе в классе. (понимаю что можно и без генератора в этом случае Хотя понял только когда начал писать этот пост, лол)
Но я хочу понять как реализовать это на генераторе
Всякие варианты перепробовал. Нихрена не выходит. На тебя надежда анончик.
>>1961572 Есть много программ для биологии и анализа, я видел под линукс точно несколько, погугли их сначала, там всякая визуализация прцессов и графиков, большая часть на питоне написана, если знаешь питон, то свою сможешь написать, но есть и готовые программы\модули, конкретно ничго сказать на вскидку не могу
>>1961519 >Как дезигн делал? Как код проекта получился, не перегружен ли? Всё в коде, базовая декомпозиция + кастомные виджеты, если нужно особое поведение, общие функции вынесены в отдельный модуль. В таком небольшом проекте перегружать его просто нечем. >Доки киви шагнули вперёд, за последние года 2-3? Без понятия, но если сравнивать с qt, тут я открыл их и с первого раза сделал всё, что было нужно. Если не считать заёбы с пермишнами винды. >Получилось замутить исполняемый файл для линупса/винды? Собрал для винды через pyinstaller, но из-за версии 3.9 нет возможности сделать один файл, т.к. он теряет dll-файлы, поэтому приходится собирать папку и кидать их туда самому.
Салам, братишки. Flask обезьяна на проводе. Реализовал по мануалу remember_me функционал при входе на сайт строка в строку, но он сука такая не работает. Выдаёт ошибку, что на пике. С куками знаком чуть больше чем никак, поэтому тяжело осознать в чем пробоема. Вроде нагуглил, что необходимо переменную конфигурации приложения SERVER_NAME поставить явно и она должна содержать точки, для предупреждения каких-то там хуякерских аттак, и что имя сервера в одно слово типа localhost может не поддерживаться современными браузерами. Ну я сижу на PythonAnywhere и имя сервера установил соответствующее, с точками и поддоменом, а оно все равно не робит. Помогите, братцы, что нагуглил - не хватает знания предмета, чтобы извлечь профит. Если еще литературку подкините, где все разжевано, то вообще збс будет
>>1961658 Блин с таймерами как раз проблема, все идеально реализуемо и в луп добавляю корутины из другого треда и запросы асинхронные на тсп делаются и селери нормально все обрабатывает, но вот сейчас все думаю как переделывать при релоадах, у меня уже есть таблица со статусами каждого запроса(нужно для апи энивей), меняя статусы можно контролировать выполнение(когда приходит время выполнить корутину просто делаем запрос к бд и смотрим статус, если stopped, то просто не обрабатываем), сюда же остановка с помощью смены статуса, либо запуск заново. Видимо для релоадов надо так же таймстемп хранить в этой же таблице, а при запуске запускать просто сначала все корутины на каждую запись в бд, а потом начинать слушать брокер. Сейчас понял что я сделал create_or_update, но если за время пока запись ждет в корутине человек захочет остановить и запустить заново, то статус сменится на stopped, а потом на pending, поэтому одно и тоже обработается дважды, надо удалять запись и создавать, чтобы idшник менялся. Уф, чет из-за кучи всяких ограничений становится сложно все держать в голове, есть подсказка как такие алгоритмы взрослые дяди в голове держат, в каком формате записывают? А менеджер команд это просто бомба как по мне, почему-то особое удовольствие писать именно python3 manage.py scriptname
>>1961752 лол >>1961748 звездочку юзать - дурной тон. Это импорт всего говна разом лучше импортировать конкретные методы которые ты собираешься использовать ну или целиком модуль.
Анон, уже всю голову изъебал. Почему go_while не запускается? Кое как разобрался с этими тредами, но нихуя не понимаю почему не работает метод go_while https://pastebin.com/thwEsYE5
Можно ли из пайчарма запускать докер на сервере чтобы там развернуть чистый питоном, создать там ритуальную среду для тестов И гонять это все на Джекинс. Если да, то как
>>1962623 __name__ задается при загрузке твоего скрипта. Если это скрипт который ты непосредственно запустил (точка входа) то переменная будет равна __main__ Это можно использовать для тестов например. Если твой скрипт должен подгружаться в другом скрипте то ты можешь написать внизу if __name == '__main__': и после этого вызыватье го функции для проверки. Даже если этот код оставишь файле он никогда не выполнится если не запущен как отдельный файл.
>>1962158 Лучше в отдельном файле конечно, при этом в дочернем классе - т.е. делать кастомный объект для каждого используемого виджета, в нём же создавать юзкейсы со стилем, поведением и жизненным циклом, дабы не плодить объекты лишний раз и переиспользовать, если нужно. А так, либо в коде с использованием style sheet'ов, либо в .kv файле, но мне нравится первый вариант.
при тестах такого вида: class TestFactorize(unittest.TestCase): >def test_many_multipliers(self): >>>>>with self.SubTest(): >>>>>>>self.assertEqual(factorize(), ()) >>>>>>>>>with self.SubTest(): >>>>>>>>>>>self.assertEqual(factorize(), () выдается ошибка AttributeError: 'TestFactorize' object has no attribute 'SubTest' как исправить?
>>1962756 поясни что ты имеешь ввиду? я туда передаю все аргументы которые нужны. например with self.SubTest(x=x): self.assertEqual(factorize(x), (x)) в примерах что я видел не создается ничего, вот пример из доков на пике
>>1962964 Так там можно комбинировать, 'ar', 'xa', 'xab'. Если что. 'rta' открывает файл в стандартном режиме, как без параметра, только с возможностью дозаписи текста в конце.
А почему так странно всё работает? Если просто читаю файл и вывожу его, то получаю пикрил как и нужно А если я перед этим устраиваю перебор файла, то при выводе я получаю пустоту.
>>1963225 Даю упражнения. Делаешь свою субд на основе json, с записью, чтением, удалением и т.д. Чтоб работать с ней могло сразу несколько пользователей. С механизмом блокировок, с экономной записью, с условием что бд может быть несколько гигов и читать всю в память не стоит. Развлекайся. Это проще, чем кажется
Уже совсем отупел. Как добавить строку в список через запятую? Т.е. есть строка через инпут ("rock,paper,water,fire") А как её добавить в список, чтобы было так ['rock', 'paper', 'water', 'fire']
>>1963858 Это где пишут? Хайлоад на питоне, это как тюнингованная девятка на автодроме: вроде и едет и даже не плохо, но чтоб с другими тягаться, придется постараться.
>>1964364 Он отчасти прав, потому что основная нагрузка идёт на всякие очереди и БД, и нужно с ними грамотно работать, грамотно хранить данные в приложении, и много чего ещё.
То есть у тебя не из-за процессора проблемы в первую очередь, а в более хитрых вещах.
Настоящий хайлоад, где надо каждый такт процессора и каждый байт оптимизировать встречается очень редко.
Я уже наверное всех заебал, извините. Некуда больше идти. Я настроил редис, могу подключаться, могу создавать пару ключ-значение на сервере, смотреть ее и удалить. Теперь, мне нужно в имеющуюся фикстуру scope=class, которая принимает параметр request делает всякие настройки и yield, и затем request.cold.driver.quit() Мне нужно в эту фикстуру дописать, чтобы переменные из этой фикстуры писались в редис сервер, потом проверились, после удалялись И печатали в stdout о результате.
поцоны, только не ссыте на ебальник плиз за такие вопросы но оч нужно какой-бы пет проект накатать, чтобы качнуться в backend разрабоке? асинхрощина там, fast api всякие Хочу, шоб hrка от счастья заплакала а тимлид руку пожал, место свое бы предлогал, в щеки целовал бы
>>1964470 Сука, проиграл, уже недели две тебя вижу и мне все лень загуглить че такое фикстуры, я думаю остальным тоже, тебе точно эти фикстуры нужны, может более популярное решение стоит найти?
>>1964492 Да любую хуйню сделай, если асинхронщена нужна, то найди какой-нибудь сайт в котором часто данные обновляются и сделай какой-нибудь дашборд, hrки де вроде даже не поймут че ты сделал, а тимлидам расскажешь что использовал технологии
Мальчуганы, подскажите, стоит ли вкатываться в докер ради того чтобы 1 раз задеплоить приложение, я его почему-то боюсь как огня и постоянно откладываю, могу нахуивертить так что впску загублю? Много ли придется док прочитать перед деплоем?
>>1964494 >>1964480 Фикстуры это декораторы специально из pytest. Нужно записывать переменные в редис и потом вывести в stdout что записали. Вроде понятно же из поста.
>>1964498 >Вроде понятно же из поста Ты еще и выебываться будешь? Тебя нормально спросили о подробностях. Я не понимаю в чем проблема? Делай мок редиса, либа такая даже есть, если лень самому 20 строчек написать и засирай его сколько угодно.
>>1964493 спасибо, охуеный совет вообще иди нахуй с такими советами мне блять ядерная физика нравится, но в лабу за 25к идти я не хочу (хотя с чего я решил, что буду получать профессорскую зп) еще вопросы, созидатель-питонист хуев >>1964495 годно, спасибо
>>1964506 Ну так как это сделать в фикстуре. >>1964501 Так я уже описал. В фикстуре нужно: 1. Записать переменную генерируемую фикстурой (которая уже есть и работает ) в редис. Для редиса уже есть метод подключения и записи. 2. Проверить ее наличие что она действительно записалась в редис. 3. Удалить ее и вывести это в stdout.
>>1964502 Да, как-то так. Только она мне на print выкидывает ошибку - я так понял это из-за того что это функция принимающая item и которая выдаёт yield.
Компьютер саентисты, возникла надобность в том, чтобы была коллекция, суть в том, чтобы она представляла из себя очередь(чтобы можно было вызвать типа метод get и возвращалось первое значение), при этом в очередь нужно добавлять элементы произвольно, на самое важное то что она должна быть упорядоченна по определенному значению из списка(в списке несколько элементов), буду благодарен за подсказку как это реализовать, либо если есть такая структура данных, то назовите ее. Мне нужно просто получать данные в произвольный момент и встраивать их в очередь на правильное место в соответствии с таймстемпом, который приходит, а обработчики должны просто брать первый элемент из очереди. Можно было бы реализовать все кастыльно и напрямую, типа применять сортировку после каждого дополнения, но может есть более правильное решение?
>>1962121 А можешь вкратце объяснить, почему разрабы выбирали для своих поделий питон? Я сам хеллоувордщик пока только - так что если сможешь побороть свою брезгливость - поясни с минимумом терминов, пжлст.
>>1965299 В научных кругах любят питон. Просто его очень легко освоить, не надо ебаться с компиляцией. Все интуитивно понятно. Ну сам подумай. Если ты физик и тебе надо какое то слоожное уравнение составить и протестить еще, станешь ты учить Си? Тебе это нахуй не сдалось. Питом куда быстрее осваивается..
Всем привет, пробую сделать перевод с помощью Flask-Babel, но не получается. Что я делаю не так? Файл перевода скомпилировал в расширение .mo. Сейчас пишет просто на русском.
Столкнулся с такой проблемой, когда в моем callback'е, вызываемым библиотекой websocket-client происходит какое то исключение, то оно тупо не выводится в консоль, из за чего труднее отлаживать код если я где то допустил ошибку. Можно ли это как то исправить?
def onmess(data): message = processing_data(msg) output_data(msg) # some misprint
websock.run_forever() Что бы было понятнее, в третьей строке происходит у меня допустим исключение, и во время этого исключения никакого вывода в консоль вообще не происходит, исполнение этого коллбэка просто завершается.
Привет, нравится c++ и python. Думал изучать всерьёз ue4, но понимаю, что в России слишком напряжно будет начать получать деньги с этого. Да, меня интересуют деньги, а следовательно востребованные направления. В веб разработке разочаровался, потому что совсем не нравится верстка. Сомневаюсь, что не фулстак, а бэкенд разработчики востребованы. Deep learning, научные штуки тоже не нравятся. Знаю async, декораторы, некоторые библиотеки, прочую фигню. Что посоветуете из актуального и не веб?
>>1964334 Про Perl не знал, я зелень А почему Flask предпочтительнее? Я Django начал ботать, переключаться на Flask теперь, джанго же вроде как больший функционал предлагает, не?
Всем привет, два года работаю программистом на Си, есть профильная вышка, понимание наиболее популярных алгоритмов и структур данных. Стек: С99, иногда плюсы ради каких-то библиотек, SQL (PostgreSQL, SQLite), Python (pandas, numpy, tensorflow, opencv). Работа связана с математическим моделированием, но низкая зп и малая востребованность таких спецов вынуждают меня перекатываться в другую область. Последний год активно использую питон в работе, так что решил перейти на него в паре с джанго. Живу я в мухосранске, где на hh кроме консультантов и операторов колл центров, требуются одинэсники и эникеи, даже по пхп ничего нет, так что удаленка мой единственный вариант. Вопросы: 1. Как вы учили джанго? Ютуб, оф дока, книги? Все вместе? Я пытался начать с документации на сайте джанго, но очень сложно идет. 2. Понимаю, что усвоение знаний вещь индивидуальная, но все же, если я рассчитываю за год вкатиться на удаленку, это не полный бред? 3. Что было на собесе? Помогли ли пет проекты при трудоустройстве? 4. На какую примерную зп стоит ориентироваться? Судя по тому же хх около 60к, а это уже больше моих 50, что для меня уже неплохо. 5. Нужно ли уметь верстать? Если да, то на каком уровне? Как обстоят дела с JS? 6. Как хорошо нужно разбираться в линуксе на реальной работе? Джун должен уметь в гит, докер, nginx? Сейчас использую только гит в виде основных команд и иногда убунту и распбиан в виде работы с учетками, файлами, установкой пакетов и либ. 7. Как относятся к ошибкам джуна? Что бывает за косяки? Что будет, если вовремя не выполнить задачу? Всем добра, извините за тупые вопросы и опечатки
>>1965518 >за год вкатиться на удаленку За год ты можешь запилить несколько приложух на любом языке или на нескольких. Если одна взлетит, то тебе уже похуй на все будет.
>>1965523 Что именно ты имеешь в виду? Если свой стартап, то у меня уже есть такой опыт, к сожалению, это дано не всем, я понял, что мне лучше работать на кого-то. Ниже отвечал не я. >>1965551 Анон, ты имеешь в виду фриланс на биржах типа апворка? Я не против, конечно, но для начала мне в любом случае нужно освоить джанго и набраться опыта в каких-нибудь реальных проектах. Английский 6.0
>>1965518 Вкатывайся в нейроночки. У тебя как раз pandas, numpy, tensorflow, opencv, то что нужно. Бросай свою нищую контору и свой зажопинск. В джанго вкатываются совсем дурни без образования.
>>1965609 В смысле? Я с ними уже год работаю, поэтому и появился питон на работе. Зп там почти такие же, как в вебе, а сложность работы несоизмерима. Я не хочу переезжать, мне это просто невыгодно, поэтому и ищу удаленку. Вообще не хочу больше как-то сталкиваться с математикой и программированием на си и плюсах, это была моя огромная ошибка, нужно было сразу уходить в веб. Я бы и в 1с прошел, но они тут получают по 30к Можешь что-то подсказать по моему вопросу в плане джанго?>>1965609
>>1965305 >>1965299 еще на питоне есть юпитер нотебук, там очень удобно свои формулы представлять ученым и каждый может сразу же их выполнять и модифицировать
>>1965739 Отучился с трудом именно из-за нежелания учиться. Сначала учился в спбгу, потом свалил обратно в свой мухгту Заканчивать пришлось, потому что больше кроме кодинга я ничего не умею. Я сейчас начал осознавать, что меня где-то развели как лоха, пока я дрочил разные виды математик и разбирался с вращением деревьев на плюсах, кто-то вкатывался в питон, пхп, джаву и работает сейчас удаленно, имеет более интересные проекты, ещё и зп выше. Так что я решил больше не наступать на эти же грабли. Ну или пока за это не начнут платить х3 от рынка
Привет, питонисты, есть проблема, для каждого юзера таски селери должны выполняться строго по очереди, т.е он не может совершить 2 действия, которые дляться долго одновременно, самое просто решение это просто создать словарь и проверять завершена ли таска для каждого пользователя, но может есть решение в селери, которое позволяет сделать строгую очередь выполнения для каждого пользователя?
А можно ли как-то на основе переменной и списка сделать словарь? Переменная a = rock а в списке b fire water wood ice можно ли получить словарь {rock: "fire", "water", "wood", "ice"}
>>1966046 Я туплю? На первом скрине просто str(array) а на втором через " ".join(array) Надо было, чтобы оно воспринималось не как цельное слово, а как разные слова. Может есть аппенд какой-то и через перебор?
>>1965812 Пиздец, назуя они это практикует и кто к ним вообще идёт? >>1965799 Жесть! а почему решил на математику поступить? там именно фак прогинга типа был? когда я учился такой хуйни еще не было даже мочему свалил из спгу? ты сам с миллионника или с маленького городка - соли земли русской?
>>1965884 потому что одна таска делает расчет и заполняет таблицу, другая удаляет все расчеты, если вторая выполнется до завершения первой, то половина записей останется
>>1966056 они заебали своим сайенсом, мониторят там блядь кто какие треки моргенштерна предпочитает утром в пятницу. и какую рекламу лучше пихнуть в это время. такого рода дататсаенс там
>>1966066 Делаешь таску на запись, делаешь коллбек с тем, что тебе надо а в конце его юзаешь таску на удаление.
Что делать дальше?
Аноним13/03/21 Суб 19:41:02№1966104440
Прошел основной синтаксис пайтона. Мы в Университете изучали с++ пол года или даже больше, поэтому изучение было быстрее в несколько раз, чем когда я изучал с++.
Но что делать дальше я хз, тоже самое было и си++, мы дошли до классов, я сделал каталог книг, все курс по с++ закончен.
Из минусов мне пока тяжело дается понять как работает ООП или декоратор, не ну я могу сказать что такое инкапсуляция, полиформизм, наследования, но я не смогу применить это. У меня есть задроченная теория для сдачи тестов(Экзаменов) в Университете. Но я полный 0 в практике.
Иногда решаю задачки на КодеВарс 5-6 куи, пробовал проект Эйлера, но чет не особо зашел.
планирую двигаться в веб, начинаю с Фласка, летом как подтяну знания хтмл + ксс перейду на джанго, если с Фласком все ок будет. Но не знаю, правильно ли я двигаюсь. Не покидает чувство, что я делаю что-то не так.
>>1966104 Просто пиши как можно больше кода для себя - быстро прогресс почувствуешь. Если тебе какой-нибудь тулзы не хватает в повседневности или сервиса, попробуй написать, используя те вещи, которые тебе сейчас не понятны.
>>1966054 ПМИ. Это что-то вроде российской версии computer science, программирование с очень общиной теорбазой и математикой. Свалил, так как жить для меня в Питере дорого, а качество образования того не стоило, в итоге в мухгту просто легче было получить вышку, а на знаниях это никак не отразилось. Один хер что там, что тут, все было поставлено на самообучение Я с 200к мухосранска.
>>1966103 Не, удаляет таску пользователь, когда захочет, мне надо просто проверятьпри удалении что предыдущая завершена, я сделал просто словарь в который добавляю таски каждого пользователя и при вызове каждой таски проверяю есть ли доступ к ней
>>1966104 >планирую двигаться в веб, начинаю с Фласка, летом как подтяну знания хтмл + ксс перейду на джанго, если с Фласком все ок будет Можно начать сразу с Джанго. Он более системный и стройный, хорошо задокументированный, фласк это конструктор, к которому со стороны надо разные инструменты прикручивать.
>>1966113 200к это большой город! а я учился сначала на автомеханическом, потом автопром сдох потом на психолога когда тема была на подъёме, психология хуета без задач оказалось в россии. потом на строительном, но пизданул кризис и стройки сдулись короче пиздец жгучий, как тебе такое?
А .venv среду надо каждый раз скачивать если захочу какие-то сторонние библиотеки в проекте заюзать? Или они при установке через pip-ку не привязываются к каталогу, в который я их ставил?
Также ещё пипку обновил в %APPDATA% через команду в терминале VSCode.
>>1966310 venv не надо скачивать. Он копирует твой каталог с питоном с привязкой или без site-package. Скачиваешь только внешние либы из requirements при обновлении
>>1966310 >Или они при установке через pip-ку не привязываются к каталогу, в который я их ставил? venv скачивает модули в тот каталог, к которому ты его привязал. То есть если у тебя 10 разных venv, то в каждом будет своя собственная копия модуля.
Вот честно, почему ты такой не любознательный? Мог бы просто сам создать три venv и посмотреть, что как каталоги изменяются и чего он каждый раз качает. Так же проще и интереснее даже.
здарова. недавно решил вкатиться и выбрал питон для своей кривой программы, за полгода чето научился и сделал так, что это начало приносить деньги, но сама структура кода оставляет желать лучшего, плюс делать gui на питоне стал через pyside, а там стили так же оставляют желать лучшего (либо я чет не догоняю), и чтоб прога не выглядела как кусок говна пришлось долго ебаться с ней, и теперь я не могу добавить в нее новые модули без труда.
Вопрос, как вообще начинать рефакторинг своего кода? Че писать, чтобы можно было добавлять модули в программу проще (как конструктор). И поддерживает ли pyside что-то бОльшее чем css для стилей. И если нет, на какую либу перекатиться (с питона слезать не хочется)
Хочу сделать простой поисковик: На сайте в строку вбиваешь название вещества (например NaCl), нажимаешь "поиск" Прога ищет в базе данных и выдаёт все элементы list'a, в которых есть это слово.
list уже есть, домен, грубо говоря, тоже. В чём сделать поиск и вывод?
Я уже спать ложился, ща проверил две папки создал и venv к ним добавил, да, действительно, там во многих файлах пути прописываются к текущему проекту для которого я в терминале прописывал команду "python -m venv". Да даже тупо хэши у папок разные (естественно).
Присоединился значит в стартап к протыклассникам. На меня повесили разработку бэка со словами "стек на твой выбор, просто сделай, чтоб работало и в приемлемые сроки" Я как-то даже растерялся с этой хуйни, как собственно выбрать стек с 0? Сам проект, допустим - платформа с заказчиками и исполнителями всякой хуйни Есть частично написанный фронт на вью. С меня надо рест апи; ну там регистрация с разными ролями, личные кабинеты и прочая хуерга. Сцепим это все аксиосом (наверное). Сначала подумал про джангу дрф или фласк рестфул + постгря/ребит/селери. А потом задумался, мож нахуй эту джангу? Что сейчас ещё можно заюзать из бэкенд фреймворков под чистый проект? Баловался с aiohttp и fastapi, но не знаю насколько они продакшен реди. Плюс ещё знаю, что у асинк решений проблемы с orm либами, а мне хотелось бы алхимию или что-то максимально похожее на неё.
>>1966350 >>1966483 Заодно кста разобрался как интерпретатор выбирать. Потому что он иногда обращается к библиотекам и интерпритатору из appdata, а если неправильно настроить проект, то будет обращаться к локальному интерпретатору, у которого может не лежать рядом нужных библиотек.
>>1966521 Fastapi использовал в проде, но проект был хуита по нагрузке, зато асинхронки из коробки. Вот про ORM хуй знает. Есть Tortoise ORM, но это глубокая бета. Peewee-async советуют. Для FastAPI уже админка есть с Vue3 TS
>>1966521 >Плюс ещё знаю, что у асинк решений проблемы с orm либами, а мне хотелось бы алхимию или что-то максимально похожее на неё. Сейчас клянутся, что в алхимии 1.4 будет хорошая поддержка асинхронности. Пока 1.4 в стадии бета-тестирования, официальный релиз 1.3
>>1966544 Alchemy перегружена. Tortoise ORM обещают универсальность для всех реляционок. Вот остальные придется через сторонние пакеты использовать. Ну в черепахе и команда ещё маленькая и roadmap на 2 года.
>>1966558 Смысл venv в изоляции. Соответственно и пакеты которые ты установил будут там же, не затрагивая общесистемные (актуально для ЖМУ Пинус). К тому же на проекте у тебя может быть и PyPy вместо CPython. Сразу ставь PyRight и PyLance. Вполне годное решение.
Всем привет. Собираюсь вкатиться в программирование и выбрал питон. Как с ним на удаленке? Смогу ли я через полгода изучения питона + джанго + бд уже на удаленке брать заказы? 25 лет, шарю в верстке, программированием как таковым никогда не занимался, но достаточно хорошо шарю в вебе.
>>1966612 >Как с ним на удаленке? Нормально >Смогу ли я через полгода изучения питона + джанго + бд уже на удаленке брать заказы? 100% нет >25 лет, шарю в верстке, программированием как таковым никогда не занимался, но достаточно хорошо шарю в вебе. Лол, и как именно ты хорошо шаришь в вебе?
>>1966613 Работал в веб-студии, знаю где линия фронта, где бэка. Не специалист, просто спокойно поддержу разговор, если речь зайдёт о вебе. Параллельно шарю в сео, сем и т.д. Также тестером работал ещё
>>1966614 чел, я могу реализовать задумку на питоне, потому и пишу тут а спрашиваю итт, потому что аноны так или иначе сталкивались с потребностью залить код на сайт. Вот и спрашиваю, нужно ли мне пхп или есть какие-то костыли с питоном?
>>1966617 Какие нахуй костыли? select * from table where name like upper('%na cl%'); Для простого поисковика тебе этого хватит.
print и pprint
Аноним14/03/21 Вск 18:19:51№1966640480
Я так понял, что атрибут width относится только к pprint? И нельзя контролировать ширину строчки в стандартном print? Зочем это разделение и какое фундаментальное назначение у pprint?
>>1966616 За полгода ты только с нуля будешь более-менее уметь писать проекты, но такое говнище будешь писать, что мало кто захочет связаться с тобой. Каким-нибудь стажером может и пойдешь, но таких, кто за полгода хотят выучить стек и устроиться - много.
>>1966659 Что ты к тому пхп прицепился? Ну можно сделать на пхп, можно на питоне, это не имеет значения. Сейчас практически любой язык может в веб и имеет веб-фреймворки, близкие по возможностям.
>>1966663 Да и тот же самый пхп сейчас усиленно перепиливают в язык общего назначения, и ходовые фреймворки у него все внешние. Этими встроеннымы веб-фичами, заложенными изначально, никто не пользуется.
>>1966683 Чел, самый днищенский впс меньше 200 рублей стоит. Буквально одна пачка сигарет. Или пару обедов в школе, или кофе в старбаксе, или бигмак, что для тебя там актуально.
>>1966736 У меня гитхаб премиум был в прошлом году (скидон был), пытался спиздить 3700, а бабки на вкладке маринуются и на карте редко больше 5к бывает, в тот раз было меньше. Изи вей, для отключения списывания. Я никак не могу найти где говноофис свою подписку держит, просто списывает нахуй и все.
>>1966763 >Лицензия На каждую проериетарную хуйню есть жопенсорс поделие. Тот же DBeaver CE умеет все кроме Mongo, а подписка там охуеть дорогая. Вся суть в том, что либо все из коробки,но платно либо все из кучи маленьких коробок, но бесплатно.
>>1966769 > все из кучи маленьких коробок, но бесплатно Я так на вим хотел полностью перейти. Но эти блятские конфиги под каждый проект настраивать - нет уж. Перешел на vs code. Что-то среднее оказалось и вполне устраивает. Плагинов - хоть обосрись, только половина глючные страшно, особенно от микрософта
>>1966777 Ты про PyLance/PyRight? Нормально работают, заставляют правильно type hints писать, хотя и ругаются на 'Possible None value...', но я ж не макака, а целый бабуин и вместо None будет обработка exception, о котором PyRight не знает, сука
>>1966777 А ещё забыл, что эти ебаные typehints заставляют тащить с собой кучу импортов. То есть если def method(arg:BaseRequestModel) ->BaseResponseModel: то в импорте должно быть BaseRequestModel, BaseResponseModel И тут цирк с конями и блядями, так как уже начинается жава ынтырпрайз и абстракции.
Чего покурить для прочного понимания async/await и в целом механики асинхронности в пайтоне? Как-то не особенно много контента, вроде. Алсо, что там с ASGI нынче? Фактически стандартом становится?
Добрый вечер, полный ньюфаг впринципе в программировании. Какие задачи можно решать питоном и какие цепочки развития впринципе есть? как я понял кроме самого языка надо еще что-то учить в зависимости от задач. Что сейчас перспективнее, буду оч благодарен если пропишите алгоритм учебы.
Да и вообще, возможнн ли вкат в питон за год очень активной учебы ( в день по 8+ часов)?
>>1966801 Видишь ли, у меня один проект пока на втором питоне. В медленном процессе перехода на 3 не по моей вине. И только один pls, Microsoft, работает со вторым. Еще с 18 года там ебучий баг, что он что-то в фоне анализирует и ломает к хуям весь автокомплит.
>>1966872 Вкат возможен за 8+ часов в день за полгода с пет проектом адекватным. Просто так читать и писать говняные сниппеты смысла нет. Тот же парсинг страниц хуйня без задач, пока не свяжешь с чем-то ещё (аналитика, к примеру, автозакупка)
>>1966066 Ставь в базе семафор на этого пользователя при запуске первой таски. По завершению работы семафор снимай. Во второй таске чекай семафор. Пока он есть, крутись в ожидании.
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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