Этого треда уже нет.
Это копия, сохраненная 15 мая 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Питон тред №113 /python/ 1943168 В конец треда | Веб
Тред, посвящённый языку программирования Питон, #113

Предыдущий: >>1931851 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem

Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться

#######################################

ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года

Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.

— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х

— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html

— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0

— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4

— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.

— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)

— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется

— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.

— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
исходник: https://dumpz.org/bASGKD8cCFDf
2 1943254
>>1943234 →

> Но как же мне тогда крутить свою бесконечную(круговую) очередь и подкидывать в нее новые задачи?



Во-первых замечания по стилю. Делать вот это
loop: asyncio.AbstractEventLoop = None
передавать loop в функции не надо. Это устаревший стиль, актуальный для питона 3.5, которые сейчас считается obsolete и активно выпиливается. Там была особая магия с тем, что можно пересоздавать циклы обработки сообщений, и куча проблем из-за этого. Это можно забыть, как страшный сон, и просто делать
self.loop = asyncio.get_event_loop()
или
self.loop = asyncio.get_running_loop()
У тебя код завязан на специфику 3.7 (contextvars, typing), поэтому можешь и функции для asyncio оттуда использовать смело.

Я не вникал особо в твой код, но там есть вот такое вот:
62: self.loop.run_until_complete(self.consume_queue())
это синхронный вызов, он завершится только тогда, когда завершится цикл в consume_queue, то есть судя по всему никогда, если только какого-нибудь исключения не будет.

Логика асинхронного программирования схожа с логикой многопоточного.
В многопоточном у тебя есть треды, которые время от времени переключаются. В asyncio аналог треда это задача, Task. У тебя скедулер в asyncio держит задачи и переключает с одной на другую, получается, что несколько задач работает одновременно. В то время как внутри задачи всё последовательно идёт, операция за операцией.

Соответственно, идея такая. Ты свой планировщик оформляешь как независимую задачу (сервис).
Как вариант, создаёшь объект
my_scheduler = TaskScheduler()
и запускаешь его как задачу
scheduler_task = asyncio.create_task(my_scheduler.consume_queue())

Потом в других задачах ты можешь делать
await my_scheduler._queue.put()
или синхронным вызовом
my_scheduler._queue.put_nowait()

Таким образом твой планировщик работает где-то в фоне и выполняет какую-то работу, а общаешься ты с ним через очереди.
2 1943254
>>1943234 →

> Но как же мне тогда крутить свою бесконечную(круговую) очередь и подкидывать в нее новые задачи?



Во-первых замечания по стилю. Делать вот это
loop: asyncio.AbstractEventLoop = None
передавать loop в функции не надо. Это устаревший стиль, актуальный для питона 3.5, которые сейчас считается obsolete и активно выпиливается. Там была особая магия с тем, что можно пересоздавать циклы обработки сообщений, и куча проблем из-за этого. Это можно забыть, как страшный сон, и просто делать
self.loop = asyncio.get_event_loop()
или
self.loop = asyncio.get_running_loop()
У тебя код завязан на специфику 3.7 (contextvars, typing), поэтому можешь и функции для asyncio оттуда использовать смело.

Я не вникал особо в твой код, но там есть вот такое вот:
62: self.loop.run_until_complete(self.consume_queue())
это синхронный вызов, он завершится только тогда, когда завершится цикл в consume_queue, то есть судя по всему никогда, если только какого-нибудь исключения не будет.

Логика асинхронного программирования схожа с логикой многопоточного.
В многопоточном у тебя есть треды, которые время от времени переключаются. В asyncio аналог треда это задача, Task. У тебя скедулер в asyncio держит задачи и переключает с одной на другую, получается, что несколько задач работает одновременно. В то время как внутри задачи всё последовательно идёт, операция за операцией.

Соответственно, идея такая. Ты свой планировщик оформляешь как независимую задачу (сервис).
Как вариант, создаёшь объект
my_scheduler = TaskScheduler()
и запускаешь его как задачу
scheduler_task = asyncio.create_task(my_scheduler.consume_queue())

Потом в других задачах ты можешь делать
await my_scheduler._queue.put()
или синхронным вызовом
my_scheduler._queue.put_nowait()

Таким образом твой планировщик работает где-то в фоне и выполняет какую-то работу, а общаешься ты с ним через очереди.
3 1943275
>>43254

>Соответственно, идея такая. Ты свой планировщик оформляешь как независимую задачу


Удивительно, я перечитывал предыдущие ответы и внезапно сам допер до этого. Очевидное решение, над которым я ломал голову несколько часов.
Тысяча благодарностей за помощь! Без тебя и других анонов тупил бы и дальше.
4 1943290
Ждет ли питон строго-типизированная судьба JS'a в виде подобия TS? Или это уже есть и я это просто проебал? Стараюсь использовать встроенный модуль typing настолько, на сколько могу, но имхо от того проку не сильно много, когда за соблюдением типов следит сугубо IDE и интерпретатор в момент исполнения.
5 1943337
>>43290

>от того проку не сильно много


Ты сейчас описал применение любой статической системы типов.
6 1943338
Какие задачки можно подрочить, чтобы устроиться на Python кодера?
Что вообще можно написать такого эдакого, чтобы не стыдно было потлм показать на собеседовании?
7 1943340
>>43338
rest api с крудом. Какой-нибудь условный интернет магазин
8 1943359
>>43290
mypy же есть. Если так горит, можешь настроить тайпчекинг в качестве дополнительного линтера.
10 1943372
>>43337

> Ты сейчас описал применение любой статической системы типов.


В каком плане? Я имел в виду, что typing в моем понимании - просто библиотека для отписки, чтобы условно была. Если нет внешнего кода, который потом типы сопоставляет (хоть та же IDE, хотя она обычно с этим не очень справляется) и проверяет, какой толк от нотации и type-хинтинга в принципе, если ты сам потом все проверяешь по итогу?
image.png99 Кб, 940x669
11 1943399
Привет, друзья,

Вопрос такой:
Как заставить Джанго форматировать html перед отправкой клиенту? Чтобы не было такой параши с огромными разрывами как в пэйджсурсе пикрил.
12 1943403
>>43399
Ты еще до темплейтов не дочитал руководство? https://docs.djangoproject.com/en/3.1/ref/templates/language/
13 1943409

>>>>43403


Давно уже дочитал и многое уже прочитал, но про то как уже отрендереную страничку автоматически выправить по кодстайлу, перед отправкой клиенту - там нет.
14 1943410
>>43290

>Ждет ли питон строго-типизированная судьба JS'a в виде подобия TS?


Это разные вещи всё-таки, TS это мета-язык, компилируемый в JS, а typing это сам питон.

Есть инструменты для проверки в runtime, технически это возможно. Просто перерасход ресурсов.
15 1943413
>>43410
Не нужно, тайпхинтинг порешал все проблемсы. Прверять типы должен разраб при разработке а не машина при выполнении.
16 1943414
>>43409
А зачем перегружать код и нагружать сервер? Почему руками да даже не руками, в том же вскоде есть встроенная функция это не сделать?
17 1943415
>>43372
Глянь на пакет mypy. Он делает статическую проверку кода на соответствие типов. То есть проверка автоматизирована.

Твои рассуждения опоздали, надо было в начале десятых об этом писать. Когда придумали аннотации типов, но никакой дополнительно поддержки, кроме как самой аннотации, не было.
18 1943424
>>43399
Используй шаблоны jinja2, они лучше джанговских по-умолчанию и более универсальны.

Там ты можешь делать теги вида
{%- tagname -%}, где тире означает, что нужно вырезать все лишние пробелы перед или после тега.

Именно форматирование нужно? А зачем?
19 1943425
Ну код это не перегрузит. Код плохо читается как раз таки за счёт адских белых зияющих пятен.

Не думаю, что это как-то сильно нагрузит сервер, например тот же ВСКод делает это за доли секунды по щелчку мыши.

Вот бы так делал рендерер Джанги автоматически...
20 1943426
>>43425
Нахуй его читать вообще?
Ты глупостями занимаешься.
21 1943427
>>43424
Спасиб, я это не знал, ну тогда и Джанга к хую не впилась можно всё на Фляге сделать.

Имеется ввиду форматирование по код-стайлу , чтобы сурсы загруженых страничек было удобно читать.
22 1943429
>>43426
Про хайден инпуты же знаешь? Ну сам и ответь на свой вопрос.
23 1943430
>>43425
>>43425

>Не думаю, что это как-то сильно нагрузит сервер, например тот же ВСКод делает это за доли секунды по щелчку мыши.


Если у тебя сервер обслуживает 10 пользователей, то нагрузит не сильно. А если много?

Можно сделать какой-нибудь декоратор, который будет форматировать html на базе известных пакетов, вроде lxml. Но реально, зачем?

Это время на форматирование и дополнительный трафик. Зачем тебе читать итоговый html? Тем более, что есть инструменты, чтобы потом в браузере код в форматированном виде посмотреть, если очень потребуется.

Наверное можно было бы сами шаблоны отформатировать так, чтобы на выходе был уже форматированный код, в том числе все эти отступы.
24 1943436
>>43427

>Спасиб, я это не знал, ну тогда и Джанга к хую не впилась можно всё на Фляге сделать.


Возможно это и Джанго умеет. Вообще поменять шаблонизатор просто, а для тебя по итогу всё прозрачно будет, вместо шаблонизатора от Джанго будет работать jinja2.

Jinja2 лучше и мощнее. И эти шаблоны ты можешь потом в других серверах использовать, даже не питоновских, вроде nunjucks.
25 1943437
>>43429
И если там чуть неровно, то ты уже в обморок упадешь?
К тому же можно смотреть в инспекторе, он тоже форматирует.
26 1943438
>>43430

> Это время на форматирование и дополнительный трафик. Зачем тебе читать итоговый html? Тем более, что есть инструменты, чтобы потом в браузере код в форматированном виде посмотреть, если очень потребуется.


А вот это - золотая мысль, спасибо.

Проблемы шерифа индейцев не волнуют - проблемы читаря кода не должны волновать сервер.
27 1943439
народ, подскажите плез какие можно глянуть примеры проектов, в которых используется бдшки, чтобы понять как вообще идет с ними взаимодейсвтие через питон?
а то я заебался sql дрочить и не понимать зачем он нужен
28 1943440
>>43437
Да, мне уже подсказали про инспектор, спасибо!!!
29 1943441
>>43439
Вот тебе проект - парсишь каталог с шлюхами и забиваешь в дб, потом сделай форму по их поиску по разным критериям с сортировками и прочим.
30 1943443
>>43441
я скорее имел ввиду "почитать", чем "запилить"
запилить я и хуево могу
а мне почитать бы как надо делать
31 1943444
>>43439
SQLAlchemy. Прочитай доккументы Алхимии на их сайте - сразу таким образом и SQL изучишь и узнаешь что такое ORM.
32 1943446
>>43444
а всякие монго, рэдис? это все что за звери?
33 1943447
>>43443
Как делать. Про нормализацию бд знаешь? Вот.
Дальше можно работать ручками через prepared statements или через orm, второе предпологает ещё дрочение ооп.
В принципе, берешь любую книгу по джанге, там применяют орм.
34 1943546
Салам, двач. Снова нуб в треде
Второй раз уже сталкиваюсь с разницей в функционировании моей говнопрограммы на локалхосте и на ПайтонЭнивеар. На этот раз почему-то мускул отказывается заполнять поля. Вроде все проверил: и миграцию сделал, и апгрейднул, и код заполняет базу данных на моей машине, а воз и ныне там. И где ошибка никак не пойму. Подскажи, бро, куда глядеть?
35 1943585
Плз хелп! Джанго братья!
Нужно запилить ПАТЧ метод из имеющегося РОSTа. Спасибо!
36 1943586
>>43546
flask, flask_sqlalchemy быстро апдейт
37 1943594
>>43585
Да ты охуел экран фотографировать?
38 1943598
Самоучка. Предстоит интервью на мидла, теорию не знаю, какие обычно вопросы задают?
39 1943604
Привет, изучаю пайтон, решаю задачки. Застрял на совсем тупой и простой. Походу, у меня в чем - то фундаментальное непонимание. Я перерыл гуголь, все ответы подобны:
https://stackoverflow.com/questions/37619848/python-loop-list-index-out-of-range
https://qna.habr.com/q/379556

НО Я НЕ ПОНИМАЮ, ГДЕ ПОСЛЕДНЯЯ ИТЕРАЦИЯ? Задача состоит в том, что, нужно римские цифры перевести в арабские, я заебался с этим list index out of range. Изначально, я додумался до len(arr) - 1, но ведь в таком случае проебывается последняя итерация цикла. Возможно я что - то упускаю или не понимаю, я заебался.

https://ideone.com/Osin07
40 1943607
>>43604
Вот примеры вызова функции:
from_roman_numeral("V")
from_roman_numeral("XX")
from_roman_numeral("DCCC")
from_roman_numeral("MMMM")

То есть, вместо, MMMM, который должен быть равен 4000, мы получаем 3000, и так далее.
41 1943646
>>43607

> for i in range(0, len(arr) - 1):


Вот здесь ты пропускаешь последнюю букву. Там с индексами внутри цикла какая-то каша

> arr >= arr[i + 1]


строки сравниваются со строками

> if arr in roman


часть символов для чего-то пропускается

Выглядит как будто нейронку посадили фиксить экзепшены просто чтобы не было экзепшенов, неважно корректная ли программа будет в итоге.
42 1943647
>>43598
Гугли awesome interview questions.
43 1943674
>>43646
Сука, про нейронку обидно было.
Я немного не тот код скинул, но суть та же
https://ideone.com/n2ggzq

Я понимаю, что for i in range(0, len(arr) - 1): тут я пропускаю последнюю букву, то есть, итерацию, но если этого не сделать вылазит ошибка "list index out of range". Что с индексами внутри цикла не так? Я сравниваю один элемент списка arr и другой arr[i + 1], почему каша?

>строки сравниваются со строками. так и должно быть, ебанные римляне придумали, что если меньшая цифра стоит перед большей, то нужно вычитать, а не я.



Вот условие задачи, если что
https://www.hackinscience.org/exercises/reverse-roman-numerals
44 1943694
>>43674

> если этого не сделать вылазит ошибка "list index out of range"


Ну и что же теперь, отбрасывать последний символ? Убери бесполезные ифы и вставь недостающий, чтобы если символ последний, его всегда прибавляем, и не проверяем что там за ним.

> ебанные римляне придумали, что если меньшая цифра стоит перед большей


Ещё раз, ты сравниваешь строки, а не числа. Там X больше чем L например, 10 больше 50, тупо дальше по алфавиту стоит.
45 1943710
>>43694
ок, спасибо.

>Ещё раз, ты сравниваешь строки, а не числа. Там X больше чем L например, 10 больше 50, тупо дальше по алфавиту стоит.



тут да, совсем обосрался.
46 1943764
>>43594
а что за новые привила бро? Я здесь новенький. Могу код вставить.
47 1943840
>>43594
Сука проиграл, неужели сделать скрин так сложно
help.png64 Кб, 871x569
48 1943841
В чем ошибка? Сам не вижу
49 1943842
>>43764

>Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:


https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
50 1943843
>>43841
P, Q - списки либо множества, скобки меняй в первую очередь, остальное не смотрел, сет не используй, лучше списки
51 1943883
Есть какие-нибудь либы на питон для тестирования сетей (Пинги, трейсроуты, прямые, обратные днс запросы, арп запросы и прочая фигня)?
52 1943907
Можно ли на питоне вывести поверх всех окон изображение/оверлей? Так чтобы оно не прожималось мышкой/проходило сквозь выведенное изображение?
53 1943931
>>43883
в питоне есть либы для всего.
если ты их не можешь найти - значит ты даун.
54 1943939
>>43931
Я искал.
Полторы либы для пинга и 0,5 для трейсроута. При том, что возможности нормально обрабатывать их содержимое нет. Грубо говоря, запускаешь из питона пинг, а он выводит его в консоль, а не возвращает через return
image.png45 Кб, 728x444
55 1943951
>>43939
Ну если ты в гугле пишешь "библиотека питон трейсроуты", то конечно не найдёшь ничего
56 1943952
>>43939
PyPing, aio-ping навскидку.
Вот тебе traceroute https://jvns.ca/blog/2013/10/31/day-20-scapy-and-traceroute/
57 1943955
>>43951
>>43952
Вот по-моему они и не дают по человечески данные обрабатывать
58 1943957
>>43907
Вкатываешься в рансомварь с гомониграми?
59 1943959
>>43957
Да, поэтому требую помощь, помогай!

Я понял что питон говно, вкатываюсь в автохоткей, вот он то может вывести на экран.
60 1943960
>>43955
Ты идиот? aio-ping использовал прекрасно в продакшен коде. Нахуй пошел 1С ник
61 1943965
>>43939
ну вот так и формулируй свои вопрос:
опробовал то-то.
проблемы такие-то.
посоветуйте еще что-то

А то просто хочется обоссать.
62 1943978
Есть охуенная книга от апресс по сетям. https://www.amazon.com/Foundations-Python-Network-Programming-Brandon/dp/1430258543/
Прилагается виртуалка с сетью хостов для практики.
63 1944014
>>1942954 →
Что лучше, литкод или кодварс?
64 1944016
>>43840
хуй поймешь программистов, там особый путь
65 1944046
>>43978
14-й год, да ты охуел
66 1944066
>>44046
он и правда охуел

> • An overview of the "asyncio" framework that comes with Python 3.4.



Книжку сдать в музей исторической литературы
67 1944243
>>44046
Нет ф-стрингов, да.
>>44066
Как будто там не то же самое происходит. Ещё диды под сталинградом баб по хттп качали.
68 1944279
>>44066
Заходишь на https://docs.python.org/3/search.html?q=asyncio&check_keywords=yes&area=default и смотришь какие методы стали deprecated. Сложно?
69 1944281
>>44243

>Как будто там не то же самое происходит.


Более-менее на современный asyncio стал похожим с версии 3.5. В 3.4 легаси дико лютое, и при этом не совместимое с современном питоном, примеры оттуда просто не заработают в современном питоне, там вообще общего мало.

Вообще именно сетевые возможности с asyncio в первую очередь старый питон он современного отличают. И типизация.

Другие вещи можно и по старым книжкам учить, а вот для этих важно, чтобы современные были.
70 1944282
>>44279

>и смотришь какие методы стали deprecated. Сложно?


Нет. Ответ простой, для asyncio из 3.4 ВСЕ методы. Вообще все.
71 1944295
>>44281
Я про то, что протоколы всё те же, то что какие-то либы их используют неблокирующе это другое дело.
Ссаный фтп происходит с каких-то 70-х годов и всё ещё в ходу.
72 1944319
>>44295
Протоколы протоколами, но принципы построение программ разительно поменялись
Это как сравнивать жопаскрипт из 2012 с es7+
73 1944334
>>44319
У меня ничего не поменялось, я не пишу любой сетевой код асинхронным.
Иногда это имеет смысл, да. Но в целом это просто очередной тренд, как было с носкл, где вся эта хуйня теперь? Заняла свои небольшие ниши, где она имеет превосходство.
74 1944344
>>44319
жс это вообще вечная история борьбы с изначально заложенными анальными ограничениями, а все долбоебы вокруг повторяют.
75 1944350
>>44334

>я не пишу любой сетевой код асинхронным.


ловите джангодебила
76 1944351
>>44334

>как было с носкл, где вся эта хуйня теперь


Везде, братюнь. Redis, Memcached, Clickhouse, Mongo используются корпоратами.
77 1944355
>>44351
Редис и мемкешед придумали ещё до тренда и презренные похапешники ими свободно пользовались, прикинь?
Про монгу в сириус бизнесе я не слышал. Кликхаус это какая-то местечковая хуйня, подозреваю, что пизданута с амазон редшифт, но я не сталкивался.
>>44350
Просто съеби.
78 1944415
братва
короче по работе надо было пересесть с шарпа на питон
и пересел
клевый язык, конечно - базару ноль
но из-за того, что не все вещи делаю питоник-вэй - код получается страшным (еще бы, я ведь пишу на питоне как на шарпе)
короче, если кратко: где бы глянуть хорошо написанные питон проекты? Посмотреть где и как лучше написать
79 1944418
>>44415
особенно не понимаю это хуйни с * одиноко стоящей
что это за говно
80 1944480
>>44334

>Но в целом это просто очередной тренд,


Это не просто тренд.
Если ты пишешь серверную часть, то у тебя опции или использовать треды, или извращаться с селектами, или asyncio (или его предшественники - стрононние решения). Селекты это совсем извращение, остаётся только два варианта, треды и асинкио.

Треды в питоне не очень, возни много, граблей много, эффективность никакая.

Ну да, есть ещё опция делать решения запрос-ответ, но это не совсем сетевой софт.

При этом я думаю что и в других местах по сетевой части много с 3.4-2014 поменялось, просто чуть менее очевидно.
81 1944538
Сап, анончик, буду благодарен небольшому код-ревью. https://pastebin.com/Nw8BtFJX

Функция для парсинга URL и последующего составления sitemap.
82 1944550
>>44415
Можешь тут посмотреть, только надо быть внимательным, если список называется "охуенные питон приложения", есть такая вероятность, что приложения могут оказаться охуенными с точки зрения пользователя, но не с точки зрения исходного кода, конечно, в большинстве случаев там и код на высоком уровне, но надо быть начеку

https://github.com/vinta/awesome-python
https://github.com/mahmoud/awesome-python-applications
https://python.libhunt.com/
83 1944556
>>44415
В плане стиля можешь посмотреть PEP 8
Или тебя архитектура интересует?
84 1944598
>>44550
спасибо)
а еще вопрос
нормально ли, что во многих проектах (в тех, что я видел) нет main функции как таковой?
типа фигачить тело в def main() а потом
if __name__ == "__main__":
___main()
это мовитон?
85 1944643
Начал учить опп. Как я понял self.method() и Class.method(self) это одно и тоже, но что и когда лучше использовать?
86 1944725
>>44643
Syntax sugar
87 1944728
>>44598
У тебя некомпилируемый язык и нет требований по точкам входа.
if __name__... Используется когда модуль запускаешь (а он тянет с собой все из __init__.py) через python -m. Если просто скрипт то объявлять не надо. Модуль всяко удобнее. С областями видимости и path ещё наебешься, придется .env клепать
88 1944865
Анончик, какой язык к питону вторым выбрать? Питон на приемлемом для себя уровне знаю, наговнокодить что надо могу, хочется еще обмазаться компилируемым языком, да чтобы его еще с питоном дружить можно было. Что обычно с питоном в связке берут?
89 1944866
90 1944868
>>44865
GOвно какое нибудь под микросервисы
91 1944902
>>44728
вопрос от другого анона.
в одном файле можно описать класс или набор функций и импортировать в другой файл без указания местонахождения? и для чего нужен __init__.py? чаще всего он вообще пустой. что там можно прописать?
92 1944943
Объясните пожалуйста это поведение.
Почему функция any() будто делает next(x)
Зачем такое поведение?
93 1944950
Объясните пожалуйста это поведение.
Почему функция any() будто делает next(x)
Зачем такое поведение?
94 1944953
IMG20210218132403240.jpg15 Кб, 660x279
95 1944965
Вот пикча
96 1945016
Есть какая-нибудь методичка по ооп чтобы коротко, по делу и понятно? А то прочел паттерны и шаблоны ооп, муть на много страниц, какие-то абстрактные фабрики, все очень круто, но как-то слишком абстрактно.
97 1945021
>>44355

>Про монгу в сириус бизнесе я не слышал


кек щито?

>Кликхаус это какая-то местечковая хуйня


Топовая колоночная база, ты ебобо?
98 1945033
>>44950
Потому что (внезапно) чтобы понять что там, то по объекту надо проитерироваться
Итераторы и итерируемые объекты зашиты в подкорку питону, один из основных паттернов
99 1945152
>>44556
ну пеп это ведь правила
а мне интересно именно прикладные вещи
типа
for el in elements:
___f(el)

или
a = list(map(f, elements))

я слышал, что питонисты стараются экономить строки вот оакими записями - это прям везде так принято?
100 1945153
>>45152

> типа как лучше


поправил
101 1945214
>>45152

>это прям везде так принято


Везде принято писать так, что было понятно
"Complex is better than complicated"
Прочитай "Zen of Python", если у тебя такие вопросы. Где-то наверняка и на русском есть.
102 1945222
Какой самый быстрый способ превратить x в y (рассортировать по a)?
x = [{'a': 1, 'b': 2, 'c': 3}, {'a': 1, 'b': 14, 'c': 8}, {'a': 2, 'b': 42, 'c': 1}, ...]
|
y = {1: [{'b': 2, 'c': 3},{'b': 14, 'c': 8}], 2: {'b': 42, 'c': 1}, }
103 1945261
>>45222
a = b
104 1945372
Двач, мне нужна помощь, я сейчас обговариваю проект, который в теории могу выполнить, суть заказа написать бекэнд с определенным функционалом. Я до сих пор работал в первую очередь с джангой, я правильно понимаю что бекэнд это в первую очередь api с помощью которого призводится работа бека, а все вещи типа чекбоксов, текстов, списков, кнопок, форм на фронте это просто формирование правильного запроса к api, соответственно мне это писать не нужно, этим должен заниматься фронт и соответсвенно фронт формирует правильно то что вводит пользователь и отправляет например jsonом уже запрос на апи а потом начинается логика? Поэтому моя задача сводится к написанию апи под тз, документация как работать с апи и все, верно?
105 1945378
>>45372
Алсо например в тз написано что нужно фильтровать список и поиск делать, где в этом случае разделение на бек и фронт, что каждая часть должна выполнять
106 1945410
>>45378

>где в этом случае разделение на бек и фронт


Есть разные подходы - называют толстый и тонкий сервер. Когда на фронте современный фреймворк типа vue / angular / react, то от бэкенда по сути требуется только апи и больше ничего. Но бывает и наоборот - шаблонизатор используется бэкендовский, формы, таблички и пр. всё на фрейморке бэкендовском (у джанги это есть), а на фронтенде сидит обычный верстальщик.
107 1945413
>>45410
Тз составлял не прогер, там просто сказано что нужно на джанго, но нужен бек, чтобы прикрутить потом фронт и при этом должны быть чекбоксы и формы, вот думаю теперь что на себя брать, а от чего открещиваться, спасибо
108 1945453
народ, а вот вопрос
иногда пишут
try:
___import a
except:
___import b
втф? в каких случаях мы не гарандирует импорт?
109 1945564
>>45453
ни разу не видел, но с импортами же есть ебля, например релятив импорт один заставляет ебаться, когда запускаем сам файл, а не ипортим его
110 1945604
>>45453
видел много раз
модуля "а" может сгенерить исключение внутри себя типа "какие то условия не выполнены на данной системе, что то там не найдено" и будет потому подключен fallback "b"
111 1945649
на первой странице гугла пишут, что питон популярен в банковских приложениях.
почему так нахуй? во всех этих статейках поверхностное объяснение. мол, он очень простой и потому пиздатый. ну да ну да. а если серьезно? в чем профит?
112 1945754
>>45649

> мол, он очень простой и потому пиздатый. ну да ну да. а если серьезно? в чем профит?


С тобой все там окей? Сам ответил на свой вопрос, забил на ответ и спросил вопрос снова.
113 1945762
>>45754
это ответ на первой страницы гугла, мне такой не нрав))
114 1945774
Смотрю блогера который объясняет синтаксис питона, после оставляет задания на степике, и у меня бывает часто ,что могу пересмотреть видос раз 20 и все-равно не понять как правильно написать кусок кода!! я один тут такой? кодинг совсем не мое?
115 1945779
>>45774
Дай блохира. Решаю пока задачки на петоне, интересно посмотреть. У меня на базовом питоне проблем обычно не возникает.
116 1945823
>>45453

>втф? в каких случаях мы не гарандирует импорт?


Если ты используешь нестандартные модули вместо стандартных.

Ещё такая магия использовалась для совместимости v2 vs v3, потому что там многие стандартные модули переименовывали.

Но вообще надо смотреть на конкретные случаи, а не гадать.
118 1945840
Сап, питонисты. В общем, мне нужно написать антивирус(да да, не удивляйтесь, в универе курсовая), и я задумался, а можно ли реализовать его на питоне? Идея такая, у меня будет два приложения - клиент и сервер, общаться они будут через сокеты либо же мейлслоты, тут пока хз. И вот у меня такой вопрос, если с клиентом понятно как работать, то вот с сервером я хз. Можно ли на питоне реализовать собственно проверку файла на вредоносность? Или же придется все же писать сервер на плюсах, а клиент на питоне?
119 1945870
>>44902
Логику, если модуль запускаешь. Например ссылку на классы или готовые объекты из других файлов в этой директории
image.png7 Кб, 432x353
120 1945900
>>43168 (OP)
А какой сейчас самый православный способ спарсить json в типизированные объекты?

Вроде, удобнее всего определить DTOшки как @dataclass и потом спарсить их с помощью вот этой либы? https://github.com/lidatong/dataclasses-json

Или есть способ лучше?
121 1945917
>>45900
в питоне есть типизированные объекты? охуеть, не знал.
122 1945924
>>45900
Pydantic
123 1945971
Подскажите какой-нибудь проект что-то вроде pandas web proxy ?
Хочу в веб-интерфейсике писать произвольный кодик, а в основном приложении просто получать dataframe . И чтобы все в докере и по сеточке оптимально упаковывалось.
124 1946107
>>43168 (OP)
Пацаны, я шапку изучил. Но литературы просто дохуя и она старая, хотя в шапке также написано, что надо читать литературу по актуальной версии питона.
Для нубаса с какой книги начать? Мне 32, перекатываюсь из другой профессии. В школе нравился паскаль — вот и все мои забытые знания.
125 1946122
>>46107
https://pymentor.github.io/pymentor-landing-page/dist/
Вот тебе роадмап например.
126 1946126
>>46122
Спасибо.
16135083286661.jpg127 Кб, 706x1000
127 1946158
Хочу написать программу на PyQt и в ней использовать pyuv. Проблема в том что в PyQt эвентлуп и в pyuv эвентлуп. Как мне спинить сразу два этих лупа, в PyQt ещё можно делать QApplication.instance().processEvents() а в uv такого нет.
128 1946232
>>46158
Допетрил сам, запускаю второй луп в отдельном тредике, вроде работает, теперь надо понять как в запущеный луп новые обработчики закидывать
129 1946239
здарова братва
короче вопрос
есть ли у вас прям промышленный пример (или просто годный), где использовались бы arg, kwarg аргументы?
а то игрушешные примеры ок, а нормальных я не видел
130 1946247
бля пиздец у меня горит нахуй
вот в питоне аннотирование методов в классе это просто пиздец какой-то
хочешь спокойно ебнуть что-то типа
class A:
...
__def hui(a : A) -> A:
____return pizda(A)

А НИХУЯ ТЫ ТАК НЕ МОЖЕШЬ - АНРЕЗОЛВД РЕФЕРЕН
пиздец горит
131 1946249
>>45924
О, тоже вариант. Но нужно наследоваться от BaseModel, что не всегда удобно
16131291200870.jpg124 Кб, 850x1079
132 1946320
>>46232
спиню кьюти луп в айдле uv-лупа и тредик реагирует на сигналы, кайфец
idle = pyuv.Idle(loop)
idle.start(lambda handle: QtWidgets.QApplication.instance().processEvents())
питон ван лав
133 1946346
>>46247
Ты понимаешь что ты ебанутый?
134 1946350
>>46239
Любая функция с регуляр экспрешн. Вообще это типа соглашения такого по оформлению кода.
135 1946358
>>46239
Где нужно произвольное количество аргументов или дохуя опциональных. Тот же sum искаробочный, тот же print искаробочный.
Вот из сторонней либы, например. https://requests.readthedocs.io/en/latest/api/
136 1946402
>>46346
а что блять не так?
137 1946423
дорогой двач
я студентота с опытом работы в концернах залупки
скоро предстоит менять работу на более серьезную (потому что в концернах залупки нужно быть и чтецом и жнецом и на дуде еблецом)
и в целом, на прошлом месте я неплохо прокачался в прогании
Но тк у меня немного не прогерское образование, я абсолютно не ебу в теорию алгоритмов - а ее поднимать надо, да
отсюда вопрос, дорогие аноны, как лучше вкатываться в алгоритмы? Спрашиваю в этом треде тк сам питонист
Стоит ли смотреть курсы? или лучше сразу идти в литкод? а поможет ли вообще литкод? или лучше задрочить кормена и прочую хуйню?
выручай двач)
138 1946424
>>46423
Что ты собираешься делать на литкоде, если ты нихуя не знаешь? Сначала дрочи теорию, потом увидишь применения.
139 1946432
>>46424
ну то есть это нормально идти вот таким образом
оке, спасибо
140 1946444
>>46424
а какой самый годный ресурс для изучения алгоритмов?
141 1946622
>>46247
Ты засовыаешь в метод класса класс и хочешь вернуть этот же класс? нахуя?
142 1946657
>>46444
Берешь классические книги и читаешь.
143 1946725
>>46249
Что не так? Объект создаётся, методы через интерфейс прокидываешь
144 1946744
Нужно сделать подключение к браузерному чатику, что почитать для этого?
image.png9 Кб, 574x210
145 1946789
Сап двач, а нет ли способа автоматически прописывать все эти self.asd = asd? Уже устал это делать
146 1946816
аноны, как вы относитесь к корутинам?
пиздец конечно название ебанутое
148 1946949
>>45900
Я использовал marshmallow, вроде удобно
149 1946957
>>46247
У тебя все заработает, если напишешь в начале файла from __future__ import annotations
Это активирует фичи из вот этого пепа https://www.python.org/dev/peps/pep-0563/
Если верить расписанию, это поведение станет дефолтным в версии пиона 3.10, то есть не надо будет ничего импортировать
https://docs.python.org/3/library/__future__.html
150 1946966
>>46622
Много есть вариантов. Например, арифметические операции, там, сложение: объект класса А принимает другой объект класса А и возвращает результат в виде объекта класса А. Или, например, в pandas у датафреймов полным полно методов, которые берут на вход другой датафрейм и возвращают результат тоже как датафрейм.
image.png50 Кб, 536x531
151 1946989
Есть список "results"
Но когда я удаляю элементы из списка "shortcutsList", они удаляются и из списка "filesList"
Почему так?
152 1946991
>>46957

> станет дефолтным


он уже вышел же
>>46744
)))) я уже неделю каждый день пытаюсь сделать что-то подобное. ИМХО лучшее чтиво - StackOverflow
153 1946992
>>46989
ох решил проблему, написав:
filesList = filesList + results

А в чём дело, почему переменные связались друг с другом?
154 1946999
>>46992
Потому что ты передал в filesList и shortcutsList не список, а ссылку на список. А при сложении списков создается новый список.
155 1947001
>>46999
filesList = [results]
так можно? (чтобы не создавать ссылку)
156 1947003
>>47001
Нет, так ты создашь новый массив со списком внутри.
Тут описаны разные способы копирования массива: https://overcoder.net/q/3254/как-клонировать-или-скопировать-список
157 1947004
>>47003
спасибо!
первый же .copy() уже отвечает на мой вопрос
image.png2 Кб, 364x87
158 1947006
>>46949
Что-то синтаксис бе. Pydantic хоть стандартные type hints использует.
159 1947072
>>46989
Вас за global ещё не пиздили?
160 1947073
>>46247
Staticmethod? Обратись через cls в чем проблема?
161 1947093
>>47072
А я хуй знае, как без глобала изменять i в нижней строке на картинке
162 1947099
>>47093
Берешь и меняешь, ты упоротый там?
163 1947100
>>47099
i not defined
:C
164 1947102
>>47099
Или для объявления достаточно строки:
i = 0
?
165 1947103
>>47100
В питоне нет блочных скоупов.
Покажи полностью.
166 1947104
167 1947105
>>47104
Спасибо, как сяду, попробую все поправить.
600 строчек кода без знания ООП превратились в такой ад, что мне было главное, чтобы заработало. Сейчас работает, можно и оптимизировать
168 1947110
>>47105
теперь перепиши код полностью в функциональном стиле
169 1947241
Аноны, поясните за тренды во фреймворках в 2021, че сейчас модно, что производительно, а от чего лучше отказываться в бекенде
170 1947253
Ох. Как же у вас в треде хорошо. Все друг другу поясняют вместо кидание говном. А то заходил когда выбирал направление к фронтенд петушкам и охренел.
Вы мне помогли окончательно определится с выбором направления вката.
Так что сижу и учу питон. Если будут вопросы мне есть к кому обратится. Спасибо
31pkfFPHJDY.jpg364 Кб, 796x594
171 1947291
Сап аноны, делаю генератор помех, который бы работал на заданных пресетах. Условно говоря, в папке лежит 10 картинок, которые в рандомном порядке выводятся на экран.

Задача состоит теперь в том, что бы сгенерировать эти пресеты, для этого я хочу брать картинку и вырезать из неё в случайном порядке небольшие области. Это необходимо, что бы на выводе получались разные текстуры.

Но я никогда не работал с изображениями в питоне, через какую библиотеку это можно сделать? Может кто-то делал подобное?
172 1947307
>>47291
pillow, там ничего сложного.
173 1947309
>>47291
crop() в PIL
Ещё через opencv можно, но там много букоф надо писать.
174 1947331
>>47309
>>47307
Спасибо, аноны.
175 1947368
Сап двач, есть переменная i, которая вводится через int input.
Как эту переменную (допустим 10) сделать 10%?
176 1947371
>>47368
i = 10
i = str(i)+"%"
print(i)
177 1947372
>>47368
задавай еще что-нибудь простое, хочу почувствовать себя умным
178 1947373
>>47371
о, я даже из 10% могу обратно 10 сделать

i = "10%"
i = int(i.replace("%", ""))
print(i)
179 1947374
>>47371
>>47372
Да не это, мне потом надо эти проценты в формулу вставить
180 1947376
>>47072
поменял первый глобал, оказалось, что эта величина где-то дальше фигурирует. Забил
181 1947378
>>47374
i = i * 0.1

))))))))))))))))))))))
182 1947379
>>47368

>Как эту переменную (допустим 10) сделать 10%?


Посчитать 10% или чтобы было 10%?
image.png1 Кб, 112x64
183 1947380
>>47379
Чтобы я потом мог юзать это, как проценты. Надо в формулу подставить
184 1947383
>>47380
)))))))))))))))))))))))))))
10% == 0.1
матеша, 2 класс
185 1947386
>>47378
>>47383
всё, разобрался, там надо было не 0.1, а 0.01
Математика вообще хуйня, если честно
186 1947388
>>47386
☝золотые слова, брат ☝
187 1947450
Сап, питонач. Я обычный веб питон программист 300 к/секунды.

Есть возможность вкатиться в биг дату. Сразу и выучить, и начать по ней работать в рамках текущей компании. Стоит ли?

Мне главное работать поменьше, получать побольше, и чтобы работу было легко найти. Ради этого я вполне готво успердно учиться, и изучать более узкую специализацию. В общем, есть лис профит?
188 1947477
>>47450
стронгли да
Candidate-DataAnalyst-Copy2.jpg98 Кб, 641x427
189 1947487
>>47450
загадка от прогнозиста (на размышление дается 30 секунд)

Работа с бигдатой и есть, блять, нахождение ответов на эти вопросы.

иди, блядь, ищи ответ.
190 1947516
программа что-то усердно делает, но ничего не происходит. Как узнать, что именно она делает?
191 1947585
>>47516
добавить дебажные принты
192 1947622
>>47516
Наставить брейкпоинтов по всему пути следования
193 1947767
Пасаны, как дебажить в пайчарме?
Вот допустим проверяю я элементарный ассерт.
На этом ассерте код ломается. Если я ставлю брейкпоинт на нем, то он когда доходит до бп останавливается. Дальше я жму продолжить и вуаля мы опять вышли с обшибкой. Странное поведение.
image.png8 Кб, 400x88
194 1947785
>>47767
Там кнопка есть, чел.
195 1947826
вопрос по flask
/.../file.html не видит стили расширяемого базового шаблона /base.html
Я так понимаю, что это из-за того, что file.html находится дальше в дереве url чем (чем что?) базовый шаблон, хотя они и располагаются в одном каталоге. в базовом шаблоне красуется классическое href='static/base.css'
Как сделать так, чтобы html увидел css?
196 1947865
>>47253
Главное ни в коем случае не пиши в питон чаты в телеге, поверь, пожалеешь в любом случаем, даже если задашь вопрос на который тамошние петухи не смогут ответить, то получишь столько говна в свой адрес, что потом отмываться неделю будешь
197 1947909
>>47767
очевидно экспрешон в ассерте возвращает False (или None или чо там кастуется в булен как False)
198 1947921
>>47767

>Вот допустим проверяю я элементарный ассерт.


Ты поехавший? Assert в чистом коде это же пиздец.
Как на уроке физики "предположим тело движется со скоростью...". Используй нормальную проверк, а assert оставь для pytest.
If a:
#a = True or a!=None
Все же очевидно. К тому же ты можешь видеть значения объектов. На худой конец print или logging.
199 1947925
>>47826
3
Down vote
Accepted
If your style.css file is in the static folder of your project, then to make the resource available via Flask WSGI, you'll have to use url_for('static', filename='style.css') in your href for the stylesheet.

Чуваааак все же на SO разжевано, научись гуглить
200 1947971
>>47865
Аллах вам StackOverflow дал, нет, пукаем какаем
201 1947972
>>47925

> научись гуглить


скажи, что у тебя не бывало, что гуглишь два раза одну проблему, но во второй раз не можешь найти "то" решение
202 1947982
>>47972
Ну тогда смотрит Ютуб с индусами. Как вы код пишете, если настолько херовый запрос в Гугл засылаете, что в выдаче нет результата с SO. Немножко в ахуе с таких вкатывальщиков. И уверен такой кейс есть в учебных материалах и в официальной документации
image.png2 Кб, 232x129
203 1947994
>>43168 (OP)
Как поймать эксепшн чтоб его обработать а потом снова его же пробросить?
Вот у меня есть что-то вроде того что на пикриле, я обрабатываю конкретный эксепшн который поймал но сам эксепшн-то теряется. Как мне его после этого возбудить чтобы он вызвался и отпечатался в логах (вместе со всем call-стеком)?
204 1948058
>>47994
или
except APIError as e:
____raise e

или даже:
except:
____raise

в последнем случае будет поднято последнее исключение.
205 1948080
>>47909
Ну и как определять почему? В чем процесс Дебагинга еба? Я и без этого знал, потому что пайчарм кинул ошибку на этой строчке.
206 1948081
>>47921
Ну я про пайтест и говорил так-то.
207 1948096
А Dive Into Python ещё актуальная книга? Или лучше с какой-нибудь другой начать?
208 1948145
>>48081
Так какого хера ты pytest в дебаггинге запускаешь юродивый?
209 1948167
>>48096
Нет, лучше начать с версии 3.6+, это 2017 и позже.
210 1948194
>>47982
Всё прозаичнее. Просто времени не было. Перед сном задал вопрос на дваче, чтоб ребята за меня погугли, а я с утречка уже решение прочитал, каеф. Таймменеджмент и делегирование)
211 1948217
>>48194
ты охуел? я всю ночь тут сидел гуглил пока ты на массу давил
212 1948244
>>46122

>404



Заебися вкатился
213 1948256
>>48080
Смотреть что там вызывается в ассерте и там брейкпоинт ставить, смотреть чему равны переменные которые участвуют когда происходит заваливание ассерта и откуда они пришли и искать причину почему они не равны ожидаемым.
214 1948417
Почоны, есть что почитать по актуальной асинхронщине в питоне, кроме документации? Я недавно вкатился и так по работе талмуды с доками каждый день дрочу, нет сил еще и дома такую залупу читать
215 1948418
Аноны, получил заказ на 800 долларов, прошел несколько собесов и переговоров и меня выбрали подрядчиком, до этого максимум за 70$ делал заказы, поддержите меня, я дико волнуюсь
216 1948419
217 1948420
>>48417
Видимо ссылки нельзя, набери в ютубе асинхронность python, там плейлист олега молчанова
218 1948424
>>48420
Первое видео в плейлисте 2 года назад. Это точно актуальные вещи? С учётом того, что queues с чуть больше года назад стали deprecated. И 3.10 будут выписаны из питона.
219 1948431
>>48424
А, актуальная именно нужна, там скорее теория, до asyncio только в 6-8 добирается, хз устарела ли инфа оттуда сильно, но послушать интересно, самая актуальная я думаю именно доки, куда деваться, асинхронщину ведь несколько лет назад еще завезли
220 1948435
>>48431
Эхх, ну ладно, спасибо за ответ :3
221 1948446
>>43168 (OP)
Почему у женщин с возрастом руки жирнеют в области бицепса? У мужиков такого не видел.
222 1948490
>>48418
Получил договор на интеграцию на 5000 баксов (чистыми меньше). Лучше бы блять не брались за эту хуйню. Говночисты из Европы написали такую хуйню (исходников нет конечно же), что теперь охуеваю. При том они интегрировали свое говно с российским железом, а я эмулирую работу российского железа. Полностью повторил протокол, а европейцы геи кучу багов оставили у себя. Нахуй такое просто нахуй. Хочу на галеру
223 1948499
>>48490
Я пока еще готов свою жопу продавать, пока новый монитор не куплю хотя бы, сижу на вга кабеле блять, а тебе удачи
224 1948534
for i in range(len(s)+1):
n = (int(s[1]) + int(s[2]) + int(s[3])) / 3

Почему list index out of range?
1.JPG10 Кб, 952x70
225 1948535
>>48534
Фикс
226 1948537
>>48534
список 0,1,2, длина 3, а ты перебираешь значение от 0 до 4, потому что +1
227 1948553
>>48537
Там вложенный длинной 100+.
Разметка сожрала индексы, прикрепил скрин >>48535
228 1948557
>>48553
Блять, у тебя длина списка n, а индексы заканчиваются n-1, а ты пишешь чтобы у тебя брался индекс n+1
229 1948558
>>48557
Ебать, надо ж было так проебаться. Спасибо!
230 1948577
>>48553
>>48558
Нахуй тебе вообще все эти индексы, надо итерировать, крутить пайплайны ёпта.
231 1948634
как реализовать стоп слова из тхт фала?
232 1948635
сделать это множесвами?
image.png17 Кб, 549x168
233 1948644
Как красиво залупить?

Есть функция updaterMain, я хочу выполнять её каждые 3 минуты. Собственно, на картинке это так и происходит. (пока rt1 выполняется, весь остальной код может работать)
Но я хочу дописать, чтобы можно было ставить эту функцию на паузу. Ок, вместо 3 я поставлю 9999, но как это красиво залупить?
234 1948645
>>48644
и соответственно, чтобы можно было снять с паузы
235 1948647
>>48645
пока из вариантов только GOTO
236 1948658
>>48499
Хуле, мне семью кормить. Лишних проектов после ковида нет.
237 1948659
>>48647
last_ts =None
while True:
if last_ts is None or time.time() - last_ts >=3000:
#execute
else:
time.sleep(1)
238 1948660
>>48659

> while True:


из-за этого цикла весь остальной код не встанет?
239 1948661
>>48644
Пилять, каждые 3 секунды поставил. Короче разберёшься.
240 1948662
>>48660
Ты ебобо видимо. У тебя 2 задачи должны крутиться что ли? Так пропиши Threading и Semaphore (Lock, RLock).
Ты мне кинул кусок кода и спросил, получил ответ на основе кода. Давай полное ТЗ тогда
241 1948665
>>48662
ебать ты терминами закидал. Я ещё настолько зелен, что даже вопрос сложно нормально задать

я пока беру методом тыка, и пока вопрос снимается - модуль, который создаёт иконку приложения в трее, прерывает дальнейшее чтение кода, поэтому я даже не знаю, куда первый луп воткнуть
242 1948668
>>48665
Ты какой-то гуй под шиндовс делаешь? Анальная затея это.
В принципе, можешь взять тот же ткинтер и привязаться к его эвент лупу со своими задачками, всё полегче будет.
image.png3 Кб, 177x91
243 1948672
>>48668
мне лишь бы закончить. Вообще можно ограничиться "Quit" который уже тут работает - тупо чтобы можно было закрыть программу, если она не нужна
image.png71 Кб, 825x576
244 1948689
>>48644
сделал так
245 1948696
>>48672
Напиши батник
246 1948720
Антон, как мне красиво связать приложение на питоне, запущенное под юзером, с системной службой?
247 1948739
Подскажите, пожалуйста, почему многопоточность для IO даёт профит? Ведь всё так же по очереди, например, прогружаются сайты . Если знаете хороший источник именно по потокам - буду благодарен.
248 1948754
>>48739
Ну как же по очереди. Основная часть это ожидания ответа, заслал много запросов и блокируйся себе на здоровье.
249 1948783
>>48720
systemd, про шиндоус забудь
250 1948785
>>48689
Отличный говнокод. Просто вершина говнокода с global
251 1948802
>>48785
Вот рили каждый раз когда используется глобал - ты говнокодишь 109%, особенно если только учишься
252 1948887
>>48145
А чем его дебажить?
253 1948896
>>48887
Да научитесь гуглить, сучки
https://testdriven.io/blog/modern-tdd/
254 1948916
>>48802
Так он блять глобальные переменные в функции определяет. Пиздец... Кстати

> Вот рили каждый раз когда используется глобал - ты говнокодишь 109%


Это ты хуйню несешь. Если скрипт небольшой, то файл конфигов имеет смысл сделать глобальной переменной. Тогда при увеличении размера приложения очень легко будет отрефакторить код. Просто удаляешь глобальную переменную и пишешь from config import config. И код просто продолжает работать.
255 1948918
>>48916

> файл конфигов


Не файл, а словарь офк.
быстрофикс
256 1948920
>>48918
И не глобальной переменной, а просто переменной, которая в scope находится при импорте. И ты можешь по сути там константы предопределить и просто через config.MY_CONST обращаться
257 1948946
>>48244
Охуеть, только вчера работало, брат
может восстановят доступ?
258 1948947
>>48920
Бляяя, я это и имею ввиду. То есть, ты сначала пишешь

CONFIG = {....}

def foo():
return CONFIG.value
А потом, если возникает нужда, то пишешь

from config import CONFIG

def foo():
return CONFIG.value
И все работает и не надо ничего рефакторить лишнего.
259 1948991
>>48947
Ты ебобо? Как ты из словаря без ключа возвращаешь значение? Будет CONFIG['key'], а лучше вообще config.toml забацать для обфускации или .env сделать и грузить через load_dotenv(), ещё одна обфускация. Не люблю конфиги в коде, потом самому же поддерживать.
260 1949009
>>48991

> Ты ебобо? Как ты из словаря без ключа возвращаешь значение?


А это я хуйню написал, да.

> Не люблю конфиги в коде, потом самому же поддерживать.


А где всякие токены доступа хранить и логины/пароли, которые надо каждый раз в реквесты пихать?
261 1949051
>>49009
SQLite, .env или просто в environment системы пихать в чем проблема? os.getenv('API_PASSWORD'), а SQLite может быть с Cipher что позволяет ее паролить.
Токен доступа для Гугла драйва например предлагают хранить в pickle. Вариантов овердохуя.
262 1949056
>>49009
В случае запроса значения переменной из хранилища кстати позволит на ходу менять значения без перезагрузки сервиса. Не очень надежно в плане результата, но если например протухли credentials сервис не останавливается, а просто встает в состояние -1: wrong credentials, посмотрел статус в каком нибудь SQLite или другой БД, поменял значения и без перезапуска херащишь. Актуально, если есть очереди в памяти без Redis, AMQP, а перезапуск сервиса просто уничтожит эти очереди.
Как-то так.
263 1949074
>>48754
А как поток получает ответ, сразу по готовности, даже если не он выполняется, или хитрым способом когда уже на него переключается?
264 1949121
>>49074
корутины — специальные функции, похожие на генераторы python, от которых ожидают (await), что они будут отдавать управление обратно в цикл событий. Необходимо, чтобы они были запущены именно через цикл событий
футуры — объекты, в которых хранится текущий результат выполнения какой-либо задачи. Это может быть информация о том, что задача ещё не обработана или уже полученный результат; а может быть вообще исключение
265 1949125
>>49074
Ссылка отклонилась
https://m.habr.com/ru/post/337420/
266 1949179
>>49051
Ну хуй знает, у меня отдельная самописная либа по работе с таск трекером есть, например. Оттуда import Config. Затем создаю объект класса Config с параметрами нужными. И затем при каждом запросе к апи тасктрекера, через прослойку в виде своей либы, я просто закидываю внутрь функции объект конфига. При этом вся внутренняя логика скрыта, а логика пользования либой очевидно и понятно.
267 1949213
>>49121
ты через авейт пидоришь?
а как же йелд?
268 1949217
>>49074
Подозреваю, что система как-то сигнализирует, что пришли ответы, а там вм уже разбирается, кому передавать управление.
269 1949243
>>48802
если не сложно, скажи, как избавиться от глобалов (в функции их приходится объявлять, потому что без объявления они считаются локальными) ?
в конце каждой функции писать "return(value)" и передавать её в myFunc1(value)?
или пример красивого кода, который как то поможет мне?
и в чём проблема глобалов?
или ссылку на что конкретно почитать или хотя бы что загуглить или на ютубе посмотреть?
а может даже совет как исправить конкретно этот код?
буду рад любому совету
270 1949248
хочу добавить программу в автозагрузку, всё так делаю?:
-в коде пишу: создать ярлык прога.exe в папку с автозагрузкой
-перевожу прогу в exe
271 1949252
>>49248
win+r -> taskschd.msc -> enter -> создать задачу
272 1949322
Контент на сайте зависит от каких-либо условий. Например, задачи на доске отображаются в зависимости от выбранного пользователем проекта. Как мне это менеджментить? Завести столбец в модели юзера current_project? Не совсем понимаю. Или достаточно добавить ключ с проектом в контекст, и он всю сессию в контексте будет?
273 1949368
Решил задачу за 12 строк.
Поиск простых чисел
Кто меньше?

https://www.online-python.com/i5OehYnSUf
274 1949378
>>49243
Select, poll, epoll
275 1949386
>>49368
тонко
276 1949389
>>49368
Дальше лень извращаться.
https://ideone.com/H35R1T
277 1949394
>>49389
у тебя ошибка в первом же элементе, довн
278 1949400
>>49394
Ну добавь себе единичку в принт, если полегчает.
image.png4 Кб, 928x21
279 1949403
>>49368

>Решил задачу за 12 строк.


>Поиск простых чисел


>Кто меньше?


Решение таких простых задач длиннее одной строки - детектор зеленого джуна.
280 1949406
>>49403

>пишет нечитабельный говнокод


>зато не джунчик - колокольчик

281 1949438
>>49406
твои задачки которые ты решаешь во время обучения никто читать не будет, поэтому тратить время на манячитабельный код во время решения задач такого уровня -- глупо и нерационально. О чистоте кода пора начинать задумываться только когда ты уже в состоянии пройти собес и устроиться на реальную работу, а не на этапе знакомства с ЯП. Всегда кекал с челиков которые не могут решить medium на литкоде зато знают PEP8 наизусть.
34234d.png471 Кб, 1284x754
282 1949506
>>47309
>>47307
Получилась гениальная вещь.
283 1949564
>>46744
памагити
284 1949576
Тестер в хате.
Pytest не ловил Exception в driver.title, хотя оно там есть.
Асерт выглядит так:
Assert “Exception” not in driver.title

Этот асерт стоит Сразу после кнопки Сабмит на одной странице. Когда принтую показывает другую страницу. Почему так?
285 1949584
Реально ли сейчас найти работу джуну, если выучить django? Вообще много где вижу, как брезгуют от этого фреймворка.
286 1949585
>>49584
Всегда реально найти работу программистом. Вопрос в том насколько ты умеешь приспособиться под рынок. Где-то джанга, а где то Флакс.
287 1949601
>>43168 (OP)

Сап, питонач. Нужно ли учить в django всякие формы и шаблоны, если сейчас все делается через rest Api и отдельный фронт? Кажется, что учу нинужные вещи.
288 1949715
>>49601
А что сложного в templating? Может пригодиться для чернового фронта.
289 1949722
>>48446
Карта отложения жира сильно отличается у мужчин и женщин. У мужчин обычно огроменное пузо, а у женщин по всему телу, в первую очередь жопа, ляжки, бока, и бицуха. Мужчинам нельзя жирнеть в конечностях, исторически так выживаемость падала. А пухлая женщина наоборот ассоциируется с выживаемостью, так как дольше может кормить молоком.
290 1949723
>>48739
Потому что IO происходит в ядре. На время IO поток не выполняется, а значит гил можно отпустить и дать выполняться другим потокам. Вся эта херабора с гилом нужна чтобы ты мог один и тот же list например менять из разнах потоков, при этом оно не крешится. По-хорошему на каждую питонячую переменную нужно вешать автоматический лок (по сути гранулировать гил на каждую структуру), но это оказалось очень дорого, как по разработке, так и по производительности. Гил оставили чтобы работало быстрее в однопотоке. А сами потоки в питоне это классические потоки ОС, без всякой хуйни типа гринтредов.
291 1949741
>>49576
А title это точно содержимое страницы, а не надпись на вкладке?
292 1949746
аноны, поздравьте
сегодня завалил проект по срокам (сделал меньше, чем договариались)
все? проганье не мое?
293 1949750
>>49723
https://m.habr.com/ru/company/otus/blog/458694/ вроде как ищут способ обойти GIL, но меньшими ресурсами чем Process. Хотя с process все просто, передал sig = Event() и реализовал graceful shutdown, а как тут будет хер знает. Тот же asyncio.run() выкатили без обработчика сигналов, ну и нахера спрашивается, все равно через loop приходится работать
294 1949755
>>49750
Subinterpreters чёт заглохли, хотя идея здравая, делаем некий namespace для переменных, которые доступны только внутри этого интерпретатора, и там внутри уже гил не нужен. То есть это грануляция где-то между глобалом и каждый отдельной переменной. Асинк совсем не про это.
295 1949756
>>48783
Под линуксом-то всё понятно, но нужно-то под винду.
296 1949758
>>49756
Что ты имеешь в виду под связыванием? Ты свою службу хочешь сделать? Или использовать те что уже работают?
297 1949793
>>49755
Ну ты затронул тему GIL, я вот вспомнил. Вроде и жду, а вроде и не понятно как с этим работать
298 1949797
>>49756
Обвязка WinAPI32 хуевая тема. Я писал сервис под Win10, но потом с миграцией на разные версии сервис часто переставал работать. Поэтому бери альтернативу - https://nssm.cc/
299 1949805
>>49758
Да, своя служба, позволяющая выполнять что-то с админскими правами под юзером.
300 1949811
>>49805
Скорее всего надо как-то в реестре прописать запуск питона с твоим скриптом. А апи раздавать или по сокетам/пайпам, или через COM: https://docs.microsoft.com/en-us/windows/win32/ipc/interprocess-communications
301 1949825
>>49811

>сокетам


Вот так и собирался. Но на свой взгляд выглядело это, как костыли-костылики.
Спасибо.
302 1949909
https://pastebin.com/yFC0x0by
Как сделать, чтобы вызов scr.getch() принимал символ на ввод и блокировал вывод на одну секунду, после чего переменной c присваивалось нужное мне значение (например, 0) и управление возвращалось во внутренний цикл?
Цель: нужно, чтобы экран с некоторой периодичностью обновлялся и выводил объект smth, состояние которого изменялось бы посредством вызова smth.do_smth в отдельном потоке и управлением с клавиатуры.
(прошу прощения за говнокод и хуёвое объяснение)
303 1949935
>>49825
>>49797
Еще раз посмотри на эту хуету. Я собирал через PyInstaller экзешник и он только через nssm нормально запускался, не ебись ты с WinAPI. Если бы ты на .NET или C++ сервис писал, это одно, но с питоном Шиндоус не дружит.
304 1949938
>>49909
time.sleep()

>cостояние которого изменялось бы посредством вызова smth.do_smth в отдельном потоке и управлением с клавиатуры.


(прошу прощения за говнокод и хуёвое объяснение)
ну так это уже Threading, создаешь объект, передаешь его в тред, перед изменением делаешь lock.acquire(), чтобы не было race condition потом lock.release()
305 1949946
Аноны, я сейчас не хочу садиться и тестить, но хочу быстро в голове разложить, есть приложение суть которого в том, чтобы делать условно 1000 запросов в час, есть celery который поможет запускать запросы, но естественно запросы обязаны быть асинхронными, как лучше всего прикрутить асинхронщину в таком случае? Добавлять таски в эвент луп, запускать раном прямо в задаче селери, использовать что-то встроенное в селери или может есть какой-то ультимативный модуль сторонний? Что будет эффективней?
306 1949953
>>49909
getch полностью блокирует поток выполнения пока ты не введёшь символ. (Вероятно) можно слушать клавиши в отдельном потоке, либо включить no-delay mode https://docs.python.org/3/library/curses.html#curses.window.nodelay но тогда тебе видимо придётся самому раз в секунду дёргать этот getch.

Можно использовать urwid вместо curses. Там эвентлуп есть, который может одновременно и таймер и ввод символов ждать. Там конечно ещё компоненты есть, но никто не заставляет их использовать. Если использовать эвентлуп из asyncio можно даже по сети ходить и подпроцессы запускать, и всё в одном потоке.

Если хочешь графику, то sdl. То же самое, весь головняк уже решён за тебя, но вместо коконсольки будет отдельное окошко в котором можно рисовать.
307 1949957
>>49946
Ты явно плохо понимаешь что такое селери и зачем его делали. Это распределённая очередь задач, читай внимательно каждое слово. Распределённая значит что селери может работать даже на кластере из сотни машин. Очередь значит что есть какой-то генератор заданий, чаще всего это веб-сервер, которому хтмл надо отдать прям сейчас, а какое-нибудь письмо прислать как получится. Задача означает нечто выполяющееся за конечное время, например за минуту. Никто не делает асинхронность для выполнения задачи.

Почему ты не можешь просто в одном скрипте одним циклом, в одном потоке сделать 1000 запросов в час?
308 1949973
>>49957
Ну первое, зачем мне селери это то что эти запросы придется делать, например, каждый день в промежутке времени и регулировать скорость. Второе, генератор заданий это собственно джанго, которое(тут уже мне надо так же смотреть, например, что отдавать в селери) ставит задачи, сделать 1000 запросов с такими данными. Третье, я не уверен как работает асинхронный джанго, но мне нужно, чтобы эти задачи делались в фоне, а асинхронщина нужна потому что сам запрос это просто дерганье стороннего апи, которое может выполнить задачу за рандомное время и может быть разный ответ, а получать статус этих дерганий нужно реал тайм, надеюсь понятно объяснил. А делать в цикле 1000 запросов когда каждый обрабатывается минимум секунд 30-60 это очевидно неверно. Я думал изначально для этих запросов сделать отдельное aiohttp приложение от которого нужно максимальное быстродействие, но если в celery получится выполнять задачи асинхронно то не понадобится отдельное приложение. Пока писал понял твои слова про очередь и то что задачи не должны быть асинхронными, но селери нужен для отложенных задач, а асинхронность для того чтобы не ждать ответ от запросов, т.е сама по себе задача это вызвать 1000 запросов и они должны быть асинхронными минимум в рамках одной задачи, после каждого ответа так же должна быть логика по обработке ответов
309 1949979
>>49957
Алсо т.к в селери будут отдаваться только задачи с отложенными запросами, которые не нужно делать прямо сейчас, а например 3 клиента хотят в 18:00 делать по 1000 запросов, значит сами вызовы 100% должны быть асинхронными, ответ клинту идет сразу, что задача выполняется, вот статус всех запросов и так каждый день. Поэтому мне кажется в таком случае моя реализация в целом верная, либо просто запросы к селери, которые делают асинхронщину, либо к приложение aiohttp, которое отдает ответ сразу и селери сразу возвращает что процесс запущен, а уже aiohttp ждет ответа, делает логику и записывает в бд, я не прав?
310 1949994
>>49973
Давай ещё раз. Выясняем что у тебя уже есть приложение на джанго, которое генерит задания сделать запрос. Что нужно ещё получить результат запроса: куда его и кому потом отдать?

Селери это такая асинхронность без экономии. Ты тупо занимаешь целый тред задачей и компенсируешь простои из-за IO большим тредпулом, не по количеству ядер, а количество ядер x 2 + 1, обычно рекомендуют так. В селери нет нужды обслуживать 10к соединений, поэтому нет нужды в асинхронности.

>>49979
В селери нет планировщика. Заказать селери дёрнуть что-то в 18:00 скорее всего без приседаний нельзя. Делай отдельный сервис, хотя бы чтобы поставлять задачи в селери в нужное время. Всё же неясно, как клиенты получат результат задачи, по сокету в реалтайме или просто откроют страничку с репортом через день?

А ещё, как насчёт того чтобы сам клиент дёрнул себе сторонний сервис и ждал результата? Зачем городить такой сложный прокси?
1.mp44,6 Мб, mp4,
1280x720, 0:09
311 1950046
Ну что вы, аналитики-датасаентисты?
312 1950113
>>49994
Я предполагаю что результат каждого запроса записывается в бд, например, статус ок или ошибка или что-то еще, соответсвтенно джанго создает 1000 объектов в бд, пользователь нажал кнопку и получил сразу ответ в виде 1000 строк со статусом ожидание, если ответ где-то пришел быстрее, то эта строка заменится на ок или ошибку, т.е например в первые 2 минуты ответ поступил от 250 запросов и их можно будет увидеть, остальные в ожидании пока не пройдет логика.

> В селери нет нужды обслуживать 10к соединений.


Соединение будет только одно, но запросов много, опять же проблема не в селери самом, а в том, что задача с 1000 запросами обязана быть асинхронной, как это сделать я уже написал, либо селери, либо отдельный сервис аиохттп(джанго нужен для удобной админки и орм с которым я хорошо дружу), если в селери нет планировщика(хотя я уверен что где-то читал об этом), то тогда уж точно проще передавать параметры для этой 1000 запросов просто на аиохттп и все, через отдельный планировщик. Я честно так и не понял в чем именно проблема(предположим простая логика):
передаем через брокер 1000 айдишников из бд(они выбираются еще джангой через квери параметры), селери(для селери только одна задача будет) обрабатывает задачу, т.е принимает 1000 айди, создает асинхронный луп, в него добавляет асинхронную функцию по обработке запроса и дальнейшей логике на каждый запрос, как только все запросы отработаны задача завершается, если клиентов больше в одно время, то каждый будет ждать просто пока все задачи выполняться.

>клиент дёрнул себе сторонний сервис.


Нужна логика до отправки запросов и после них
313 1950129
>>49994
Я сейчас понял что, чтобы не нагружать слишком сильно внешний сервис, при том что запросов может быть максимум в час(100-1500 на человека) лучше к тому же распределять эти запросы через делей = число запросов / 3600, тут так же появляется необходимость в асинхронности, делать цикл в котором через делей добавляем таски в луп и при этом этот цикл тоже должен быть асинхронным, чтобы при этом другие такие же циклы работали одновременно. На самом деле на практике я точно что-то придумаю, пока просто пытаюсь выбрать вектор своих мыслей и придумать примерный алгортим из того что я знаю сейчас, не гугля всякие доки и уже готовые решения(интересно можно ли их найти)
314 1950137
>>50113
Пиздец ты зациклился на асинхронности. Тебе нужно оздоровительное воздержание от асинхронности прописать на недельку. Но в общем-то да, наверное даже один поток aiohttp справится и со всеми запросами, и с планированием, и со складыванием результатов в базу. А селери тебе скорее всего нахер не нужен если ты так хочешь асинхронность.

Подумай лучше вот про что. Как твой микросервис будет переживать рестарты? Чо делать если контейнер/процесс убивают, а у тебя 10 запросов уже отправились? Можно ли дёргать эти адреса повторно? Сколько раз и когда нужно делать ретраи? Нужна ли тебе очередь между джангой и этим сервисом? Возможно ли отделить БД этого сервиса от основной?
image.png10 Кб, 806x433
315 1950162
Помогите!
Можно ли при помощи opencv детектить столкновения этих двух шариков на пикриле?
316 1950170
>>50162
Ловишь координаты, детектишь наложение.
317 1950187
>>50137
Просто на деле запросы это телефония и ждать 30-40 секунд на ответ нельзя, а асинхронность по-моему именно для этого и нужна, поэтому и циклюсь, значит да, завести какой-то планировщик и просто отправялть на aiohttp.
Ретраи добавить вроде не сложно, а вот про рестарты не думал, пока даже не знаю как минимизировать проблемы при внезапном рестарте в теории, как минимум надо узнать что происходит с брокером в таком случае, потому что в нем будет проблема главная, можно на айди просто ограничения добавлять, типа время последнего вызова и проверять прошло ли достаточно времени(правда если клиенты разные на один айди звонят, то тут будет проблема), так же не знаю даже в теории о нагрузках на бд и как их измерять, например будет в час на бд 2-5 тысяч запросов с выборкой 1-го значения просто по индексированнуму айдишнику, будет ли успевать бд и как вообще ее расширять
image.png39 Кб, 1190x428
318 1950190
>>50170
Допустим я вот наложил контур на шарик, координаты отслеживаются, как мне столкновение детектить?
319 1950196
>>50190
не шарю за библиотеку, может уравнение составить простое? Гугли формулу круга и выводи нужное тебе соотношение
321 1950262
>>50187
Ну создай нагрузку фейковую и посмотри что будет. Расширять можно вертикально и горизонтально, бери машину пожирнее для начала, если не помещаешься то партицирование, разбиение на микросервисы, тысячи вариантов есть.
image.png141 Кб, 1920x1080
322 1950270
323 1950306
>>50262
Да это очевидно через обычный слип нагрузку делать, другой момент как именно на практике увеличивать возможности приложения, микросервисы понятно, разнести бутылочные горлышки по серверам, а в остальном вот уже сложнее(кстати слава богу что придумали асинхронщину нормальную, я не представляю как было бы ебано сейчас парится с потоками, может генераторами или даже с корутинами, все за меня придумано, мне оставалось только доку глянуть и вот уже код работает в бесконечность раз быстрее на объемах)
324 1950319
>>50113
Для этой логики по идее Селери не нужна, как мне кажется.

Тут полностью независимая система грузит задания и получает статус состояния.

Впрочем я с Селери никогда и не работал.

Мне кажется, что схема такая, что задания записываются в БД и в очередь, раббит например, из которого пул процессов берёт задания на обработку.

Можно даже в данной задаче и без раббита, ещё проще, руками всё реализовать. Потому что несложно на самом деле.

В БД прописываются задания, отдельно работает сервис на базе asyncio, можно с aiohttp вместе. В этом сервисе пул задач крутится. И одна задача-менеджер, которая раз в сколько-то секунд берёт список заданий из БД, раздаёт их воркерам, и записывает результат обратно в БД.

То есть ты руками реализуешь брокер сообщений, но это несложно, потому что ничего из серьёзного функционала, ради которого нужны сложные сервисы вроде раббита, ты не используешь.
325 1950322
>>50319
Я пока про селери читал где-то говорилось что очереди в бд хранить неверно и в проде все полетит, пока все еще думаю над этим, а с селери уже разобрались, что вроде не нужна, нужен планировщик(я думал в селери он собсна есть), отдельные функции на aiohttp, а остальное на джанго что нужно, спасибо всем за ответы, кстати
326 1950325
>>50306
Да так же. Была уже асинхронщина во всяких торнадах, твистедах и гевентах. Тупо половина стдлибы манкипатчится чтобы дёргать неявный эвентлуп.

Горизонтально довольно просто скейлится. У тебя есть балансировщик нагрузки, он подхватывает новые машинки которые ты запускаешь с серваками, и как только оно способно принимать запросы, балансировщик начинает его понемногу нагружать. С базами это сложнее, но принцип похожий. Базы лучше разделять на части. Ещё всякие key-value намного лучше разделяются в кластеры, чем реляционные, в них намного меньше гарантий, разрабатывать под них конечно ебано, ни транзакций тебе, ни схем, ни джойнов, зато скейлить одно удовольствие.
327 1950327
>>50325
Какие кластеры баз? Товарищ говорит про 5 тысяч запросов в час. Условно 10 запросов в секунду в пике.

Это вообще ни о чём. Любая БД и MQ с такими объёмами справится.

Если есть несколько серверов, или несколько процессов-воркеров, то надо использовать отдельный MQ, иначе можно вообще без MQ. Если важна низкая латентность, чтобы запрос сразу на исполнение принимался, то тоже лучше уже готовое решение использовать. Или нет, если задачи раздаёт тот же процесс.
328 1950328
>>50327
Хз, переживает товарищ, что не потянет хайлоад. Так-то конечно надо сначала упереться в этот хайлоад, а потом думать.
329 1950330
>>50328

>Так-то конечно надо сначала упереться в этот хайлоад, а потом думать.


Вот о том и речь, что хайлоад это в 1000 раз больше нагрузка.
330 1950336
Чисто архитектурно, как я понимаю, задача такая.

Вариант "для детей", поиграть, и как концепт:
Приходит запрос по http. Вебсервер (aiohttp) даёт задание на обработку, прописывает в словарь заданий задачу со статусом 'pending' и кладёт в очередь айди этого задания.

В этом же процессе крутится пул воркеров. Свободные воркеры слушают очередь, берут id задания и в хранилище выставляют статус 'working' и время, когда начали работу, и айти воркера, который работает. Они могут запускать подпроцессы, если тяжёлая работа какая-нибудь. Как задание исполнено, в хранилище выставляется статус done. Как вариант, ещё сообщение дополнительно в специальную очередь высылается, для исполненных заданий.

Этого может быть достаточно для чего-то даже весьма боевого.

Возможно вместо хранилища нужна БД, если надо, чтобы задания сохранялись надолго, в том числе в случае перезапуска, падения и т.п.

Если у тебя несколько процессов, например вебсервер отдельно, или несколько процессов-воркеров, или они вообще на разных машинах, то уже недостаточно просто очереди от asyncio.Queue, надо что-то, что работает на много процессов. Тут уже разумно взять готовое решение, например раббит. Или что-нибудь ещё.

Надо придумать, как оформить сериализуемый пакет с заданием, и как хранить его, результат исполнения и т.п. в БД.

Пока объёмы на уровне десятков запросов в секунду, очереди сообщений, БД и т.п. не проблема вообще. На сотнях в секунду уже надо думать о том, насколько у тебя корректно запросы составлены, индексы и т.п., можно тормозить ни на чём. Но реальный хайлоад на тысячах запросах в секунду начинается. Вот там уже можно попасть в ситуацию, что просто MQ или база не справляются.

При этом действительно серьёзный хайлоад с величинами другого порядка оперирует.
331 1950337
>>49741
Это надпись на вкладке, да. Но там он тоже пишет Page - exception. Но ассерт это не ловит и принтит тайтл без ошибки, будто ее там и нет.
332 1950357
>>49741
Нашёл. Получается что драйвер хранит переменную, а не постоянно обновляет, решение - добавление неявного ожидания с локатором тайтла.
Всем спасибо
333 1950361
>>50336
RabbitMQ переживает падения и сохраняет на диске, Redis тоже научился.
334 1950362
>>50327

>Если важна низкая латентность,


Краеугольный камень. Тот же Rabbit может быть persistent, а может и не быть. Зависит от задачи
335 1950367
>>50330
Во, наконец узнал хоть какую-то циферку, чтобы сравнивать, 1000 запросов в секунду уже хайлоад, верно?
336 1950369
>>50336
Ответа нет, но думаю это мне собственно, опять же рад наконец увидеть цифры числа запросов для хайлоада, слишком абстрактно для мен было, я все еще думаю что много воркеров вообще не нужно, если они будут синхронные, потому что все проблемы с тем что 30 секунд ждать ответ решает асинхронность, потому что сама логика элементарная, буквально записать в бд и в случае эксепшона логирование + репит, поэтому не будь ожидания даже воркеры не были бы нужны, а так асинхрнность, осталось только придумать как при запросе на aiohttp сразу отдавать ответ джанге, чтобы он мог дальше делать запросы, а нынешний просто в лупе оставался, то что брокеры записывают на диск при падении интересная инфа, надо почитать об этом, в остальном вектор стал понятен после всех сообщений. Интересно почему такой ажиотаж вызвал мой вопрос, даже приятно)
337 1950389
Кто-то работал с Reddis? Задача вытащить инфу о пользователе, который онлайн в данный момент. Никогда не работал с этим.
338 1950415
>>50190
https://www.youtube.com/playlist?list=PLzMcBGfZo4-lwGZWXz5Qgta_YNX3_vLS2
Где-тут в середине примерно чел пишет колижн механику для 2х обьектов.
339 1950420
>>50389
Очень много информации. Доки официальные читай и доки по библиотеке, которую используешь, даун. За тебя ещё твою работу делать?
340 1950424
Добрый день, за полгода изучения питона активного возможен ли вкат в программирование с нуля с переездом в дс/дс2 или же фриланс/удаленка? Живу в мужосранске, образования нет. Родители выгонят из дома через полгода если работу не найду, с собой в питер/москву могу взять 300 к на первое время
341 1950425
>>50424
образование есть 2 вышки, но не программёта
342 1950432
>>50424
>>50425
Ну ты и ебаклак.
343 1950438
>>48418

>заказ на 800 долларов


>несколько собесов и переговоров


Это что, каждый раз так? В эти 800 сопровождение входит?
344 1950453
>>50420
Ппц, ну может кто-то работал с этим. Мне чисто гуглить python reddis?
345 1950457
>>50453
https://redis.io/clients#python
Выбираешь клиент для Redis на Python и читаешь документацию по нему, хрен ли вы такие тупые. Чаще всего указывают в официальных доках какие клиенты существуют и ссылки на них. Бери тот что поддерживается и последний релиз не позднее 19 года естественно.
346 1950488
>>50361
Там снепшоты. От выключения света не защитит.
347 1950522
>>50424
Возможно всё, но положение у тебя откровенно хуёвое. Сам вопрос как ты к этому пришёл как бы намекает что ты тот ещё распиздяй, и за полгода ты разве что десяток аниме посмотришь, а не вкатишься.
348 1950527
>>50389
Редис это всего лишь хранилище, которое не знает ни о пользователях, ни о всяких онлайнах. Ебись, за тебя твою работу тут не сделают.
349 1950531
>>50522
распиздяй да, но щас на носу моя жизнь, надо за полгода оформить грамотный вкат, готов почти все свободное время уделять этому дело. Интересует будет ли прок? Или учиться чему-то другому?
350 1950568
>>50531
За полгода только пхп
1418527peax070319.jpg45 Кб, 1200x900
351 1950576
>>50531
Ты нихуя не сделаешь и будешь таким же овощем. Зачем зря жопу рвать?
352 1950634
>>50162
Есть костыльный способ. Делай скриншот когда эти шарики сталкиваются. Вырезай столкнувшиеся шарики, делай проверку на поиск столкнувшихся шариков с скриншота через locateCenterOnScreen в pyautogui.
Либо узнать радиус шарика в пикселях от центра, например будет 10, у второго тоже 10, если центр шарика1 находится ближе чем на 20 пикселей к центру шарика2, то столкновение.
353 1950636
>>50634
Бля с первым проебался, он не подойдёт.
354 1950649
>>50438
Да хз, первый заказ ведь крупный
355 1950695
>>50649
"Ашот и Братья" заказали сделать клон Авито?
356 1950696
>>50695
Просто реально интересно, что за 800 долларов хотят. Что ещё с двумя собеседованиями.
357 1950797
братва, подскажите плз, есть ли кулстори/реальный опыт работы в сбере? Хочу попробовать туда пойти тк зпхи хорошие + появился сбер it, но хз
это галера или нет?
358 1950825
Постигаю асинхронность. Делаю асинхронные запросы по двум адресам.

Если бы я слал запросы обычным линейным способом, то время было бы примерно 0.9

Не понимаю, почему, если я код оборачиваю в функцию он выполняется значительно медленней?
359 1950830
>>50825
А если импорты вынести?
360 1950834
>>50830
Слушай, помогло.

Чому так?
361 1950839
>>50825
Ты реально замеряешь время получения ответа с адресов LINK1 LINK2? Кстати сейчас loop никто в параметры не передаёт, наверное ещё с питона 3.7.
123.JPG10 Кб, 718x210
362 1950842
На вход подается некоторая строка. Выведите ее с отступами (количество пробелов, равное позиции строки, начиная с 0).

Подскажите, как еще можно решить эту хуйню? Мой ответ не принимает.
363 1950843
>>50842
Ты там степик что ли дрочишь?
364 1950846
>>50843
Яндекс
lolwhat.jpeg14 Кб, 259x194
365 1950847
>>50842

> Выведите ее с отступами (количество пробелов, равное позиции строки, начиная с 0).

366 1950848
>>50839

>Ты реально замеряешь время получения ответа с адресов LINK1 LINK2?



Да.
Я понимаю что время разнится, и от серверов зависит.

>Кстати сейчас loop никто в параметры не передаёт, наверное ещё с питона 3.7.



А как правильно делать? можно с примерчиком
367 1950850
>>50847
Обожаю такие формулировки в курса, обычно это криво обработанные транслитом задачи с забугорных курсов. И попробуй угадай что от тебя хотели.
368 1950852
>>50850
Я думаю что это всякие сраные математики. Упорятся своими абстракциями и только они понимают что хотят.
369 1950858
>>50842
Какая нахуй позиция строки? Позиция строки где, в самой себе? Позиция подстроки (символа) в строке? Я также собес в пынькофф не прошел, потому что манда по скайпу задачи на логику давала с таким же условием.
370 1950860
>>50848

> А как правильно делать?


Да просто убери его везде. Оставь только loop.run_until_complete.

Нафига ты это всё в жупитере делаешь?

> This module patches asyncio to allow nested use of asyncio.run and loop.run_until_complete.


Распорки какие-то.

Для чего тебе sslContext? Свои корневые сертификаты?
371 1950861
>>50842
Ты что-то перемудрил, вангую что просто
for i in range(len(word)):
print(' ' * i + word)
372 1950862
>>50842
Зачем тебе проверка i на равенство 0? У тебя всё равно в принте тогда будет ' '*0=none + word
373 1950863
>>50861
>>50862
Спасибо! Я что-то нахуевертил, поэтому у меня первое печаталось с пробелом, поэтому и вставил условие.
374 1950864
>>50862
Точнее не none а пустая строка
375 1950882
>>50834
Ты ебобо, импортирование дохуя времени занимает и ты тащишь библиотеки целиком в память
376 1950883
>>50882
У него время замеряется после импорта.
377 1950884
Мне тут недавно пришлось вживую столкнуться с кодом на си(скажу честно ничего более отвратительного я не видел), как же я рад, что мне не приходится в питоне гуглить как правильно принтить числа и строки, но возник вопрос, стоит ли вообще понимать, например, указатели и т.д(как раз их я знаю, но наверное есть что-то еще такое же важное) для разработчика на питоне, как компилируется код, как выглядят инструкции, так же я только недавно начал в принципе осознавать, спустя год кодинга, что вообще означает интерпретируемый язык и какие ограничения это накладывает, вопрос нужно ли в принципе это понимать?
378 1950890
>>50884
Еще ты наверное рад что тебе не нужны точки и нормально разбивать свои мысли.
379 1950891
>>50884
прогаю на питоне, но до сих пор считаю си лучшим языком не свете
строго и лакончино - ничего лишнего
если не тащить его в поля типа комп зрения и прочего очень уж высокоуровнево говна - он топ
а про ограничения и тп - ну сам же можешь ответить на свой вопрос
конечно надо
380 1950894
>>50884

> Мне тут недавно пришлось вживую столкнуться с кодом на си


> но возник вопрос, стоит ли вообще понимать


От тебя требуют писать на си? Если нет, то забей хер. Если хочется — покопайся, не повредит.
381 1950897
>>50890
профессиональная питонодеформация видимо
382 1950941
>>50884

>понимать, например, указатели


Нужно - чтобы понимать, что происходит с аргументами функции при их модификации. Например, что произойдет при присвоении нового значения числу, а что при добавлении элемента в массив. Изменятся ли они за пределами функции и почему?

>как компилируется код


Не нужно.

>как выглядят инструкции


Не нужно.
383 1950947
>>50270
В голосяндру, содомит
384 1951050
>>50884

>стоит ли вообще понимать, например, указатели и т.д(как раз их я знаю, но наверное есть что-то еще такое же важное) для разработчика на питоне, как компилируется код, как выглядят инструкции, так же я только недавно начал в принципе осознавать, спустя год кодинга, что вообще означает интерпретируемый язык и какие ограничения это накладывает, вопрос нужно ли в принципе это понимать?


В принципе нужно, конечно же.
Это называется "системные знания". А система подразумевает знание очень много чего, что вроде бы напрямую в твоей работе не используется. Иначе это макакинг.
385 1951055
>>51050
Скажи, а какие еще знания из низкоуровневых языков стоит знать, указатели я понимаю, всякие разименовывания и пр., знаю как ассемблер работает в очень общем виде, знаю как выглядят машинные коды или как там это фигня когда байтам команды присвоены, даже в работу транзисторов погружался немного,что еще важно для общего развития?
386 1951058
>>51055
Все, поэтому оно собственно и общее
387 1951062
>>51055
ХЗ, не уверен, что я сам достаточно знаю.

Что-то по железу. Например про инструкции, расширенные инструкции, кеш память и просто память, многоядерную специфику и т.п.

Про то, как программы работают, операционная система. Про понятия системных вызовов, виртуальной памяти, защищённых режимов и т.п., про разные виды тредов, селекты и др.

Про файловые системы, про сети.

Про технологии компиляции, идеи оптимизации, про JIT.

В случае питона про то, как всё это реализовано внутри, на уровне Си кода.
388 1951063
>>51062
Кстати jit и компиляцию я еще не трогал, надо почитать
389 1951064
>>50457
Спасибо. Почитал и охуел немного.
Получается мне нужно отдельную ДБ где-то сохранять? Мне нужно буквально 2-3 ключа записывать. Есть ли какие-то альтернативы?

Вообще задача такая для параллельного тестирования, когда пайтест ранит один тест с таким-то юзером, нужно посмотреть, что этот юзер уже используется (logged in) грубо говоря, и тогда взять другого юзера из списка. Может ли это fixture сделать? Если да, то как.
390 1951067
>>51064
Просто записывать на диск нельзя юзернеймы? в виде жсона например, раз тебе скорость не нужна максимальная, либо просто в памяти нельзя хранить?
391 1951068
>>51064
Сделай json в с stringIO.
392 1951075
>>51067
>>51068
А ведь и правда. Спасибо! Зачем тогда ДБ вообще.
Другой вопрос, начался тест - юзер записался, пошёл другой тест, чекаешь, если юзер в этом словаре, то берёшь другой, если нет, то берёшь первый попавшийся. В конце нужно будет его очищать? Как это дело в фикстур обернуть?
393 1951130
>>51075
Бритва Оккама. Если эмулируешь редиску - словари, эмулируешь реляционку возьми SQLite. В проде будет конечно же все не так, но нахуя в тестах пулить коннекты да ещё с исключениями и реконнектами (если ты не ебобо заебашь коллбек другой)
394 1951132
>>51130
https://pythonhosted.org/pickleDB/ ещё вариант key:value
395 1951134
>>51130
Ну а что делать то? Проблема такая. Когда ранишь тесты параллельно, несколько тестов используют один и тот же аккаунт. Поэтому, чтобы не выкидывало дали задание, либо через редис записывать юзера и соответсвенно другого нужно выбрать из списка юзеров. Там таких всего 4 варианта. Но пока ничего лучше этого не услышал. >>51067
>>51068
396 1951213
>>50858
ты хотел утроится в тинькоф чтобы продавать услуги лохам?
397 1951216
>>50843
Степик топ или кал?
398 1951220
>>51213
Нет, на etl-девелопера
399 1951221
>>51216
Топ кал.
400 1951225
>>50842

word = 'pizda'
out = f"{' '*len(word)}{word}"
print(out)
401 1951234
>>43168 (OP)

>— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.


>МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0


Нашёл на первый взгляд интересный курс по питону
https://www.youtube.com/playlist?list=PLlb7e2G7aSpTTNp7HBYzCBByaE1h54ruW
Не смотрел, надо бы час-два потратить, чтобы рекомендовать или нет. Но вроде бы больше именно про специфику питона, а не основы программирования вообще.

Может быть очень годный материал и стоит того, чтобы в шапку его воткнуть.
402 1951241
>>51234
По содержанию примерно как любая интермедиейт книга, тащемта.
403 1951245
>>51241
Некоторым больше хочется нормальных лекций, причём академических, а не в стиле тик-ток.

Там на первый взгляд смотрится больше как выжимка про специфику питона, что очень интересно, если ты уже можешь программировать, а не обучение программированию с нуля, как в 90% всех книжек.

Вот ты сам можешь рекомендовать какие-нибудь три книжки подобные? Я только одну такую видел, называется intermediate python вроде бы.
404 1951247
>>51245
Если по алгоритмам то грокаем алгоритмы.
406 1951320
>>51221
А что топ кул?
407 1951321
>>51250
Сколько всего книг по питону ты прочитал за жизнь?
image.png80 Кб, 982x701
408 1951637
>>43168 (OP)
Postgress, Python
Суп, ненавижу программировать, надежда только на вас.
Через джанго сделал мне чел чтобы я добавлял сразу в бд данные, в таблицу, вот зашёл на сервер через pgAdmin, не могу найти то что добавил. Это значит нихуя не добавилось или я неправильно смотреть? Так ведь надо посмотреть что хранится в таблице, через селект олл фром тейбл?
image.png52 Кб, 644x544
409 1951677
Сап двач, помогите с модулем argparse
Как сделать, чтобы, когда пользователь вводит параметр, которого не существует, вылетала ошибка просто принт
410 1951750
>>51677

>Как сделать, чтобы, когда пользователь вводит параметр, которого не существует, вылетала ошибка


Разве по умолчанию он так не делает? Вот, я вбил учебную программку из документации https://docs.python.org/3/library/argparse.html и сохранил ее в файле argtest.py:

#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', help='foo help')
args = parser.parse_args()

Если я использую аргумент --foo, то ничего не происходит, ибо не указанно что делать, но никакой ошибки нет, аргумент известен, а вот если я использую неизвестный аргумент, питон закономерно шлет нахуй:

$ ./argtest.py --hui
usage: argtest.py [-h] [--foo FOO]
argtest.py: error: unrecognized arguments: --hui

Тебе что-то другое надо?
411 1951757
>>51132
>>51134
В общем менеджер сказал, что просто в памяти не будет работать на удаленной машине дженкинс, потому что ее запускают несколько человек.

Получается мне нужно поставить сервер и захочтить где-то - это я могу. Потом нужно подключиться и записывать пользователей .set. Каждый другой тест проверять .get если такой юзер уже есть, то взять другого, по окончанию теста удалить ключ и на всякий сделать его expire in 10 mins.
Вопрос, я не очень знаком с питоном вообще и фикстурами, как запилить это все в фикстур? Я так понимаю scope должен быть пер class.
Если кто-то готов серьезно помочь, могу скинуть денег или конфет купить. Спасибо!
412 1951762
>>43168 (OP)
Анончики, а у питона есть будущее в вебе? Я понимаю, что как язык для простых скриптов и подобного он монополист, а в мл по сути навсегда. Но что с вебом? Или надо уже на шарпы/пыху переезжать?
413 1951768
>>51762
На go.
414 1951769
>>51768
На го работы еще меньше, чем на питоне. И я серьезно спрашивал, если что
415 1951771
>>51762
На фронтэнде нет. Щас прибегут мне рассказывать про brython/transcrypt, но это скорее попытка сделать жс более похожим на питон.

На бэкэнде вроде бы уже давно его будущее состоялось. В гугле дохера питона, инста на питоне, библиотек жопой жуй, рабочей силы дохера, вакансии есть. В случае чего перекатиться в го говорят можно за пару недель.

Твой вопрос больше звучит как какое будущее у отвёртки в машинстроении. Будто бы выбор отвёртки сейчас решит вообще всё в будущем. Рассчитывай на то что ЯП неизбежно умирают со временем по тысяче разных причин, и что знание одного ЯП это автоматически сколько-то процентов знания всех других ЯП.
416 1951772
>>51762

>пыху


Работы дохуя, для тебя двери почти везде открыты за 20к лендосы на wp, но как только будешь искать что-то достойное, то окажется что вакансий мало и синьерность требуется высокая. С питоном мало ждуновских вакансий, слишком много вкатываются. За Шарп не скажу, но у них частенько вакансии попадаются.
>>51768
Говно обычно требуется совместно с чем-то еще
417 1951780
>>51771
>>51772
Так самое смешное, что я уже вкатился и месяц работаю. Просто почему-то в какой-то момент так начало казаться. А по поводу ждуновских вакансий на питоне — все так. Я кое-как работу нашел, но само место норм.
418 1951781
>>51762
Питон в вебе бывает двух видов. Либо джанго(рест), либо асинкио (aiohttp, fastapi и др).

Джанго это большой индустриальный фреймворк. Асинкио это технология асинхронного программирования в первую очередь, плюс масса сопутствующих инструментов.

Ты учишь не язык в первую очередь, а технологии программирования. Перекатиться с одного языка на другой в рамках одной технологии и одного подхода может даже проще, чем освоить с нуля технологию, оставаясь на привычном языке.

На текущий момент платформа развивается и растёт, в том числе в веб приложениях.
419 1951785
>>51780
Я просто в свое время дрочил жангу, но по итогу вкатился в пыху, по причине отсутствия вакансий, но в пыхе как оказалось большинство вакансий говно на цмс, в итоге сижу делаю на Битриксе формы "благодарим за обращение! Мы вам перезвоним в течении 15 минут", указанные в вакансии ларавел видела только в техподдержке говнокода в который насрали фрилансеры индусские школьники. За полгода ни одного нормального проекта, все нормальные проекты проходят мимо меня тем кто посиньорнее, зато примерно полдня свободен и устроился стажёром на жабу, пилю потихоньку интерпрайз легаси, спринг, хибернейт, ждбс и всякая апачевская хуета, через пару месяцев перекачусь, а может и раньше.
Сейчас наверное могу на питон попытать счастье на удаленку, дажнгу повспоминать и наверное пройду, но по бэку вакансий очень мало, даже на руби больше.
420 1951790
>>51781

>Ты учишь не язык в первую очередь, а технологии программирования. Перекатиться с одного языка на другой в рамках одной технологии и одного подхода может даже проще, чем освоить с нуля технологию, оставаясь на привычном языке



Удвачиваю сам начал с питона+Джанго, потом продолжил в пхп+ларавел переход был плавный, там практически все тоже самое, в пыхе только первые 2 недели бесило доллары в начале переменной ставить, остальное совсем без проблем. Потом в джава+спринг, с языком вообще проблем не было, тем более что пыха по синтаксису ООП та же джава, даже сейчас типизация появилась и все стараются писать указывая типы, но вот со спрингом это пиздец как все сложно и не понятно, этот апликейшн контекст, бины, депенденси инжекшены, хуй пойми как оно работает, ещё и орм хибернейт со своими сложностями, какой-то ждбс между базой и орм, нахуя половина конфигов нужна, вроде все правильно собрал какого хуя весь терминал красный, что за томкет и вилдфлай, нахуй они нужны. Короче только через месяц начал что-то просто понимать.
Довелось побывать руби, вообще без проблем, увидел код и все понятно, рельсы практически та же джанга и ларавел, только синтаксис языка слишком сахарный, даже бложик написал ну почти дописал, забил под конец
421 1951820
>>51785

>видела


Телеграмочку/гитечку
423 1951902
>>51757
У тебя Джанго что ли?
424 1951903
>>51790
Я думаю они и сами не знают нахуя сделали из Явы (вполне себе понятный по конструкциям язык) полнейшую нечитабельную хуйню, а нечитабельна стала из-за кучи зависимостей, абстракций и вложенностей. На питухоне я могу спокойно оверрайдить говнометоды из библиотеки или вообще часть говна переписать под свои нужды.
А в Яве пока JDBC настроишь уже пожалеешь, ебучий в сраку DBeaver. А все потому что JVM, это явно из-за нее такие требования теперь.
425 1951927
Q all! Очередной нубовопрос по ООП.
1. Обязательно писать классы в отдельных файлах?
2. Интерфейсы из Java реализуются просто в классах штоле? Типа
class 2chable:
....def post_shit():
........pass
426 1951935
>>51902
Не. Это тест Фреймворк, куэйщиков нормальных нет приходится разбираться.
427 1951947
>>51927

>Очередной нубовопрос


Ну смари, класс это короче как в школе, училка это инит, завуч это итер, методы и данные это твои одноклассники. Понял?
428 1951949
>>51927
1) Ну, если класс весь такой большой и используется в разных частях проекта в разных файлах, то рекомендуется, выносить в отдельный файл и импортировать оттуда.
2) hz kak tam v java
429 1951984
>>51947
нет, я как-то больше традиционные аналогии понимаю. ну там Animal, Lion(Animal), Dog(Animal) etc
430 1952041
>>51984
аналогия простая.
класс это тип обьекта
например мяч. с определенными базовыми параметрами
например он круглый.
остальное это уже ты можешь передавать в класс, например делать мячи для баскетбола, анальный шарик например.
все это будет класс мяч, но с разными целями. понятно что баскетбольный мяч в жопу не засунуть. в отличие от анального шарика.
431 1952042
>>51935
Их местный что ли? Так а какого буя тестовой базы нет с кучей учеток? Что за галера такая уебищная?
432 1952043
>>51927
Нет, но логику лучше соблюдать
433 1952059
>>51757

>я не очень знаком с питоном вообще и фикстурами


Тогда почему ты этим занимаешься?
>>51935
Фреймворк какой, pytest?
434 1952398
>>43168 (OP)
Есть формат хранения информации нативный для питона аналог json, xml?
Т.е. чтобы можно было подсосать информацию, но чтобы не выполняло код.
435 1952435
>>52398
pickle?
436 1952459
Салам, гайз
Сопоставляю инструментарий flask-sqlalchemy и собственно sqlalchemy

Интересуют методы экземпляра таблицы, например, метод coloumns. Нашёл его во flaske в db.table(table_name).colomns. но этот сучок возвращает пустой спископодобный объект, как и все методы экземпляра таблицы. То есть структуру таблицы вообще не посмотреть отсюда. Итого два вопроса:
1. Какого это хуя такое поведение?
2. Как получить доступ к этим методам из flask-sqlalchemy?
Спасибо
437 1952463
>>52435
Благодарю.
438 1952470
>>52459
А ты что хочешь то? Нахуя тебе метод колонка в орм? Если выебистый дохуя, то пиши на чистом sql
439 1952475
>>52470
Чисто ради того, чтобы разобраться со структурой фреймворка. Ебучая колонка мне нужна, но хотелось бы знать, что через экземпляр базы данных я могу получить доступ к экземплярам таблиц, а через них к экземплярам колонок. Ебучая колонка мне не нужна, но и метод count не пашет в db.table(tablename).count. Я знаю другой способ посмотреть количество рядов в таблице, но какого хуя не работает самый логичный из способов?
440 1952509
>>51927

>1. Обязательно писать классы в отдельных файлах?


Нет, это не Джава. В питоне это не обязательно, нет рекомендаций pep8 и традиций.

> Интерфейсы из Java реализуются просто в классах штоле?


В питоне нет интерфейсов в том смысле, как в Java. Там совсем другая модель ООП.
441 1952568
>>51820
Это была просто опечатка, с телефона писал)
442 1952590
>>52398
Ini файлы, прикинь
443 1952593
Сап гайз, какой гуй используете под дэсктоп? Я нашел eel. Там html + css, но в добавок вручают тяжелый чемодан с js. Вот в js прям не хочу вникать. Да еще и хром должен стоять. Может есть что интереснее?
444 1952597
>>51903
Да, это бесит язык вполне себе годный, но то что с ним делают это пиздец. Синтаксис понятный и простой, JVM шустро работает, написал тогда одну фичу надо было около 100000 обойти посимвольное чтение, регулярки и прочие радости, запустил и решил кофе попить, встаю со стула, а оно закончило, за 20 секунд 100 000 файлов примерно по тыще строк, КАРЛ! Но как открываешь какой-нибудь проект Spring+JDBC+Tomcat то пиздец тысячи классов и интерфейсов которые делают нихуя, ради всяких солидов и во славу сатане делают классы с 1-2 методами и куча интерфейсов для красоты и инверсии зависимостей. В питоне принято более лаконично и аккуратно писать по сравнению с жабой.
445 1952609
>>52593
Qt самое интересное, но он для с++ изначально
446 1952612
>>49252
Раз такая пьянка, может ты знаешь, как отключить стандартный эксплорер и запустить вместо него своего менеджера?
447 1952617
>>50696
Реально клон кстати, но сервиса небольшого, выше обсуждалось как асинхронно запросы делать, вот это моя ветка, по сути джанго рест апи сделать + планировщик + функции для вызова стороннего апи телефонии, чтобы отдавать буда звонки и т.д, на первом собесе рассказывал про себя, обсуждали тз, на втором смотрели конкурента и я рассказывал что и как реализовывать буду по всем функциям, потом он меня выбрал, а сейчас еще договор просит подписать)
448 1952652
>>52593
Про Qt уже сказали, для него в питоне есть обвязки PyQT и Pyside, еще можно упомянуть WxPython, это обвязка для WxWidgets, там стараются по возможности использовать встроенные возможности ОС, поэтому на разных ОС приложение будет смотреться органично
А вообще есть из чего выбирать:
https://github.com/vinta/awesome-python#gui-development
449 1952667
здарова братва
короче сейчас перекатываюсь из игроиндустрии, где писал на спп
хочу подготовиться к собесам через пет проект
вопрос: есть ли у вас, примерно, идеи чтобы такого замутить, чтобы показать и знание крестов и знание питона?
450 1952716
>>52667
Любое десктопное приложение с плагинами на питоне
451 1952717
>>52716
Бля, отвечал на вопрос про пет-проект, капча заставила выбирать картинки с ВЕЛОСИПЕДАМИ.
452 1952718
двачеры, хуячеры
у крестоносцев в треде был момент, когда они делились норм работодателями (к которым ходили на собесы либо наслышаны)
и что спрашивали на собесах
го мб также?
453 1952720
Всем привет! Есть ли более простой способ кроме джойна получить из 12.3.400.55 получить 123400?
454 1952721
>>52059
Потому что больше некому, я тут самый юный в общем.
Да, фм на пайтесте.
455 1952723
>>52042
Есть же. Нет механизма, который был записывал учётку при каждом тесте, чтобы избегать повторения аккаунтов.
456 1952728
>>52720

> из 12.3.400.55


Что это, строка?
Зачем получать?
457 1952731
>>52720

>>> s = '12.3.400.55'


>>> s2 = s.replace('.', '')

458 1952740
>>52728
Строка. Нужен парсенный ин-т. >>52731
Ты забыл [-1] в конце. Это лучшее что я придумал.
Может ещё есть варианты? Что если точка сместится и будет 11
459 1952741
>>52728
Эта строка должна быть ин-том, который потом будет передаваться в фикстур как версия на которой ранить или скипать.
460 1952742

>>195274


bad_chars = ['.']
test_string = "12.3.400.55"
test_string = filter(lambda i: i not in bad_chars, test_string)
test_string = "".join(test_string)
print("Resultant list is : " + test_string)
image.png5 Кб, 459x111
461 1952746
>>52741
Можно прям секвенсы сравнивать.
462 1952747
>>52746
Хотя там всё равно будут строки, надо ещё прокрутить через map какой.
463 1952761
DCtv ghbdtn
есть словарь. далее совбственно вопрос как используя данные словаря, делать запросы к JSON если есть условие что если as_cnt меньше 100 то все так и оставляем.
если больше то делаем несколько запросов с увеличением src на 100 до условия src = as_cnt c округлением до целого.

https://pastebin.com/gzEzGq1u
464 1952766
>>52740
может так
''.join(s.split('.')[:-1])
или не очень понятно ТЗ, какие ограничения на строку.
465 1952785
>>52617
Вот если взять зарплату как 10 долларов в час, что как бы очень скромно. Ты уверен, что вот в состоянии эту работу сделать за две недели? Причём добавь время, потраченное на собеседования, в эти самые две недели.

Ты берёшься за проект с кучей технологий. Ну реально, не смешно просто.
466 1952787
>>52761
И в чем проблема? Простейшие проверочки-циклы.
467 1952790
>>52787
как данные для requests.post брать из дикта.
468 1952792
>>52617
Вот реально, подумай десять раз, прежде чем браться, и особенно думай, под чем в договоре подписываться. А то будешь возмещать какую-нибудь упущенную выгоду из-за того, что не реализуешь, что надо. Или впахивать полгода, пока все хотелки не сделаешь.

Такая работа стоит больше скорее всего. С учётом подхода с собеседованиями явно больше.

Такие заказчики потом очень долго будут мозг ебать.
469 1952797
>>52790
Ну тебя же есть
data = {'dmn':'code','src':'100'}
пишешь
data = {'dmn':'code','src':doc['as_cnt']}
Можно сделать базовые параметры и мерджить. https://ideone.com/emMCTC
470 1952810
>>51637

>Django


Не удивлен, если там ошибка джангодебила, так как просто не сейвится запись или constraint не указан AUTO_INCREMENT
m =Model(...)
m.save()
471 1952814
>>52746
Норм.
>>52766
Ограничения: строка может быть не обязательно 1.22.333. Можно быть 11.1.333
Может можно как-то regex примерить?
472 1952833
>>52814

>из 12.3.400.55 получить 123400


>1.22.333


>11.1.333


Ты уж определись, у тебя 3 сепаратора или 2.
473 1952838
>>52814

>1.22.333. Можно быть 11.1.333


И что нужно получить из этих строк?
122333 и 111333?
Должны учитываться длины подстрок? Как?

Тебе нужно, чтобы корректно сравнивались версии, и чтобы
11.1.333 было больше, чем 1.22.333? Это другая задача.

Можно тогда всё нормировать к виду
011001333 и 001022333, например, а дальше уже сравнивать. Но при этом мы закладываемся, что размер подстроки не больше трёх цифр.

Не ясна твоя задача.
474 1952840
>>52797
спасибо разобрался.
475 1952842
>>52833
Так в том и прикол. Что бывает 3, а бывает 2.
476 1952843
>>52842
Тогда в чём проблема взять ''.join(s.split('.')[:3]) ?
477 1952844
>>52838

>122333 и 111333


Да. >>52838

>Можно тогда всё нормировать к виду


>011001333 и 001022333, например,


Да, так тоже норм.как это сделать проще, чем сплитом или реплейсом?
478 1952846
>>52792
Ну ты меня напугал, конечно, тз вроде сформировано, заказчик пока адекватный, главное технарь а не менеджер, договор естественно прочитаю, я прямо сейчас сижу и смотрю тз, составляю план как что выполнять и т.д и понимаю что на деле все проще чем казалось, рест сервис сделать и работу с их сервером асинхронную, пока заказчик на все отвечает, все что нужно типа документаций присылает, пока не вижу проблем, так же мне нравится что есть конкурент и просят упрощенную копию сделать, многие функции вырезаны из тз, а на многие вещи, которые изначально есть в тз я просто говорю этим будет заниматься фронт, я только апишечку сделаю. Гораздо больше геморроя было когда я подписался с тиктоком работать, дропнул спустя 2 недели, заработал копейки сущие, да еще и по итогу ничего не получилось, а тут пока все прозрачно, но спасибо, все же нужно наконец над чем-то серьезным поработать, когда сделаю уж точно не буду вкатывальщиком(хотя бы частично). Алсо меня пугает слово собеседование, скорее просто созвон, чтобы познакомится и еще один в котором я рассказывал как реализовывать буду, все же компания настоящая, у них уже многое есть, типа серверов, баз, сайтов и т.д, поэтому вполне логично что они не будут по приколу рандому деньги отправялть, самое забавное что меня нашли на хабре, который я заполнил быстро ради одного заказа заинтересовавшего меня
image.png44 Кб, 640x480
479 1952897
>>52609
>>52652
Спасибо, аноны.
Особенно за ссыль на весь список. Kivy, curses и urwid уже щупал. Как и eel, про который писал изначально. У киви есть расширение с более современными элементами - KivyMD. Но всё таки он больше подходит для мобил.
Вторые два понравились тем, что это собственно не гуи, а туи, обязательно к этому вернусь, когда появится время на пэт-проектики. А про QT я всегда думал, что интерфейс хоть и будет работать, как часы, но выглядеть будет, как на пикче (что уже вот уже буквально скоро может уже смотреться не просто как старьё, но и даже по олдовому круто, как туи лол). Всё таки на HTML+CSS (в списке это eel) красивее всего морда должна получаться по логике, потому что запилить можно в буквальном смысле абсолютно любые кнопки, поля, градиенты и т.д. в конце концов оно конкретно для этого и придумано. Но по списку пробегусь по всему. Еще раз спасибо.
480 1953045
>>52844
В программировании половина решения - это грамотно сформулированное задание. Вот как только ты сформулируешь логику, что и как в каких случаях должно быть, так сразу будет понятно решение.

А когда логика не ясна, то и решения не может быть.

>>52844

>122333 и 111333


>Да


А нормально, что в случае 12.3.444 и 1.23.444 ты на выходе получишь одинаковое значение 123444?

Если да, то проще всего через сплит-джоины и операции со списком.
m[:3] - это сделать обрезанный список из первых трёх значений
m[:-1] - это сделать обрезанных список без последнего значения

Если у тебя какая-то очень сложная логика, то не делай в одну строчку, оформи функцию, может быть сложную.

Все проблемы решаемы, когда ты понимаешь, что именно тебе решить надо. Может быть тебе вообще не надо всё к инту сводить, а лучше остаться в строках.
1 481 1953050
Записался на курсы GeekBrains, друзья программисты говорят долбаеб
482 1953113
>>52897
Воистину, ищите, да обрящете. Я искал годный гуй для питона под десктоп давно, сейчас вообще пригорело уже, уже почти смирился с тем, что придется повникать в джаваскрипт ненужный, что б делать по красоте. А счастье то было перед носом. Никто не запрещает пилить в киви под дэсктоп! По красоте киви не отличатся от html+css+js. А про анимации в киви я не предполагал, потому что раньше не видел статей на хабре про анимацию. Они может вообще недавно появились. На киви пилят под мобилы в основном, ну я и отмел сразу не вникая, а это блин топчик! Мультиплатформ есть, поддержка есть, версия 2 вышла недавно, брат жив и все такое. Я стопудов определился со своим стулом, если вы понимаете о чем я!
483 1953119
Можно ли как-то gpg напрямую из скрипта передать passphrase, минуя необходимость мануально вводить это дело во всплывающее окно? Покурил малость доки - не нашёл чего-то такого. Может, какой хак есть.
484 1953140
>>53119
Отбой, нашёл случайно - --pinentry-mode loopback.
485 1953162
>>53050
тоже взял, но ради сертификата по ML, на остальное похуй
486 1953175
>>53162
Как будто кому-то всрались эти сертификаты, лол.
Это даже скорее минус, сразу показывает тебя генерик вкатышем с фантиками.
487 1953179
>>53175
Я уже работаю, даже в продакшене поделки работают, но я в одно рыло все делаю. Ну и интересно будет посмотреть как меня "трудоустроят".
Хотя эти корочки, да даже какие-то проекты хуетень. Нарвался на простейшую ошибку с блокировкой multiprocessing.Pipe и не мог понять проблему в течение недели. К такому ни один курс не подготовит. В исходниках кстати видно, что если Pipe(duplex=True), то действительно используется блокировка на запись, если не было чтения. Ну не пиздец ли..
488 1953350
>>53045
Только сейчас разобрался, спасибо. На входе 12.3.444.22 - всегда три делиметра. Из этого нужно получит 123444 без точек обычным интом.
Я сделал сплит по точкам и джойн листов в строчку кроме последнего (.22) и обернул в int.
Но выглядит как-то нечитаемо для такой простой задачи..
1111.png16 Кб, 451x315
489 1953388
Не бейте ссаными тряпками, лучше памахите.

Сам я ни разу не программист, но угодно высшим силам в виде научрука, чтобы я на питоне написал график. Дано джва файла формата .dat, надо сделать красивый график по типу пикрил, и кое-как я сумел. Теперь нужно, чтобы на нём появились точки из второго датасета, в виде, собственно, красных красивых точек. И вот как это сделать - я совершенно не знаю...
491 1953401
>>53396
Спасибо, но как заставить один из них быть именно в виде точек?
492 1953415
>>53401

>plt.plot(x2, y2)


plt.plot(x2, y2, '.', color='red');
493 1953434
спасибо за книги
494 1953611
Народ, предельно глупый вопрос. Что написать, дабы продолжать оттачивать скиллы, как начинающему разработчику?
Уже писал бота, который в процессе ещё парсит сайт, менеджер паролей, простейший ETL процесс со сбором, трансформацией и выгрузкой в Postgres, голосового помощника
Сама идея петов ради того, чтобы были, мне отвратительна, но надо где-то брать практику
495 1953617
>>53611
Напиши браузер.
496 1953640
>>53617
import browser
Напейсал
497 1953644
>>53640
Как ты это сделал?
498 1953662
Как не бросить проганье от постоянного селфхуесосинга за то, что не получается что-то с 1 раза, или за 15 мин в башке не наступает озарение как что-то сделать, и начинается прокрастинация или перекладывание задач?
499 1953799
>>53662
Никак. Это должна быть мотивация
500 1953827
>>53662
Берешь и не бросаешь.
image.png1 Кб, 97x102
501 1953833
Сап двач, нужно заполнить массив. Создаю его через инпут 2х значений и после np.zero(a , b)
А как после его заполнить?
Нужно заполнять по рядам, но хз как сделать, чтобы заполнение подходило для разных размеров массива.
Сделать нужно, как на пике примерно. 4, 5 размер массива
image.png16 Кб, 329x431
502 1953836
>>53833
смог сделать только так, а как рядами вводить я хз
Screenshot 2021-02-28 at 19.45.04.png169 Кб, 1130x1048
503 1953935
Что за прикол, в джупитер ноутбуке лог из библиотеки loguru принтуется дважды, но только в первый раз?

В терминале всё в порядке
Screenshot 2021-02-28 at 20.28.07.png92 Кб, 694x884
504 1953954
>>53935
Уже этот вопрос не интересует.

А интересует вот что (пикрелейтед)
505 1953960
>>53954
Модуль traceback
Дальше сам
506 1953980
>>53960
Спасибо!
507 1954038
Расскажите в теории как связывают отдельные api, чтобы везде была одна сессия, т.е есть 5 микросервисов, каждый требует пермишонов, как передают юзера, особенно если сервисы написаны на разных фрейморках\языках? Вот есть у меня сервис, как мне лучше всего получать данные о пользователе?
508 1954068
>>54038
А в чем проблема? Выдаешь токен и все проверяют.
509 1954083
Привет, погромач
Я бы супер сильно хотел к вам вкатиться. А точнее в IoT. У меня есть работа, с зп все тоже заебись, но я как раз больше аналитик и рп и пару раз был краем на IoT проекта. Это было просто оxуенно - люди приносят реальную пользу и помогают в развитии, в отличии от меня.
Насколько это ссаная затея? Или для этого надо двести лет?
Спасибо за внимание
510 1954132
,fvg
511 1954134
>>53960
Таки еще можно использовать inspect
called_from = inspect.stack()[1][3]
512 1954146
image.png15 Кб, 392x275
513 1954149
514 1954164
>>54083
Я не понял о чём ты.
515 1954273
>>54083
IoT обычно про некоторую хардварь, которую ты условно вставляешь себе в ботинок и оно считает шаги. Есть systems on a chip способные тащить микропитон, возможно тебе стоит посмотреть на это. Но IoT всё-таки не про питон, питон там просто рядовая отвёртка.

мимо-диван
516 1954316
Друзья, вопрос по fixture.
Как настроить такую, которая будет при запуске каждого тест класса будет заполнять переменную, скажем Count, которая будет запрашиваться из другого метода. Далее, если смотрим if count > 2: делай это, елсе: делай то.
517 1954325
>>53662
Если тебе это поможет, то даже на работе я постоянно туплю и могу иногда целый день делать какую-то простую вещь. Ну как простую, когда ты с ней разобрался, то уже простую, да.
518 1954436
>>54325
ты работаешь программистом?
519 1954785
>>54134
Охуенно, спасибо тебе огромное.
520 1954980
>>54316
Бампецкий.
521 1955123
>>54436
Конечно
522 1956928
>>54273
Какая хардварь, братюнь? STM32 есть DIY ESP32, есть куча модулей под Arduino или Pi. Придется конечно физику подтянуть да и азы радиоэлектроники, но это херня. Но туда лучше C++ совать, нежели микропитуху, ресурсов то с гулькин нос.
523 1956929
>>54325
не трави душу. все никак не мог собрать Jinja2 темплейт XMLный, по привычке указал в одном месте attrib1="foo", attrib2="bar" и заебался искать ошибку, а была одна ебучая запятая.
image.png786 Кб, 1829x501
524 1975209
Анонче, подскажите, в какую сторону курить про цвет заглушки?
У нормальных фильмов есть нормальная пикча для фона, у говна - заглушки, так вот, как цвет заглушки подбирается, отталкиваясь от постера? Ну не руками же они это делают
525 1975223
>>75209
Вот еще две пикчи, если хуёво объяснил. Нормальный фильм и говно. У говна цвет заглушки в цвет к постеру всегда. Как этот цвет автоматом подбирается? Типа надо писать неебовый метод какой то по анализу джипега?
Тред утонул или удален.
Это копия, сохраненная 15 мая 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски