Программирование

Ответить в тред Ответить в тред
Check this out!
Питон тред №113 /python/ Аноним 16/02/21 Втр 14:21:33 19431681
guidovanrossume[...].jpg 68Кб, 640x479
640x479
EP-200108475c.jpg 362Кб, 2100x1400
2100x1400
Тред, посвящённый языку программирования Питон, #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
Аноним 16/02/21 Втр 15:39:56 19432542
>>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()

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

Аноним 16/02/21 Втр 16:02:27 19432753
>>1943254
>Соответственно, идея такая. Ты свой планировщик оформляешь как независимую задачу
Удивительно, я перечитывал предыдущие ответы и внезапно сам допер до этого. Очевидное решение, над которым я ломал голову несколько часов.
Тысяча благодарностей за помощь! Без тебя и других анонов тупил бы и дальше.
Аноним 16/02/21 Втр 16:33:37 19432904
Ждет ли питон строго-типизированная судьба JS'a в виде подобия TS? Или это уже есть и я это просто проебал? Стараюсь использовать встроенный модуль typing настолько, на сколько могу, но имхо от того проку не сильно много, когда за соблюдением типов следит сугубо IDE и интерпретатор в момент исполнения.
Аноним 16/02/21 Втр 17:14:25 19433375
>>1943290
>от того проку не сильно много
Ты сейчас описал применение любой статической системы типов.
Аноним 16/02/21 Втр 17:15:20 19433386
Какие задачки можно подрочить, чтобы устроиться на Python кодера?
Что вообще можно написать такого эдакого, чтобы не стыдно было потлм показать на собеседовании?
Аноним 16/02/21 Втр 17:19:00 19433407
>>1943338
rest api с крудом. Какой-нибудь условный интернет магазин
Аноним 16/02/21 Втр 17:36:49 19433598
>>1943290
mypy же есть. Если так горит, можешь настроить тайпчекинг в качестве дополнительного линтера.
Аноним 16/02/21 Втр 17:44:18 19433659
Аноним 16/02/21 Втр 17:52:28 194337210
>>1943337
> Ты сейчас описал применение любой статической системы типов.
В каком плане? Я имел в виду, что typing в моем понимании - просто библиотека для отписки, чтобы условно была. Если нет внешнего кода, который потом типы сопоставляет (хоть та же IDE, хотя она обычно с этим не очень справляется) и проверяет, какой толк от нотации и type-хинтинга в принципе, если ты сам потом все проверяешь по итогу?
Аноним 16/02/21 Втр 18:16:15 194339911
image.png 99Кб, 940x669
940x669
Привет, друзья,

Вопрос такой:
Как заставить Джанго форматировать html перед отправкой клиенту? Чтобы не было такой параши с огромными разрывами как в пэйджсурсе пикрил.
Аноним 16/02/21 Втр 18:18:30 194340312
Аноним 16/02/21 Втр 18:23:57 194340913
>>>>1943403
Давно уже дочитал и многое уже прочитал, но про то как уже отрендереную страничку автоматически выправить по кодстайлу, перед отправкой клиенту - там нет.
Аноним 16/02/21 Втр 18:24:20 194341014
>>1943290
>Ждет ли питон строго-типизированная судьба JS'a в виде подобия TS?
Это разные вещи всё-таки, TS это мета-язык, компилируемый в JS, а typing это сам питон.

Есть инструменты для проверки в runtime, технически это возможно. Просто перерасход ресурсов.
Аноним 16/02/21 Втр 18:27:32 194341315
>>1943410
Не нужно, тайпхинтинг порешал все проблемсы. Прверять типы должен разраб при разработке а не машина при выполнении.
Аноним 16/02/21 Втр 18:27:57 194341416
>>1943409
А зачем перегружать код и нагружать сервер? Почему руками да даже не руками, в том же вскоде есть встроенная функция это не сделать?
Аноним 16/02/21 Втр 18:28:19 194341517
>>1943372
Глянь на пакет mypy. Он делает статическую проверку кода на соответствие типов. То есть проверка автоматизирована.

Твои рассуждения опоздали, надо было в начале десятых об этом писать. Когда придумали аннотации типов, но никакой дополнительно поддержки, кроме как самой аннотации, не было.
Аноним 16/02/21 Втр 18:34:36 194342418
>>1943399
Используй шаблоны jinja2, они лучше джанговских по-умолчанию и более универсальны.

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

Именно форматирование нужно? А зачем?
Аноним 16/02/21 Втр 18:34:37 194342519

Ну код это не перегрузит. Код плохо читается как раз таки за счёт адских белых зияющих пятен.

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

Вот бы так делал рендерер Джанги автоматически...
Аноним 16/02/21 Втр 18:37:16 194342620
>>1943425
Нахуй его читать вообще?
Ты глупостями занимаешься.
Аноним 16/02/21 Втр 18:37:33 194342721
>>1943424
Спасиб, я это не знал, ну тогда и Джанга к хую не впилась можно всё на Фляге сделать.

Имеется ввиду форматирование по код-стайлу , чтобы сурсы загруженых страничек было удобно читать.
Аноним 16/02/21 Втр 18:39:24 194342922
>>1943426
Про хайден инпуты же знаешь? Ну сам и ответь на свой вопрос.
Аноним 16/02/21 Втр 18:40:46 194343023
>>1943425
>>1943425
>Не думаю, что это как-то сильно нагрузит сервер, например тот же ВСКод делает это за доли секунды по щелчку мыши.
Если у тебя сервер обслуживает 10 пользователей, то нагрузит не сильно. А если много?

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

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

Наверное можно было бы сами шаблоны отформатировать так, чтобы на выходе был уже форматированный код, в том числе все эти отступы.
Аноним 16/02/21 Втр 18:43:01 194343624
>>1943427
>Спасиб, я это не знал, ну тогда и Джанга к хую не впилась можно всё на Фляге сделать.
Возможно это и Джанго умеет. Вообще поменять шаблонизатор просто, а для тебя по итогу всё прозрачно будет, вместо шаблонизатора от Джанго будет работать jinja2.

Jinja2 лучше и мощнее. И эти шаблоны ты можешь потом в других серверах использовать, даже не питоновских, вроде nunjucks.
Аноним 16/02/21 Втр 18:43:13 194343725
>>1943429
И если там чуть неровно, то ты уже в обморок упадешь?
К тому же можно смотреть в инспекторе, он тоже форматирует.
Аноним 16/02/21 Втр 18:43:42 194343826
>>1943430
> Это время на форматирование и дополнительный трафик. Зачем тебе читать итоговый html? Тем более, что есть инструменты, чтобы потом в браузере код в форматированном виде посмотреть, если очень потребуется.
А вот это - золотая мысль, спасибо.

Проблемы шерифа индейцев не волнуют - проблемы читаря кода не должны волновать сервер.
Аноним 16/02/21 Втр 18:44:38 194343927
народ, подскажите плез какие можно глянуть примеры проектов, в которых используется бдшки, чтобы понять как вообще идет с ними взаимодейсвтие через питон?
а то я заебался sql дрочить и не понимать зачем он нужен
Аноним 16/02/21 Втр 18:44:52 194344028
>>1943437
Да, мне уже подсказали про инспектор, спасибо!!!
Аноним 16/02/21 Втр 18:46:37 194344129
>>1943439
Вот тебе проект - парсишь каталог с шлюхами и забиваешь в дб, потом сделай форму по их поиску по разным критериям с сортировками и прочим.
Аноним 16/02/21 Втр 18:47:28 194344330
>>1943441
я скорее имел ввиду "почитать", чем "запилить"
запилить я и хуево могу
а мне почитать бы как надо делать
Аноним 16/02/21 Втр 18:48:19 194344431
>>1943439
SQLAlchemy. Прочитай доккументы Алхимии на их сайте - сразу таким образом и SQL изучишь и узнаешь что такое ORM.
Аноним 16/02/21 Втр 18:52:51 194344632
>>1943444
а всякие монго, рэдис? это все что за звери?
Аноним 16/02/21 Втр 18:53:02 194344733
>>1943443
Как делать. Про нормализацию бд знаешь? Вот.
Дальше можно работать ручками через prepared statements или через orm, второе предпологает ещё дрочение ооп.
В принципе, берешь любую книгу по джанге, там применяют орм.
Аноним 16/02/21 Втр 20:52:14 194354634
route.png 43Кб, 658x322
658x322
model.png 22Кб, 524x147
524x147
dblocalhost.png 18Кб, 1195x127
1195x127
dbpythonanywhere.png 14Кб, 426x193
426x193
Салам, двач. Снова нуб в треде
Второй раз уже сталкиваюсь с разницей в функционировании моей говнопрограммы на локалхосте и на ПайтонЭнивеар. На этот раз почему-то мускул отказывается заполнять поля. Вроде все проверил: и миграцию сделал, и апгрейднул, и код заполняет базу данных на моей машине, а воз и ныне там. И где ошибка никак не пойму. Подскажи, бро, куда глядеть?
Аноним 16/02/21 Втр 21:32:47 194358535
E7BA2218-59CD-4[...].jpeg 2686Кб, 2896x2827
2896x2827
EADC2ACE-4FE2-4[...].jpeg 3813Кб, 4032x2032
4032x2032
Плз хелп! Джанго братья!
Нужно запилить ПАТЧ метод из имеющегося РОSTа. Спасибо!
Аноним 16/02/21 Втр 21:34:53 194358636
>>1943546
flask, flask_sqlalchemy быстро апдейт
Аноним 16/02/21 Втр 21:42:21 194359437
>>1943585
Да ты охуел экран фотографировать?
Аноним 16/02/21 Втр 21:57:02 194359838
Самоучка. Предстоит интервью на мидла, теорию не знаю, какие обычно вопросы задают?
Аноним 16/02/21 Втр 22:03:53 194360439
Привет, изучаю пайтон, решаю задачки. Застрял на совсем тупой и простой. Походу, у меня в чем - то фундаментальное непонимание. Я перерыл гуголь, все ответы подобны:
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
Аноним 16/02/21 Втр 22:05:34 194360740
>>1943604
Вот примеры вызова функции:
from_roman_numeral("V")
from_roman_numeral("XX")
from_roman_numeral("DCCC")
from_roman_numeral("MMMM")

То есть, вместо, MMMM, который должен быть равен 4000, мы получаем 3000, и так далее.
Аноним 16/02/21 Втр 22:33:15 194364641
>>1943607
> for i in range(0, len(arr) - 1):
Вот здесь ты пропускаешь последнюю букву. Там с индексами внутри цикла какая-то каша
> arr >= arr[i + 1]
строки сравниваются со строками
> if arr in roman
часть символов для чего-то пропускается

Выглядит как будто нейронку посадили фиксить экзепшены просто чтобы не было экзепшенов, неважно корректная ли программа будет в итоге.
Аноним 16/02/21 Втр 22:34:00 194364742
>>1943598
Гугли awesome interview questions.
Аноним 16/02/21 Втр 23:04:20 194367443
>>1943646
Сука, про нейронку обидно было.
Я немного не тот код скинул, но суть та же
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

Аноним 16/02/21 Втр 23:28:37 194369444
>>1943674
> если этого не сделать вылазит ошибка "list index out of range"
Ну и что же теперь, отбрасывать последний символ? Убери бесполезные ифы и вставь недостающий, чтобы если символ последний, его всегда прибавляем, и не проверяем что там за ним.

> ебанные римляне придумали, что если меньшая цифра стоит перед большей
Ещё раз, ты сравниваешь строки, а не числа. Там X больше чем L например, 10 больше 50, тупо дальше по алфавиту стоит.
Аноним 17/02/21 Срд 00:31:56 194371045
>>1943694
ок, спасибо.
>Ещё раз, ты сравниваешь строки, а не числа. Там X больше чем L например, 10 больше 50, тупо дальше по алфавиту стоит.

тут да, совсем обосрался.
Аноним 17/02/21 Срд 01:52:38 194376446
>>1943594
а что за новые привила бро? Я здесь новенький. Могу код вставить.
Аноним 17/02/21 Срд 08:04:48 194384047
>>1943594
Сука проиграл, неужели сделать скрин так сложно
Аноним 17/02/21 Срд 08:05:41 194384148
help.png 64Кб, 871x569
871x569
В чем ошибка? Сам не вижу
Аноним 17/02/21 Срд 08:07:12 194384249
>>1943764
>Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Аноним 17/02/21 Срд 08:09:40 194384350
>>1943841
P, Q - списки либо множества, скобки меняй в первую очередь, остальное не смотрел, сет не используй, лучше списки
Аноним 17/02/21 Срд 09:11:56 194388351
Есть какие-нибудь либы на питон для тестирования сетей (Пинги, трейсроуты, прямые, обратные днс запросы, арп запросы и прочая фигня)?
Аноним 17/02/21 Срд 09:36:10 194390752
Можно ли на питоне вывести поверх всех окон изображение/оверлей? Так чтобы оно не прожималось мышкой/проходило сквозь выведенное изображение?
Аноним 17/02/21 Срд 10:00:09 194393153
>>1943883
в питоне есть либы для всего.
если ты их не можешь найти - значит ты даун.
Аноним 17/02/21 Срд 10:10:23 194393954
>>1943931
Я искал.
Полторы либы для пинга и 0,5 для трейсроута. При том, что возможности нормально обрабатывать их содержимое нет. Грубо говоря, запускаешь из питона пинг, а он выводит его в консоль, а не возвращает через return
Аноним 17/02/21 Срд 10:23:08 194395155
image.png 45Кб, 728x444
728x444
>>1943939
Ну если ты в гугле пишешь "библиотека питон трейсроуты", то конечно не найдёшь ничего
Аноним 17/02/21 Срд 10:23:23 194395256
Аноним 17/02/21 Срд 10:28:49 194395557
>>1943951
>>1943952
Вот по-моему они и не дают по человечески данные обрабатывать
Аноним 17/02/21 Срд 10:29:59 194395758
>>1943907
Вкатываешься в рансомварь с гомониграми?
Аноним 17/02/21 Срд 10:31:30 194395959
>>1943957
Да, поэтому требую помощь, помогай!

Я понял что питон говно, вкатываюсь в автохоткей, вот он то может вывести на экран.
Аноним 17/02/21 Срд 10:36:13 194396060
>>1943955
Ты идиот? aio-ping использовал прекрасно в продакшен коде. Нахуй пошел 1С ник
Аноним 17/02/21 Срд 10:49:40 194396561
>>1943939
ну вот так и формулируй свои вопрос:
опробовал то-то.
проблемы такие-то.
посоветуйте еще что-то

А то просто хочется обоссать.
Аноним 17/02/21 Срд 11:05:56 194397862
Аноним 17/02/21 Срд 11:58:31 194401463
>>1942954 →
Что лучше, литкод или кодварс?
Аноним 17/02/21 Срд 11:59:55 194401664
>>1943840
хуй поймешь программистов, там особый путь
Аноним 17/02/21 Срд 12:48:38 194404665
>>1943978
14-й год, да ты охуел
Аноним 17/02/21 Срд 13:12:33 194406666
>>1944046
он и правда охуел
> • An overview of the "asyncio" framework that comes with Python 3.4.

Книжку сдать в музей исторической литературы
Аноним 17/02/21 Срд 15:58:58 194424367
>>1944046
Нет ф-стрингов, да.
>>1944066
Как будто там не то же самое происходит. Ещё диды под сталинградом баб по хттп качали.
Аноним 17/02/21 Срд 16:25:36 194427968
Аноним 17/02/21 Срд 16:27:55 194428169
>>1944243
>Как будто там не то же самое происходит.
Более-менее на современный asyncio стал похожим с версии 3.5. В 3.4 легаси дико лютое, и при этом не совместимое с современном питоном, примеры оттуда просто не заработают в современном питоне, там вообще общего мало.

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

Другие вещи можно и по старым книжкам учить, а вот для этих важно, чтобы современные были.
Аноним 17/02/21 Срд 16:29:09 194428270
>>1944279
>и смотришь какие методы стали deprecated. Сложно?
Нет. Ответ простой, для asyncio из 3.4 ВСЕ методы. Вообще все.
Аноним 17/02/21 Срд 16:33:49 194429571
>>1944281
Я про то, что протоколы всё те же, то что какие-то либы их используют неблокирующе это другое дело.
Ссаный фтп происходит с каких-то 70-х годов и всё ещё в ходу.
Аноним 17/02/21 Срд 16:51:26 194431972
>>1944295
Протоколы протоколами, но принципы построение программ разительно поменялись
Это как сравнивать жопаскрипт из 2012 с es7+
Аноним 17/02/21 Срд 17:00:07 194433473
>>1944319
У меня ничего не поменялось, я не пишу любой сетевой код асинхронным.
Иногда это имеет смысл, да. Но в целом это просто очередной тренд, как было с носкл, где вся эта хуйня теперь? Заняла свои небольшие ниши, где она имеет превосходство.
Аноним 17/02/21 Срд 17:13:17 194434474
>>1944319
жс это вообще вечная история борьбы с изначально заложенными анальными ограничениями, а все долбоебы вокруг повторяют.
Аноним 17/02/21 Срд 17:21:33 194435075
>>1944334
>я не пишу любой сетевой код асинхронным.
ловите джангодебила
Аноним 17/02/21 Срд 17:23:14 194435176
>>1944334
>как было с носкл, где вся эта хуйня теперь
Везде, братюнь. Redis, Memcached, Clickhouse, Mongo используются корпоратами.
Аноним 17/02/21 Срд 17:27:07 194435577
>>1944351
Редис и мемкешед придумали ещё до тренда и презренные похапешники ими свободно пользовались, прикинь?
Про монгу в сириус бизнесе я не слышал. Кликхаус это какая-то местечковая хуйня, подозреваю, что пизданута с амазон редшифт, но я не сталкивался.
>>1944350
Просто съеби.
Аноним 17/02/21 Срд 18:26:53 194441578
братва
короче по работе надо было пересесть с шарпа на питон
и пересел
клевый язык, конечно - базару ноль
но из-за того, что не все вещи делаю питоник-вэй - код получается страшным (еще бы, я ведь пишу на питоне как на шарпе)
короче, если кратко: где бы глянуть хорошо написанные питон проекты? Посмотреть где и как лучше написать
Аноним 17/02/21 Срд 18:27:47 194441879
>>1944415
особенно не понимаю это хуйни с * одиноко стоящей
что это за говно
Аноним 17/02/21 Срд 19:36:35 194448080
>>1944334
>Но в целом это просто очередной тренд,
Это не просто тренд.
Если ты пишешь серверную часть, то у тебя опции или использовать треды, или извращаться с селектами, или asyncio (или его предшественники - стрононние решения). Селекты это совсем извращение, остаётся только два варианта, треды и асинкио.

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

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

При этом я думаю что и в других местах по сетевой части много с 3.4-2014 поменялось, просто чуть менее очевидно.
Аноним 17/02/21 Срд 20:30:44 194453881
Сап, анончик, буду благодарен небольшому код-ревью. https://pastebin.com/Nw8BtFJX

Функция для парсинга URL и последующего составления sitemap.
Аноним 17/02/21 Срд 20:42:54 194455082
>>1944415
Можешь тут посмотреть, только надо быть внимательным, если список называется "охуенные питон приложения", есть такая вероятность, что приложения могут оказаться охуенными с точки зрения пользователя, но не с точки зрения исходного кода, конечно, в большинстве случаев там и код на высоком уровне, но надо быть начеку

https://github.com/vinta/awesome-python
https://github.com/mahmoud/awesome-python-applications
https://python.libhunt.com/
Аноним 17/02/21 Срд 20:45:58 194455683
>>1944415
В плане стиля можешь посмотреть PEP 8
Или тебя архитектура интересует?
Аноним 17/02/21 Срд 21:20:12 194459884
>>1944550
спасибо)
а еще вопрос
нормально ли, что во многих проектах (в тех, что я видел) нет main функции как таковой?
типа фигачить тело в def main() а потом
if __name__ == "__main__":
___main()
это мовитон?
Аноним 17/02/21 Срд 22:35:57 194464385
Начал учить опп. Как я понял self.method() и Class.method(self) это одно и тоже, но что и когда лучше использовать?
Аноним 18/02/21 Чтв 01:54:43 194472586
Аноним 18/02/21 Чтв 01:57:50 194472887
>>1944598
У тебя некомпилируемый язык и нет требований по точкам входа.
if __name__... Используется когда модуль запускаешь (а он тянет с собой все из __init__.py) через python -m. Если просто скрипт то объявлять не надо. Модуль всяко удобнее. С областями видимости и path ещё наебешься, придется .env клепать
Аноним 18/02/21 Чтв 09:08:25 194486588
Анончик, какой язык к питону вторым выбрать? Питон на приемлемом для себя уровне знаю, наговнокодить что надо могу, хочется еще обмазаться компилируемым языком, да чтобы его еще с питоном дружить можно было. Что обычно с питоном в связке берут?
Аноним 18/02/21 Чтв 09:09:37 194486689
Аноним 18/02/21 Чтв 09:20:20 194486890
>>1944865
GOвно какое нибудь под микросервисы
Аноним 18/02/21 Чтв 10:12:09 194490291
>>1944728
вопрос от другого анона.
в одном файле можно описать класс или набор функций и импортировать в другой файл без указания местонахождения? и для чего нужен __init__.py? чаще всего он вообще пустой. что там можно прописать?
Аноним 18/02/21 Чтв 11:17:05 194494392
Объясните пожалуйста это поведение.
Почему функция any() будто делает next(x)
Зачем такое поведение?
Аноним 18/02/21 Чтв 11:18:53 194495093
Объясните пожалуйста это поведение.
Почему функция any() будто делает next(x)
Зачем такое поведение?
Аноним 18/02/21 Чтв 11:19:47 194495394
Аноним 18/02/21 Чтв 11:27:02 194496595
IMG202102181324[...].jpg 15Кб, 660x279
660x279
Вот пикча
Аноним 18/02/21 Чтв 11:51:53 194501696
Есть какая-нибудь методичка по ооп чтобы коротко, по делу и понятно? А то прочел паттерны и шаблоны ооп, муть на много страниц, какие-то абстрактные фабрики, все очень круто, но как-то слишком абстрактно.
Аноним 18/02/21 Чтв 11:53:36 194502197
>>1944355
>Про монгу в сириус бизнесе я не слышал
кек щито?

>Кликхаус это какая-то местечковая хуйня
Топовая колоночная база, ты ебобо?
Аноним 18/02/21 Чтв 11:56:59 194503398
>>1944950
Потому что (внезапно) чтобы понять что там, то по объекту надо проитерироваться
Итераторы и итерируемые объекты зашиты в подкорку питону, один из основных паттернов
Аноним 18/02/21 Чтв 13:12:11 194515299
>>1944556
ну пеп это ведь правила
а мне интересно именно прикладные вещи
типа
for el in elements:
___f(el)

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

я слышал, что питонисты стараются экономить строки вот оакими записями - это прям везде так принято?
Аноним 18/02/21 Чтв 13:14:04 1945153100
>>1945152
> типа как лучше
поправил
Аноним 18/02/21 Чтв 14:12:41 1945214101
>>1945152
>это прям везде так принято
Везде принято писать так, что было понятно
"Complex is better than complicated"
Прочитай "Zen of Python", если у тебя такие вопросы. Где-то наверняка и на русском есть.
Аноним 18/02/21 Чтв 14:20:05 1945222102
Какой самый быстрый способ превратить 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}, }
Аноним 18/02/21 Чтв 14:50:11 1945261103
Аноним 18/02/21 Чтв 15:59:32 1945372104
Двач, мне нужна помощь, я сейчас обговариваю проект, который в теории могу выполнить, суть заказа написать бекэнд с определенным функционалом. Я до сих пор работал в первую очередь с джангой, я правильно понимаю что бекэнд это в первую очередь api с помощью которого призводится работа бека, а все вещи типа чекбоксов, текстов, списков, кнопок, форм на фронте это просто формирование правильного запроса к api, соответственно мне это писать не нужно, этим должен заниматься фронт и соответсвенно фронт формирует правильно то что вводит пользователь и отправляет например jsonом уже запрос на апи а потом начинается логика? Поэтому моя задача сводится к написанию апи под тз, документация как работать с апи и все, верно?
Аноним 18/02/21 Чтв 16:10:41 1945378105
>>1945372
Алсо например в тз написано что нужно фильтровать список и поиск делать, где в этом случае разделение на бек и фронт, что каждая часть должна выполнять
Аноним 18/02/21 Чтв 16:38:41 1945410106
>>1945378
>где в этом случае разделение на бек и фронт
Есть разные подходы - называют толстый и тонкий сервер. Когда на фронте современный фреймворк типа vue / angular / react, то от бэкенда по сути требуется только апи и больше ничего. Но бывает и наоборот - шаблонизатор используется бэкендовский, формы, таблички и пр. всё на фрейморке бэкендовском (у джанги это есть), а на фронтенде сидит обычный верстальщик.
Аноним 18/02/21 Чтв 16:40:31 1945413107
>>1945410
Тз составлял не прогер, там просто сказано что нужно на джанго, но нужен бек, чтобы прикрутить потом фронт и при этом должны быть чекбоксы и формы, вот думаю теперь что на себя брать, а от чего открещиваться, спасибо
Аноним 18/02/21 Чтв 17:47:02 1945453108
народ, а вот вопрос
иногда пишут
try:
___import a
except:
___import b
втф? в каких случаях мы не гарандирует импорт?
Аноним 18/02/21 Чтв 19:03:30 1945564109
>>1945453
ни разу не видел, но с импортами же есть ебля, например релятив импорт один заставляет ебаться, когда запускаем сам файл, а не ипортим его
Аноним 18/02/21 Чтв 19:58:13 1945604110
>>1945453
видел много раз
модуля "а" может сгенерить исключение внутри себя типа "какие то условия не выполнены на данной системе, что то там не найдено" и будет потому подключен fallback "b"
Аноним 18/02/21 Чтв 21:01:29 1945649111
на первой странице гугла пишут, что питон популярен в банковских приложениях.
почему так нахуй? во всех этих статейках поверхностное объяснение. мол, он очень простой и потому пиздатый. ну да ну да. а если серьезно? в чем профит?
Аноним 18/02/21 Чтв 22:54:28 1945754112
>>1945649
> мол, он очень простой и потому пиздатый. ну да ну да. а если серьезно? в чем профит?
С тобой все там окей? Сам ответил на свой вопрос, забил на ответ и спросил вопрос снова.
Аноним 18/02/21 Чтв 23:01:27 1945762113
>>1945754
это ответ на первой страницы гугла, мне такой не нрав))
Аноним 18/02/21 Чтв 23:16:11 1945774114
Смотрю блогера который объясняет синтаксис питона, после оставляет задания на степике, и у меня бывает часто ,что могу пересмотреть видос раз 20 и все-равно не понять как правильно написать кусок кода!! я один тут такой? кодинг совсем не мое?
Аноним 18/02/21 Чтв 23:23:04 1945779115
>>1945774
Дай блохира. Решаю пока задачки на петоне, интересно посмотреть. У меня на базовом питоне проблем обычно не возникает.
Аноним 19/02/21 Птн 00:12:10 1945823116
>>1945453
>втф? в каких случаях мы не гарандирует импорт?
Если ты используешь нестандартные модули вместо стандартных.

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

Но вообще надо смотреть на конкретные случаи, а не гадать.
Аноним 19/02/21 Птн 00:18:19 1945828117
Аноним 19/02/21 Птн 00:29:45 1945840118
Сап, питонисты. В общем, мне нужно написать антивирус(да да, не удивляйтесь, в универе курсовая), и я задумался, а можно ли реализовать его на питоне? Идея такая, у меня будет два приложения - клиент и сервер, общаться они будут через сокеты либо же мейлслоты, тут пока хз. И вот у меня такой вопрос, если с клиентом понятно как работать, то вот с сервером я хз. Можно ли на питоне реализовать собственно проверку файла на вредоносность? Или же придется все же писать сервер на плюсах, а клиент на питоне?
Аноним 19/02/21 Птн 01:45:39 1945870119
>>1944902
Логику, если модуль запускаешь. Например ссылку на классы или готовые объекты из других файлов в этой директории
Аноним 19/02/21 Птн 05:45:25 1945900120
image.png 7Кб, 432x353
432x353
>>1943168 (OP)
А какой сейчас самый православный способ спарсить json в типизированные объекты?

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

Или есть способ лучше?
Аноним 19/02/21 Птн 07:29:50 1945917121
>>1945900
в питоне есть типизированные объекты? охуеть, не знал.
Аноним 19/02/21 Птн 08:22:52 1945924122
Аноним 19/02/21 Птн 10:10:33 1945971123
Подскажите какой-нибудь проект что-то вроде pandas web proxy ?
Хочу в веб-интерфейсике писать произвольный кодик, а в основном приложении просто получать dataframe . И чтобы все в докере и по сеточке оптимально упаковывалось.
Аноним 19/02/21 Птн 13:06:22 1946107124
>>1943168 (OP)
Пацаны, я шапку изучил. Но литературы просто дохуя и она старая, хотя в шапке также написано, что надо читать литературу по актуальной версии питона.
Для нубаса с какой книги начать? Мне 32, перекатываюсь из другой профессии. В школе нравился паскаль — вот и все мои забытые знания.
Аноним 19/02/21 Птн 13:15:21 1946122125
Аноним 19/02/21 Птн 13:16:24 1946126126
Аноним 19/02/21 Птн 13:39:29 1946158127
16135083286661.jpg 127Кб, 706x1000
706x1000
Хочу написать программу на PyQt и в ней использовать pyuv. Проблема в том что в PyQt эвентлуп и в pyuv эвентлуп. Как мне спинить сразу два этих лупа, в PyQt ещё можно делать QApplication.instance().processEvents() а в uv такого нет.
Аноним 19/02/21 Птн 13:59:14 1946232128
>>1946158
Допетрил сам, запускаю второй луп в отдельном тредике, вроде работает, теперь надо понять как в запущеный луп новые обработчики закидывать
Аноним 19/02/21 Птн 13:59:54 1946239129
здарова братва
короче вопрос
есть ли у вас прям промышленный пример (или просто годный), где использовались бы arg, kwarg аргументы?
а то игрушешные примеры ок, а нормальных я не видел
Аноним 19/02/21 Птн 14:02:48 1946247130
бля пиздец у меня горит нахуй
вот в питоне аннотирование методов в классе это просто пиздец какой-то
хочешь спокойно ебнуть что-то типа
class A:
...
__def hui(a : A) -> A:
____return pizda(A)

А НИХУЯ ТЫ ТАК НЕ МОЖЕШЬ - АНРЕЗОЛВД РЕФЕРЕН
пиздец горит
Аноним 19/02/21 Птн 14:03:05 1946249131
>>1945924
О, тоже вариант. Но нужно наследоваться от BaseModel, что не всегда удобно
Аноним 19/02/21 Птн 14:41:19 1946320132
16131291200870.jpg 124Кб, 850x1079
850x1079
>>1946232
спиню кьюти луп в айдле uv-лупа и тредик реагирует на сигналы, кайфец
idle = pyuv.Idle(loop)
idle.start(lambda handle: QtWidgets.QApplication.instance().processEvents())
питон ван лав
Аноним 19/02/21 Птн 15:00:47 1946346133
>>1946247
Ты понимаешь что ты ебанутый?
Аноним 19/02/21 Птн 15:03:10 1946350134
>>1946239
Любая функция с регуляр экспрешн. Вообще это типа соглашения такого по оформлению кода.
Аноним 19/02/21 Птн 15:07:20 1946358135
>>1946239
Где нужно произвольное количество аргументов или дохуя опциональных. Тот же sum искаробочный, тот же print искаробочный.
Вот из сторонней либы, например. https://requests.readthedocs.io/en/latest/api/
Аноним 19/02/21 Птн 15:49:53 1946402136
Аноним 19/02/21 Птн 16:12:57 1946423137
дорогой двач
я студентота с опытом работы в концернах залупки
скоро предстоит менять работу на более серьезную (потому что в концернах залупки нужно быть и чтецом и жнецом и на дуде еблецом)
и в целом, на прошлом месте я неплохо прокачался в прогании
Но тк у меня немного не прогерское образование, я абсолютно не ебу в теорию алгоритмов - а ее поднимать надо, да
отсюда вопрос, дорогие аноны, как лучше вкатываться в алгоритмы? Спрашиваю в этом треде тк сам питонист
Стоит ли смотреть курсы? или лучше сразу идти в литкод? а поможет ли вообще литкод? или лучше задрочить кормена и прочую хуйню?
выручай двач)
Аноним 19/02/21 Птн 16:19:51 1946424138
>>1946423
Что ты собираешься делать на литкоде, если ты нихуя не знаешь? Сначала дрочи теорию, потом увидишь применения.
Аноним 19/02/21 Птн 16:25:19 1946432139
>>1946424
ну то есть это нормально идти вот таким образом
оке, спасибо
Аноним 19/02/21 Птн 16:31:19 1946444140
>>1946424
а какой самый годный ресурс для изучения алгоритмов?
Аноним 19/02/21 Птн 18:44:48 1946622141
>>1946247
Ты засовыаешь в метод класса класс и хочешь вернуть этот же класс? нахуя?
Аноним 19/02/21 Птн 18:58:13 1946657142
>>1946444
Берешь классические книги и читаешь.
Аноним 19/02/21 Птн 19:50:19 1946725143
>>1946249
Что не так? Объект создаётся, методы через интерфейс прокидываешь
Аноним 19/02/21 Птн 20:20:51 1946744144
Нужно сделать подключение к браузерному чатику, что почитать для этого?
Аноним 19/02/21 Птн 21:21:51 1946789145
image.png 9Кб, 574x210
574x210
Сап двач, а нет ли способа автоматически прописывать все эти self.asd = asd? Уже устал это делать
Аноним 19/02/21 Птн 21:59:52 1946816146
аноны, как вы относитесь к корутинам?
пиздец конечно название ебанутое
Аноним 19/02/21 Птн 23:35:41 1946928147
Аноним 19/02/21 Птн 23:56:15 1946949148
>>1945900
Я использовал marshmallow, вроде удобно
Аноним 20/02/21 Суб 00:12:41 1946957149
>>1946247
У тебя все заработает, если напишешь в начале файла from __future__ import annotations
Это активирует фичи из вот этого пепа https://www.python.org/dev/peps/pep-0563/
Если верить расписанию, это поведение станет дефолтным в версии пиона 3.10, то есть не надо будет ничего импортировать
https://docs.python.org/3/library/__future__.html
Аноним 20/02/21 Суб 00:39:35 1946966150
>>1946622
Много есть вариантов. Например, арифметические операции, там, сложение: объект класса А принимает другой объект класса А и возвращает результат в виде объекта класса А. Или, например, в pandas у датафреймов полным полно методов, которые берут на вход другой датафрейм и возвращают результат тоже как датафрейм.
Аноним 20/02/21 Суб 02:03:26 1946989151
image.png 50Кб, 536x531
536x531
Есть список "results"
Но когда я удаляю элементы из списка "shortcutsList", они удаляются и из списка "filesList"
Почему так?
Аноним 20/02/21 Суб 02:05:46 1946991152
>>1946957
> станет дефолтным
он уже вышел же
>>1946744
)))) я уже неделю каждый день пытаюсь сделать что-то подобное. ИМХО лучшее чтиво - StackOverflow
Аноним 20/02/21 Суб 02:10:39 1946992153
>>1946989
ох решил проблему, написав:
filesList = filesList + results

А в чём дело, почему переменные связались друг с другом?
Аноним 20/02/21 Суб 02:36:24 1946999154
>>1946992
Потому что ты передал в filesList и shortcutsList не список, а ссылку на список. А при сложении списков создается новый список.
Аноним 20/02/21 Суб 02:49:02 1947001155
>>1946999
filesList = [results]
так можно? (чтобы не создавать ссылку)
Аноним 20/02/21 Суб 02:52:29 1947003156
Аноним 20/02/21 Суб 02:53:38 1947004157
>>1947003
спасибо!
первый же .copy() уже отвечает на мой вопрос
Аноним 20/02/21 Суб 02:58:08 1947006158
image.png 2Кб, 364x87
364x87
>>1946949
Что-то синтаксис бе. Pydantic хоть стандартные type hints использует.
Аноним 20/02/21 Суб 09:55:49 1947072159
>>1946989
Вас за global ещё не пиздили?
Аноним 20/02/21 Суб 09:57:30 1947073160
>>1946247
Staticmethod? Обратись через cls в чем проблема?
Аноним 20/02/21 Суб 10:28:04 1947093161
>>1947072
А я хуй знае, как без глобала изменять i в нижней строке на картинке
Аноним 20/02/21 Суб 10:30:15 1947099162
>>1947093
Берешь и меняешь, ты упоротый там?
Аноним 20/02/21 Суб 10:32:06 1947100163
Аноним 20/02/21 Суб 10:34:12 1947102164
>>1947099
Или для объявления достаточно строки:
i = 0
?
Аноним 20/02/21 Суб 10:35:21 1947103165
>>1947100
В питоне нет блочных скоупов.
Покажи полностью.
Аноним 20/02/21 Суб 10:35:57 1947104166
Аноним 20/02/21 Суб 10:39:38 1947105167
>>1947104
Спасибо, как сяду, попробую все поправить.
600 строчек кода без знания ООП превратились в такой ад, что мне было главное, чтобы заработало. Сейчас работает, можно и оптимизировать
Аноним 20/02/21 Суб 10:52:33 1947110168
>>1947105
теперь перепиши код полностью в функциональном стиле
Аноним 20/02/21 Суб 12:54:38 1947241169
Аноны, поясните за тренды во фреймворках в 2021, че сейчас модно, что производительно, а от чего лучше отказываться в бекенде
Аноним 20/02/21 Суб 13:03:19 1947253170
Ох. Как же у вас в треде хорошо. Все друг другу поясняют вместо кидание говном. А то заходил когда выбирал направление к фронтенд петушкам и охренел.
Вы мне помогли окончательно определится с выбором направления вката.
Так что сижу и учу питон. Если будут вопросы мне есть к кому обратится. Спасибо
Аноним 20/02/21 Суб 13:41:23 1947291171
31pkfFPHJDY.jpg 364Кб, 796x594
796x594
Сап аноны, делаю генератор помех, который бы работал на заданных пресетах. Условно говоря, в папке лежит 10 картинок, которые в рандомном порядке выводятся на экран.

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

Но я никогда не работал с изображениями в питоне, через какую библиотеку это можно сделать? Может кто-то делал подобное?
Аноним 20/02/21 Суб 13:57:06 1947307172
>>1947291
pillow, там ничего сложного.
Аноним 20/02/21 Суб 13:59:15 1947309173
>>1947291
crop() в PIL
Ещё через opencv можно, но там много букоф надо писать.
Аноним 20/02/21 Суб 14:19:26 1947331174
Аноним 20/02/21 Суб 14:43:39 1947368175
Сап двач, есть переменная i, которая вводится через int input.
Как эту переменную (допустим 10) сделать 10%?
Аноним 20/02/21 Суб 14:44:56 1947371176
Аноним 20/02/21 Суб 14:46:06 1947372177
>>1947368
задавай еще что-нибудь простое, хочу почувствовать себя умным
Аноним 20/02/21 Суб 14:47:22 1947373178
>>1947371
о, я даже из 10% могу обратно 10 сделать

i = "10%"
i = int(i.replace("%", ""))
print(i)
Аноним 20/02/21 Суб 14:47:41 1947374179
>>1947371
>>1947372
Да не это, мне потом надо эти проценты в формулу вставить
Аноним 20/02/21 Суб 14:48:29 1947376180
>>1947072
поменял первый глобал, оказалось, что эта величина где-то дальше фигурирует. Забил
Аноним 20/02/21 Суб 14:48:48 1947378181
>>1947374
i = i * 0.1

))))))))))))))))))))))
Аноним 20/02/21 Суб 14:49:00 1947379182
>>1947368
>Как эту переменную (допустим 10) сделать 10%?
Посчитать 10% или чтобы было 10%?
Аноним 20/02/21 Суб 14:50:48 1947380183
image.png 1Кб, 112x64
112x64
>>1947379
Чтобы я потом мог юзать это, как проценты. Надо в формулу подставить
Аноним 20/02/21 Суб 14:54:29 1947383184
>>1947380
)))))))))))))))))))))))))))
10% == 0.1
матеша, 2 класс
Аноним 20/02/21 Суб 14:58:44 1947386185
>>1947378
>>1947383
всё, разобрался, там надо было не 0.1, а 0.01
Математика вообще хуйня, если честно
Аноним 20/02/21 Суб 15:00:21 1947388186
>>1947386
☝золотые слова, брат ☝
Аноним 20/02/21 Суб 16:01:01 1947450187
Сап, питонач. Я обычный веб питон программист 300 к/секунды.

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

Мне главное работать поменьше, получать побольше, и чтобы работу было легко найти. Ради этого я вполне готво успердно учиться, и изучать более узкую специализацию. В общем, есть лис профит?
Аноним 20/02/21 Суб 16:23:20 1947477188
Аноним 20/02/21 Суб 16:30:12 1947487189
Candidate-DataA[...].jpg 98Кб, 641x427
641x427
>>1947450
загадка от прогнозиста (на размышление дается 30 секунд)

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

иди, блядь, ищи ответ.
Аноним 20/02/21 Суб 17:03:53 1947516190
программа что-то усердно делает, но ничего не происходит. Как узнать, что именно она делает?
Аноним 20/02/21 Суб 17:39:22 1947585191
>>1947516
добавить дебажные принты
Аноним 20/02/21 Суб 18:10:56 1947622192
>>1947516
Наставить брейкпоинтов по всему пути следования
Аноним 20/02/21 Суб 20:21:42 1947767193
Пасаны, как дебажить в пайчарме?
Вот допустим проверяю я элементарный ассерт.
На этом ассерте код ломается. Если я ставлю брейкпоинт на нем, то он когда доходит до бп останавливается. Дальше я жму продолжить и вуаля мы опять вышли с обшибкой. Странное поведение.
Аноним 20/02/21 Суб 20:33:31 1947785194
image.png 8Кб, 400x88
400x88
>>1947767
Там кнопка есть, чел.
Аноним 20/02/21 Суб 21:02:48 1947826195
вопрос по flask
/.../file.html не видит стили расширяемого базового шаблона /base.html
Я так понимаю, что это из-за того, что file.html находится дальше в дереве url чем (чем что?) базовый шаблон, хотя они и располагаются в одном каталоге. в базовом шаблоне красуется классическое href='static/base.css'
Как сделать так, чтобы html увидел css?
Аноним 20/02/21 Суб 21:54:43 1947865196
>>1947253
Главное ни в коем случае не пиши в питон чаты в телеге, поверь, пожалеешь в любом случаем, даже если задашь вопрос на который тамошние петухи не смогут ответить, то получишь столько говна в свой адрес, что потом отмываться неделю будешь
Аноним 20/02/21 Суб 22:34:39 1947909197
>>1947767
очевидно экспрешон в ассерте возвращает False (или None или чо там кастуется в булен как False)
Аноним 20/02/21 Суб 22:42:50 1947921198
>>1947767
>Вот допустим проверяю я элементарный ассерт.
Ты поехавший? Assert в чистом коде это же пиздец.
Как на уроке физики "предположим тело движется со скоростью...". Используй нормальную проверк, а assert оставь для pytest.
If a:
#a = True or a!=None
Все же очевидно. К тому же ты можешь видеть значения объектов. На худой конец print или logging.
Аноним 20/02/21 Суб 22:45:48 1947925199
>>1947826
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 разжевано, научись гуглить
Аноним 20/02/21 Суб 23:42:22 1947971200
>>1947865
Аллах вам StackOverflow дал, нет, пукаем какаем
Аноним 20/02/21 Суб 23:43:42 1947972201
>>1947925
> научись гуглить
скажи, что у тебя не бывало, что гуглишь два раза одну проблему, но во второй раз не можешь найти "то" решение
Аноним 21/02/21 Вск 00:05:05 1947982202
>>1947972
Ну тогда смотрит Ютуб с индусами. Как вы код пишете, если настолько херовый запрос в Гугл засылаете, что в выдаче нет результата с SO. Немножко в ахуе с таких вкатывальщиков. И уверен такой кейс есть в учебных материалах и в официальной документации
Аноним 21/02/21 Вск 00:24:48 1947994203
image.png 2Кб, 232x129
232x129
>>1943168 (OP)
Как поймать эксепшн чтоб его обработать а потом снова его же пробросить?
Вот у меня есть что-то вроде того что на пикриле, я обрабатываю конкретный эксепшн который поймал но сам эксепшн-то теряется. Как мне его после этого возбудить чтобы он вызвался и отпечатался в логах (вместе со всем call-стеком)?
Аноним 21/02/21 Вск 01:58:07 1948058204
>>1947994
или
except APIError as e:
____raise e

или даже:
except:
____raise

в последнем случае будет поднято последнее исключение.
Аноним 21/02/21 Вск 05:48:30 1948080205
>>1947909
Ну и как определять почему? В чем процесс Дебагинга еба? Я и без этого знал, потому что пайчарм кинул ошибку на этой строчке.
Аноним 21/02/21 Вск 05:49:07 1948081206
>>1947921
Ну я про пайтест и говорил так-то.
Аноним 21/02/21 Вск 08:01:53 1948096207
А Dive Into Python ещё актуальная книга? Или лучше с какой-нибудь другой начать?
Аноним 21/02/21 Вск 10:31:03 1948145208
>>1948081
Так какого хера ты pytest в дебаггинге запускаешь юродивый?
Аноним 21/02/21 Вск 10:58:32 1948167209
>>1948096
Нет, лучше начать с версии 3.6+, это 2017 и позже.
Аноним 21/02/21 Вск 11:41:10 1948194210
>>1947982
Всё прозаичнее. Просто времени не было. Перед сном задал вопрос на дваче, чтоб ребята за меня погугли, а я с утречка уже решение прочитал, каеф. Таймменеджмент и делегирование)
Аноним 21/02/21 Вск 12:19:32 1948217211
>>1948194
ты охуел? я всю ночь тут сидел гуглил пока ты на массу давил
Аноним 21/02/21 Вск 12:49:58 1948244212
>>1946122
>404

Заебися вкатился
Аноним 21/02/21 Вск 12:58:24 1948256213
>>1948080
Смотреть что там вызывается в ассерте и там брейкпоинт ставить, смотреть чему равны переменные которые участвуют когда происходит заваливание ассерта и откуда они пришли и искать причину почему они не равны ожидаемым.
Аноним 21/02/21 Вск 15:27:10 1948417214
Почоны, есть что почитать по актуальной асинхронщине в питоне, кроме документации? Я недавно вкатился и так по работе талмуды с доками каждый день дрочу, нет сил еще и дома такую залупу читать
Аноним 21/02/21 Вск 15:28:55 1948418215
Аноны, получил заказ на 800 долларов, прошел несколько собесов и переговоров и меня выбрали подрядчиком, до этого максимум за 70$ делал заказы, поддержите меня, я дико волнуюсь
Аноним 21/02/21 Вск 15:29:50 1948419216
Аноним 21/02/21 Вск 15:30:29 1948420217
>>1948417
Видимо ссылки нельзя, набери в ютубе асинхронность python, там плейлист олега молчанова
Аноним 21/02/21 Вск 15:35:42 1948424218
>>1948420
Первое видео в плейлисте 2 года назад. Это точно актуальные вещи? С учётом того, что queues с чуть больше года назад стали deprecated. И 3.10 будут выписаны из питона.
Аноним 21/02/21 Вск 15:38:29 1948431219
>>1948424
А, актуальная именно нужна, там скорее теория, до asyncio только в 6-8 добирается, хз устарела ли инфа оттуда сильно, но послушать интересно, самая актуальная я думаю именно доки, куда деваться, асинхронщину ведь несколько лет назад еще завезли
Аноним 21/02/21 Вск 15:43:19 1948435220
>>1948431
Эхх, ну ладно, спасибо за ответ :3
Аноним 21/02/21 Вск 15:49:31 1948446221
>>1943168 (OP)
Почему у женщин с возрастом руки жирнеют в области бицепса? У мужиков такого не видел.
Аноним 21/02/21 Вск 16:34:08 1948490222
>>1948418
Получил договор на интеграцию на 5000 баксов (чистыми меньше). Лучше бы блять не брались за эту хуйню. Говночисты из Европы написали такую хуйню (исходников нет конечно же), что теперь охуеваю. При том они интегрировали свое говно с российским железом, а я эмулирую работу российского железа. Полностью повторил протокол, а европейцы геи кучу багов оставили у себя. Нахуй такое просто нахуй. Хочу на галеру
Аноним 21/02/21 Вск 16:36:52 1948499223
>>1948490
Я пока еще готов свою жопу продавать, пока новый монитор не куплю хотя бы, сижу на вга кабеле блять, а тебе удачи
Аноним 21/02/21 Вск 17:09:23 1948534224
for i in range(len(s)+1):
n = (int(s[1]) + int(s[2]) + int(s[3])) / 3

Почему list index out of range?
Аноним 21/02/21 Вск 17:10:43 1948535225
1.JPG 10Кб, 952x70
952x70
Аноним 21/02/21 Вск 17:11:55 1948537226
>>1948534
список 0,1,2, длина 3, а ты перебираешь значение от 0 до 4, потому что +1
Аноним 21/02/21 Вск 17:26:18 1948553227
>>1948537
Там вложенный длинной 100+.
Разметка сожрала индексы, прикрепил скрин >>1948535
Аноним 21/02/21 Вск 17:28:18 1948557228
>>1948553
Блять, у тебя длина списка n, а индексы заканчиваются n-1, а ты пишешь чтобы у тебя брался индекс n+1
Аноним 21/02/21 Вск 17:29:08 1948558229
>>1948557
Ебать, надо ж было так проебаться. Спасибо!
Аноним 21/02/21 Вск 17:46:14 1948577230
>>1948553
>>1948558
Нахуй тебе вообще все эти индексы, надо итерировать, крутить пайплайны ёпта.
Аноним 21/02/21 Вск 19:26:59 1948634231
как реализовать стоп слова из тхт фала?
Аноним 21/02/21 Вск 19:27:19 1948635232
сделать это множесвами?
Аноним 21/02/21 Вск 19:52:26 1948644233
image.png 17Кб, 549x168
549x168
Как красиво залупить?

Есть функция updaterMain, я хочу выполнять её каждые 3 минуты. Собственно, на картинке это так и происходит. (пока rt1 выполняется, весь остальной код может работать)
Но я хочу дописать, чтобы можно было ставить эту функцию на паузу. Ок, вместо 3 я поставлю 9999, но как это красиво залупить?
Аноним 21/02/21 Вск 19:53:58 1948645234
>>1948644
и соответственно, чтобы можно было снять с паузы
Аноним 21/02/21 Вск 19:54:38 1948647235
>>1948645
пока из вариантов только GOTO
Аноним 21/02/21 Вск 20:28:40 1948658236
>>1948499
Хуле, мне семью кормить. Лишних проектов после ковида нет.
Аноним 21/02/21 Вск 20:35:15 1948659237
>>1948647
last_ts =None
while True:
if last_ts is None or time.time() - last_ts >=3000:
#execute
else:
time.sleep(1)

Аноним 21/02/21 Вск 20:36:34 1948660238
>>1948659
> while True:
из-за этого цикла весь остальной код не встанет?
Аноним 21/02/21 Вск 20:36:36 1948661239
>>1948644
Пилять, каждые 3 секунды поставил. Короче разберёшься.
Аноним 21/02/21 Вск 20:39:29 1948662240
>>1948660
Ты ебобо видимо. У тебя 2 задачи должны крутиться что ли? Так пропиши Threading и Semaphore (Lock, RLock).
Ты мне кинул кусок кода и спросил, получил ответ на основе кода. Давай полное ТЗ тогда
Аноним 21/02/21 Вск 20:42:45 1948665241
>>1948662
ебать ты терминами закидал. Я ещё настолько зелен, что даже вопрос сложно нормально задать

я пока беру методом тыка, и пока вопрос снимается - модуль, который создаёт иконку приложения в трее, прерывает дальнейшее чтение кода, поэтому я даже не знаю, куда первый луп воткнуть
Аноним 21/02/21 Вск 20:53:05 1948668242
>>1948665
Ты какой-то гуй под шиндовс делаешь? Анальная затея это.
В принципе, можешь взять тот же ткинтер и привязаться к его эвент лупу со своими задачками, всё полегче будет.
Аноним 21/02/21 Вск 20:57:47 1948672243
image.png 3Кб, 177x91
177x91
>>1948668
мне лишь бы закончить. Вообще можно ограничиться "Quit" который уже тут работает - тупо чтобы можно было закрыть программу, если она не нужна
Аноним 21/02/21 Вск 21:26:14 1948689244
image.png 71Кб, 825x576
825x576
Аноним 21/02/21 Вск 21:34:00 1948696245
Аноним 21/02/21 Вск 22:16:00 1948720246
Антон, как мне красиво связать приложение на питоне, запущенное под юзером, с системной службой?
Аноним 21/02/21 Вск 22:58:38 1948739247
Подскажите, пожалуйста, почему многопоточность для IO даёт профит? Ведь всё так же по очереди, например, прогружаются сайты . Если знаете хороший источник именно по потокам - буду благодарен.
Аноним 22/02/21 Пнд 00:07:18 1948754248
>>1948739
Ну как же по очереди. Основная часть это ожидания ответа, заслал много запросов и блокируйся себе на здоровье.
Аноним 22/02/21 Пнд 00:51:30 1948783249
>>1948720
systemd, про шиндоус забудь
Аноним 22/02/21 Пнд 00:52:18 1948785250
>>1948689
Отличный говнокод. Просто вершина говнокода с global
Аноним 22/02/21 Пнд 01:27:22 1948802251
>>1948785
Вот рили каждый раз когда используется глобал - ты говнокодишь 109%, особенно если только учишься
Аноним 22/02/21 Пнд 09:35:31 1948887252
>>1948145
А чем его дебажить?
Аноним 22/02/21 Пнд 10:03:07 1948896253
Аноним 22/02/21 Пнд 10:29:15 1948916254
>>1948802
Так он блять глобальные переменные в функции определяет. Пиздец... Кстати
> Вот рили каждый раз когда используется глобал - ты говнокодишь 109%
Это ты хуйню несешь. Если скрипт небольшой, то файл конфигов имеет смысл сделать глобальной переменной. Тогда при увеличении размера приложения очень легко будет отрефакторить код. Просто удаляешь глобальную переменную и пишешь from config import config. И код просто продолжает работать.
Аноним 22/02/21 Пнд 10:30:53 1948918255
>>1948916
> файл конфигов
Не файл, а словарь офк.
быстрофикс
Аноним 22/02/21 Пнд 10:33:46 1948920256
>>1948918
И не глобальной переменной, а просто переменной, которая в scope находится при импорте. И ты можешь по сути там константы предопределить и просто через config.MY_CONST обращаться
Аноним 22/02/21 Пнд 11:14:46 1948946257
>>1948244
Охуеть, только вчера работало, брат
может восстановят доступ?
Аноним 22/02/21 Пнд 11:14:57 1948947258
>>1948920
Бляяя, я это и имею ввиду. То есть, ты сначала пишешь

CONFIG = {....}

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

from config import CONFIG

def foo():
return CONFIG.value
И все работает и не надо ничего рефакторить лишнего.
Аноним 22/02/21 Пнд 11:38:56 1948991259
>>1948947
Ты ебобо? Как ты из словаря без ключа возвращаешь значение? Будет CONFIG['key'], а лучше вообще config.toml забацать для обфускации или .env сделать и грузить через load_dotenv(), ещё одна обфускация. Не люблю конфиги в коде, потом самому же поддерживать.
Аноним 22/02/21 Пнд 11:52:07 1949009260
>>1948991
> Ты ебобо? Как ты из словаря без ключа возвращаешь значение?
А это я хуйню написал, да.
> Не люблю конфиги в коде, потом самому же поддерживать.
А где всякие токены доступа хранить и логины/пароли, которые надо каждый раз в реквесты пихать?
Аноним 22/02/21 Пнд 12:57:02 1949051261
>>1949009
SQLite, .env или просто в environment системы пихать в чем проблема? os.getenv('API_PASSWORD'), а SQLite может быть с Cipher что позволяет ее паролить.
Токен доступа для Гугла драйва например предлагают хранить в pickle. Вариантов овердохуя.
Аноним 22/02/21 Пнд 13:00:41 1949056262
>>1949009
В случае запроса значения переменной из хранилища кстати позволит на ходу менять значения без перезагрузки сервиса. Не очень надежно в плане результата, но если например протухли credentials сервис не останавливается, а просто встает в состояние -1: wrong credentials, посмотрел статус в каком нибудь SQLite или другой БД, поменял значения и без перезапуска херащишь. Актуально, если есть очереди в памяти без Redis, AMQP, а перезапуск сервиса просто уничтожит эти очереди.
Как-то так.
Аноним 22/02/21 Пнд 13:21:45 1949074263
>>1948754
А как поток получает ответ, сразу по готовности, даже если не он выполняется, или хитрым способом когда уже на него переключается?
Аноним 22/02/21 Пнд 14:28:19 1949121264
>>1949074
корутины — специальные функции, похожие на генераторы python, от которых ожидают (await), что они будут отдавать управление обратно в цикл событий. Необходимо, чтобы они были запущены именно через цикл событий
футуры — объекты, в которых хранится текущий результат выполнения какой-либо задачи. Это может быть информация о том, что задача ещё не обработана или уже полученный результат; а может быть вообще исключение
Аноним 22/02/21 Пнд 14:29:29 1949125265
Аноним 22/02/21 Пнд 15:54:56 1949179266
>>1949051
Ну хуй знает, у меня отдельная самописная либа по работе с таск трекером есть, например. Оттуда import Config. Затем создаю объект класса Config с параметрами нужными. И затем при каждом запросе к апи тасктрекера, через прослойку в виде своей либы, я просто закидываю внутрь функции объект конфига. При этом вся внутренняя логика скрыта, а логика пользования либой очевидно и понятно.
Аноним 22/02/21 Пнд 16:58:00 1949213267
>>1949121
ты через авейт пидоришь?
а как же йелд?
Аноним 22/02/21 Пнд 17:10:03 1949217268
>>1949074
Подозреваю, что система как-то сигнализирует, что пришли ответы, а там вм уже разбирается, кому передавать управление.
Аноним 22/02/21 Пнд 17:42:47 1949243269
>>1948802
если не сложно, скажи, как избавиться от глобалов (в функции их приходится объявлять, потому что без объявления они считаются локальными) ?
в конце каждой функции писать "return(value)" и передавать её в myFunc1(value)?
или пример красивого кода, который как то поможет мне?
и в чём проблема глобалов?
или ссылку на что конкретно почитать или хотя бы что загуглить или на ютубе посмотреть?
а может даже совет как исправить конкретно этот код?
буду рад любому совету
Аноним 22/02/21 Пнд 17:46:08 1949248270
хочу добавить программу в автозагрузку, всё так делаю?:
-в коде пишу: создать ярлык прога.exe в папку с автозагрузкой
-перевожу прогу в exe
Аноним 22/02/21 Пнд 17:49:21 1949252271
>>1949248
win+r -> taskschd.msc -> enter -> создать задачу
Аноним 22/02/21 Пнд 19:02:27 1949322272
Контент на сайте зависит от каких-либо условий. Например, задачи на доске отображаются в зависимости от выбранного пользователем проекта. Как мне это менеджментить? Завести столбец в модели юзера current_project? Не совсем понимаю. Или достаточно добавить ключ с проектом в контекст, и он всю сессию в контексте будет?
Аноним 22/02/21 Пнд 20:03:51 1949368273
Аноним 22/02/21 Пнд 20:22:00 1949378274
Аноним 22/02/21 Пнд 20:32:48 1949386275
Аноним 22/02/21 Пнд 20:38:19 1949389276
Аноним 22/02/21 Пнд 20:54:22 1949394277
>>1949389
у тебя ошибка в первом же элементе, довн
Аноним 22/02/21 Пнд 21:00:53 1949400278
>>1949394
Ну добавь себе единичку в принт, если полегчает.
Аноним 22/02/21 Пнд 21:01:57 1949403279
image.png 4Кб, 928x21
928x21
>>1949368
>Решил задачу за 12 строк.
>Поиск простых чисел
>Кто меньше?
Решение таких простых задач длиннее одной строки - детектор зеленого джуна.
Аноним 22/02/21 Пнд 21:04:01 1949406280
>>1949403
>пишет нечитабельный говнокод
>зато не джунчик - колокольчик
Аноним 22/02/21 Пнд 21:51:12 1949438281
>>1949406
твои задачки которые ты решаешь во время обучения никто читать не будет, поэтому тратить время на манячитабельный код во время решения задач такого уровня -- глупо и нерационально. О чистоте кода пора начинать задумываться только когда ты уже в состоянии пройти собес и устроиться на реальную работу, а не на этапе знакомства с ЯП. Всегда кекал с челиков которые не могут решить medium на литкоде зато знают PEP8 наизусть.
Аноним 23/02/21 Втр 00:53:34 1949506282
34234d.png 471Кб, 1284x754
1284x754
Аноним 23/02/21 Втр 03:18:23 1949564283
Аноним 23/02/21 Втр 04:45:18 1949576284
Тестер в хате.
Pytest не ловил Exception в driver.title, хотя оно там есть.
Асерт выглядит так:
Assert “Exception” not in driver.title

Этот асерт стоит Сразу после кнопки Сабмит на одной странице. Когда принтую показывает другую страницу. Почему так?
Аноним 23/02/21 Втр 05:43:01 1949584285
Реально ли сейчас найти работу джуну, если выучить django? Вообще много где вижу, как брезгуют от этого фреймворка.
Аноним 23/02/21 Втр 05:47:56 1949585286
>>1949584
Всегда реально найти работу программистом. Вопрос в том насколько ты умеешь приспособиться под рынок. Где-то джанга, а где то Флакс.
Аноним 23/02/21 Втр 07:25:35 1949601287
>>1943168 (OP)

Сап, питонач. Нужно ли учить в django всякие формы и шаблоны, если сейчас все делается через rest Api и отдельный фронт? Кажется, что учу нинужные вещи.
Аноним 23/02/21 Втр 12:15:11 1949715288
>>1949601
А что сложного в templating? Может пригодиться для чернового фронта.
Аноним 23/02/21 Втр 12:26:54 1949722289
>>1948446
Карта отложения жира сильно отличается у мужчин и женщин. У мужчин обычно огроменное пузо, а у женщин по всему телу, в первую очередь жопа, ляжки, бока, и бицуха. Мужчинам нельзя жирнеть в конечностях, исторически так выживаемость падала. А пухлая женщина наоборот ассоциируется с выживаемостью, так как дольше может кормить молоком.
Аноним 23/02/21 Втр 12:31:47 1949723290
>>1948739
Потому что IO происходит в ядре. На время IO поток не выполняется, а значит гил можно отпустить и дать выполняться другим потокам. Вся эта херабора с гилом нужна чтобы ты мог один и тот же list например менять из разнах потоков, при этом оно не крешится. По-хорошему на каждую питонячую переменную нужно вешать автоматический лок (по сути гранулировать гил на каждую структуру), но это оказалось очень дорого, как по разработке, так и по производительности. Гил оставили чтобы работало быстрее в однопотоке. А сами потоки в питоне это классические потоки ОС, без всякой хуйни типа гринтредов.
Аноним 23/02/21 Втр 13:04:47 1949741291
>>1949576
А title это точно содержимое страницы, а не надпись на вкладке?
Аноним 23/02/21 Втр 13:12:01 1949746292
аноны, поздравьте
сегодня завалил проект по срокам (сделал меньше, чем договариались)
все? проганье не мое?
Аноним 23/02/21 Втр 13:19:07 1949750293
>>1949723
https://m.habr.com/ru/company/otus/blog/458694/ вроде как ищут способ обойти GIL, но меньшими ресурсами чем Process. Хотя с process все просто, передал sig = Event() и реализовал graceful shutdown, а как тут будет хер знает. Тот же asyncio.run() выкатили без обработчика сигналов, ну и нахера спрашивается, все равно через loop приходится работать
Аноним 23/02/21 Втр 13:29:06 1949755294
>>1949750
Subinterpreters чёт заглохли, хотя идея здравая, делаем некий namespace для переменных, которые доступны только внутри этого интерпретатора, и там внутри уже гил не нужен. То есть это грануляция где-то между глобалом и каждый отдельной переменной. Асинк совсем не про это.
Аноним 23/02/21 Втр 13:29:10 1949756295
>>1948783
Под линуксом-то всё понятно, но нужно-то под винду.
Аноним 23/02/21 Втр 13:31:09 1949758296
>>1949756
Что ты имеешь в виду под связыванием? Ты свою службу хочешь сделать? Или использовать те что уже работают?
Аноним 23/02/21 Втр 14:15:18 1949793297
>>1949755
Ну ты затронул тему GIL, я вот вспомнил. Вроде и жду, а вроде и не понятно как с этим работать
Аноним 23/02/21 Втр 14:18:37 1949797298
>>1949756
Обвязка WinAPI32 хуевая тема. Я писал сервис под Win10, но потом с миграцией на разные версии сервис часто переставал работать. Поэтому бери альтернативу - https://nssm.cc/
Аноним 23/02/21 Втр 14:30:06 1949805299
>>1949758
Да, своя служба, позволяющая выполнять что-то с админскими правами под юзером.
Аноним 23/02/21 Втр 14:39:00 1949811300
Аноним 23/02/21 Втр 14:53:20 1949825301
>>1949811
>сокетам
Вот так и собирался. Но на свой взгляд выглядело это, как костыли-костылики.
Спасибо.
Аноним 23/02/21 Втр 16:03:24 1949909302
https://pastebin.com/yFC0x0by
Как сделать, чтобы вызов scr.getch() принимал символ на ввод и блокировал вывод на одну секунду, после чего переменной c присваивалось нужное мне значение (например, 0) и управление возвращалось во внутренний цикл?
Цель: нужно, чтобы экран с некоторой периодичностью обновлялся и выводил объект smth, состояние которого изменялось бы посредством вызова smth.do_smth в отдельном потоке и управлением с клавиатуры.
(прошу прощения за говнокод и хуёвое объяснение)
Аноним 23/02/21 Втр 16:29:06 1949935303
>>1949825
>>1949797
Еще раз посмотри на эту хуету. Я собирал через PyInstaller экзешник и он только через nssm нормально запускался, не ебись ты с WinAPI. Если бы ты на .NET или C++ сервис писал, это одно, но с питоном Шиндоус не дружит.
Аноним 23/02/21 Втр 16:31:36 1949938304
>>1949909
time.sleep()

>cостояние которого изменялось бы посредством вызова smth.do_smth в отдельном потоке и управлением с клавиатуры.
(прошу прощения за говнокод и хуёвое объяснение)
ну так это уже Threading, создаешь объект, передаешь его в тред, перед изменением делаешь lock.acquire(), чтобы не было race condition потом lock.release()
Аноним 23/02/21 Втр 16:38:18 1949946305
Аноны, я сейчас не хочу садиться и тестить, но хочу быстро в голове разложить, есть приложение суть которого в том, чтобы делать условно 1000 запросов в час, есть celery который поможет запускать запросы, но естественно запросы обязаны быть асинхронными, как лучше всего прикрутить асинхронщину в таком случае? Добавлять таски в эвент луп, запускать раном прямо в задаче селери, использовать что-то встроенное в селери или может есть какой-то ультимативный модуль сторонний? Что будет эффективней?
Аноним 23/02/21 Втр 16:46:24 1949953306
>>1949909
getch полностью блокирует поток выполнения пока ты не введёшь символ. (Вероятно) можно слушать клавиши в отдельном потоке, либо включить no-delay mode https://docs.python.org/3/library/curses.html#curses.window.nodelay но тогда тебе видимо придётся самому раз в секунду дёргать этот getch.

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

Если хочешь графику, то sdl. То же самое, весь головняк уже решён за тебя, но вместо коконсольки будет отдельное окошко в котором можно рисовать.
Аноним 23/02/21 Втр 16:51:02 1949957307
>>1949946
Ты явно плохо понимаешь что такое селери и зачем его делали. Это распределённая очередь задач, читай внимательно каждое слово. Распределённая значит что селери может работать даже на кластере из сотни машин. Очередь значит что есть какой-то генератор заданий, чаще всего это веб-сервер, которому хтмл надо отдать прям сейчас, а какое-нибудь письмо прислать как получится. Задача означает нечто выполяющееся за конечное время, например за минуту. Никто не делает асинхронность для выполнения задачи.

Почему ты не можешь просто в одном скрипте одним циклом, в одном потоке сделать 1000 запросов в час?
Аноним 23/02/21 Втр 17:13:31 1949973308
>>1949957
Ну первое, зачем мне селери это то что эти запросы придется делать, например, каждый день в промежутке времени и регулировать скорость. Второе, генератор заданий это собственно джанго, которое(тут уже мне надо так же смотреть, например, что отдавать в селери) ставит задачи, сделать 1000 запросов с такими данными. Третье, я не уверен как работает асинхронный джанго, но мне нужно, чтобы эти задачи делались в фоне, а асинхронщина нужна потому что сам запрос это просто дерганье стороннего апи, которое может выполнить задачу за рандомное время и может быть разный ответ, а получать статус этих дерганий нужно реал тайм, надеюсь понятно объяснил. А делать в цикле 1000 запросов когда каждый обрабатывается минимум секунд 30-60 это очевидно неверно. Я думал изначально для этих запросов сделать отдельное aiohttp приложение от которого нужно максимальное быстродействие, но если в celery получится выполнять задачи асинхронно то не понадобится отдельное приложение. Пока писал понял твои слова про очередь и то что задачи не должны быть асинхронными, но селери нужен для отложенных задач, а асинхронность для того чтобы не ждать ответ от запросов, т.е сама по себе задача это вызвать 1000 запросов и они должны быть асинхронными минимум в рамках одной задачи, после каждого ответа так же должна быть логика по обработке ответов
Аноним 23/02/21 Втр 17:20:42 1949979309
>>1949957
Алсо т.к в селери будут отдаваться только задачи с отложенными запросами, которые не нужно делать прямо сейчас, а например 3 клиента хотят в 18:00 делать по 1000 запросов, значит сами вызовы 100% должны быть асинхронными, ответ клинту идет сразу, что задача выполняется, вот статус всех запросов и так каждый день. Поэтому мне кажется в таком случае моя реализация в целом верная, либо просто запросы к селери, которые делают асинхронщину, либо к приложение aiohttp, которое отдает ответ сразу и селери сразу возвращает что процесс запущен, а уже aiohttp ждет ответа, делает логику и записывает в бд, я не прав?
Аноним 23/02/21 Втр 17:35:54 1949994310
>>1949973
Давай ещё раз. Выясняем что у тебя уже есть приложение на джанго, которое генерит задания сделать запрос. Что нужно ещё получить результат запроса: куда его и кому потом отдать?

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

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

А ещё, как насчёт того чтобы сам клиент дёрнул себе сторонний сервис и ждал результата? Зачем городить такой сложный прокси?
Аноним 23/02/21 Втр 18:15:01 1950046311
1.mp4 4700Кб, 1280x720, 00:00:09
1280x720
Ну что вы, аналитики-датасаентисты?
Аноним 23/02/21 Втр 19:25:38 1950113312
>>1949994
Я предполагаю что результат каждого запроса записывается в бд, например, статус ок или ошибка или что-то еще, соответсвтенно джанго создает 1000 объектов в бд, пользователь нажал кнопку и получил сразу ответ в виде 1000 строк со статусом ожидание, если ответ где-то пришел быстрее, то эта строка заменится на ок или ошибку, т.е например в первые 2 минуты ответ поступил от 250 запросов и их можно будет увидеть, остальные в ожидании пока не пройдет логика.
> В селери нет нужды обслуживать 10к соединений.
Соединение будет только одно, но запросов много, опять же проблема не в селери самом, а в том, что задача с 1000 запросами обязана быть асинхронной, как это сделать я уже написал, либо селери, либо отдельный сервис аиохттп(джанго нужен для удобной админки и орм с которым я хорошо дружу), если в селери нет планировщика(хотя я уверен что где-то читал об этом), то тогда уж точно проще передавать параметры для этой 1000 запросов просто на аиохттп и все, через отдельный планировщик. Я честно так и не понял в чем именно проблема(предположим простая логика):
передаем через брокер 1000 айдишников из бд(они выбираются еще джангой через квери параметры), селери(для селери только одна задача будет) обрабатывает задачу, т.е принимает 1000 айди, создает асинхронный луп, в него добавляет асинхронную функцию по обработке запроса и дальнейшей логике на каждый запрос, как только все запросы отработаны задача завершается, если клиентов больше в одно время, то каждый будет ждать просто пока все задачи выполняться.
>клиент дёрнул себе сторонний сервис.
Нужна логика до отправки запросов и после них
Аноним 23/02/21 Втр 19:35:38 1950129313
>>1949994
Я сейчас понял что, чтобы не нагружать слишком сильно внешний сервис, при том что запросов может быть максимум в час(100-1500 на человека) лучше к тому же распределять эти запросы через делей = число запросов / 3600, тут так же появляется необходимость в асинхронности, делать цикл в котором через делей добавляем таски в луп и при этом этот цикл тоже должен быть асинхронным, чтобы при этом другие такие же циклы работали одновременно. На самом деле на практике я точно что-то придумаю, пока просто пытаюсь выбрать вектор своих мыслей и придумать примерный алгортим из того что я знаю сейчас, не гугля всякие доки и уже готовые решения(интересно можно ли их найти)
Аноним 23/02/21 Втр 19:43:10 1950137314
>>1950113
Пиздец ты зациклился на асинхронности. Тебе нужно оздоровительное воздержание от асинхронности прописать на недельку. Но в общем-то да, наверное даже один поток aiohttp справится и со всеми запросами, и с планированием, и со складыванием результатов в базу. А селери тебе скорее всего нахер не нужен если ты так хочешь асинхронность.

Подумай лучше вот про что. Как твой микросервис будет переживать рестарты? Чо делать если контейнер/процесс убивают, а у тебя 10 запросов уже отправились? Можно ли дёргать эти адреса повторно? Сколько раз и когда нужно делать ретраи? Нужна ли тебе очередь между джангой и этим сервисом? Возможно ли отделить БД этого сервиса от основной?
Аноним 23/02/21 Втр 20:17:06 1950162315
image.png 10Кб, 806x433
806x433
Помогите!
Можно ли при помощи opencv детектить столкновения этих двух шариков на пикриле?
Аноним 23/02/21 Втр 20:26:07 1950170316
>>1950162
Ловишь координаты, детектишь наложение.
Аноним 23/02/21 Втр 20:55:00 1950187317
>>1950137
Просто на деле запросы это телефония и ждать 30-40 секунд на ответ нельзя, а асинхронность по-моему именно для этого и нужна, поэтому и циклюсь, значит да, завести какой-то планировщик и просто отправялть на aiohttp.
Ретраи добавить вроде не сложно, а вот про рестарты не думал, пока даже не знаю как минимизировать проблемы при внезапном рестарте в теории, как минимум надо узнать что происходит с брокером в таком случае, потому что в нем будет проблема главная, можно на айди просто ограничения добавлять, типа время последнего вызова и проверять прошло ли достаточно времени(правда если клиенты разные на один айди звонят, то тут будет проблема), так же не знаю даже в теории о нагрузках на бд и как их измерять, например будет в час на бд 2-5 тысяч запросов с выборкой 1-го значения просто по индексированнуму айдишнику, будет ли успевать бд и как вообще ее расширять
Аноним 23/02/21 Втр 20:57:24 1950190318
image.png 39Кб, 1190x428
1190x428
>>1950170
Допустим я вот наложил контур на шарик, координаты отслеживаются, как мне столкновение детектить?
Аноним 23/02/21 Втр 21:03:51 1950196319
>>1950190
не шарю за библиотеку, может уравнение составить простое? Гугли формулу круга и выводи нужное тебе соотношение
Аноним 23/02/21 Втр 21:05:14 1950198320
Аноним 23/02/21 Втр 22:27:51 1950262321
>>1950187
Ну создай нагрузку фейковую и посмотри что будет. Расширять можно вертикально и горизонтально, бери машину пожирнее для начала, если не помещаешься то партицирование, разбиение на микросервисы, тысячи вариантов есть.
Аноним 23/02/21 Втр 22:48:01 1950270322
image.png 141Кб, 1920x1080
1920x1080
Аноним 23/02/21 Втр 23:51:02 1950306323
>>1950262
Да это очевидно через обычный слип нагрузку делать, другой момент как именно на практике увеличивать возможности приложения, микросервисы понятно, разнести бутылочные горлышки по серверам, а в остальном вот уже сложнее(кстати слава богу что придумали асинхронщину нормальную, я не представляю как было бы ебано сейчас парится с потоками, может генераторами или даже с корутинами, все за меня придумано, мне оставалось только доку глянуть и вот уже код работает в бесконечность раз быстрее на объемах)
Аноним 24/02/21 Срд 00:09:23 1950319324
>>1950113
Для этой логики по идее Селери не нужна, как мне кажется.

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

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

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

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

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

То есть ты руками реализуешь брокер сообщений, но это несложно, потому что ничего из серьёзного функционала, ради которого нужны сложные сервисы вроде раббита, ты не используешь.
Аноним 24/02/21 Срд 00:13:18 1950322325
>>1950319
Я пока про селери читал где-то говорилось что очереди в бд хранить неверно и в проде все полетит, пока все еще думаю над этим, а с селери уже разобрались, что вроде не нужна, нужен планировщик(я думал в селери он собсна есть), отдельные функции на aiohttp, а остальное на джанго что нужно, спасибо всем за ответы, кстати
Аноним 24/02/21 Срд 00:19:40 1950325326
>>1950306
Да так же. Была уже асинхронщина во всяких торнадах, твистедах и гевентах. Тупо половина стдлибы манкипатчится чтобы дёргать неявный эвентлуп.

Горизонтально довольно просто скейлится. У тебя есть балансировщик нагрузки, он подхватывает новые машинки которые ты запускаешь с серваками, и как только оно способно принимать запросы, балансировщик начинает его понемногу нагружать. С базами это сложнее, но принцип похожий. Базы лучше разделять на части. Ещё всякие key-value намного лучше разделяются в кластеры, чем реляционные, в них намного меньше гарантий, разрабатывать под них конечно ебано, ни транзакций тебе, ни схем, ни джойнов, зато скейлить одно удовольствие.
Аноним 24/02/21 Срд 00:34:00 1950327327
>>1950325
Какие кластеры баз? Товарищ говорит про 5 тысяч запросов в час. Условно 10 запросов в секунду в пике.

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

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

Аноним 24/02/21 Срд 00:37:01 1950328328
>>1950327
Хз, переживает товарищ, что не потянет хайлоад. Так-то конечно надо сначала упереться в этот хайлоад, а потом думать.
Аноним 24/02/21 Срд 00:39:53 1950330329
>>1950328
>Так-то конечно надо сначала упереться в этот хайлоад, а потом думать.
Вот о том и речь, что хайлоад это в 1000 раз больше нагрузка.

Аноним 24/02/21 Срд 00:56:10 1950336330
Чисто архитектурно, как я понимаю, задача такая.

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

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

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

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

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

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

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

При этом действительно серьёзный хайлоад с величинами другого порядка оперирует.
Аноним 24/02/21 Срд 00:58:41 1950337331
>>1949741
Это надпись на вкладке, да. Но там он тоже пишет Page - exception. Но ассерт это не ловит и принтит тайтл без ошибки, будто ее там и нет.
Аноним 24/02/21 Срд 01:56:49 1950357332
>>1949741
Нашёл. Получается что драйвер хранит переменную, а не постоянно обновляет, решение - добавление неявного ожидания с локатором тайтла.
Всем спасибо
Аноним 24/02/21 Срд 02:14:34 1950361333
>>1950336
RabbitMQ переживает падения и сохраняет на диске, Redis тоже научился.
Аноним 24/02/21 Срд 02:16:31 1950362334
>>1950327
>Если важна низкая латентность,
Краеугольный камень. Тот же Rabbit может быть persistent, а может и не быть. Зависит от задачи
Аноним 24/02/21 Срд 03:23:05 1950367335
>>1950330
Во, наконец узнал хоть какую-то циферку, чтобы сравнивать, 1000 запросов в секунду уже хайлоад, верно?
Аноним 24/02/21 Срд 03:33:49 1950369336
>>1950336
Ответа нет, но думаю это мне собственно, опять же рад наконец увидеть цифры числа запросов для хайлоада, слишком абстрактно для мен было, я все еще думаю что много воркеров вообще не нужно, если они будут синхронные, потому что все проблемы с тем что 30 секунд ждать ответ решает асинхронность, потому что сама логика элементарная, буквально записать в бд и в случае эксепшона логирование + репит, поэтому не будь ожидания даже воркеры не были бы нужны, а так асинхрнность, осталось только придумать как при запросе на aiohttp сразу отдавать ответ джанге, чтобы он мог дальше делать запросы, а нынешний просто в лупе оставался, то что брокеры записывают на диск при падении интересная инфа, надо почитать об этом, в остальном вектор стал понятен после всех сообщений. Интересно почему такой ажиотаж вызвал мой вопрос, даже приятно)
Аноним 24/02/21 Срд 05:20:23 1950389337
Кто-то работал с Reddis? Задача вытащить инфу о пользователе, который онлайн в данный момент. Никогда не работал с этим.
Аноним 24/02/21 Срд 09:26:19 1950415338
Аноним 24/02/21 Срд 09:41:12 1950420339
>>1950389
Очень много информации. Доки официальные читай и доки по библиотеке, которую используешь, даун. За тебя ещё твою работу делать?
Аноним 24/02/21 Срд 09:51:43 1950424340
Добрый день, за полгода изучения питона активного возможен ли вкат в программирование с нуля с переездом в дс/дс2 или же фриланс/удаленка? Живу в мужосранске, образования нет. Родители выгонят из дома через полгода если работу не найду, с собой в питер/москву могу взять 300 к на первое время
Аноним 24/02/21 Срд 09:54:47 1950425341
>>1950424
образование есть 2 вышки, но не программёта
Аноним 24/02/21 Срд 10:02:19 1950432342
Аноним 24/02/21 Срд 10:11:23 1950438343
>>1948418
>заказ на 800 долларов
>несколько собесов и переговоров
Это что, каждый раз так? В эти 800 сопровождение входит?
Аноним 24/02/21 Срд 10:45:27 1950453344
>>1950420
Ппц, ну может кто-то работал с этим. Мне чисто гуглить python reddis?
Аноним 24/02/21 Срд 11:00:17 1950457345
>>1950453
https://redis.io/clients#python
Выбираешь клиент для Redis на Python и читаешь документацию по нему, хрен ли вы такие тупые. Чаще всего указывают в официальных доках какие клиенты существуют и ссылки на них. Бери тот что поддерживается и последний релиз не позднее 19 года естественно.
Аноним 24/02/21 Срд 12:12:00 1950488346
>>1950361
Там снепшоты. От выключения света не защитит.
Аноним 24/02/21 Срд 13:15:33 1950522347
>>1950424
Возможно всё, но положение у тебя откровенно хуёвое. Сам вопрос как ты к этому пришёл как бы намекает что ты тот ещё распиздяй, и за полгода ты разве что десяток аниме посмотришь, а не вкатишься.
Аноним 24/02/21 Срд 13:17:19 1950527348
>>1950389
Редис это всего лишь хранилище, которое не знает ни о пользователях, ни о всяких онлайнах. Ебись, за тебя твою работу тут не сделают.
Аноним 24/02/21 Срд 13:36:29 1950531349
>>1950522
распиздяй да, но щас на носу моя жизнь, надо за полгода оформить грамотный вкат, готов почти все свободное время уделять этому дело. Интересует будет ли прок? Или учиться чему-то другому?
Аноним 24/02/21 Срд 14:56:37 1950568350
>>1950531
За полгода только пхп
Аноним 24/02/21 Срд 15:11:25 1950576351
1418527peax0703[...].jpg 45Кб, 1200x900
1200x900
>>1950531
Ты нихуя не сделаешь и будешь таким же овощем. Зачем зря жопу рвать?
Аноним 24/02/21 Срд 16:10:18 1950634352
>>1950162
Есть костыльный способ. Делай скриншот когда эти шарики сталкиваются. Вырезай столкнувшиеся шарики, делай проверку на поиск столкнувшихся шариков с скриншота через locateCenterOnScreen в pyautogui.
Либо узнать радиус шарика в пикселях от центра, например будет 10, у второго тоже 10, если центр шарика1 находится ближе чем на 20 пикселей к центру шарика2, то столкновение.
Аноним 24/02/21 Срд 16:11:28 1950636353
>>1950634
Бля с первым проебался, он не подойдёт.
Аноним 24/02/21 Срд 16:28:25 1950649354
>>1950438
Да хз, первый заказ ведь крупный
Аноним 24/02/21 Срд 17:23:05 1950695355
>>1950649
"Ашот и Братья" заказали сделать клон Авито?
Аноним 24/02/21 Срд 17:24:23 1950696356
>>1950695
Просто реально интересно, что за 800 долларов хотят. Что ещё с двумя собеседованиями.
Аноним 24/02/21 Срд 18:58:08 1950797357
братва, подскажите плз, есть ли кулстори/реальный опыт работы в сбере? Хочу попробовать туда пойти тк зпхи хорошие + появился сбер it, но хз
это галера или нет?
Аноним 24/02/21 Срд 19:18:09 1950825358
1.png 250Кб, 1818x1262
1818x1262
2.png 257Кб, 1900x1354
1900x1354
Постигаю асинхронность. Делаю асинхронные запросы по двум адресам.


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

Не понимаю, почему, если я код оборачиваю в функцию он выполняется значительно медленней?
Аноним 24/02/21 Срд 19:21:21 1950830359
>>1950825
А если импорты вынести?
Аноним 24/02/21 Срд 19:24:02 1950834360
>>1950830
Слушай, помогло.

Чому так?
Аноним 24/02/21 Срд 19:30:31 1950839361
>>1950825
Ты реально замеряешь время получения ответа с адресов LINK1 LINK2? Кстати сейчас loop никто в параметры не передаёт, наверное ещё с питона 3.7.
Аноним 24/02/21 Срд 19:32:10 1950842362
123.JPG 10Кб, 718x210
718x210
На вход подается некоторая строка. Выведите ее с отступами (количество пробелов, равное позиции строки, начиная с 0).

Подскажите, как еще можно решить эту хуйню? Мой ответ не принимает.
Аноним 24/02/21 Срд 19:33:36 1950843363
>>1950842
Ты там степик что ли дрочишь?
Аноним 24/02/21 Срд 19:34:19 1950846364
Аноним 24/02/21 Срд 19:35:23 1950847365
lolwhat.jpeg 14Кб, 259x194
259x194
>>1950842
> Выведите ее с отступами (количество пробелов, равное позиции строки, начиная с 0).
Аноним 24/02/21 Срд 19:37:42 1950848366
>>1950839
>Ты реально замеряешь время получения ответа с адресов LINK1 LINK2?

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


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

А как правильно делать? можно с примерчиком
Аноним 24/02/21 Срд 19:39:19 1950850367
>>1950847
Обожаю такие формулировки в курса, обычно это криво обработанные транслитом задачи с забугорных курсов. И попробуй угадай что от тебя хотели.
Аноним 24/02/21 Срд 19:40:13 1950852368
>>1950850
Я думаю что это всякие сраные математики. Упорятся своими абстракциями и только они понимают что хотят.
Аноним 24/02/21 Срд 19:43:53 1950858369
>>1950842
Какая нахуй позиция строки? Позиция строки где, в самой себе? Позиция подстроки (символа) в строке? Я также собес в пынькофф не прошел, потому что манда по скайпу задачи на логику давала с таким же условием.
Аноним 24/02/21 Срд 19:45:05 1950860370
>>1950848
> А как правильно делать?
Да просто убери его везде. Оставь только loop.run_until_complete.

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

> This module patches asyncio to allow nested use of asyncio.run and loop.run_until_complete.
Распорки какие-то.

Для чего тебе sslContext? Свои корневые сертификаты?
Аноним 24/02/21 Срд 19:45:45 1950861371
>>1950842
Ты что-то перемудрил, вангую что просто
for i in range(len(word)):
print(' ' * i + word)
Аноним 24/02/21 Срд 19:47:26 1950862372
>>1950842
Зачем тебе проверка i на равенство 0? У тебя всё равно в принте тогда будет ' '*0=none + word
Аноним 24/02/21 Срд 19:50:02 1950863373
>>1950861
>>1950862
Спасибо! Я что-то нахуевертил, поэтому у меня первое печаталось с пробелом, поэтому и вставил условие.
Аноним 24/02/21 Срд 19:50:12 1950864374
>>1950862
Точнее не none а пустая строка
Аноним 24/02/21 Срд 20:42:25 1950882375
>>1950834
Ты ебобо, импортирование дохуя времени занимает и ты тащишь библиотеки целиком в память
Аноним 24/02/21 Срд 20:45:19 1950883376
>>1950882
У него время замеряется после импорта.
Аноним 24/02/21 Срд 20:55:05 1950884377
Мне тут недавно пришлось вживую столкнуться с кодом на си(скажу честно ничего более отвратительного я не видел), как же я рад, что мне не приходится в питоне гуглить как правильно принтить числа и строки, но возник вопрос, стоит ли вообще понимать, например, указатели и т.д(как раз их я знаю, но наверное есть что-то еще такое же важное) для разработчика на питоне, как компилируется код, как выглядят инструкции, так же я только недавно начал в принципе осознавать, спустя год кодинга, что вообще означает интерпретируемый язык и какие ограничения это накладывает, вопрос нужно ли в принципе это понимать?
Аноним 24/02/21 Срд 21:02:15 1950890378
>>1950884
Еще ты наверное рад что тебе не нужны точки и нормально разбивать свои мысли.
Аноним 24/02/21 Срд 21:02:28 1950891379
>>1950884
прогаю на питоне, но до сих пор считаю си лучшим языком не свете
строго и лакончино - ничего лишнего
если не тащить его в поля типа комп зрения и прочего очень уж высокоуровнево говна - он топ
а про ограничения и тп - ну сам же можешь ответить на свой вопрос
конечно надо
Аноним 24/02/21 Срд 21:05:40 1950894380
>>1950884
> Мне тут недавно пришлось вживую столкнуться с кодом на си
> но возник вопрос, стоит ли вообще понимать
От тебя требуют писать на си? Если нет, то забей хер. Если хочется — покопайся, не повредит.
Аноним 24/02/21 Срд 21:10:08 1950897381
>>1950890
профессиональная питонодеформация видимо
Аноним 24/02/21 Срд 21:58:49 1950941382
>>1950884
>понимать, например, указатели
Нужно - чтобы понимать, что происходит с аргументами функции при их модификации. Например, что произойдет при присвоении нового значения числу, а что при добавлении элемента в массив. Изменятся ли они за пределами функции и почему?
>как компилируется код
Не нужно.
>как выглядят инструкции
Не нужно.
Аноним 24/02/21 Срд 22:04:57 1950947383
>>1950270
В голосяндру, содомит
Аноним 25/02/21 Чтв 02:02:12 1951050384
>>1950884
>стоит ли вообще понимать, например, указатели и т.д(как раз их я знаю, но наверное есть что-то еще такое же важное) для разработчика на питоне, как компилируется код, как выглядят инструкции, так же я только недавно начал в принципе осознавать, спустя год кодинга, что вообще означает интерпретируемый язык и какие ограничения это накладывает, вопрос нужно ли в принципе это понимать?
В принципе нужно, конечно же.
Это называется "системные знания". А система подразумевает знание очень много чего, что вроде бы напрямую в твоей работе не используется. Иначе это макакинг.
Аноним 25/02/21 Чтв 02:18:49 1951055385
>>1951050
Скажи, а какие еще знания из низкоуровневых языков стоит знать, указатели я понимаю, всякие разименовывания и пр., знаю как ассемблер работает в очень общем виде, знаю как выглядят машинные коды или как там это фигня когда байтам команды присвоены, даже в работу транзисторов погружался немного,что еще важно для общего развития?
Аноним 25/02/21 Чтв 02:32:23 1951058386
>>1951055
Все, поэтому оно собственно и общее
Аноним 25/02/21 Чтв 03:20:15 1951062387
>>1951055
ХЗ, не уверен, что я сам достаточно знаю.

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

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

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

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

В случае питона про то, как всё это реализовано внутри, на уровне Си кода.



Аноним 25/02/21 Чтв 03:33:05 1951063388
>>1951062
Кстати jit и компиляцию я еще не трогал, надо почитать
Аноним 25/02/21 Чтв 03:40:41 1951064389
>>1950457
Спасибо. Почитал и охуел немного.
Получается мне нужно отдельную ДБ где-то сохранять? Мне нужно буквально 2-3 ключа записывать. Есть ли какие-то альтернативы?

Вообще задача такая для параллельного тестирования, когда пайтест ранит один тест с таким-то юзером, нужно посмотреть, что этот юзер уже используется (logged in) грубо говоря, и тогда взять другого юзера из списка. Может ли это fixture сделать? Если да, то как.
Аноним 25/02/21 Чтв 04:52:55 1951067390
>>1951064
Просто записывать на диск нельзя юзернеймы? в виде жсона например, раз тебе скорость не нужна максимальная, либо просто в памяти нельзя хранить?
Аноним 25/02/21 Чтв 05:00:42 1951068391
Аноним 25/02/21 Чтв 05:56:50 1951075392
>>1951067
>>1951068
А ведь и правда. Спасибо! Зачем тогда ДБ вообще.
Другой вопрос, начался тест - юзер записался, пошёл другой тест, чекаешь, если юзер в этом словаре, то берёшь другой, если нет, то берёшь первый попавшийся. В конце нужно будет его очищать? Как это дело в фикстур обернуть?
Аноним 25/02/21 Чтв 10:02:38 1951130393
>>1951075
Бритва Оккама. Если эмулируешь редиску - словари, эмулируешь реляционку возьми SQLite. В проде будет конечно же все не так, но нахуя в тестах пулить коннекты да ещё с исключениями и реконнектами (если ты не ебобо заебашь коллбек другой)
Аноним 25/02/21 Чтв 10:04:49 1951132394
Аноним 25/02/21 Чтв 10:07:35 1951134395
>>1951130
Ну а что делать то? Проблема такая. Когда ранишь тесты параллельно, несколько тестов используют один и тот же аккаунт. Поэтому, чтобы не выкидывало дали задание, либо через редис записывать юзера и соответсвенно другого нужно выбрать из списка юзеров. Там таких всего 4 варианта. Но пока ничего лучше этого не услышал. >>1951067
>>1951068
Аноним 25/02/21 Чтв 12:30:40 1951213396
>>1950858
ты хотел утроится в тинькоф чтобы продавать услуги лохам?
Аноним 25/02/21 Чтв 12:33:15 1951216397
>>1950843
Степик топ или кал?
Аноним 25/02/21 Чтв 12:37:24 1951220398
>>1951213
Нет, на etl-девелопера
Аноним 25/02/21 Чтв 12:38:38 1951221399
Аноним 25/02/21 Чтв 12:45:00 1951225400
>>1950842

word = 'pizda'
out = f"{' '*len(word)}{word}"
print(out)
Аноним 25/02/21 Чтв 12:50:16 1951234401
>>1943168 (OP)
>— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
>МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
Нашёл на первый взгляд интересный курс по питону
https://www.youtube.com/playlist?list=PLlb7e2G7aSpTTNp7HBYzCBByaE1h54ruW
Не смотрел, надо бы час-два потратить, чтобы рекомендовать или нет. Но вроде бы больше именно про специфику питона, а не основы программирования вообще.

Может быть очень годный материал и стоит того, чтобы в шапку его воткнуть.
Аноним 25/02/21 Чтв 12:58:02 1951241402
>>1951234
По содержанию примерно как любая интермедиейт книга, тащемта.
Аноним 25/02/21 Чтв 13:04:14 1951245403
>>1951241
Некоторым больше хочется нормальных лекций, причём академических, а не в стиле тик-ток.

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

Вот ты сам можешь рекомендовать какие-нибудь три книжки подобные? Я только одну такую видел, называется intermediate python вроде бы.
Аноним 25/02/21 Чтв 13:13:50 1951247404
>>1951245
Если по алгоритмам то грокаем алгоритмы.
Аноним 25/02/21 Чтв 13:17:32 1951250405
Аноним 25/02/21 Чтв 14:19:03 1951320406
Аноним 25/02/21 Чтв 14:19:59 1951321407
>>1951250
Сколько всего книг по питону ты прочитал за жизнь?
Аноним 25/02/21 Чтв 19:12:42 1951637408
image.png 80Кб, 982x701
982x701
>>1943168 (OP)
Postgress, Python
Суп, ненавижу программировать, надежда только на вас.
Через джанго сделал мне чел чтобы я добавлял сразу в бд данные, в таблицу, вот зашёл на сервер через pgAdmin, не могу найти то что добавил. Это значит нихуя не добавилось или я неправильно смотреть? Так ведь надо посмотреть что хранится в таблице, через селект олл фром тейбл?
Аноним 25/02/21 Чтв 19:58:12 1951677409
image.png 52Кб, 644x544
644x544
Сап двач, помогите с модулем argparse
Как сделать, чтобы, когда пользователь вводит параметр, которого не существует, вылетала ошибка просто принт
Аноним 25/02/21 Чтв 21:41:08 1951750410
>>1951677
>Как сделать, чтобы, когда пользователь вводит параметр, которого не существует, вылетала ошибка
Разве по умолчанию он так не делает? Вот, я вбил учебную программку из документации 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

Тебе что-то другое надо?

Аноним 25/02/21 Чтв 21:48:06 1951757411
>>1951132
>>1951134
В общем менеджер сказал, что просто в памяти не будет работать на удаленной машине дженкинс, потому что ее запускают несколько человек.

Получается мне нужно поставить сервер и захочтить где-то - это я могу. Потом нужно подключиться и записывать пользователей .set. Каждый другой тест проверять .get если такой юзер уже есть, то взять другого, по окончанию теста удалить ключ и на всякий сделать его expire in 10 mins.
Вопрос, я не очень знаком с питоном вообще и фикстурами, как запилить это все в фикстур? Я так понимаю scope должен быть пер class.
Если кто-то готов серьезно помочь, могу скинуть денег или конфет купить. Спасибо!
Аноним 25/02/21 Чтв 21:56:57 1951762412
>>1943168 (OP)
Анончики, а у питона есть будущее в вебе? Я понимаю, что как язык для простых скриптов и подобного он монополист, а в мл по сути навсегда. Но что с вебом? Или надо уже на шарпы/пыху переезжать?
Аноним 25/02/21 Чтв 22:06:49 1951768413
Аноним 25/02/21 Чтв 22:09:08 1951769414
>>1951768
На го работы еще меньше, чем на питоне. И я серьезно спрашивал, если что
Аноним 25/02/21 Чтв 22:18:00 1951771415
>>1951762
На фронтэнде нет. Щас прибегут мне рассказывать про brython/transcrypt, но это скорее попытка сделать жс более похожим на питон.

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

Твой вопрос больше звучит как какое будущее у отвёртки в машинстроении. Будто бы выбор отвёртки сейчас решит вообще всё в будущем. Рассчитывай на то что ЯП неизбежно умирают со временем по тысяче разных причин, и что знание одного ЯП это автоматически сколько-то процентов знания всех других ЯП.
Аноним 25/02/21 Чтв 22:18:09 1951772416
>>1951762
>пыху
Работы дохуя, для тебя двери почти везде открыты за 20к лендосы на wp, но как только будешь искать что-то достойное, то окажется что вакансий мало и синьерность требуется высокая. С питоном мало ждуновских вакансий, слишком много вкатываются. За Шарп не скажу, но у них частенько вакансии попадаются.
>>1951768
Говно обычно требуется совместно с чем-то еще
Аноним 25/02/21 Чтв 22:24:34 1951780417
>>1951771
>>1951772
Так самое смешное, что я уже вкатился и месяц работаю. Просто почему-то в какой-то момент так начало казаться. А по поводу ждуновских вакансий на питоне — все так. Я кое-как работу нашел, но само место норм.
Аноним 25/02/21 Чтв 22:28:44 1951781418
>>1951762
Питон в вебе бывает двух видов. Либо джанго(рест), либо асинкио (aiohttp, fastapi и др).

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

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

На текущий момент платформа развивается и растёт, в том числе в веб приложениях.
Аноним 25/02/21 Чтв 22:38:51 1951785419
>>1951780
Я просто в свое время дрочил жангу, но по итогу вкатился в пыху, по причине отсутствия вакансий, но в пыхе как оказалось большинство вакансий говно на цмс, в итоге сижу делаю на Битриксе формы "благодарим за обращение! Мы вам перезвоним в течении 15 минут", указанные в вакансии ларавел видела только в техподдержке говнокода в который насрали фрилансеры индусские школьники. За полгода ни одного нормального проекта, все нормальные проекты проходят мимо меня тем кто посиньорнее, зато примерно полдня свободен и устроился стажёром на жабу, пилю потихоньку интерпрайз легаси, спринг, хибернейт, ждбс и всякая апачевская хуета, через пару месяцев перекачусь, а может и раньше.
Сейчас наверное могу на питон попытать счастье на удаленку, дажнгу повспоминать и наверное пройду, но по бэку вакансий очень мало, даже на руби больше.
Аноним 25/02/21 Чтв 22:54:18 1951790420
>>1951781
>Ты учишь не язык в первую очередь, а технологии программирования. Перекатиться с одного языка на другой в рамках одной технологии и одного подхода может даже проще, чем освоить с нуля технологию, оставаясь на привычном языке

Удвачиваю сам начал с питона+Джанго, потом продолжил в пхп+ларавел переход был плавный, там практически все тоже самое, в пыхе только первые 2 недели бесило доллары в начале переменной ставить, остальное совсем без проблем. Потом в джава+спринг, с языком вообще проблем не было, тем более что пыха по синтаксису ООП та же джава, даже сейчас типизация появилась и все стараются писать указывая типы, но вот со спрингом это пиздец как все сложно и не понятно, этот апликейшн контекст, бины, депенденси инжекшены, хуй пойми как оно работает, ещё и орм хибернейт со своими сложностями, какой-то ждбс между базой и орм, нахуя половина конфигов нужна, вроде все правильно собрал какого хуя весь терминал красный, что за томкет и вилдфлай, нахуй они нужны. Короче только через месяц начал что-то просто понимать.
Довелось побывать руби, вообще без проблем, увидел код и все понятно, рельсы практически та же джанга и ларавел, только синтаксис языка слишком сахарный, даже бложик написал ну почти дописал, забил под конец
Аноним 25/02/21 Чтв 23:56:20 1951820421
>>1951785
>видела
Телеграмочку/гитечку
Аноним 26/02/21 Птн 00:04:20 1951830422
Аноним 26/02/21 Птн 02:27:47 1951902423
>>1951757
У тебя Джанго что ли?
Аноним 26/02/21 Птн 02:33:29 1951903424
>>1951790
Я думаю они и сами не знают нахуя сделали из Явы (вполне себе понятный по конструкциям язык) полнейшую нечитабельную хуйню, а нечитабельна стала из-за кучи зависимостей, абстракций и вложенностей. На питухоне я могу спокойно оверрайдить говнометоды из библиотеки или вообще часть говна переписать под свои нужды.
А в Яве пока JDBC настроишь уже пожалеешь, ебучий в сраку DBeaver. А все потому что JVM, это явно из-за нее такие требования теперь.
Аноним 26/02/21 Птн 06:15:49 1951927425
Q all! Очередной нубовопрос по ООП.
1. Обязательно писать классы в отдельных файлах?
2. Интерфейсы из Java реализуются просто в классах штоле? Типа
class 2chable:
....def post_shit():
........pass
Аноним 26/02/21 Птн 07:37:56 1951935426
>>1951902
Не. Это тест Фреймворк, куэйщиков нормальных нет приходится разбираться.
Аноним 26/02/21 Птн 08:46:15 1951947427
>>1951927
>Очередной нубовопрос
Ну смари, класс это короче как в школе, училка это инит, завуч это итер, методы и данные это твои одноклассники. Понял?
Аноним 26/02/21 Птн 08:51:52 1951949428
>>1951927
1) Ну, если класс весь такой большой и используется в разных частях проекта в разных файлах, то рекомендуется, выносить в отдельный файл и импортировать оттуда.
2) hz kak tam v java
Аноним 26/02/21 Птн 10:27:00 1951984429
>>1951947
нет, я как-то больше традиционные аналогии понимаю. ну там Animal, Lion(Animal), Dog(Animal) etc
Аноним 26/02/21 Птн 11:58:49 1952041430
>>1951984
аналогия простая.
класс это тип обьекта
например мяч. с определенными базовыми параметрами
например он круглый.
остальное это уже ты можешь передавать в класс, например делать мячи для баскетбола, анальный шарик например.
все это будет класс мяч, но с разными целями. понятно что баскетбольный мяч в жопу не засунуть. в отличие от анального шарика.
Аноним 26/02/21 Птн 12:00:24 1952042431
>>1951935
Их местный что ли? Так а какого буя тестовой базы нет с кучей учеток? Что за галера такая уебищная?
Аноним 26/02/21 Птн 12:00:53 1952043432
>>1951927
Нет, но логику лучше соблюдать
Аноним 26/02/21 Птн 12:16:18 1952059433
>>1951757
>я не очень знаком с питоном вообще и фикстурами
Тогда почему ты этим занимаешься?
>>1951935
Фреймворк какой, pytest?
Аноним 26/02/21 Птн 16:07:37 1952398434
>>1943168 (OP)
Есть формат хранения информации нативный для питона аналог json, xml?
Т.е. чтобы можно было подсосать информацию, но чтобы не выполняло код.
Аноним 26/02/21 Птн 17:00:11 1952435435
Аноним 26/02/21 Птн 17:25:14 1952459436
Салам, гайз
Сопоставляю инструментарий flask-sqlalchemy и собственно sqlalchemy

Интересуют методы экземпляра таблицы, например, метод coloumns. Нашёл его во flaske в db.table(table_name).colomns. но этот сучок возвращает пустой спископодобный объект, как и все методы экземпляра таблицы. То есть структуру таблицы вообще не посмотреть отсюда. Итого два вопроса:
1. Какого это хуя такое поведение?
2. Как получить доступ к этим методам из flask-sqlalchemy?
Спасибо
Аноним 26/02/21 Птн 17:31:08 1952463437
Аноним 26/02/21 Птн 17:36:41 1952470438
>>1952459
А ты что хочешь то? Нахуя тебе метод колонка в орм? Если выебистый дохуя, то пиши на чистом sql
Аноним 26/02/21 Птн 17:43:05 1952475439
>>1952470
Чисто ради того, чтобы разобраться со структурой фреймворка. Ебучая колонка мне нужна, но хотелось бы знать, что через экземпляр базы данных я могу получить доступ к экземплярам таблиц, а через них к экземплярам колонок. Ебучая колонка мне не нужна, но и метод count не пашет в db.table(tablename).count. Я знаю другой способ посмотреть количество рядов в таблице, но какого хуя не работает самый логичный из способов?
Аноним 26/02/21 Птн 18:07:14 1952509440
>>1951927
>1. Обязательно писать классы в отдельных файлах?
Нет, это не Джава. В питоне это не обязательно, нет рекомендаций pep8 и традиций.

> Интерфейсы из Java реализуются просто в классах штоле?
В питоне нет интерфейсов в том смысле, как в Java. Там совсем другая модель ООП.
Аноним 26/02/21 Птн 18:31:51 1952568441
>>1951820
Это была просто опечатка, с телефона писал)
Аноним 26/02/21 Птн 18:43:45 1952590442
Аноним 26/02/21 Птн 18:48:25 1952593443
Сап гайз, какой гуй используете под дэсктоп? Я нашел eel. Там html + css, но в добавок вручают тяжелый чемодан с js. Вот в js прям не хочу вникать. Да еще и хром должен стоять. Может есть что интереснее?
Аноним 26/02/21 Птн 18:54:20 1952597444
>>1951903
Да, это бесит язык вполне себе годный, но то что с ним делают это пиздец. Синтаксис понятный и простой, JVM шустро работает, написал тогда одну фичу надо было около 100000 обойти посимвольное чтение, регулярки и прочие радости, запустил и решил кофе попить, встаю со стула, а оно закончило, за 20 секунд 100 000 файлов примерно по тыще строк, КАРЛ! Но как открываешь какой-нибудь проект Spring+JDBC+Tomcat то пиздец тысячи классов и интерфейсов которые делают нихуя, ради всяких солидов и во славу сатане делают классы с 1-2 методами и куча интерфейсов для красоты и инверсии зависимостей. В питоне принято более лаконично и аккуратно писать по сравнению с жабой.
Аноним 26/02/21 Птн 19:12:01 1952609445
>>1952593
Qt самое интересное, но он для с++ изначально
Аноним 26/02/21 Птн 19:15:21 1952612446
>>1949252
Раз такая пьянка, может ты знаешь, как отключить стандартный эксплорер и запустить вместо него своего менеджера?
Аноним 26/02/21 Птн 19:16:17 1952617447
>>1950696
Реально клон кстати, но сервиса небольшого, выше обсуждалось как асинхронно запросы делать, вот это моя ветка, по сути джанго рест апи сделать + планировщик + функции для вызова стороннего апи телефонии, чтобы отдавать буда звонки и т.д, на первом собесе рассказывал про себя, обсуждали тз, на втором смотрели конкурента и я рассказывал что и как реализовывать буду по всем функциям, потом он меня выбрал, а сейчас еще договор просит подписать)
Аноним 26/02/21 Птн 19:45:46 1952652448
>>1952593
Про Qt уже сказали, для него в питоне есть обвязки PyQT и Pyside, еще можно упомянуть WxPython, это обвязка для WxWidgets, там стараются по возможности использовать встроенные возможности ОС, поэтому на разных ОС приложение будет смотреться органично
А вообще есть из чего выбирать:
https://github.com/vinta/awesome-python#gui-development
Аноним 26/02/21 Птн 19:57:15 1952667449
здарова братва
короче сейчас перекатываюсь из игроиндустрии, где писал на спп
хочу подготовиться к собесам через пет проект
вопрос: есть ли у вас, примерно, идеи чтобы такого замутить, чтобы показать и знание крестов и знание питона?
Аноним 26/02/21 Птн 21:01:29 1952716450
>>1952667
Любое десктопное приложение с плагинами на питоне
Аноним 26/02/21 Птн 21:02:59 1952717451
>>1952716
Бля, отвечал на вопрос про пет-проект, капча заставила выбирать картинки с ВЕЛОСИПЕДАМИ.
Аноним 26/02/21 Птн 21:05:07 1952718452
двачеры, хуячеры
у крестоносцев в треде был момент, когда они делились норм работодателями (к которым ходили на собесы либо наслышаны)
и что спрашивали на собесах
го мб также?
Аноним 26/02/21 Птн 21:10:29 1952720453
Всем привет! Есть ли более простой способ кроме джойна получить из 12.3.400.55 получить 123400?
Аноним 26/02/21 Птн 21:11:47 1952721454
>>1952059
Потому что больше некому, я тут самый юный в общем.
Да, фм на пайтесте.
Аноним 26/02/21 Птн 21:12:54 1952723455
>>1952042
Есть же. Нет механизма, который был записывал учётку при каждом тесте, чтобы избегать повторения аккаунтов.
Аноним 26/02/21 Птн 21:21:36 1952728456
>>1952720
> из 12.3.400.55
Что это, строка?
Зачем получать?
Аноним 26/02/21 Птн 21:24:38 1952731457
>>1952720
>>> s = '12.3.400.55'
>>> s2 = s.replace('.', '')
Аноним 26/02/21 Птн 21:47:33 1952740458
>>1952728
Строка. Нужен парсенный ин-т. >>1952731
Ты забыл [-1] в конце. Это лучшее что я придумал.
Может ещё есть варианты? Что если точка сместится и будет 11
Аноним 26/02/21 Птн 21:54:20 1952741459
>>1952728
Эта строка должна быть ин-том, который потом будет передаваться в фикстур как версия на которой ранить или скипать.
Аноним 26/02/21 Птн 21:57:07 1952742460
>>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)
Аноним 26/02/21 Птн 22:00:47 1952746461
image.png 5Кб, 459x111
459x111
>>1952741
Можно прям секвенсы сравнивать.
Аноним 26/02/21 Птн 22:03:47 1952747462
>>1952746
Хотя там всё равно будут строки, надо ещё прокрутить через map какой.
Аноним 26/02/21 Птн 22:24:50 1952761463
DCtv ghbdtn
есть словарь. далее совбственно вопрос как используя данные словаря, делать запросы к JSON если есть условие что если as_cnt меньше 100 то все так и оставляем.
если больше то делаем несколько запросов с увеличением src на 100 до условия src = as_cnt c округлением до целого.

https://pastebin.com/gzEzGq1u
Аноним 26/02/21 Птн 22:30:06 1952766464
>>1952740
может так
''.join(s.split('.')[:-1])
или не очень понятно ТЗ, какие ограничения на строку.
Аноним 26/02/21 Птн 22:58:27 1952785465
>>1952617
Вот если взять зарплату как 10 долларов в час, что как бы очень скромно. Ты уверен, что вот в состоянии эту работу сделать за две недели? Причём добавь время, потраченное на собеседования, в эти самые две недели.

Ты берёшься за проект с кучей технологий. Ну реально, не смешно просто.

Аноним 26/02/21 Птн 23:02:20 1952787466
>>1952761
И в чем проблема? Простейшие проверочки-циклы.
Аноним 26/02/21 Птн 23:04:33 1952790467
>>1952787
как данные для requests.post брать из дикта.
Аноним 26/02/21 Птн 23:05:36 1952792468
>>1952617
Вот реально, подумай десять раз, прежде чем браться, и особенно думай, под чем в договоре подписываться. А то будешь возмещать какую-нибудь упущенную выгоду из-за того, что не реализуешь, что надо. Или впахивать полгода, пока все хотелки не сделаешь.

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

Такие заказчики потом очень долго будут мозг ебать.
Аноним 26/02/21 Птн 23:11:16 1952797469
>>1952790
Ну тебя же есть
data = {'dmn':'code','src':'100'}
пишешь
data = {'dmn':'code','src':doc['as_cnt']}
Можно сделать базовые параметры и мерджить. https://ideone.com/emMCTC
Аноним 26/02/21 Птн 23:52:19 1952810470
>>1951637
>Django
Не удивлен, если там ошибка джангодебила, так как просто не сейвится запись или constraint не указан AUTO_INCREMENT
m =Model(...)
m.save()

Аноним 27/02/21 Суб 00:40:44 1952814471
>>1952746
Норм.
>>1952766
Ограничения: строка может быть не обязательно 1.22.333. Можно быть 11.1.333
Может можно как-то regex примерить?
Аноним 27/02/21 Суб 01:45:39 1952833472
>>1952814
>из 12.3.400.55 получить 123400
>1.22.333
>11.1.333
Ты уж определись, у тебя 3 сепаратора или 2.
Аноним 27/02/21 Суб 01:59:02 1952838473
>>1952814
>1.22.333. Можно быть 11.1.333
И что нужно получить из этих строк?
122333 и 111333?
Должны учитываться длины подстрок? Как?

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

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

Не ясна твоя задача.
Аноним 27/02/21 Суб 02:09:21 1952840474
>>1952797
спасибо разобрался.
Аноним 27/02/21 Суб 02:23:33 1952842475
>>1952833
Так в том и прикол. Что бывает 3, а бывает 2.
Аноним 27/02/21 Суб 02:24:46 1952843476
>>1952842
Тогда в чём проблема взять ''.join(s.split('.')[:3]) ?
Аноним 27/02/21 Суб 02:25:05 1952844477
>>1952838
>122333 и 111333
Да. >>1952838
>Можно тогда всё нормировать к виду
>011001333 и 001022333, например,
Да, так тоже норм.как это сделать проще, чем сплитом или реплейсом?
Аноним 27/02/21 Суб 02:39:52 1952846478
>>1952792
Ну ты меня напугал, конечно, тз вроде сформировано, заказчик пока адекватный, главное технарь а не менеджер, договор естественно прочитаю, я прямо сейчас сижу и смотрю тз, составляю план как что выполнять и т.д и понимаю что на деле все проще чем казалось, рест сервис сделать и работу с их сервером асинхронную, пока заказчик на все отвечает, все что нужно типа документаций присылает, пока не вижу проблем, так же мне нравится что есть конкурент и просят упрощенную копию сделать, многие функции вырезаны из тз, а на многие вещи, которые изначально есть в тз я просто говорю этим будет заниматься фронт, я только апишечку сделаю. Гораздо больше геморроя было когда я подписался с тиктоком работать, дропнул спустя 2 недели, заработал копейки сущие, да еще и по итогу ничего не получилось, а тут пока все прозрачно, но спасибо, все же нужно наконец над чем-то серьезным поработать, когда сделаю уж точно не буду вкатывальщиком(хотя бы частично). Алсо меня пугает слово собеседование, скорее просто созвон, чтобы познакомится и еще один в котором я рассказывал как реализовывать буду, все же компания настоящая, у них уже многое есть, типа серверов, баз, сайтов и т.д, поэтому вполне логично что они не будут по приколу рандому деньги отправялть, самое забавное что меня нашли на хабре, который я заполнил быстро ради одного заказа заинтересовавшего меня
Аноним 27/02/21 Суб 10:42:05 1952897479
image.png 44Кб, 640x480
640x480
>>1952609
>>1952652
Спасибо, аноны.
Особенно за ссыль на весь список. Kivy, curses и urwid уже щупал. Как и eel, про который писал изначально. У киви есть расширение с более современными элементами - KivyMD. Но всё таки он больше подходит для мобил.
Вторые два понравились тем, что это собственно не гуи, а туи, обязательно к этому вернусь, когда появится время на пэт-проектики. А про QT я всегда думал, что интерфейс хоть и будет работать, как часы, но выглядеть будет, как на пикче (что уже вот уже буквально скоро может уже смотреться не просто как старьё, но и даже по олдовому круто, как туи лол). Всё таки на HTML+CSS (в списке это eel) красивее всего морда должна получаться по логике, потому что запилить можно в буквальном смысле абсолютно любые кнопки, поля, градиенты и т.д. в конце концов оно конкретно для этого и придумано. Но по списку пробегусь по всему. Еще раз спасибо.
Аноним 27/02/21 Суб 14:17:03 1953045480
>>1952844
В программировании половина решения - это грамотно сформулированное задание. Вот как только ты сформулируешь логику, что и как в каких случаях должно быть, так сразу будет понятно решение.

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

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

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

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

Все проблемы решаемы, когда ты понимаешь, что именно тебе решить надо. Может быть тебе вообще не надо всё к инту сводить, а лучше остаться в строках.
1 27/02/21 Суб 14:18:54 1953050481
Записался на курсы GeekBrains, друзья программисты говорят долбаеб
Аноним 27/02/21 Суб 15:22:49 1953113482
>>1952897
Воистину, ищите, да обрящете. Я искал годный гуй для питона под десктоп давно, сейчас вообще пригорело уже, уже почти смирился с тем, что придется повникать в джаваскрипт ненужный, что б делать по красоте. А счастье то было перед носом. Никто не запрещает пилить в киви под дэсктоп! По красоте киви не отличатся от html+css+js. А про анимации в киви я не предполагал, потому что раньше не видел статей на хабре про анимацию. Они может вообще недавно появились. На киви пилят под мобилы в основном, ну я и отмел сразу не вникая, а это блин топчик! Мультиплатформ есть, поддержка есть, версия 2 вышла недавно, брат жив и все такое. Я стопудов определился со своим стулом, если вы понимаете о чем я!
Аноним 27/02/21 Суб 15:34:12 1953119483
Можно ли как-то gpg напрямую из скрипта передать passphrase, минуя необходимость мануально вводить это дело во всплывающее окно? Покурил малость доки - не нашёл чего-то такого. Может, какой хак есть.
Аноним 27/02/21 Суб 16:01:15 1953140484
>>1953119
Отбой, нашёл случайно - --pinentry-mode loopback.
Аноним 27/02/21 Суб 16:45:51 1953162485
>>1953050
тоже взял, но ради сертификата по ML, на остальное похуй
Аноним 27/02/21 Суб 17:01:51 1953175486
>>1953162
Как будто кому-то всрались эти сертификаты, лол.
Это даже скорее минус, сразу показывает тебя генерик вкатышем с фантиками.
Аноним 27/02/21 Суб 17:06:30 1953179487
>>1953175
Я уже работаю, даже в продакшене поделки работают, но я в одно рыло все делаю. Ну и интересно будет посмотреть как меня "трудоустроят".
Хотя эти корочки, да даже какие-то проекты хуетень. Нарвался на простейшую ошибку с блокировкой multiprocessing.Pipe и не мог понять проблему в течение недели. К такому ни один курс не подготовит. В исходниках кстати видно, что если Pipe(duplex=True), то действительно используется блокировка на запись, если не было чтения. Ну не пиздец ли..
Аноним 27/02/21 Суб 20:26:16 1953350488
>>1953045
Только сейчас разобрался, спасибо. На входе 12.3.444.22 - всегда три делиметра. Из этого нужно получит 123444 без точек обычным интом.
Я сделал сплит по точкам и джойн листов в строчку кроме последнего (.22) и обернул в int.
Но выглядит как-то нечитаемо для такой простой задачи..
Аноним 27/02/21 Суб 21:36:52 1953388489
1111.png 16Кб, 451x315
451x315
Не бейте ссаными тряпками, лучше памахите.

Сам я ни разу не программист, но угодно высшим силам в виде научрука, чтобы я на питоне написал график. Дано джва файла формата .dat, надо сделать красивый график по типу пикрил, и кое-как я сумел. Теперь нужно, чтобы на нём появились точки из второго датасета, в виде, собственно, красных красивых точек. И вот как это сделать - я совершенно не знаю...
Аноним 27/02/21 Суб 21:42:15 1953396490
Аноним 27/02/21 Суб 21:48:22 1953401491
>>1953396
Спасибо, но как заставить один из них быть именно в виде точек?
Аноним 27/02/21 Суб 21:55:27 1953415492
>>1953401
>plt.plot(x2, y2)
plt.plot(x2, y2, '.', color='red');
Аноним 27/02/21 Суб 22:27:06 1953434493
спасибо за книги
Аноним 28/02/21 Вск 09:57:57 1953611494
Народ, предельно глупый вопрос. Что написать, дабы продолжать оттачивать скиллы, как начинающему разработчику?
Уже писал бота, который в процессе ещё парсит сайт, менеджер паролей, простейший ETL процесс со сбором, трансформацией и выгрузкой в Postgres, голосового помощника
Сама идея петов ради того, чтобы были, мне отвратительна, но надо где-то брать практику
Аноним 28/02/21 Вск 10:17:06 1953617495
Аноним 28/02/21 Вск 11:05:07 1953640496
Аноним 28/02/21 Вск 11:08:26 1953644497
Аноним 28/02/21 Вск 11:48:49 1953662498
Как не бросить проганье от постоянного селфхуесосинга за то, что не получается что-то с 1 раза, или за 15 мин в башке не наступает озарение как что-то сделать, и начинается прокрастинация или перекладывание задач?
Аноним 28/02/21 Вск 14:45:35 1953799499
>>1953662
Никак. Это должна быть мотивация
Аноним 28/02/21 Вск 15:26:35 1953827500
>>1953662
Берешь и не бросаешь.
Аноним 28/02/21 Вск 15:42:17 1953833501
image.png 1Кб, 97x102
97x102
Сап двач, нужно заполнить массив. Создаю его через инпут 2х значений и после np.zero(a , b)
А как после его заполнить?
Нужно заполнять по рядам, но хз как сделать, чтобы заполнение подходило для разных размеров массива.
Сделать нужно, как на пике примерно. 4, 5 размер массива
Аноним 28/02/21 Вск 15:45:40 1953836502
image.png 16Кб, 329x431
329x431
>>1953833
смог сделать только так, а как рядами вводить я хз
Аноним 28/02/21 Вск 17:48:35 1953935503
Screenshot 2021[...].png 169Кб, 1130x1048
1130x1048
Что за прикол, в джупитер ноутбуке лог из библиотеки loguru принтуется дважды, но только в первый раз?

В терминале всё в порядке
Аноним 28/02/21 Вск 18:28:42 1953954504
Screenshot 2021[...].png 92Кб, 694x884
694x884
>>1953935
Уже этот вопрос не интересует.


А интересует вот что (пикрелейтед)
Аноним 28/02/21 Вск 18:33:04 1953960505
>>1953954
Модуль traceback
Дальше сам
Аноним 28/02/21 Вск 18:48:35 1953980506
Аноним 28/02/21 Вск 20:41:51 1954038507
Расскажите в теории как связывают отдельные api, чтобы везде была одна сессия, т.е есть 5 микросервисов, каждый требует пермишонов, как передают юзера, особенно если сервисы написаны на разных фрейморках\языках? Вот есть у меня сервис, как мне лучше всего получать данные о пользователе?
Аноним 28/02/21 Вск 21:18:01 1954068508
>>1954038
А в чем проблема? Выдаешь токен и все проверяют.
Аноним 28/02/21 Вск 21:27:10 1954083509
Привет, погромач
Я бы супер сильно хотел к вам вкатиться. А точнее в IoT. У меня есть работа, с зп все тоже заебись, но я как раз больше аналитик и рп и пару раз был краем на IoT проекта. Это было просто оxуенно - люди приносят реальную пользу и помогают в развитии, в отличии от меня.
Насколько это ссаная затея? Или для этого надо двести лет?
Спасибо за внимание
Аноним 28/02/21 Вск 22:52:20 1954132510
,fvg
Аноним 28/02/21 Вск 22:53:46 1954134511
>>1953960
Таки еще можно использовать inspect
called_from = inspect.stack()[1][3]
Аноним 28/02/21 Вск 23:01:17 1954146512
Аноним 28/02/21 Вск 23:05:22 1954149513
image.png 15Кб, 392x275
392x275
Аноним 28/02/21 Вск 23:18:31 1954164514
>>1954083
Я не понял о чём ты.
Аноним 01/03/21 Пнд 01:40:20 1954273515
>>1954083
IoT обычно про некоторую хардварь, которую ты условно вставляешь себе в ботинок и оно считает шаги. Есть systems on a chip способные тащить микропитон, возможно тебе стоит посмотреть на это. Но IoT всё-таки не про питон, питон там просто рядовая отвёртка.

мимо-диван
Аноним 01/03/21 Пнд 06:41:21 1954316516
Друзья, вопрос по fixture.
Как настроить такую, которая будет при запуске каждого тест класса будет заполнять переменную, скажем Count, которая будет запрашиваться из другого метода. Далее, если смотрим if count > 2: делай это, елсе: делай то.
Аноним 01/03/21 Пнд 07:53:34 1954325517
>>1953662
Если тебе это поможет, то даже на работе я постоянно туплю и могу иногда целый день делать какую-то простую вещь. Ну как простую, когда ты с ней разобрался, то уже простую, да.
Аноним 01/03/21 Пнд 11:41:23 1954436518
>>1954325
ты работаешь программистом?
Аноним 01/03/21 Пнд 16:56:31 1954785519
>>1954134
Охуенно, спасибо тебе огромное.
Аноним 01/03/21 Пнд 20:56:40 1954980520
Аноним 01/03/21 Пнд 23:49:39 1955123521
Аноним 04/03/21 Чтв 01:18:01 1956928522
>>1954273
Какая хардварь, братюнь? STM32 есть DIY ESP32, есть куча модулей под Arduino или Pi. Придется конечно физику подтянуть да и азы радиоэлектроники, но это херня. Но туда лучше C++ совать, нежели микропитуху, ресурсов то с гулькин нос.
Аноним 04/03/21 Чтв 01:19:49 1956929523
>>1954325
не трави душу. все никак не мог собрать Jinja2 темплейт XMLный, по привычке указал в одном месте attrib1="foo", attrib2="bar" и заебался искать ошибку, а была одна ебучая запятая.
Аноним 23/03/21 Втр 14:19:53 1975209524
image.png 786Кб, 1829x501
1829x501
Анонче, подскажите, в какую сторону курить про цвет заглушки?
У нормальных фильмов есть нормальная пикча для фона, у говна - заглушки, так вот, как цвет заглушки подбирается, отталкиваясь от постера? Ну не руками же они это делают
Аноним 23/03/21 Втр 14:26:39 1975223525
image.png 819Кб, 1814x559
1814x559
image.png 738Кб, 1885x502
1885x502
>>1975209
Вот еще две пикчи, если хуёво объяснил. Нормальный фильм и говно. У говна цвет заглушки в цвет к постеру всегда. Как этот цвет автоматом подбирается? Типа надо писать неебовый метод какой то по анализу джипега?
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов