Этого треда уже нет.
Это копия, сохраненная 1 февраля 2022 года.

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

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

Предыдущий: >>2138718 (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
image.png96 Кб, 959x288
2 2151343
Пхахах пацаны прикиньте тут в профайлере написано cumtime
лол
3 2151353
https://www.youtube.com/watch?v=k-fwgO6m-9M

Пробелошизик опять обоссал себе штаны
4 2151374
>>51353
Сейчас бы нонейма слушать
5 2151376
>>51353
Евангелист Мозиллы, который стал придворным шутом в ХТМЛ Академии. Лицо представили?
6 2151394
Как-то можно множественные условия вида
if a == b or a ==c or a ==d
более компактно записать?
7 2151401
>>2150856 →
Эт вроде зависит от используемых библиотек + от системы
8 2151405
>>51394
a in (1, 2, 3)
9 2151406
>>51394
for elem in (b, c, d):
----if a == elem:
--------do_shit()

но вообще так не делают ,пиши нормально
14228924481023436620.jpg52 Кб, 448x482
10 2151413
Screenshot from 2021-09-06 12-18-08.png5 Кб, 223x94
11 2151425
>>51353
У тебя синдром дефицита внимания и гипеактивность. Ты не разобрался в аргументах видео и того, что тут говорили, а сразу постить сюда пытаешься.

> File "/home/<anon>/demo.py", line 5


> print("World")


> ^


>IndentationError: unindent does not match any outer indentation level



Для питона и yaml проблема имеет особое значение, потому что табы и пробелы несовместимы между собой. Ещё особая роль у табов в make-файлах.

Здесь проблема чуть сложнее, чем визуальное отображение в редакторах.

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

Учти, что библиотечный код питона при этом тоже полностью на пробелах.

Корень проблем в совместимости, а не во вкусах.
12 2151426
>>51425
Долбоеб блять
Тебе уже 500 раз пояснялось, что современные ide изи конвертируют табы в пробелы
Ты че в блокноте или в виме хуяришь?
Напоминаешь шизика, который топит за написание жс-кода исключительно в стиле es5 "шоб точно работало во всех браузерах", когда ему начинают пояснять про транспиляторы, лишь раздаются визги "вы ничо не понимаете" и наша принцесса убегает в закат
13 2151447
>>51426
У тебя не просто СДВГ, но ещё и какие-то аффективные расстройства коммуникации.

Вот ты пишешь код. Я хочу внести в него правку. Чтобы я смог внести правку, мне надо под твой файл перенастроить редактор, чтобы он работал с табами. Когда в соседнем окне и для других людей мне нужны настройки с пробелами. Нет, я не буду перенастраивать редактор, просто не буду в твой код что-то вливать. И не пущу тебя в свой код, чтобы ты там табами пачкал.

Да, если вдруг твой код мне понадобится, то я легко пропущу его через автозамену. Но только я тебе потом влить его не смогу, потому что он полностью перезатрёт твой.

Проблема совместимости. А отсюда то, как принято в сообществе. В сообществе питона только пробелы.

Можешь жить в своём мирке и делать как считаешь идеальным, с сообществом не пересекаться, никто не запрещает.
14 2151450
>>51426
Падажжи, если они конвертируют, и в итоге все равно в коде пробелы, то за какие именно табы копротивление? Чисто за клавишу что ли? Ну так что жать - это дело вкуса, тебе-то какая разница кто каким пальцем отступы ковыряет, если в коде один фиг пробелы получатся.

Алсо, кулстори в тему - пришел как-то проект на поддержку, там не было соглашений/линтеров и т.п., не удивлюсь, если часть предыдущих разрабов в блокноте код писала. Потому что по всему проекту было сраное месиво из табов и пробелов. Так вот когда мы его завели в гит, оказалось что в интерфейсе битбакета таб равен ВОСЬМИ пробелам. Как это выглядело - врагу не пожелаешь. пыха, хуле
15 2151460
>>51447

> мне надо под твой файл перенастроить редактор, чтобы он работал с табами


Он сам работает с табами, дурында. Ты вообще с этим не сталкивался, а корчишь знатока. Съеби.
16 2151465
>>51460
Редактор при нажатии на Tab обычно по-умолчанию делает замену на пробелы. Потому что так принято, поэтому это уже давно настройки по-умолчанию. Отображение пробелов-табов можно поставить, вот тут они показаны >>51425
17 2151466
>>51465
Редактор с пробелами сможет загрузить табы и наоборот, вопрос только в консистентности, которая как раз соблюдается в масштабе одного редактора.
18 2151474
>>51466
В рамках одного проекта, одной кодовой базы, невозможно совмещать табы и пробелы. Для питона в виду известных вещей это абсолютно критично.

Или твой проект должен быть на табах, или на пробелах. Таб это символ с кодом аски-кодом 9, пробел это символ с аскикодом 32.

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

Когда ты пытаешься внедрять табы в питон-код, ты создаёшь большие проблемы для других. Причём из-за ерунды. Вот и всё.

Когда будешь вести какие-нибудь серьёзные проекты, когда сможешь пытаться правила навязывать. Только не будешь, потому что с тобой никто в команде работать не захочет. А в одиночку серьёзные вещи не делаются.
19 2151476
>>51474
Я не понимаю, почему ты споришь. Это настраивается и это работает. Ты с этим не сталкивался, потому что это работает, а всё равно споришь.
20 2151478
>>51474

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


бляяяя
ты врубаешься вообще что таб конвертируется в пробел и наоборот по щелчку пальцев мыши? или нет?
21 2151485
>>51478
Ты предлагаешь лезть куда-то в настройки и чего-то править то в одну сторону, то в другую. Зачем?

Вот ты залил на гитхаб код с табами. Мне надо серьёзно переработать код. Я его скачиваю, делаю замену на пробелы. Если я после этого волью правки, с точки зрения гида это будет уже весь мой код, 100% замена кода будет. Мне надо конвертировать пробелы в табы обратно? И помнить, какой файл в каком формате?

Есть единые стандарты. Они не всегда идеальные, но их надо придерживаться, если нет возможности стандарты изменить.

А такой возможности нет. Переписывать все проекты на табы никто не будет, только потому, что так тебе кажется более современным.
22 2151493
в догонку из PEP8

На этом тему считаю исчерпанной
23 2151543
24 2151556
Че за тема с пробелами и табами? Я нахуярил в пучарме код совмещая табы и пробелы. Он без проблем запустился
25 2151566
>>51556
Ты в курсе как работает ide?
26 2151574
>>51543
Код показывай, мы то откуда знаем какие у тебя либы и как все настроено
skuf4.png71 Кб, 218x231
27 2151612
>>51493

>в догонку из PEP8

28 2151617
Питоны, чем сейчас модно генерировать документацию из докстринг?
29 2151707
>>51465
Тупой редактор так делает. Нормальный смотри что там было и оставляет - были табы оставит табы, были пробелы заменит таб на пробелы (vscode).
30 2151790
Поясните плис. Вот читаю хх. Если со стеком что относится к питону более ясно. Я про бек например, ну там флас или джанго или из апи чтот. А вот что относится к деплою, девопу, тут куча всего идет, и кубернетес, и докер, и графана, и кафка, и еще дох чего, та же жира напр. Так вот. Какие такие связки учить или юзать. Или вообще пох, потом скажут, почитать доки, да деплоить и девопать.
image.png431 Кб, 610x385
31 2151854
Пикрил подходит к тебе и говорит "Слыш, скажи вим крута!"
Твои действия?
32 2151860
>>51854
По ssh я пишу в виме, а обычно я пишу в фар менеджере. Съеби, щенок.
33 2151861
>>51854

>Твои действия?


:q!
34 2151921
Все, с субботы вкатываюсь в айти
35 2151930
>>51921
Неси пивас, Петрович, вкатим тебя.
36 2151955
>>51231 (OP)
Анонче, реквестирую книгу по асинхронному веб питонычу. Вообще задача вникнуть в Django Channels , но я готов начать и с каких-нибудь асинхронных фреймворков в общем смысле.
37 2151960
>>51955
Тут был какой-то маняасинхронщик, писавший свои васянские поделки
image.png174 Кб, 512x288
38 2151965
Добрый вечер, друзья. Хочу попросить вашего совета. Моя история такова. Был у меня питон установлен, использовал я его для написания мелких скриптов по работе, установлен был давно и все было хорошо. Вовремя обновлял, когда надо было подгружал библиотеки через pip и радовался своим незатейливым скриптам, которое мне здорово помогали обрабатывать однотипные экселевские книги. Но наступили мрачные времена и волей случая пришлось обновить компьютер. И вот начал я устанавливать питон. И ЖИЗНЬ МОЯ ПРЕВРАТИЛАСЬ В АД!Ну думаю установлю сразу анаконду -вроде удобно. Скачал и поставил. Потом начал пытаться настроить. Но не тут-то было. ПИП вообще никак не вызывался и не становился привычными для меня способами. БОЛЕЕ ТОГО! Ни один из найденных на форумах способов через CMD вызвать питон не увенчался успехом. Понимаю, что скорее всего что-то делал не так я. Вот. Короче не смог я разобраться с тем как и в каком виде лежит этот питон в пакете анаконда. Когда через тот же cmd я пытался найти питон, мне деликатно предложили его скачать - открылась ссылка на майкрасофт стор. Закралась мысль, что питона-то может на компе и вовсе нет или он какой-то не такой. Ну скачал. Пип установил. Но вот в чём беда. Посидев ещё немного, все же нашёл я этот сраный питон в сраной конде. Теперь у меня их два. Причём CMD наотрез не видит того, который установлен с кондой (версии, к слову, разные), а конда, выходит не знает о существовании новой версии на компе. Командная строка любыми магическими командами не находит кондавский питон, но находит свежеуствновленный. ЕЩЁ! Раньше через строку я вызывал питон командой py. Теперь она не работает, работает только команда python. Тоже не понимаю почему. ТАК ВОТ. Может кто-то объяснить мне всю эту магию или стоит снести всё нахер пока не поздно и устанавливать по какому-то определенному алгоритму?
39 2151969
>>51965
винда?

взял и установил дефолтный интерпретатор с оф сайта для начала, потом и анаконду душить будешь
40 2151970
>>51960
Ну вот мне бы вникнуть в это все с азов. Дальше задачи об обедающих филасафах с курса операционных систем и базовых упражнений по запуску тредов я не делал. Вообще для этого можно сразу на Go писать, но задача для начала разобраться с питоном в этом вопросе(в вопросе асинхронного веба)
41 2151972
>>51969
Винда 10
42 2151978
>>51970
go на мультрединге хуярит а не на асинхронище если че

почитай про промисы в жс и event loop https://learn.javascript.ru/promise-basics https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
потом про генераторы, ебана, в питоне асинхронка на генераторах https://webdevblog.ru/vvedenie-v-generatory-python/ https://realpython.com/introduction-to-python-generators/
потом про async/await питоновский и asyncio какие-нибудь курсы позырь
43 2151981
>>51972
Удали к херам анаконды и сторонние питоновские интерпретаторы, загрузи установщик с python.org и ебошь
44 2151988
>>51978

>go на мультрединге хуярит


Там неявное переключение контекста, то есть await'ы есть, но их расставляет за тебя компилятор

https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html

>What’s brilliant about the Go cooperating scheduler is that it looks and feels preemptive. You can’t predict what the Go scheduler is going to do. This is because decision making for this cooperating scheduler doesn’t rest in the hands of developers, but in the Go runtime. It’s important to think of the Go scheduler as a preemptive scheduler and since the scheduler is non-deterministic, this is not much of a stretch.



>There are four classes of events that occur in your Go programs that allow the scheduler to make scheduling decisions. This doesn’t mean it will always happen on one of these events. It means the scheduler gets the opportunity.


>The use of the keyword go


>Garbage collection


>System calls


>Synchronization and Orchestration

image.png656 Кб, 600x450
45 2151989
>>51978
базаришь
46 2152106
>>51965
команда питон, причем питон 3 это норма.
а конда вроде работает только в виртуальном окружении?
наверное поэтому не видит питон на компе.
по крайней мере из строки ты просто можешь запустить питон а на анаконде по умолчанию свое окружение
47 2152126
Как прасить сайт, который шлет нахуй с каптчей селениум, а на запросы от реквестс отдаёт 403 какие бы заголовки ты там не прописывал.
Возможно ли селениумом открывать дефолтный хром?
48 2152128
>>52126
1. Апи
2. bs4 и парсинг html
3. selenium
49 2152130
>>52128
1. Апи
было бы апи вопроса не возникло бы
2. 2. bs4 и парсинг html
БС это парсер для разбора страниц, запросы то ты всё равно отправляешь через requests
3. Как уже и писал его детектируют антискрэпинговые системы.
50 2152132
>>52130
Я не король скрепинга, посмотри что можно сделать чтоб наебать систему. Она ж анализирует твое поведение и твое заголовки которые ты отослал в запросе, просто так не понять - человек шлет запрос или бот
Вероятно ты User-Agent хуеровый прописал
51 2152155
>>52132
Там очень много подводных камней помимо заголовков и есть подозрение, что проще эмулировать пользовательский браузер, чем подделывать селениум.
52 2152160
>>52155
Даже на самом дваче какая-то защита приличная стоит.

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

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

Скрипты могут в принципе отлавливать, что находятся в режиме отладки.

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

Короче если очень хотеть, то защититься можно. А сейчас многие хотят.

Конечно если очень хотеть, то и обойти это будет можно. Но это тоже серьёзный скилл уже, не всё так тривиально.
53 2152203
>>52155
Так ты селениумом и эмулируешь пользовательский браузер и скорее всего и так уже используешь драйвер хрома. Тебе или нужно дырки в сайте искать или отвалить денег на решал капчи.
54 2152225
>>52126
Хедер то сделал в реквесте?
55 2152254
>>52203
Сенениум слишком весь в себе, в него только ограниченно можно вмешаться. И поэтому он палится.

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

Ты можешь, в принципе, вместо того, чтобы исполнять js код, как это селениум делает, просто тупо выслать ответ, который от тебя ожидает сервер. И серверу будет сложно понять, что на самом деле там просто консольное приложение, а не реальный браузер. Но для этого надо хорошо изучить протокол, что там и как происходит. Это может быть очень сложно.
56 2152256
>>52254

>А обычный браузер высылает какой-то запрос на сервер и после этого нормально работает.


Селениум и так использует хром, ты же не зря chromedriver туда прокидываешь. В нем можно сделать абсолютно все, что ты делаешь в обычном браузере и жс скрипты действуют точно так же.
57 2152277
Как запустить асинхронный код из синхронного? Когда делаю просто:
asyncio.create_task(my_task())
То получаю ошибку "RuntimeError: no running event loop"

Как запульнуть my_task так чтобы он начал исполняться на заднем плане и мой код не блокировался ожидая его исполнения? Тред в котором event loop будет создан?
58 2152301
Есть одна таблица в мускуле. Нужно написать чисто служебную вебморду, которая:
1) проводит авторизацию
2) выводит таблицу
3) позволяет добавлять записи с валидайцией
4) позволяет редактировать записи с валидайцией
На каком стеке писать этот костыль в 2022, чтобы минимально забивать голову хтмл, пагинацией, шаблонизацией и вот этой фронтендовской фигнёй?
59 2152302
>>52277
Это значит, что скорее всего у тебя луп еще не запущен на момент вызова этой функции, тебе заранее нужно его вызвать
Если хочешь исполнения в отдельном процессе/треде, то юзай это.
https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor
Хотя, если тебе достаточно просто задачу запустить, то можно простыми тредами/процессами обойтись без асинхронщины.
60 2152307
>>52301
админка django?
61 2152313
>>52307
Так проще phpMyAdmin тогда. Мне надо возможности конечным пользователям порезать: не давать удалять записи, давать редактировать только отдельные поля. Я доверяю их намерениям, я не доверяю их рукам.
image.png32 Кб, 599x432
63 2152315
>>51231 (OP)
Кто знает как сделать эту хуйню на питоне, какие библиотеки лучше (именно для тех которые точками помечены), в задании дана ток platform
64 2152318
>>51394
if any((a==b, a==c, a==d))
65 2152324
>>52315
Если винда, то через wmi.
Если линукс - через dmidecode.
image.png1,4 Мб, 992x899
66 2152326
67 2152327
>>52313
Ну я бы админку джанго заюзал потому что много очень с фреймворком работал и мне всякие эти ограничения быстро красиво приделать и добавления - изи. По сути это мне дало бы красивые формочки, модельки и пространство для остальной логики, которой можно достаточно накастомить. А так да, наверняка это не лучший выбор, погугли crm всякие, пожет тебе что то такое нужно.
68 2152334
>>52324
а dmidecode даёт инф о сопроцессорах?
69 2152342
>>52334
Хуй знает, я компы со сопроцессором с 1994 года не видел. Но о процессоре он инфу даёт точно.
70 2152344
>>52342
сейчас вроде как они просто встроенные,хз
71 2152347
>>52342
Начиная то-ли с пентиума, то-ли с 486 сопроцессор это просто часть процессора, а не внешний чип.

Но при этом набор команд остался тот же.
72 2152358
>>52347 >>52344
Я так понимаю они не то что стали встроенными, они размазались по современным наборам расширений. То есть даже логически/виртуально этого блока не осталось.
Сегодня под сопроцессорами в зависимости от ситуации могут понимать GPU, TPU и прочие DSP. Но вряд ли в задании об этом речь. Скорее всего методичка из 1994.
73 2152368
>>52326
>>52314
>>52277
Этот код очень странный и не смотрится корректным.

Если ты пытаешься запускать обработчик не из главного треда, ты должен создавать event loop явно, через
loop = asyncio.new_event_loop()
потому что по-умолчанию asyncio предполагает, что event loop будет создан в главном треде.

Поэтому надо делать скорее что-то вроде
def do_async():
____async def coro():
________код
____loop = asyncio.new_event_loop()
____loop.run_until_complete(coro())

Также ты должен помнить, что операции по работе с циклом обработки сообщений в основном не thread safe и поэтому там надо работать с этим очень вдумчиво и аккуратно. Если ты пытаешься из других тредов что-то пихать в тред с event loop
74 2152386
>>52358
ХЗ что там в задании имели в виду. Я бы предположил, что надо показать набор инструкций, который поддерживает данный процессор.
75 2152405
>>52277
Короче, котик, попробую может сегодня-завтра запилить пример, как это делать. Хотя может другие сделают.

Тут весь сок не в том, чтобы запустить цикл, а в том, как его кормить задачами. Надо сверяться с доками и смотреть код, но там в основном все операции потокоопасные. Поэтому ты не можешь делать loop.create_task() из другого треда.

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

Там мютексы под это дело нигде не предусмотрены, лупу из-за этого может стать очень плохо, с ним мягко надо.

Я бы предложил типовой паттерн, что ты заводишь в треде с лупом очередь, обычную, queue.Queue(), она потокобезопасная, в отличии от asyncio.Queue(), которая потокоопасная. И в неё суёшь корутину. А в треде с лупом ты уже берёшь данные из очереди и делаешь loop.create(task(coro))
76 2152417
>>52368
asyncio.run сам же под капотом создает loop и кидает в него корутину
77 2152566
x = 1
x=1
в чём разница и есть ли она? или просто вопрос стиля?
78 2152568
>>52566
Когда хуй сосешь, есть ли разница, дорабатываешь ты потом языком по стволу или нет?
79 2152573
>>52568
надо у твоего бати спросить
80 2152579
>>52566
Когда делаешь x=1 то присваивается сильнее, может и 2 стать. А x = 1 это строго по стандарту.
81 2152614
>>52566
Ты же знаешь что в пайтоне отступы заменяют скобки? Иди читать Кнута, пока не сделаешь ~50% от материала его книг, к питону даже не прикосайся.
82 2152658
>>52566
С отступами переменная, без константа.
83 2152662
>>52658
Хуй сосешь?
84 2152664
>>52662
А ты?
85 2152709
>>52405
>>52277
Стало интересно, запилил какой-то пример
https://ideone.com/aMwASt
штука довольно практичная может быть, если надо работать одновременно с оконным приложением tkinter/qt и asyncio event loop. Там с комментариями.

Через очереди пожалуй сложно, потому что если мы делаем queue.Queue(), то при q.get() мы блокируем тред и луп в том числе. А если делать какие-то опросы через каждые сколько-то миллисекунд, то это адски кривой колхоз из Индии.

Использовать базовые примитивы asyncio мы не можем, поскольку они не потокобезопасные, как не можем использовать ни asyncio queue.put_nowait(), ни loop.create_task - в смысле мы не можем вызывать из из другого треда, чем соответствующий event loop.

Но специально для этого в asyncio есть функция
loop.call_soon_threadsafe,
которая безопасно помещает коллбэк в луп другого треда, а вэтом коллбэке уже можно добавить в цикл какую-нибудь корутину.

Судя по всему других способов более-менее разумных и нет.
86 2152712
>>52709

>https://ideone.com/aMwASt


Вместо
self._loop.call_soon_threadsafe(lambda: self._loop.create_task(coro))

можно делать
self._loop.call_soon_threadsafe(self._loop.create_task, coro)
87 2152718
>>52712
Смотрится по-уебански
88 2152719
>>52718
что именно?
89 2152722
>>52719
Передача аргументов не в коллбеке отдельно
image.png11 Кб, 568x216
90 2152727
>>52709
Есть объект asyncio.Condition, его можно проверять в том таске а не эвейтить Event напрямую
91 2152736
Ребята, занимаюсь программированием уже пол года и у меня на такие задачки уходит по часу, это нормально, или может это просто не для меня? Тильт ловлю когда не могу решить что-то, с логикой видимо проблемы.

Что нужно сделать я сразу то понял, но маялся с тем как это реализовать, итог - вышло все через жопу, но сделано, потратил час, стыдновато.

Your program should get two parameters from command line:

- string of size N^2, that describes square matrix of characters N*N;

- string that describes given word.

The first string is converting to matrix using the following rule. String "QWEASDZXC" forms the matrix:

['Q','W','E',

'A','S','D',

'Z','X','C']

Your program should print to the console the sequence of cells those build the given word.

Every next character of word can be placed just in the neighbor cell: on the top, on the bottom, on the left or on the right from the cell with previous character.

E.g. if it is given matrix "QLGNAEKIRLRNGEAE" and word "KING", then sequence of cells will be [1,2]->[1,3]->[0,3]->[0,2] After solving the task test it carefully with different examples.
92 2152740
>>52736
Хз, почему у тебя час на это ушел. Просто больше практики нужно.
93 2152767
>>52405

>Представь, что ты в одном треде делаешь loop.create_task, когда этот луп в другом треде исполняется


А в чем проблема? Питоновские треды же не выполняются параллельно
94 2152798
>>52767

>А в чем проблема? Питоновские треды же не выполняются параллельно


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

Классический пример:
https://ideone.com/iDVS1x
уж совсем примитив, но

> expected: 2000000, calculated: 1639497



Очень дикое расхождение. Конечно, всё очень зависит конкретных операций, что в критических участках находятся.
95 2152843
>>52798
А, я думал, что сам луп распидорасит от такого надругательства, с разделяемыми ресурсами понятно
96 2152918
Хелп. Пишу парсер. Логика такая: парсятся события на текущий день: старттайм, линк на событие. Затем для этих событий с интервалом раз в n минут парсится инфа. Вроде все ок, но событий может быть 0-n и они могут проходить параллельно. Мне не понятно как динамически генерировать таски для каждого события и убивать их после n-итераций. Смотрел шедулеры разные, там только статичные таски можно запланировать.
97 2152923
>>52918
Ничего не понятно, но вообще тебе наверное надо делать очередь задач на обработку, при этом у тебя есть пул исполнителей этих задач. Они берут задачи из очереди и исполняют. А в очередь ты кладёшь задания.
98 2152936
>>52923
Вот есть события на сегодня - x y z. Их я спарсил в 00:00. Для них я записываю время их начала, например, 13:00 14:15 17:30 и линк на страницу с информацией о событии. Следовательно для первого события мне нужно сгенерировать таск, который стартанет в 13:00 и который на протяжении 5 часов, каждую минуту будет считывать информацию об этом событии на его странице, а потом умрет. И так для всех событий. Событий может быть 0-n.
99 2152939
>>52936
Это ты наколеночный крон костыляешь. Если очень хочешь повторить уже сделанное, то смотри, как сделано в кроне и копируй. Если нет, то используй системный.
100 2152982
Питон полное дермище а не язык и это будет так до тех пор пока туда не завезут строгую статическую типизацию и нормальные потоки
101 2152986
>>52982
А еще возможность компиляции, а не то что сейчас костыли какие-то с numba и cython.

Короче питон это пример того, как изначальное говно взлетает под мощным пиаром мегакорпорации и подхватывается миллионами безмозглых хомячков.
102 2152989
>>52982
>>52986
Так съеби в свой элитный язык, хули ты прибежал?
103 2152994
>>52989
Я прошел донести тебе что
1. Твоя язык говно ( отсюда можно сделать вывод, что лучше перейти на что-то другое, например С# )
2.

>подхватывается миллионами безмозглых хомячков.


Стоит задуматься, кто ты в этой пищевой цепочке.
104 2152996
>>52994

>Я прошел донести тебе что


Всем похуй на тебя и что ты там "хотел донести", клоун)
105 2152998
>>52994
Всем похуй.
106 2153000
>>52996
Ну как минимум, тебе не похуй, раз твой пукан взорвался от моих слов истины.
107 2153001
>>52986

>Короче питон это пример того, как изначальное говно взлетает под мощным пиаром мегакорпорации и подхватывается миллионами безмозглых хомячков.


Што? Какая корпорация стоит за питоном?
GuidovanRossumOSCON2006.jpg3,2 Мб, 2336x3504
108 2153011
>>53001
Ебать ты Алёша. Пишет на языке и не знает, кто его создал, и где он работал.
109 2153012
>>53011
То что он там работал еще не значит, что язык продвигали. Это вообще его сайд проект был, в отличии от какого нибудь Пайка, который целеноправленно пилит ГО и гугл ему за это деньги платит.
110 2153015
>>53012
Цитата из википедии:

>From 2005 to December 2012, he worked at Google, where he spent half of his time developing the Python language.


Как раз таки он там сидел и целенаправленно пилил питон.
Или ты думаешь питон внезапно стал такой популярный потому, что язык сам по себе хороший? Существует великое множество языков которые намного лучше питона во всех планах, однако они почему-то не взлетают так. Догадываешься почему?$$$?
111 2153026
>>53015

>Как раз таки он там сидел и целенаправленно пилил питон.


Это сайд проект, гугл выделяет время на личные разработки, если они помогают компании. Основная работа у него была другая, в отличии от Пайка

>Или ты думаешь питон внезапно стал такой популярный потому, что язык сам по себе хороший?


Потому что простейший вкат, хеллоу вордл можно написать через 5 минут после знакомства с языком
112 2153027
>>53015
Потому что наукоблядям и журналистам нравится простой синтаксис.
113 2153030
>>53015
Гугол никогда не продвигал питон. Они никак не поддерживали его своими сервисами, например. Они не продвигали в открытый код какое-либо значимое количество систем на питоне - меньше, чем на других языках.

То есть это просто какой-то небольшой вклад в опенсорс, но он идёт по десяткам направлений, но это совсем не то, что Go или системы вроде кубернетиса.
114 2153031
Или js с V8.
115 2153034
>>53026
Дело не в простейшем вкате, а в том, что на нём в принципе очень приятно писать.

Я, например, когда начал писать на питоне, уже имел серьёзный опыт на C++ и PHP, ещё с кучей языков шапочно знаком бы, с JS, Java, Perl, и ещё какой-то шлак.

И после питона были языки, JS вот серьёзно, и во что-то смотреть приходилось типа Ruby и Go. Но ничто вот настолько не вставляло, как питон.

И таких как я масса.

Поддерживают и разрабатывают серьёзные вещи ведь совсем не вчерашние вкатуны. Это очень серьёзный народ.
116 2153035
Писал на сисярпе, плотили 100к. Сейчас пишу на петоне, плотют 200к. И похуй, говно он или не говно, пока за него платят.
117 2153038
>>53026
Да в гугле раньше можно было тратить 1 день в неделю на развитие своего проекта с учетом того, что он может принести прибыль. Этот хуеплет там по официальным данным тратил 50% своего рабочем времени на развитие питона, ты думаешь гугл такая корпорация альтруистов, что платили ему зарплату за то, чтобы тут развивал свой проект? Ясен хуй у гугла был свой интерес в этом. Но потом видимо что-то пошло не так ( видимо не договорились ) и он уволился оттуда, но в это время в развитие питона было вбухано уже немало денег, но т.к. проект под открытой лицензией аля BSD то и гугл никак не мог претендовать на приклеивание своего логотипа к языку. Вот и все.

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


Вкат не проще, чем в любом другом языке с динамической типизацией. Хелоу ворлд можно на любом языке научиться писать за 5 минут, другое дело потом тратить кучу времени на знакомство со стандартной библиотекой и остальными фичами\костылями языка.

>>53034
Ты просто сложные проекты на пиптоне видимо не нюхал, после такого ты бы тоже так же как и я стал бы его ненавидеть, потому что этот язык кроме как писать хелоу ворды и какие-то наброски на коленках ни для чего не годится. В конечном итоге вся эта мазьня на питоне переписывается на С++ или что-то такое, где все предназначено для прода.

>Perl


Вот взять тот же перл, бля да у перла куча ахуенных фишек, которые питону и не снились. Жаль только перл умер.
118 2153043
>>53038

>В конечном итоге вся эта мазьня на питоне переписывается на С++ или что-то такое, где все предназначено для прода


Шкила, ты где прод на плюсах видел последний раз? Только алгоритмически сложные задачи на них переписывают
119 2153044
>>53043
Школьник-теоретик вот как раз тут ты. Я уже 13 лет на С\С++ серверные и не только приложухи пишу. Давай расскажи мне по подробнее, что там только на С++ переписывают в твоем 10Б?
120 2153049
>>53044
Это ты тот шизик, который грезит HFT и думает, что везде так нужно?
121 2153062
>>53049
Шизик, ты думаешь С++ используется только в HFT? Ебать у тебя искаженное восприятие мира. Хотя хуле тут, если обезьянка сидит в своем узконаправленном мире модных фреймворков, то откуда ей знать, что большая прикладного часть софта в мире написана на С\С++.
122 2153066
>>53062
Ну приведи пример, где продукты изначально написанные на питоне переписываются на плюсах. Прост тут изначально постановка задачи такая, что никто в здравом уме не будет начинать писать на питоне, если требуется перфоманс сишки
123 2153067
>>52736
Если занимаешься полгода, то распарсить этот руглиш и закодить dfs -- вполне нормально, даже если ушел час.
124 2153075
>>53066
За примером далеко ходить не надо. Я работаю в сфере Computer Vision, дата саентисты пишут свои прототипы на питухоне, которые в конечном итоге надо переписывать на С++, потому что в этой области всегда требуется максимальная производительность. Когда я туда пришел там был большой проект написанный на питоне, который все это делал но очень медленно, без возможности ни вертикального, ни горизонтального масштабирования. И что в итоге? Проект был успешно переписан на С++ и сейчас легко масштабируется на сотни машин, в кучей GPU и CPU ядер.

Окей другой пример, вася пупкин написал клевое веб приложение на питоне. И вдруг его приложение взлетело до небес, появились миллионы посетителей в сутки, ну прям настоящий хайлод. Конечно у Васи возникнут проблемы и со скоростью работы и с масштабированием, поэтому будучи благоразумным человеком Вася примет верное решение нанять людей и переписать свою питонопарашу на нормальный язык\языки предназначенные для этого, чтобы в дальнейшем не возникало проблем.
125 2153081
>>53075

>Computer Vision


Дурачек, я и писал про алгоритмические задачи
126 2153082
>>53075
Кстати еще один замечательный пример, когда-то давно цукерберг написал свою парашу фб на пыхе, и не принял верного решения в самом начале переписать пока еще не разросшийся проект на что-то более адекватное. В итоге фейсбук наелись говна придумывая компиляторы похапе языка. Но в конечном итоге все равно все было переписано на С++\Java\etc давным давно
127 2153083
>>53066
Просто погугли сколько библиотек для Питона написано на крестах или С и не позорься.
128 2153087
>>53075
Почему тогда ин100грам не перевели с джанги на c++/rust?
129 2153088
>>53075
Так пистон для других задач, вкатыш. Питон для того чтобы быстро и удобно что-то написать чтобы оно как-то работало а не писать хуйлоад и прочую залупу.
130 2153090
>>53081
Еблан не окончивший хотя бы минимальный вуз, ты вообще вкурсе что программы = алгоритмы + структуры данных?
Блять, что за хуйню ты вообще высираешь? Ты вообще имеешь хотя бы представление как выглядит программа? Судя по твоим шизойдным высерам - нет.
С
131 2153094
>>53083
V8 тоже написан на плюсах, срочно выкидываем ЖС

>>53090
Ебать вкатыш пригорел, ты прекрасно понял, что речь шла о тяжелых алгоритмических задачах, где у плюсовой числодробилки нет равных
132 2153095
>>53094
А это не про плюсы было, а про то кто и зачем написал V8 для js.
133 2153096
>>53087
С чего ты взял? Сомневаюсь что инста с ее посещаемостью работает на какой-то динамической параше.

>>53088
Я про это и говорю, алексей. Питон годится только для накалякания чего либо на коленке не больше. Но какой смысл было высирать столько библиотек на изначальна хуевый язык, если максимальная его профпригодность равна программе написанной на каленке?
134 2153099
>>53096

>профпригодность


Чел ты тралишь тупостью, я понял.
135 2153102
>>53094
Да, я не пригорел, просто чувствую твой уровень подготовки, судя по твоим нелепым высерам и он равен типичному питонабыдлу вообще не разбирающегося хотя бы в минимальной архитектуре ПО. И не понимаю, зачем ты пытаешься со мной спорить. Это все равно что муравей будет доказывать богу что он не прав в чем-то, нелепо выглядит.
136 2153104
>>53096
НАЧИНАЕТЕ ПИСАТЬ ПРОЕКТ НА НОРМАЛЬНОМ ЯЗЫКЕ, ВЫ ЖЕ НЕ БЫДЛЫ КАКИЕ-ТО
@
ТО ЧТО МОЖНО БЫЛО СДЕЛАТЬ ЗА МЕСЯЦ НА ПИТОНЕ ВЫ ДЕЛАЕТЕ ЗА 4 МЕСЯЦА НА ПЛЮСАХ
@
КОНКУРЕНТЫ УЖЕ ВЫПУСТИЛИ АЛЬТЕРНАТИВНУ И ДЕЛАЮТ ФИЧИ КАЖДЫЙ РЕЛИЗ
@
ВЫКАКИВАЕТЕ НА РЫНОК СВОЙ ПРОДУКТ
@
ЖИДКО ПУКНУВ ПРОЕКТ ЗАКРЫВАЮТ ПОТОМУ ЧТО НИШУ УЖЕ ЗАНЯЛИ


А вообще, с чего это ты взял, что полезный продукт == хайлоад? Есть много отраслей, где требуется куча бизнес-логики для ограниченного круга людей и никто не срет 300кк rps

>>53102
Ебать ты жиробубель
137 2153106
>>53096

>Сомневаюсь что инста с ее посещаемостью работает на какой-то динамической параше.


https://stackshare.io/instagram/instagram
https://www.8bitmen.com/instagram-architecture-how-does-it-store-search-billions-of-images/
Из статической непараши там только жава, и на ней там явно не весь бэк написан.
138 2153113
>>53104

>А вообще, с чего это ты взял, что полезный продукт == хайлоад?


Я такое не утверждал.

>куча бизнес-логики для ограниченного круга людей


Ты имеешь ввиду Enterprise и его единственного царя джунглей - Java?

>>53106
Ну что я могу сказать:
1. Всегда вызывала отторжение любая продукция сделанная цукербергом как и он сам.
2. Интаграм постоянно тормозит и лагает, теперь ясно почему.
3. Даже если убрать предвзятость, то единственная задача инстаграмма - показать фото\видео, то есть передать пользователю ссылку на cdn где это хранится, возможно с ахуеевшимми миллиардами фейсбука, им не впадлу платить за медленность питона. Возможно там еще куча легаси кода который не так просто искоренить и поэтому им проще платить больше денег за сервера, чем переписывать все на другой язык. Но то что использования питона в таком проекте - это неразумно - это факт.
139 2153118
>>53104

>НАЧИНАЕТЕ ПИСАТЬ ПРОЕКТ НА НОРМАЛЬНОМ ЯЗЫКЕ, ВЫ ЖЕ НЕ БЫДЛЫ КАКИЕ-ТО


>@


>ТО ЧТО МОЖНО БЫЛО СДЕЛАТЬ ЗА МЕСЯЦ НА ПИТОНЕ ВЫ ДЕЛАЕТЕ ЗА 4 МЕСЯЦА НА ПЛЮСАХ


>@


>КОНКУРЕНТЫ УЖЕ ВЫПУСТИЛИ АЛЬТЕРНАТИВНУ И ДЕЛАЮТ ФИЧИ КАЖДЫЙ РЕЛИЗ


>@


>ВЫКАКИВАЕТЕ НА РЫНОК СВОЙ ПРОДУКТ


>@


>ЖИДКО ПУКНУВ ПРОЕКТ ЗАКРЫВАЮТ ПОТОМУ ЧТО НИШУ УЖЕ ЗАНЯЛИ


Лол, так никто не говорит, начинать сразу по хардкору, как я помню еще во времена когда я увлекался геймдевом, на местном форуме были чуваки которые сказали, ПОШЛИ ВСЕ НАХУЙ С ВАШИМИ ДВИЖКАМИ МЫ БУДЕМ ПИЛИТЬ СВОЙ С НУЛЯ, в итоге они 4 года пилили какие-то зачатки игры, и к тому времени когда они выкатили первую демку графика и все их технологии уже безнадежно устарели.
Нет, просто ко всему надо подходить с умом, и продумывать перспективы.
К тому же, даже если писать на сразу на С++, хотя я к такому не агитирую, на с++ есть куча библиотек используя которые можно быстренько все сделать.
140 2153122
>>53113

>Но то что использования питона в таком проекте - это неразумно - это факт.


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

>Окей другой пример, вася пупкин написал клевое веб приложение на питоне. И вдруг его приложение взлетело до небес, появились миллионы посетителей в сутки, ну прям настоящий хайлод. Конечно у Васи возникнут проблемы и со скоростью работы и с масштабированием, поэтому будучи благоразумным человеком Вася примет верное решение нанять людей и переписать свою питонопарашу на нормальный язык\языки предназначенные для этого, чтобы в дальнейшем не возникало проблем.



Это ошибочное мнение, что продукт обязательно дорастет до такого состояние, когда переписывание кода станет выгоднее, чем обслуживание железа. Питон прекрасно живет на средних проектах и где добавить новую фичу гораздо приоритетнее, чем снизить стоимость сервера на условные несколько тысяч долларов и поменять штат на плюсовиков, которые эту самую выгоду сожрут за ЗП побольше. Использование языков диктуется бизнесом, а не абстрактным ну язык говно же
142 2153125
>>53123
А что будет в мире, где начался дефицит чипов?
143 2153128
>>53125
Все откатимся на няшную и будем оптимизировать все до усрачки, собственно распространения "медленных" языков связано с тем, что железо подешевело настолько, что процессоры можно ведрами покупать.
144 2153133
>>53122
Получается так, если они это все используют.
Но опять же, смотря где и как, может у них джанго отвечает вообще за какую-то малонагруженную часть, либо просто пробрасывает запросы дальше. Просто все это гигантские проекты состоят из сотен микросервисов, которые написаны на различных языках.

>>53123
Может в вебе это так и работает, но вот в CV где от скорости работы твоего ПО зависит будут ли у тебя заказчики или нет, так уже не пройдет. И опять же мы говорим о сферических стартапах в вакууме, компании уже имеющие опыт разработки ПО, вряд ли будут начинать новые свои проекты не с основных технологий использующихся в компании.
145 2153138
>>53133

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



Меня в ВТБ и МТС приглашали пилить сервисы на питоне. Бюджет у продукта под патронажем крупной компании ничем не отличается от бюджета стартапа, везде деньги экономят.
146 2153156
>>53138
Тут очень много нюансов, например, да может они хотят сделать все по быренькому и задешево и им похуй как это будет работать медленно или быстро, главное чтоб как-то работало. Вообще парадигма разработки "как-то" у нас очень развита, главное чтоб было как-то похуй, что криво, похуй что медленно, похуй что потом никто не разберется в сорцах, главное чтобы было "как-то" и чем ближе компания к гос структурам тем больше там эта парадигма развита, потому что бюджет выделяют, а видимость работы создать надо вот и делают тяп ляп ля галочки. Но да ладно это экскурс.
Другой аспект, то что во-первых, средняя обезьяна на питоне берет намного меньше денег среднего разработчика на Java/Scala/Go/C++ и т.д. во-вторых, разработчика на питон найти намного проще, чем на чем-то другом потому что вкатышей пруд пруди готовых работать на любых условиях, в-третьих может у них в департаменте который ответсвенный на новый проект нету просто адекватных людей способных собрать хорошую команду и единственный человек хоть как-то понимающий в програмировании это сис-админ эникейщик знающий маломальски питон, который будет набирать народ в команду. Плюс им может быть так же похуй на проект, и они не заморачиваются над его качеством.

В общем резюмируя, вообще всю суть сегодняшнего треда. На питоне пишут не потому что он пиздатый язык и пиздатая технология и на нем все так ахуенно получается. Да на питоне можно быстро что-то нахуярить это факт спасибо куче библиотек на все виды деятельности. Получится ли это всрато? В конечном итоге с ростом проекта да. Будет ли это тяжело поддерживать в дальнейшем и внедрять новый функционал? Да. Получится ли это медленно? Да. Будет ли стоит разработка дешевле на начальном этапе? Да. Легко ли будет найти разработчика? Да.

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

Но нормально технически подкованный менеджер, вряд ли стал бы начинать новый проект с какой-либо перспективой роста на питоне. Гораздо лучше Java/Go/C++ да что угодно, в зависимости от отаросли, лишь бы не пришлось перепиливать это все в конечном итоге.
146 2153156
>>53138
Тут очень много нюансов, например, да может они хотят сделать все по быренькому и задешево и им похуй как это будет работать медленно или быстро, главное чтоб как-то работало. Вообще парадигма разработки "как-то" у нас очень развита, главное чтоб было как-то похуй, что криво, похуй что медленно, похуй что потом никто не разберется в сорцах, главное чтобы было "как-то" и чем ближе компания к гос структурам тем больше там эта парадигма развита, потому что бюджет выделяют, а видимость работы создать надо вот и делают тяп ляп ля галочки. Но да ладно это экскурс.
Другой аспект, то что во-первых, средняя обезьяна на питоне берет намного меньше денег среднего разработчика на Java/Scala/Go/C++ и т.д. во-вторых, разработчика на питон найти намного проще, чем на чем-то другом потому что вкатышей пруд пруди готовых работать на любых условиях, в-третьих может у них в департаменте который ответсвенный на новый проект нету просто адекватных людей способных собрать хорошую команду и единственный человек хоть как-то понимающий в програмировании это сис-админ эникейщик знающий маломальски питон, который будет набирать народ в команду. Плюс им может быть так же похуй на проект, и они не заморачиваются над его качеством.

В общем резюмируя, вообще всю суть сегодняшнего треда. На питоне пишут не потому что он пиздатый язык и пиздатая технология и на нем все так ахуенно получается. Да на питоне можно быстро что-то нахуярить это факт спасибо куче библиотек на все виды деятельности. Получится ли это всрато? В конечном итоге с ростом проекта да. Будет ли это тяжело поддерживать в дальнейшем и внедрять новый функционал? Да. Получится ли это медленно? Да. Будет ли стоит разработка дешевле на начальном этапе? Да. Легко ли будет найти разработчика? Да.

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

Но нормально технически подкованный менеджер, вряд ли стал бы начинать новый проект с какой-либо перспективой роста на питоне. Гораздо лучше Java/Go/C++ да что угодно, в зависимости от отаросли, лишь бы не пришлось перепиливать это все в конечном итоге.
147 2153161
>>53156
Лол, а ты думаешь, что на плюсах пишут потому что это дохуя пиздатый язык, а не потому что это оптимальная числодробилка даже с проблемой поддерживаемости и всратой инфраструктурой где даже пакетного менеджера не завезли?
Сколько ты сам проектов от начала до конца завершил, что бы знать как нужно собирать команду и как может развиваться продукт, если ты занимаешься только написанием числодробилок?
148 2153179
>>53161
Во-первых, выкинь из головы идею плюсы - это "числодробилка", это далеко не единственный плюс плюсов.
Во-вторых, на плюсах пишут потому что это самый быстрый язык из доступных + у которого богатый функционал + где ты не платишь за то, что не используешь + то что на плюсах ты можешь написать, что угодно + любая либа представляющая собой какой-либо апи к железу имеет интерфейс только на С\С++.
3. о какой "проблеме поддерживаемости" ты говоришь? Плюсы компилируются в нативный байт код процессора, под какую архитектуру у тебя есть компилятор под такую это и будет работать.
4. пакетные менеджеры есть и не один, тот же vcpkg например. Но я ими если честно никогда не пользовался, т.к. всю жизнь пишу программы под линукс, где пакетным менеджером служит команда apt install libname-dev.
5. Я разработчик, а не менеджер, а работал я в разных командах и имею представление о всей этой внутренней кухне.
6. Ты чего к плюсам доебался? Я же не только за плюсы говорю. Плюсы не всегда оптимальный выбор, и даже я иногда плююсь от них и думаю как бы это было проще написать на С# или Java, где есть все из коробки, правда java тоже та еще монструозная параша.
149 2153194
>>53179

>Во-первых, выкинь из головы идею плюсы - это "числодробилка", это далеко не единственный плюс плюсов.


Я говорил конкретно про тебя.

>3. о какой "проблеме поддерживаемости" ты говоришь? Плюсы компилируются в нативный байт код процессора, под какую архитектуру у тебя есть компилятор под такую это и будет работать.


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

>4. пакетные менеджеры есть и не один, тот же vcpkg например. Но я ими если честно никогда не пользовался, т.к. всю жизнь пишу программы под линукс, где пакетным менеджером служит команда apt install libname-dev.


Лул, как же охуенно иметь общую среду для приложения и операционной системы разработчика. Расскажешь как две версии одной либы на одном компьютере установить?

>5. Я разработчик, а не менеджер, а работал я в разных командах и имею представление о всей этой внутренней кухне.


С чего ты взял что имеешь представление? Ты бюджеты считал или персонал нанимал? Может знаешь во сколька вся команда разработки обходилась или сколько резюме проходило через лидов?
Стикер585 Кб, 250x250
150 2153209
151 2153212
>>53194

>Я говорил конкретно про тебя.


?

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


Это зависит от того, используешь ли ты какие-то фреймворки или либы заточенные под это.
Вот возьмем например кодирование\декодирование видео. Ты же не будешь писать свой парсер контейнера, потом имплементацию декодера\энкодера для конкретного кодека и т.д? Ты возьмешь уже готовенький ffmpeg и нахуяришь быстренько на нем. Либо просто opencv. И поверь в случае с opencv вообще никакой разницы в коде не будет между с++ и питоном, т.к. все методы и там и там зеркальные.

>Начиная от работы со строками, которая стала мемом


Это что там такого сложного? И что за мемы такие? Типа каждый разработчик на с++ должен написать свою имплементацию std::string? лол, этот мем уже лет 15 как потерял актуальность, еще в с++ 98 со строками стандартной библиотеки все было нормально, на крайняк всегда был boost где есть все алгоритмы какие хочешь.

>заканчивая ручным управлением памятью.


std::shared_ptr/std::unique_ptr - лол с появлением с++11 никто уже не выделяет память через new в сырые указатели и тем более через malloc. Да и до с++ 11 был boost shared_ptr который все адекватные люди юзали.

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


Лол, либо компилируешь и инсталируешь с нужным --prefix либо просто бинарники уже готовые копируешь куда надо и юзаешь оттуда. В чем проблема?

>С чего ты взял что имеешь представление? Ты бюджеты считал или персонал нанимал? Может знаешь во сколька вся команда разработки обходилась или сколько резюме проходило через лидов?


Лол, я начиная с первой работы собеседовал новых людей с лидами. Бюджеты не считал но примерно знал, во сколько что обходится. Да я и сейчас сам себе лид, в одном стартапе по найму, так что всякие расходы на сервера, железо и прочее я сам рассчитываю и уже обговариваю с непосредственным начальством.
151 2153212
>>53194

>Я говорил конкретно про тебя.


?

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


Это зависит от того, используешь ли ты какие-то фреймворки или либы заточенные под это.
Вот возьмем например кодирование\декодирование видео. Ты же не будешь писать свой парсер контейнера, потом имплементацию декодера\энкодера для конкретного кодека и т.д? Ты возьмешь уже готовенький ffmpeg и нахуяришь быстренько на нем. Либо просто opencv. И поверь в случае с opencv вообще никакой разницы в коде не будет между с++ и питоном, т.к. все методы и там и там зеркальные.

>Начиная от работы со строками, которая стала мемом


Это что там такого сложного? И что за мемы такие? Типа каждый разработчик на с++ должен написать свою имплементацию std::string? лол, этот мем уже лет 15 как потерял актуальность, еще в с++ 98 со строками стандартной библиотеки все было нормально, на крайняк всегда был boost где есть все алгоритмы какие хочешь.

>заканчивая ручным управлением памятью.


std::shared_ptr/std::unique_ptr - лол с появлением с++11 никто уже не выделяет память через new в сырые указатели и тем более через malloc. Да и до с++ 11 был boost shared_ptr который все адекватные люди юзали.

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


Лол, либо компилируешь и инсталируешь с нужным --prefix либо просто бинарники уже готовые копируешь куда надо и юзаешь оттуда. В чем проблема?

>С чего ты взял что имеешь представление? Ты бюджеты считал или персонал нанимал? Может знаешь во сколька вся команда разработки обходилась или сколько резюме проходило через лидов?


Лол, я начиная с первой работы собеседовал новых людей с лидами. Бюджеты не считал но примерно знал, во сколько что обходится. Да я и сейчас сам себе лид, в одном стартапе по найму, так что всякие расходы на сервера, железо и прочее я сам рассчитываю и уже обговариваю с непосредственным начальством.
152 2153239
>>53156

>главное чтоб как-то работало.


"Как-то" работать будет на плюсах, потому что сделать хорошо там сложно. А на языках высокого уровня будет работать хорошо, если ты нормально пишешь. Стабильно, чётко и корректно, а это главное.

На питоне байтоёбские вещи не очень пишут, никто не будет, конечно, реализовывать код перепаковки картинки на питоне. Для этого используют внешние библиотеки, специально оптимизированные.

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

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

Реальность в том, что производительность языков программирования не является узким местом в большинстве задач. А вот скорость разработки, возможность поддержки, качество кода - являются.
153 2153252
>>53239
То, что ты описал применимо только к вебмакакингу.

>"Как-то" работать будет на плюсах, потому что сделать хорошо там сложно. А на языках высокого уровня будет работать хорошо, если ты нормально пишешь. Стабильно, чётко и корректно, а это главное.


Конечно, ведь средняя обезьяна пришедшая из питона лучше не сможет сделать в силу отсутствия знаний, скилов и интеллекта, на то она и обезьяна. Но зачем обезьяне доверять гранату, когда это можно доверить компетентным людям которые умеют с этим хорошо обращаться?
И С++, к твоему сведению, является языком высокого уровня.
К тому же никто же не заставляет писать на С++, ну если не вышел умом пиши на golang хотя бы или java/C#.
В общем, тут все зависит от жадности инвестора, платишь мало денек - получаешь команду даунов на питоне которые делают хуево, платишь хорошо получаешь хорошую команду со стеком С++\Java которые делают хорошо, любой сервис.
154 2153253
>>53252

>golang


Вот ты и попался макакен
155 2153257
>>53252

>К тому же никто же не заставляет писать на С++, ну если не вышел умом пиши на golang хотя бы или java/C#.


Ты хотел сказать на Rust
156 2153262
>>53252
Ты тот шизик, что ходит по всем темам и твердит "динамо дрисня". Уйди. Не хочется на тебя время тратить.
157 2153265
>>53253

>golang


> Я только сегодня понял, что почти никто толком-то и не понимает, зачем вообще Go нужен. Если коротко, то Go нужен для того, чтобы проектировать robust software. Я не знаю, как правильно перевести это слово на русский, но это скорее всего что-то вроде «надежный». Так вот, Go сделали, потому что гуглу нужен был инструмент для написания надежного кода. На самом деле не сколько гуглу, сколько Робу Пайку, который последние две декады, как минумум, одержим идеей сделать сишку с каналами и зелеными потоками. Так получилось, что Роб Пайк попал в нормальную компашку с другими штрихами из Bell Labs, крутейшим Russ Cox, Фицпатриком и т.д. Этим ребятам несложно было убедить гугл, что им нужен новый язык и вобщем-то, бабосики они на него выбили.



> Так, это было небольшое лирическое отступление, давайте вернемся к теме. Да, зачем же все-таки гуглу был нужен новый язык? Ну, тут все понятно, давайте послушаем слова самого Роба Пайка:



> Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.



> А теперь давайте попытаемся понять, что же он имел ввиду. Если грубо говоря, то он сказал, что в гугле работают не самые умные ребята («не способные понимать крутой язык»), так что они придумали такой язык, который просто невозможно не понять. Это на самом деле очень круто для менеджмента. Посудите: можно нанять 100 посредственных программистов, дать им в руки Go и эта армия обезьян будет генерить вам много «неплохого» и очень даже поддерживаемого кода! Go это фантастический инструмент для менеджмента, лучше не придумать: моментально загоняем всех программистов в рамки go-fmt (никто не сможет пропихнуть свой стиль форматирования), забираем у них любые абстракции сложнее интерфейса и получается такой конвеер кода, в котором developer is just another brick in the wall. По-моему, очень круто! Ну, программистам скорее всего такой расклад не очень понравится — мало кто любит быть винтиком в системе.

157 2153265
>>53253

>golang


> Я только сегодня понял, что почти никто толком-то и не понимает, зачем вообще Go нужен. Если коротко, то Go нужен для того, чтобы проектировать robust software. Я не знаю, как правильно перевести это слово на русский, но это скорее всего что-то вроде «надежный». Так вот, Go сделали, потому что гуглу нужен был инструмент для написания надежного кода. На самом деле не сколько гуглу, сколько Робу Пайку, который последние две декады, как минумум, одержим идеей сделать сишку с каналами и зелеными потоками. Так получилось, что Роб Пайк попал в нормальную компашку с другими штрихами из Bell Labs, крутейшим Russ Cox, Фицпатриком и т.д. Этим ребятам несложно было убедить гугл, что им нужен новый язык и вобщем-то, бабосики они на него выбили.



> Так, это было небольшое лирическое отступление, давайте вернемся к теме. Да, зачем же все-таки гуглу был нужен новый язык? Ну, тут все понятно, давайте послушаем слова самого Роба Пайка:



> Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.



> А теперь давайте попытаемся понять, что же он имел ввиду. Если грубо говоря, то он сказал, что в гугле работают не самые умные ребята («не способные понимать крутой язык»), так что они придумали такой язык, который просто невозможно не понять. Это на самом деле очень круто для менеджмента. Посудите: можно нанять 100 посредственных программистов, дать им в руки Go и эта армия обезьян будет генерить вам много «неплохого» и очень даже поддерживаемого кода! Go это фантастический инструмент для менеджмента, лучше не придумать: моментально загоняем всех программистов в рамки go-fmt (никто не сможет пропихнуть свой стиль форматирования), забираем у них любые абстракции сложнее интерфейса и получается такой конвеер кода, в котором developer is just another brick in the wall. По-моему, очень круто! Ну, программистам скорее всего такой расклад не очень понравится — мало кто любит быть винтиком в системе.

image.png397 Кб, 1000x1642
158 2153267
>>53252

>В общем, тут все зависит от жадности инвестора, платишь мало денек - получаешь команду даунов на питоне которые делают хуево, платишь хорошо получаешь хорошую команду со стеком С++\Java которые делают хорошо, любой сервис.



Плюсовики и джависты стоят дешевле чем разработчик на питоне, никто просто не хочет в говне валятся

https://lvivity.com/top-highly-paid-programming-languages
159 2153270
>>53265
Вот именно, абсолютно макакенский язык, в котором еще можно выстрелить себе в ногу
160 2153276
>>53267
Надо перекатываться на bash/shell. Сразу хороший плюс к зарплане.
161 2153308
Хелп, пытаюсь обновить значения конкретных ячеек двухмерного массива. Почему в результате каждый столбец воспринимается как ячейка? Как обновлять значения ячеек?
162 2153309
>>53308
[[0]*3] 3
не сработает, делай по-другому.
163 2153311
>>53276
Баш это сраное говно, потолок которого однострочники. Катись в перл - это индустриальность си плюс мощь лиспа. Но он умер.
image.png1,3 Мб, 940x620
164 2153313
>>53308
Зачем фуфелы постоянно пытаются в маняумножение массивов?
165 2153316
>>53311
Еблан, нуб, вкатыш, у баша своя ниша, он не говно, он хорошо выполняет свои задачи для которых предназначен. Перл - это вообще другая стихия. Надо быть полным ебланом, чтобы сравнивать баш и перл.
166 2153317
>>53316
+
Это как сравнивать отсос и давание в жопу
Никогда не понимал типов готовых сосать лишь бы их не ебали. Отсос - унизительно, поэтому в случае чего настоящий мужик будет гордо стоять раком и примет в жопу хуй, даже не пискнув ни разу. Такие дела
167 2153318
>>53317
Шарпер, вернись в свой тред.
image.png7 Кб, 253x86
168 2153320
>>53313
Потому что суть питона в том, что все можно сделать сполшага, а новички дальше короткой статьи о новом материале не заходят, видимо.
>>53309
Получилось, спасибо
169 2153321
>>53311

>Баш это сраное говно, потолок которого однострочники


Долбоеб детектед, не быть тебе девопсом
170 2153340
>>53316
>>53317
Раскудахтались-то. Я вам говорю, что баш это сраное говно, в котором приходится пачкать руки, потому что так сложилось исторически. На перле можно заменить простыню баша в пару строчек с вертухи, потому что он делался в том числе для этого.
Найдите мне кого-то, кто скажет, что баш это охуенный язык для скриптов. Это и не язык вовсе, а игрушечная автоматизация.
Но ничего, зумерье продавит какой-то клоунскрипт и будете радостно писать на нем, как это вышло с системд, а баш превратится в легаси заглушку, где ему самое место.
>>53321
И не собирался. Ойти-сантехник для комуникации говн, велика птица.
skuf.png113 Кб, 300x245
171 2153344
>>53340

>На перле

172 2153346
>>53344
Порридж, спок.
16242090310140.png490 Кб, 418x512
173 2153347
174 2153394
Можете на пальцах объяснить, для чего нужна библиотека Pebble?
Кто-нибудь использует её?
Где про неё можно почитать и потренироваться с ней?
Инб4 документация
image.png17 Кб, 486x194
175 2153420
Почему код сверху работает, а снизу нет? Как можно заполнить список объектами, не прописывая 32 строки?
176 2153422
>>53420
А что делает код снизу?
177 2153423
>>53420
Невермайнд, ты while с for перепутал.
178 2153427
>>53423
Бля, точно, ахаахах
179 2153434
Ищу IDE. Кодил всегда для себя - посчитать что-то алгоритмически, что не могу математически, спарсить дату, что-то типа того. Сейчас нейроночки потихоньку изучаю. Раньше пользовался IDLE, потому что ничего другого не нужно было. Но с нейроночками ощущаю потребность в смене IDE для удобства. Например, у IDLE при выводе в шелл есть явна задержка, насколько я понимаю и обучение становится дольше просто из-за этого. Сейчас пытаюсь освоиться с SublimeText, но у него свои проблемы: во-первых, не нашёл как заставить matplotlib показывать плоты, во-вторых, во время обучения нейронки GUI тупо фризится. Всякие по мелочи проблемы, типа он не видит PATH от ffmpeg, тогда как IDLE его видит (и гугл помог очень условно). Короче тоже проблемный.
Пробовал Jupyter, но чет прямо совсем не понравилось по ощущениям.
Я не собираюсь прогать в команде, не собираюсь выкладывать код на гитхаб, хочу просто для себя экспериментировать и изучать, чтобы было удобно. Что анон может посоветовать в моей ситуации?
180 2153462
>>53434
vscode
181 2153468
>>53434
Такие баловальщики сидят как раз в жупитере. Мне он тоже не особо понятен, но реально популярен.
182 2153490
Кто нибудь знает можно ли переопределить встроенную функцию в питоне, затем зайти в эту функцию и вызвать уже не рекурсивно эту же функцию, а встроенную функцию. Например я переопределяю функцию print(), вызываю ее и из этой функции print(), хочу вызвать Built-in print(), которая встроена в питон. Как это сделать?
183 2153497
>>53490
прикиньте получилось

__builtin__.print()
184 2153504
Делаю отступ одним пробелом во всех языках, и ебись оно врот.
В детстве делал табами, потом 4 пробела, потом два, сейчас один.

Но я и не лезу в ваши галеры, понятно дело.
16245631204220.png945 Кб, 1080x1080
185 2153505
>>53504

>В детстве делал табами, потом 4 пробела, потом два, сейчас один

186 2153508
>>53504
Нахуя тогда делать один пробел, если можно сделать один таб? Самый ебанутый вариант у тебя.
187 2153511
>>53504
>>53505
>>53508
Ботов подрубили, все чтобы мне не скучно было.
Спасибо Абу
188 2153527
>>53490

>Например я переопределяю функцию print()


А нахуя тебе ее переопределять?)
Создай новую бля, присвой ей свой идентификатор
189 2153529
>>53508
С одним пробелом на экране больше всего места.

Таб это управляющий символ, он служит для создания простейших таблиц. Как раз на ассемблере я табами и отступал, ведь исходник там это по сути таблица.

Есть даже понятие tsv по аналогии c csv
190 2153544
>>53529
Ты там на домофоне сидишь штоле, что не хватает места в ширину?
191 2153557
>>53527
у меня не было доступа к куску кода в котором вызывалась буилтин функция, я ее переопределил и когда тот кусок кода вызывал типо билтин функцию, то он вызывал мою функцию.
192 2153562
>>53544
Типа того.
193 2153584
>>53557
Переопределять функции билтин либы в принципе не есть гуд. Используй partial.
Ровно как и называть аргументы в методах/функциях таким образом
194 2153604
>>53584
partial вообще не про это. Его концептуально неправильно использовать для такого.
195 2153635
Как найти наименьшую/старейшую дату в тексте?
Искать через регулярку, определять позиции начала конца, перегонять в datetime и возвращть позицию найденного значения как-то громоздко. Есть ли альтернативы?
196 2153639
>>53635
re.finditer и сверяй по ходу.
197 2153743
Какой самый минимальный срок обучения, чтобы можно было выполнять хоть какую-то оплачиваемую работу, пусть даже 1к в день?
198 2153766
>>53743
Тебе не питон нужен, а фронтэнд Джаваскрипт+цсс + хтмл. 3 месяца если будешь сидеть по 10 часов в день. Пишешь сайт идешь на собеседование
200 2153843
>>53831
\b лучше вместо тех хуиток, он zero-width.
201 2153883
>>53843
Да, полезная штука. Спасибо.
202 2153897
>>53604
Падажжи, то есть ты целиком нахуячил новую функцию и назвал ее print? Или все же переопределил его, расширив - как именно тогда?
203 2153898
>>53831
А если формат даты американский/японский? А если не через точку? А если месяц записан буквами?
204 2153945
>>52301
Бампну вопрос ещё раз и завтра засяду хуярить на flask-wtf / flask-sqlalchemy если других предложений не будет.
205 2154013
>>53898
Переделываешь регулярку и меняешь второй аргумент в strptime.
206 2154024
>>54013
Готов заранее анус поставить что все даты в тексте таким образом найдутся?
207 2154047
>>54024
Ты почему-то ищешь, к чему бы доебаться, но с какими-то надуманными аргументами. Откуда мне знать в каком формате у того анона даты в тексте? Он спрашивает, как это вообще сделать - с регулярками или без.
208 2154062
>>54047
Я просто люблю обсуждать анусы
209 2154065
>>54062
А ты сделал себе отбеливание?
210 2154202
У кого-нибудь есть курсы или уроки по Kivy? Что-то вроде все установил, а даже первую прогу с Хеллоу ворлд не могу запустить.

Или есть другие решения для запуска простеньких скриптов на Андроид?
Screenshot20210910-080135Termux.jpg168 Кб, 720x1560
211 2154228
212 2154268
>>52126
Вот это попробуй. У меня с сайтами, защищёнными CloudFlare, работало.
https://github.com/ultrafunkamsterdam/undetected-chromedriver

Ещё можешь скопировать параметры запроса, делаемого твоим хромом, и скормить их requests. Будет работать до поры до времени
213 2154291
>>54268
https://github.com/ultrafunkamsterdam/undetected-chromedriver/blob/1e363b18be7ea96f77695ac8ae0e0b6118c4432b/undetected_chromedriver/patcher.py#L142
Как работает этот ебанутый итератор и зачем? И почему io.open, а не просто?
214 2154294
>>53897
короче, я переопределил буилтин функцию, какой-то кусок кода ее вызвал и получилось, что вызвалась моя функция, я внутри своей функции вызвал настоящую буилтин функцию, добавил к ее возврату, то что мне нужно и вернул в ту функцию которая вызвала мою функцию.
215 2154305
>>54291
Разобрался, это просто бездумно скопипащенный кусок.
216 2154617
Аноны, тупой, наверное вопрос.
Лениво вкатываюсь. Даже без цели, а так, голову занять и что то прикладное при случае накидать. Не в этом дело. Накидал простенькую программу (из укуса питона да) типа адресной книги с добавлением, удалением, изменением. Сохранить в файл загрузить. Вот и весь функционал. Решил прикрутить ui. Начал смотреть в сторону QtPy. И даже прикрутил. Доволен до жопы. Интересно, но заебла одна штука.
Пишу в PyCharm. И эта сволочь, когда я начал пытаться в интерфейс, перестала выкатывать ошибки в свою консольку. Окно софтины открывается работает, а когда пытаюсь жать на отрабатываемую в данный момент кнопочку или ещё что - подвисает и вылетает с каким то одним и тем же эрроокодом в консоли. Пытался Его гуглить - пишут это типа проблема IDE, она ошибки иногда не показывает.
Приходится искать мой файл, запускать в голом питоне и смотреть ошибки там.
Ну это же полная хуйня, можно это пофиксить?
А ещё эта поебень на три страницы кода собирается в .exe файл в 35 мегабайт, лол.
217 2154680
Сап, подскажите, как в гите создать ветку в удаленной репе из ветки в удаленной репе при этом не делая checkout на эту ветку и желательно не создавая локальную ветку?
218 2154776
Кто работал с django-filters? Как можно задать полю queryset без указания это напрямую в классе. Мне нужно исходя из адреса определенной страницы уже формировать queryset, но сейчас я это не могу сделать.

1 пик как сейчас
2 как хотелось бы

Заранее спасибо! Очень долго с проблемой сижу, даже в исходники пытался лезть...
219 2154813
>>54776
Через init наверное можно, там небось есть словарь с фильтрами.
220 2154814
>>54617

>А ещё эта поебень на три страницы кода собирается в .exe файл в 35 мегабайт, лол.


А как ты хотел лол, питон вообще для этого не совсем подходит, он же не компилируется.
221 2154818
>>54814
Даже если бы и компилировался, всё равно эти тулкиты надо носить с собой, это не нативный гуй.
222 2154855
>>51860
Покажи конфиг Фара. Хочется посмотреть как работают профи.
image.png96 Кб, 300x162
223 2154896
224 2154898
Думаю что учить.. аноны, что можно делать на пайтоне помимо ебаного мл?

понятно что все, но для чего еще питон используется?
225 2154907
>>54898
сайт можешь сделать
игру можешь сделать
226 2154908
>>54907
телеграм ботов делать можешь, соцсеточку можешь
227 2154952
Как сделать аналог двачерского бесконечного скролла, что бы изменившее положение треды не повторялись? Пока что придумал первым запросом отсылать список айдишек а потом уже загружать содержимое по нему. Но пока непонятно что отображать, если пользователь начал скролить через час после загрузки страницы, если часть тредов утонула
228 2154953
Аноны, почему всем похуй на мой код?
image.png64 Кб, 1226x467
229 2154986
>>54813
Сделал, но теперь проблема, что вызываю после присваивания self.declared_filters, там показывает мой новый фильтр. Но он не отображается в форме, его просто нет. Те которые объявлены как атрибуты класса, есть.
230 2154987
>>54952
Сделай при ajax запросе проверку, есть такой id или тред утонул, если нет, возвращай массив без него.
231 2155022
>>54986
Фух, сделал. Вот решение, если кому-то в будущем понадобиться.
Решение простое, но именно в этой библиотеке не очевидное.
Всем спасибо.
232 2155033
>>54987
Я думал над этим, но меня смущает ситуация, когда сайт закончится на 3-ей странице если пользователь последний раз обновлял нулевую несколько часов назад переключившись на что-нибудь другое, а потом вернувшись к борде.
233 2155062
>>55033
Да и пускай, это лучше чем он увидит тред, зайдет в него, а он уже удален.
234 2155209
Есть у вас видеокурс по питону с нуля? Куда искать?
235 2155278
>>55033
По дате нужно, берешь n записей старше даты последнего.
236 2155297
>>55278
Ну тут тоже проблема в том, что борда быстро кончится, если на нулевую давно не заходили и часть тредов утонуло. Да и потенциально этот пет расчитан на максимальный перформанс и мне кажется, что выборка из базы по конкретным айдишкам будет быстрее чем расчет по дате.
237 2155300
>>54952
Ты о чем вообще? Бесконечный скролл где?
238 2155303
>>55300
Когда ты скролишь двач, то треды автоматически подгружаются когда ты доходишь до конца страницы, я делаю свою пет-борду и хочу аналог сделать
image.png741 Кб, 1280x720
239 2155305
>>54952
>>55303
Подгружаешь при заходе на /board_name список айдишников тредов в виде массива, первые скажем 20 из них грузятся и отдаются клиенту. Когда клиент долистал до конца, отправляешь запрос и подгружаешь остальные 20 тредов по их айдишникам (если какие-то из них сдохли за это время то ничего не возвращаешь клиенту вместо того чтобы падать или кидать невалидный урл и идешь дальше)
Очевидно же
240 2155307
>>55305
Так уже писал выше что так можно сделать, но тут проблема в том, что борда быстро кончится, если нулевую давно не обновляли, а занимались чем то другим.
241 2155443
Сап, ананасы. В пайтоне относительно недавно начал учить год назад как на работу устроился и столкнулся сейчас с новой для себя проблемой.
Подскажите, пожалуйста, как лучше всего ускорить выполнение моей функции: https://dumpz.org/cDxQKp5s7cm8 в генераторе первая строка съехала, блэт
Суть: пишу микросервис на фласке, суть которого получать на вход большой список данных и ходить с ними в десяток других сервисов, агрегируя необходимую информацию, в результате формировать огромный csv файл и отправлять в респонсе. Проблема в том, что некоторые сервисы возвращают огромное количество данных и, соответственно, требуют много времени на получение ответа от них вплоть до 3-5 секунд. Собственно, обработка списка из 100 строк может занять до 5 минут времени, что достаточно долго, учитывая что в идеале за это время хотелось бы обрабатывать в десять-двадцать раз больше информации.
Вопрос - какими способами можно ускорить данный процесс?
Первая мысль - наладить трединг или мультипроцессинг с каким-нибудь producer-consumer, но я не могу пока понять, как лучше сделать это внутри моего генератора.
242 2155448
>>55443
async await
243 2155453
Всем привет, подскажите идею для мини(или не очень) проекта чтобы поработать с celery/redis, kafka и другими страшными технологиями.
244 2155472
>>55448
async await уровня /b
245 2155517
Я может совсем наркоман, но все же.

Дано задание - отфильтровать из кортежа на входе только строки и вывести их с нумерацией.

На вход например дают:

('Бананы', [1, 2], ('Stepik',), 'Яблоки', '', 'Макароны', 5, True)

На выход ожидается:

1) Бананы
2) Яблоки
3) Макароны

Пытаюсь все сделать через одно списочное выражение (а не 2, как уже сделал). Но как в списочное выражение засунуть итератор? Чтобы каждому новому элементу присваивалось вот это 1,2,3

result = [str(итератор) + ") " + i for i in args if type(i) == str and len(i) > 0]

Я слишком много хочу от Питона?
247 2155535
>>55531
А без Лямбды никак?
248 2155544
>>55535
Можно и без. Фильтер просто нагляднее, по-моему.
https://ideone.com/GqA3uT
249 2155548
>>55544
Спасибо.
250 2155569
>>55535
Через компрехеншен пиши: так в сто раз короче и читабельнее. Мап/фильтр + лямбда пишут только джуны и свитчеры с жявы.
251 2155571
>>55569
Что такое компрехеншен? Списочное выражение?
252 2155625
>>55443
А почему не джанго?
253 2155660
>>55443
Если на синхронном фреймворке писать, то тебе надо или отправлять задание через что-нибудь вроде celery, либо использовать треды.

Смотри про concurrent.futures.ThreadPoolExecutor
https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor
причём там даже пример приведён очень близкий к тому, что тебе надо.

Но я бы иначе реализовал, вот так примерно:
https://ideone.com/NFT5Ud
254 2155663
>>55660
сюда: https://dumpz.org/bf6weDMyyt96
на ideone url нельзя публиковать
255 2155700
Я конечно все понимаю, джанга типо у нас удобная, доки хорошие, расширений много... но как блять вы ебетесь с синхронным доступом в БД? Он же синхронный нахуй, блокирующий. Если с requests еще можно намутить финт с тредами (что кстати ведет к своим "ништякам" если не юзаешь ThreadPoolExecutor а просто ебошишь треды), то с БД если твой драйвер синхронный - то можешь только пососать писос, треды тут не спасут (ну помочь они смогут только в одном - запросы в БД перестанут блочить весь сервак, т.к. контекст на тредах постоянно будет переключаться)
Как жить на синхронном фреймворке и лазать в БД?
256 2155704
>>55700
А как раньше весь интернет работал, до появления моды на асинхронщину? По снегу ходили десять километров запрос в базу послать, а как же.
257 2155741
>>55700

>Как жить на синхронном фреймворке и лазать в БД?


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

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

Асинхронщина становится необходимой, когда ты продолжительные запросы начинаешь обрабатывать, вебсокеты в первую очередь. Хотя тредами тоже можно решить.
258 2155761
>>55741
Как вебсокеты относятся к асинхронщине?
мимохуй
259 2155770
>>55761
Так, что невозможно работать с постоянными соединениями в блокирующем режиме, кроме совсем примитивных сценариев.
260 2155775
>>55770
Хм, че-то я не задумывался над этим раньше. Погонял вебсокеты в fastapi, но это очевидный асинхронный фремворк, еще ради эксперимента ебошил их в nodejs но вся жс-среда асинхронна по свой сути и основана на ивентах и коллбеках. А как же тогда юзать вебсокеты в джанго или фласке? Неужели их там нет?
261 2155785
>>55775
Есть свои костыльные реализации на тех же тредах
262 2155896
>>55775

>фласке


Ебаный реликт
263 2155917
Блин, никак не могу разобраться с ебучей venv на питоне.
В жопаскрипте с npm было проще и понятнее. У меня стоит несколько интерпретаторов (2.7, 3.7 и 3.8) как мне создать venv с конкретным питоном - 3.7 ? Потому что по дефолту создается с 3.8
Не говоря уже о том что у меня в глобальном интерпретаторе затесалось несколько "левых" пакетов типо alembic которые заботливо перелезают в новую venv когда ее создаю, как создать "чистую" среду?

Linux Ubuntu
264 2155919
>>55917
Базовый встроенный венв использует системный интерпретатор. Чтобы кастомный выбрать тебе понадобится полноценный virtualenv
https://virtualenv.pypa.io/en/latest/cli_interface.html#section-discovery
https://askubuntu.com/questions/1173422/how-to-change-virtualenv-interpreter
265 2155920
>>55917
просто создаёшь окружение командой
python3.8 -m venv ~/virtualenvs/py38

Можешь путь к конкретному питону глобально прописать
/usr/bin/python3.8 -m venv ~/virtualenvs/py38
267 2155936
>>55934
Ну ХЗ, разбираться надо, у меня на убунтах это работает. И на которой сейчас сижу, и на других я точно так же всегда ставил, причём без какой-либо специальной настройки.

Мне кажется ты в какой-то момент что-то у себя в системе просто сломал.

Сейчас ради интереса попробую в убунте под докером с нуля питон поставить и проделать
268 2155977
>>51231 (OP)
Сосач ку. Я смотрю курс мфти. А где брать примеры задач для самостоятельного решения? Подкиньте ресурсов
269 2155979
>>55977
https://stepik.org/course/58852/info
https://stepik.org/course/68343/info

Вообще предлагаю эти курсы в шапку добавить. Они хорошие и бесплатные.
270 2155982
>>55979
Спасибо!
271 2155991
>>55979
Промоутеры Степика, хороший заход, но нет, не пойдёт так.

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

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

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

Покажи мне еще бесплатный курс, где в тексте дается теория, а следом по 200+ задачек на курс.

Учебники - устарели, потому что нужно не только неокортекс абстракциями грузить, но и в спинной мозг загружать привычку делать отступы 4 пробелами, писать int(input()) и прочие подобные базовые вещи.

Видосики - для тупых зумерков, которые будут с экрана по буковке код копировать.
273 2155997
>>55994
Вот какое дело. Это анон-доска, тут анон-демократия.

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

То есть противоречит духу анон-сообщества.
274 2156001
>>55997
У "нас". Я сам этот курс начал летом, и если бы не этот курс, то меня бы здесь не было.

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

Обновления шапки где? Собирались де тредов 5-10 назад. Вот и добавьте в шапку норм курсы с автопроверкой. Хватит уже нубов мучать толстыми томами или курсами на инглише (который не все на слух могут воспринимать).

И я сильно сомневаюсь, что ты сидишь через браузер с отключенным js, пуская трафик через цепочку дедиков в далеких странах и тщательно подбираешь слова, чтобы тебя нельзя было вычислить через анализ манеры общения. А если это делаешь ты, то так не делает > 90% населения треда. Не строй себе иллюзий, "анон".
275 2156005
>>51231 (OP)
Сап. Подскажите книгу, по питону продвинутого уровня. А то лутца прочитал уже давно. Уже работаю разрабом. И датаклассы и тайпхинты успел выучить. Но только потому что увидел их в работе и загуглил. А сколько ещё вещей, который я не видел и не изучил? Например не умею дэбажить и профилировать. Плохо понимаю что умеют pip и tox. Не знаю как внутри там под капотом работает питон. Да и вообще мало ли что я ещё не знаю. Знает кто-нибудь углубленную книгу по питону?
276 2156028
>>56005
Fluent python
277 2156035
>>56005
Для питона очень большой перевес вкатунских книг, серьзных мало, надо собирать по крупицам по всяким статейкам, выступлениям, видяшкам.
278 2156083
>>56035
Для тех, кто умеет программировать на других языках и хочет про питон больше узнать, очень полезна Intermediate Python, тоненькая книжка именно про особую специфику питона.

Продвинутую книжку хотелось бы иметь, но вряд ли их много.

Каждую продвинутую тему надо описывать многословно, и таких тем много.

На самом деле официальный туториал весьма хорош и там про всё есть.

Сложнее, когда надо в сторону идти и смотреть сторонние пакеты, вот этого там нет.

Например pytest, это внешняя система и надо изучать отдельно.

Датаклассы это лишь минимальная часть от технологии, если серьёзно лезть, надо attrs/cattr и pydantic, две известные системы независимые.

Всякие sqlanchemy и связанные вещи, тоже большая очень тема.
279 2156225
>>56005
Свейгарт Э. - Программирование для детей
280 2156265
>>56035
А может в треде соберём годноту про крупицам?
pyth.png41 Кб, 460x150
281 2156279
Везде пишут, что интерактивная сессия печатает то же, что и repr.
Тогда как вы объясните пикрил?
repr накинул обратного слэша. Значит interactive echo это не равнозначно repr?
282 2156280
>>56279
Так тебе второй раз репрится на выводе.
https://ideone.com/mxBNZN
283 2156294
>>56280
действительно
284 2156440
>>55517
list(enumerate(entry for entry in args if entry and type(entry) == str))
285 2156476
>>56440
enumerate начинает с нуля, если не указать арг start=1. Мы вам перезвоним.

Но вообще короче этот как раз тот кейс когда для читабельности лучше луп сделать.
286 2156592
>>56476
Цикл с аппендами медленнее, и громоздче.
Просто вы не умеете готовить компрехеншны и распаковку.
filtered_data = (entry for entry in args if isinstance(entry, str))
result = [*enumerate(filtered_data, 1)]
287 2156595
>>51231 (OP)
У меня функция обращается к ссылке и скачивает пак видосиков, мне надо чтоб она это делала автоматически в определенное время суток заданное мной, как это сделать?
288 2156596
>>56595
- Бесконечный луп с проверкой времени
- Запустить в нужное время с sleep(3600 * 24)
- cron
- Какая-нибудь библиотеканейм, которая работает по тому же принципу
Выбирай о хошь
289 2156597
>>55517
Анончик тебе правильно говорит, делай циклом, если не в код-гольф играешь.
>>56595
Планировщиком задач в виндовсе, cron-ом в линуксе.
290 2156601
>>56592
Шизоид, таблетки
https://ideone.com/9qfDsa
image.png3 Кб, 477x63
291 2156603
292 2156604
>>56601
Ты ебанулся? Какие еще нахер наносекунды? Оценка в наноманясекундах за цикл не имеет вообще никакого смысла и ничего не поможет тебе оценить. У меня примерно похожее получилось что и у анона >>56603 - компрехеншн быстрее
293 2156606
Помогите разобраться с энкодингом:
Получаю в скрипте с запроса жсон, в нём содержится поле с кириллицей, которое при выводе становится нечитабельным набором символов. При попытке стандартного энкод-декода из цп1251 в ютф8 вылезает ошибка "utf-8' codec can't decode byte "0xd4" invalid continuation byte".
Скрипт крутится в кубере, на линуксовом контейнере (настраивал его не я).
Как правильно вывести строку с русеком при данной ситуации?
294 2156609
>>56604
Шизоид, таблетки. Усредненные оценки по множественным ранам хороши тем, что сглаживают случайности. Это БАЗА всей экспериментальной науки. Лурк моар, как говорится.

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

Выводы как обычно: шизойды экономят на спичках, засирая код идиотскими трехэтажными компрехеншенами. Более опытные питонюги временами выбирают циклы исходя из конкретного кейса и их код чиатется намного лучше. И ничем не уступает по скорости (это если вообще отвлечься от того, что оптимизировать питон это да вы вообще блядь отбитые)
295 2156613
>>56609

>И это отлично бьется с теорией


Так ты не теоретизированиями занимайся. А на практику посмотри

>почти одинаковый байткод


Так одинаковый или почти одинаковый?
296 2156614
>>56609
Кстати я вас наебал, вызывать %timeit надо так:

In [54]: %timeit q = kek1()
1.2 s ± 25.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [55]: %timeit q = kek2()
818 ms ± 130 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
297 2156620
>>56613
Практика такова, что я ваши компрехеншены отбриваю на ревью и вы бугуртите...
16245631204220.png945 Кб, 1080x1080
298 2156622
>>56620
>>56614

>вызывать %timeit надо


Его вообще никак вызывать не надо
Нормальные пацаны юзают нормальный IDE
299 2156624
>>56620
Дима, ты?
Заебал ты уже мои МР отклонять, собака
300 2156659
Компрехеншены однозначно нужны и вообще это очень удобная и крутая штука питона.

Конечно, пока нет большой вложенности.

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

И дело в читаемости в первую очередь, а не в экономии наносекунд на итерацию цикла.
301 2156665
>>56659
>>56601
А эту штуку [x for x in range(100000)]
можно записать как
[*range(100000)]
Причём работать будет заметно быстрее, нет присвоения лишней переменной и байтокод сильно разный.
302 2156668
>>56620

>Практика такова, что я ваши компрехеншены отбриваю на ревью и вы бугуртите...


Такое возможно, если ревьювер не умеет писать на питоне, а из тех, кто "за две недели синтаксис проглядел и может работать".
303 2156698
>>56665

>присвоения лишней переменной


Ну вот да, когда мы приходим к таким оптимизациям, кажется пора менять питон на что-то batya approved вроде крестов.
304 2156706
>>56698
Это не оптимизация ради оптимизации, это просто лишние переменные, что вредно для читаемости.

С точки зрения анализа кода код сильно разный, в одном случае по итогу у тебя есть переменная x, в другом случае её нет. Из-за этого и разница в производительности.

Потом в любом случае полезно думать о том, во что вливается твой код. И не делать лишний раз тормоза, когда их можно не делать, причём без вреда для поддерживаемости кода.
305 2156723
Как мне сделать так, что бы генератор возвращал гарантированно один объект? Есть что нибудь типа [ ... ].first() ?
306 2156726
307 2156803
>>56706
Чел, ренж со звездочкой это оооч частный случай.
308 2156805
>>56726
Прилетает ехидный StopIteration,
Вы забыли добавить kek = object(); next(iterator, kek), мы вам перезвоним.
309 2156841
>>56609

>трехэтажными компрехеншенами


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

>>56614
Разница в 50%. Да, очень маргинально отличается. Когда дорастешь до обработок каких-нибудь таблиц на пару миллионов значений в фоновых тасочках какого-нибудь селери, вспомнишь про то, как писать эффективный код и выкинешь змею нет, не выкинешь, скажут пм и клиент

Переписка с шизами, считаюших таковыми всех вокруг, кроме себя, окончена.

>>56803
Распаковка работает с любым итерируемым объектом, в том числе с кастомными генераторами, источниками данных и т.д.

>>56805
Откуда он прилетает, если в том посте даже кода нет, а только указание на нужный метод? Хорошо наверное воображать то, чего не существует, и спорить с ним.
Алсо, на практике в подавляющем числе случаев код взятия первого элемента не создает видимость наличия этого элемента, как предложил ты, а передает в default что-то вроде None или статического маркера, если нон возможен как значение в генераторе, так что твой код тоже ни о чем.
310 2156859
>>51965
а какие ты скрипты писал для работы?
311 2156860
>>56841
как предложил ты, а передает в default что-то вроде None или статического маркера, если нон возможен как значение в генераторе, так что твой код тоже ни о чем.
Читай задание и не пукай.

>Алсо, на практике в подавляющем числе случаев код взятия первого элемента не создает видимость наличия этого элемента,


Что там first в джанге возвращает, ммм?

> Когда дорастешь до обработок каких-нибудь таблиц на пару миллионов значений


Ох щас бы крутить табличные данные в голом питоне. Ты понимаешь, что ты отбитый наглухо?
312 2156875
Допустим, у вас есть несколько модулей в проекте и в них вы часто используете какую-нибудь небольшую функцию, зачастую таких функций несколько и они постепенно перерастают в модуль utils/helpers, что уже само по себе плохо, так как при пересборке зависимостей вам придется обновить все библиотеки, которые его юзают, даже если изменилась одна функция, которую некоторые из модулей могут не использовать. Как решить эту проблему правильнее? Я чет кроме копирования функций по месту требовния ничего не могу придумать.
313 2156897
>>56875
шта
314 2156900
>>56860

>Что там first в джанге возвращает, ммм?


None он возврщает шиз, ничем не отличается от next([T], None), возвращаемое значение в любом случае Optional[T] и его требуется проверить на None
315 2156905
>>56900
А так ты просто читаешь код жопой. object() как раз чаще всего и используется как статический маркер.
316 2156906
>>56897
Кароче, есть набор функций, которые по чуть чуть юзаешь везде. В один момент перенес их в модуль utils. Теперь когда ты изменяешь функцию get_zalupa пересобираются библиотеки, которые используют модуль utils, но которым функция get_zalupa не нужна, но которые используют функцию get_jopa из того же модуля. Модули, которые используют get_zalupa и get_jopa являются пересекающимися множествами.
317 2156907
>>56905
Это означает говнокод, тут либо дефолт который можно использовать дальше по коду либо None. Все остальное выглядит как полный треш за который обоссут на ревью.
318 2156910
>>56906
А не похуй ли?
319 2156915
>>56726
Нипомогло. Обошелся [0] в конце
320 2156918
>>56906
Я не пойму, что ты имеешь в виду под пересобирается.
321 2156920
>>56907

> дефолт который можно использовать дальше


Его положили в переменную kek, значит можно. Попущен.
322 2156931
>>56918
Представь, что у тебя ci/cd настроен так, что пуш в мастер для модуля создает новую версию пакета и заливает ее в твой pypi/на сервер. При этом проверяются все либы, которые зависимы от исходной и так же пересобираются, пока везде не будет самая новая версия твоего модуля.
323 2156943
>>56920
мимо
Ты буйный школьник какой-то.
Решение дали. Я, кстати, не знал, что вот next() такое умеет. Правда им реально не пользуюсь.

Этот параметр нужен как раз для таких целей.

Использовать так object это какая-то лютая дикость. Приведи пример, чтобы в каком-нибудь реальном проекте для каких-то подобных целей object использовался.

<Более того, не понятно как вообще это можно потом использовать, ну будет у тебя kek типа object. Что ты с этим будешь делать?

Если не хочется None, то тогда делают Ellipsis (троеточие)
result = next(gen(), ...)
if result is Ellipsis:
____pass

Это альтернатива None, поскольку None всё-таки может штатным образом возвращаться.
324 2156959
>>56943

>Использовать так object это какая-то лютая дикость. Приведи пример, чтобы в каком-нибудь реальном проекте для каких-то подобных целей object использовался.



Бля, чел...
https://github.com/python/cpython/blob/main/Lib/functools.py#L527
325 2156965
>>56959
В стандартной либе полно треш кода
Особенно забавно:
cache_get = cache.get # bound method to lookup a key or return None
cache_len = cache.__len__ # get cache size without calling len()
326 2156969
>>56965
На самом деле это имеет смысл. Вынесенные методы работают быстрее, так как не приходится парсить объект на его наличие
327 2156975
>>56965
Тоже думаю, что тут оптимизационное байтоёбство. Кеш всё-таки должен быть быстрым и это разумно.

>>> def foo1():


... return cache.get('aaa', None)
...

>>> def foo2():


... return cache_get('aaa', None)
...

>>> dis.dis(foo1)


0 LOAD_GLOBAL 0 (cache)
2 LOAD_ATTR 1 (get)
4 LOAD_CONST 1 ('aaa')
6 LOAD_CONST 0 (None)
8 CALL_FUNCTION 2
10 RETURN_VALUE

>>> dis.dis(foo2)


0 LOAD_GLOBAL 0 (cache_get)
2 LOAD_CONST 1 ('aaa')
4 LOAD_CONST 0 (None)
6 CALL_FUNCTION 2
8 RETURN_VALUE

Надо тестировать, насколько разница велика. Но при учёте, что ты пишешь системную библиотеку, которой часто пользуются, то почему нет?
328 2156976
>>56969
Думал что подобное должны были оптимизировать для встроенных типов, как например разворачивание числовых выражений в константу.
329 2156985
>>56975
Там кстати объект используется как дефолт в случае если не задан размер, дальше по коду идет link = cache_get(key); if link is not None:
330 2156988
>>56976
Нет так просто с этим. Ты можешь захотеть создать свой класс, унаследованный от словаря, и переопределить в нём нужные методы.

Если делать такие оптимизации, то придётся городить что-то очень сложное.

Ну и в принципе есть такое, что язык плохо оптимизирован. Просто его изначально создавали без такого прицела. Там много чего можно было бы оптимизировать, если сделать специальные особые типы с ограниченными возможностями. Например, те же словари, но без возможности наследования от них.
331 2156989
>>56976
У питона очень тупой итрепретатор, к сожалению, хотя при генерации байт-кода уже можно было бы сделать оптимизации. Вроде за производительность планировали взяться в следующих релизах. Охуел, когда узнал, что даже вызов функции в питоне это тяжелая операция.
332 2156991
>>56988
Ну там ниже идет вроде манкипатч try:
from _functools import _lru_cache_wrapper
except ImportError:
pass
Это вроде как сишная реализация которая перекрывает то что было выше
333 2156994
>>56985
Правильно, потому что если размер задан, то в кэше лежат уже не сами значения, а кортежи в которых помимо значений есть еще и указатели на позицию в кольцевом буфере.

Поэтому, просто None означает что мы ничего такого в кэш не клали.
334 2156995
>>56991
https://github.com/python/cpython/blob/main/Modules/_functoolsmodule.c
Вот что в реале будет юзаться.
335 2156999
>>56991
В плане байтоёбства я вот что не понимаю
строки 542-547
def wrapper(args, kwds):
____# No caching -- just a statistics update
____nonlocal misses
____misses += 1
____result = user_function(
args, kwds)
____return result

На кой хрен тут создаётся переменная result? Почему нельзя сразу сделать
return user_function(args, *kwds)
(звёзды слетят, ну все поймут)
Это обходится в две лишние ненужные операции в байткоде.
336 2157001
>>56999
Один хуй ниже патчат код сишной либой лол.
337 2157039
>>56975

>2 LOAD_ATTR 1 (get)


The LOAD_ATTR instruction now uses new “per opcode cache” mechanism. It is about 36% faster now for regular attributes and 44% faster for slots. (Contributed by Pablo Galindo and Yury Selivanov in bpo-42093 and Guido van Rossum in bpo-42927, based on ideas implemented originally in PyPy and MicroPython.)
В 3.10 начали оптимизировать это
338 2157047
>>51231 (OP)
Привет, анон. Так вышло, что надо переходить по изъебистой ссылке в питоне, urllib и requests выкидывают похожие ошибки

ProtocolError: ('Connection aborted.', OSError(0, 'Error'))
Типа того, в гугле 0 инфы по делу, может кто знает как решить ? или посоветуйте либу, не эти 2 хуйни, которая может подключиться по прокси (http , socks5 ), сделать куда-то запрос без лишней ебли головы
339 2157058
>>57047
requests пиздец хуйня, отвратительно работает подключение по HTTP прокси. Вместо того, чтобы выкинуть ошибку, считает прокси валидными при заведомо плохих данных. Пиздец, открыл их гитхаб, не только у меня проблемы с ними. А альтернативу б найти
XncMvwHVu9U.jpg371 Кб, 1280x960
340 2157176
Насколько критично читать лутца на англе? Мне больше бумажные издания нравятся соответственно быстро получить могу только на русском, много ли я потеряю?
341 2157210
>>56860

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


Спойлер не читай @ сразу отвечай
342 2157222
Аноны, посоветуйте, как изучать python. Сейчас учусь на первом курсе на направлении, не связанном с программированием, но подумал, что было бы неплохо изучить его для себя, ибо в будущем вполне может пригодиться. Сам я с питоном знаком, сдавал с его помощью ЕГЭ по информатике, хотя сам прекрасно понимаю, что это достаточно далеко от настоящего программирования. Так что бы мне такого почитать, чтобы разобраться? Думал почитать Лутца, но прекрасно осознаю, что тысячу страниц я не осилю, так что пока начал читать "Укус питона"
343 2157223
344 2157241
>>51231 (OP)
Какой в питоне есть годный способ сделать несколько попыток повторения при какой-то ошибке? Я обычно делаю рекурсивные вызовы со счетчиком, но это как-то не очень.
345 2157253
>>57210
Не оправдывайся, рукожопка.
346 2157272
>>51231 (OP)
Как создать ссылку для получения файлов в бесконечном цикле? При обращении к ссылке файлы должны автоматически сохраняться в указанную директорию.
347 2157276
>>57272
Просто дернуть хттп-метод.
348 2157292
>>57241
Напиши свой retry декоратор
349 2157299
Меня тут не обоссут если спрошу пару вопросов из институтской программы? Перевожусь из одного универа в другой и нужно изучать пайтон.
350 2157306
>>57299
Пиши, хули.
351 2157317
Короче, делаю дз по джанго. В одном из заданий говорится, что нужно написать код во вьюшке, чтоб при заходе на /условность открывался список, просто текст. И я это сделал. Админка работает, на главной текст, на /условность тоже текст есть. Задание проверили и сказали, что ожидают предопределение списка, оборачивание его в теги нумерованного списка, формирование строки, которую опять нужно обернуть в теги и "подать" в HttpResponse. Я по правде сказать в прошлом универе писал чуть-чуть на си шарпе и то, плохо что помню.
Вот допустим во вьюшке у меня представление

def advertisement_spec(request, args, *kwargs):
return HttpResponse(и пошел текст)
в урле
path("todo/", views.advertisement_spec, name='advertisement_spec')

Что мне сделать то нужно? Я плохо понял что от меня требуется.
352 2157318
Сказали в urls все окей, нужно что то со вьюшкой сделать.
353 2157320
>>57222
поясни как сдавал еге на питоне
что там за задания?
354 2157324
>>57276
Пользуюсь фласком, вот функция:

@app.route('/upload',methods = ['GET','POST'])
def upload_file():
file = request.files

return jsonify()
Сам файл приходит с постмана, но хули дальше делать не знаю, через open не сохранялся.
355 2157326
>>57317

>ожидают предопределение списка


Наверное чо-то типо получения списка из базы?

>оборачивание его в теги нумерованного списка


Достаёшь из контекста и оборачиваешься в <ol><li>{item}</li></ol>

Полученную строку суёшь в Response.

А по факту хуйня какая-то, а не задача
356 2157328
>>57326
короче мне просто создать html и дать путь к нему, чтоб не хранить текст во вьюшке?
357 2157329
>>57326

>Достаёшь из контекста


Обосрался тут. Не из контекста, а из списка, конечно

И построение строки будет что-то типо:
"<ol>" + "".join([f'<li>{item}</li>' for item in items]) + "</ol>"
Не проверял, работает ли вообще
358 2157330
>>57253
Ты нормальный? Речь о составе команды, при чем тут криворукость? Даже если лично я навелосипежу эту обработку на крестах-жабах, никто в здравом уме не будет это принимать, т.к. понадобится нанимать отдельного спеца на какой-нибудь кривой непостоянный график для поддержки этого решения, когда весь проект и, соответственно, команда для него - змеевеки.
359 2157331
>>57328
Дык я не знаю, чо вы там изучить успели уже. По нормальному если делать - надо создать context и туда передать свой список значений, а потом во темплейте уже подставлять через тэги типо
<ol>
{% for item in items %}
<li>{{ item}}</li>
{% endfor %}
</ol>
360 2157335
>>57331
Я тебя понял. Спасибо.
361 2157599
>>57272
Передавать retry_count в kwargs пока тот не дойдёт до библиотечной функции, которая этот параметр поддерживает. Если нет возможности, то пиши свой велосипед с удобным тебе логгингом, проверкой результата и хэндлинга эксепшенов
362 2157600
>>57241
>>57599
Сори это тебе
363 2157730
>>57320
В этом году ЕГЭ сделали полностью компьютерным, так что можно было абсолютно все задания решать с помощью компьютера, но некоторые всё же быстрее на листочке решить.
Из тех, что решаются с помощью программы, были задания на решение уравнения с несколькими неизвестными и параметрам, задания на написание программы с рекурсией, программы для перевода в другие системы исчисления, обработка массивов с числами, обработка текстовых файлов, нахождение промежуточного значения переменной, две задачи прикладного содержания.
Если интересно, можешь в Гугле набрать "решу ЕГЭ информатика" и посмотреть типовой тест
364 2157764
>>57730

>Если интересно, можешь в Гугле набрать "решу ЕГЭ информатика" и посмотреть типовой тест


Загуглил, чуть иначе. Вот такой вариант нашёл, пробный онлайн-тест:
https://inf-ege.sdamgia.ru/test?id=9195205
Что-то там такой конкретный литкод, я не ожидал.

Попробую ради интереса чуть порежать, пока не надоест.
365 2157921
>>51231 (OP)
О боже блять, ну что за еб твою мать. Запустил фастапи, попытался создать соединение через вебсокет, постоянно высирается ошибка 403:
('127.0.0.1', 49434) - "WebSocket /ws" 403

Делаю как в примерах, все равно та же хуйня. Думал распространенная рпоблема, но нихера подобного. Что это блять?
366 2157948
>>57921
pip install websockets
16081056956400.png661 Кб, 640x640
367 2157952
Объясните ньюфагу. Вот допустим у меня есть функция_1 которая return список. Есть функция_2 которая что-то делает с этим списком.
Я должен передавать список в папрметрах функции_2 или можно обращаться к списку как к аргументу функции_2? Есть какие-то рекомендации или это фломастеры на вкус и цвет?
368 2157955
>>57952
Просто вызываешь одну функцию внутри тела другой функции. Можешь конечно и как аргумент при вызове перекидывать.
369 2158012
Кто-нибудь с dash работал?
Как засунуть глобальную переменную в input callback'a?
370 2158019
>>57764
>>57730
что такое алгоритмический язык и бейсик?
бейсик это язык на котором написан код для запуска депеш на пневмопочте?
371 2158224
>>51231 (OP)
Вопрос по фласку ip выводится через request.remote_addr, а как дату вывести? Причем желательно именно дату без времени в часах и минутах.
372 2158296
Как элегантно раскидать вложенные условия? Допустим, нужный результат зависит от функции, вызов которой зависит от: x > 0 или y > 0 или z > 0,. То есть на выходе получается 8 вариантов. Если писать через IF-ы, выйдет жесть, пока что вижу такой подход — преобразовать три условия в три бита и в зависимости от преобразования двоичного числа в десятичное вызывать нужную функцию. Но хз, как-то не по питонячьи звучит, так можно и на плюсах написать, может у питона есть свое решение для такого рода задач.
373 2158308
Как в wxPython'е сделать кнопку с прозрачным изображением (скруглённые углы), чтобы фон продолжал отображаться?

Я могу просто в главном Panel'е через dc.DrawBitmap() нарисовать, но тогда у меня не будет никакого объекта с координатами и размером, чтобы клик хендлер повесить. Если же я пытаюсь использовать хоть StaticBitmap, хоть Panel — сразу же чёрные углы появляются.
Неужели это такой охуительно продвинутый дизайн, что не сделали нормальным методом? Я с ткинтера-то ушёл, потому что на стаке сказали, что в wxpython'е прозрачности имплементированы нормально. А в итоге соврали, падлы, та же хуйня без примитивных фич.

Я даже не против иметь два "объекта": один для отрисовки и второй для нажатия. Но как мне тогда сделать полностью прозрачный объект, который будет лишь для захвата клика мыши?
374 2158314
>>58308
Ну как обычно, часами бьёшься, а как спросишь — тут же решение нашёл.
Хотя, вроде вот разобрался — нужно унаследовать от StaticBitmap'а и в EVT_PAINT хендлере не делать dc.Clear(), и там же dc.DrawBitmap().
375 2158315
Пасаны памахите.
Пилю джанго проект. Внезапно одна приложуха начала выплевывать страницу как текст html Ни ошибок ничего. Код самой приложухи не менялся. Что делать? куда смотреть? Гугл не помог.
376 2158341
>>58315
Контент тайп какой в заголовках?
377 2158403
>>58341
С заголовками все норм. Но дело было действительно в контейнт тайпе. Кто то передал словарь контекст в рендер дважды, как раз на позицию контент тайпа. Убрал лишний словарь все заработало.
378 2158425
Пожалуйста, объясните как тут ( https://pythobyte.com/gui-calculator-using-tkinter-7c934a0e/ ) всё работает. Переписал весь код, но застрял на строке variable_name, при запуске ошибка наименования, parent_window не найден.
379 2158449
>>51231 (OP)
Ебаный рот этого fasapi блять...
Сука битый час уже ебусь с ошибкой рендеринга темплейта jinja. Когда юзаю там url_for то эта мразь высираетм не NoMatchFound то есть не находит файла который я там ему указала. Абсолютно не ясно блять, хули ему не так, отладить - тоже
380 2158451
Как в Selenium (Firefox) скачать изображение по ссылке?
У меня открывается она в виде изображения
381 2158498
Двач, нужна помощь в запуске diff с помощью питона. Надо сравнить 2 дерева именно diff'ом.

subprocess.call('diff -qr ' + folder1 + ' ' + folder2 + '> file.txt', shell=True) не создает файл. Возможно проебал listdir или что-то еще.
Лучше в телегу, @nevershi, за помощь могу чуть отблагодарить.
382 2158499
>>58498
немного проебался с кавычками около файла, там пробел >file.txt
быстрофикс
383 2158582
>>58019
Алгоритмический язык - язык, который используется для Кумира (программка для изучения программирования в средней школе). А про Бейсик не знаю, не думаю, что ещё в принципе в каких-либо школах изучают
384 2158618
>>58498
Я вызывал ffmpeg так (аргументы списком). По другому не работало. Дальше не
разбирался.

subprocess.call(['ffmpeg', '-i', src_path+i.name,"-hide_banner",'-y', "-vf", "scale=h=480:w=854",'-crf', '27',dst_path+re.sub(".mp3|.mp4|.mkv|.wmv|.flac",".mp4",i.name)])

Но у меня и твой вариант работает.

>>58296
4 раза перечитал пока понял. Python way в данном случае сделать кортеж args и словарь kwargs аргументов функции, заполнить их в произвольном порядке, произвольным способом, и в конце вызвать один раз функцию с этим словарем в качестве аргумента используя операции распаковки func (args, *kwargs).
https://realpython.com/python-kwargs-and-args/
385 2158737
>>51231 (OP)
Как правильно хранить все инстансы конкретного класса?
У меня есть набор объектов моего класса Session. У каждой Session есть свой уникальный id, хочу метод типо get_session(id) который по этому уникальному айдишнику достанет конкретную сессию
386 2158772
>>58737
Берешь дикт, делаешь ключ-айдишку и значение-инстанс, можешь под это дело создать класс SessionStorage и реализовать метод get_session
387 2158775
>>58582
нахуя назвали кумир? это рофл или троллинг?
8f24389c596128d0766713f119193ee3.jpg205 Кб, 1178x1706
388 2158777
>>58775
Должно было быть Кумар, но ошиблись.
389 2158827
Смотрите, какая хуйня.
https://ideone.com/WWNNVv
Выдает один объект на неиспользуемые вызовы, а потом его же дает на первом следующем используемом, лол.
Это оптимизация конкретно вм cpython? Есть где почитать про такие штуки?
что это блядь.mp41,2 Мб, mp4,
960x540, 0:06
390 2158892
391 2158913
>>58827
Это не один объект, это разные объекты размещенные в одной и той же части памяти, просто у тебя при отсутствии присваивания lst тут же уничтожается и при следующих вызовах питом переиспользует эту память
392 2158919
>>58913
Хмм, похоже на то. https://ideone.com/atK3oC
На как он так постоянно попадает в тот же адрес, если даже последовательно созданные могут очень отличатся?
393 2158921
>>58919
Считай что у питона в этот момент есть набор ячеек с выделенной памятью, которую еще не освободили и размера которой хватает, что бы закинуть туда твой lst
394 2158926
>>51231 (OP)
Как открыть видос используя фласк в новой вкладке браузера? Файл хранится у меня, при переходе по ссылке должен воспроизводится, вроде как надо юзать return send_file(тут чета написать надо), но хз что.
395 2159073
>>58926
Звучит довольно просто, надо только хатетепе-метод дернуть.
396 2159083
Подскажите пожалуйста, как в джанго во вьюшке вернуть HttpResponse со строкой, состоящей из элементов списка, обёрнутых (элементов) в теги?

Пример вот:
tasks = ['Установить python', 'Установить django', 'Запустить сервер', 'Порадоваться результату']

new_tasks = ['<li>' + task + '</li>' for task in tasks]

....

return HttpResponse(tasks_str)

Но я плохо понимаю суть происходящего, сейчас у меня вьюшка возвращает
HttpResponce('<ul>'
'<li>'Раз'<li>'
'<li>'Два'<li>'
'<ul>' ) и т.д
397 2159093
>>59083
Целиком код покажи. Чо за tasks_str?
И страничку отрендеренную тож скинь
398 2159105
>>59093
Я честно сам не знаю что за переменная это, это в примере так, и мне нужно в advertisement_spec вернуть HttpResponse со строкой, состоящей из элементов списка, обёрнутых (элементов) в теги, препод еще говорит что у меня просто строка и в реальном проекте пользователь будет попунктно вводить строки,я не понимаю о чем речь идет, а моя вьюшка вот
from django.shortcuts import render
from django.http import HttpResponse

def advertisement_list(request, args, kwargs):
return render(request, 'advertisement/advertisement_list.html', {})
def advertisement_spec(request,
args, kwargs):
return HttpResponse('<ul>'
'<li>Товар 1</li>'
'<li>Товар 2</li>'
'<li>Товар 3</li>'
'<li>Товар 4</li>'
'<li>Товар 5</li>'
'</ul>')
399 2159107
>>59093

А реальная страница просто выглядит как список у меня
400 2159123
>>59105
>>59107
Чо-то ты нахуевертил тут. Зачем тебе два метода вообще?

А по факту вот чо надо тебе сделать. Беру примеры из >>59083
return render(request, 'advertisement/advertisement_list.html', {tasks=tasks})

Внутри advertisement_list.html юзаешь темплейт тэги.
<ul>
{% for task in tasks %}
<li>{{ task }}</li>
{% endfor %}
</ul>
401 2159125
>>59123
Обосрался со словарём.
{'tasks': tasks}
402 2159133
>>59123
Там первый для главной страницы и второй для /блабла. Это неправильно? Вроде работает

Что вообще делают темплейт теги и чем отличаются от html ?

Спасибо огромное что отозвался и помог, вечером буду пробовать.
403 2159136
>>59133
Это ты? >>57317
Я ж тебе написал уже как чо нужно делать.
Второй день одно и то же тебе пишу. Ей богу документацию почитай например

>>59123-кун
404 2159137
>>59123
И что значит {'tasks': tasks} в конце render ? Я всегда в конце ставил {} и знал лишь то, что это все дело возьмет мой html и вернет.
405 2159139
>>59133

>Там первый для главной страницы и второй для /блабла. Это неправильно? Вроде работает


Я не знаю, что для тебя "правильно". Если тебе просто html отобразить без проброса данных, то сойдёт

>Что вообще делают темплейт теги и чем отличаются от html ?


Ну смари. Вот видишь этот словарик "{'tasks': tasks}" загадочный? Це есть context. В этом контексте ты передаёшь данные, которые прокидываются в твой файл, указанный на один параметр раньше. То есть в данном случае в "advertisement/advertisement_list.html".
Внутри html-ки ты можешь брать данные из контекста при помощи языка шаблонов Джанги. Как что там работает расписывать не буду - доки в помощь, там нет ничего сложного.
406 2159140
>>59136
Да, я. Хех. Ну у меня туговато пока идет, плохо понимаю. Почитаю, спасибо.
407 2159354
Мужичье, подсобите нубу. Сделал пару проектов: легенький чат на сокетах, типичный бложек с админкой. Так вот, хочется намутить что-то интересное и полезное, чтобы не пылилось в репозитории, а использовалось кем-либо. В голову ничего кроме скучных ботов с погодой не приходит, но лесом их. По части веба знаю только фласк и некоторые расширения. Есть идеи?
408 2159360
>>59354
Бот или площадку для профсоюзов. Сейчас эта хрень нарастает, и среди айтишников тоже.
409 2159365
>>59354
Пиши то что интересно тебе и не бойся сложности.
410 2159469
В Фастапи пытаюсь проставить куки или хедеры, никаких ошибок не падает, ответ приходит фронту но там нет ни кук, ни хедеров которыя я проставил
ВТФ?
411 2159473
Появляется вот такая штука при попытке запушить в гит, помогите пожалуйста, git pull уже пробовал, не помогает, пишет refusing to merge unrelated histories. До этого проект с гит удалял и вот пробую опять залить.

21:47:45.123: [project] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false push --progress --porcelain 123 refs/heads/master:master
error: failed to push some refs to 'https://адрес.гит
hint: Updates were rejected because the remote contains work that you do
To https://адрес.гит
!refs/heads/master:refs/heads/master[rejected] (fetch first)
Done
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
412 2159494
>>59469
Подозревал что дело в CORS. Все так и оказалось. Он блять localhost и 127.0.0.1 считает разными хостами блять
Ну вот че это захуйня? Что за еб вашу мать?
убил 4 часа на эту хуйню
image.png35 Кб, 788x324
413 2159540
Попытался прикола ради заделать синглтон как советовали в инетах. В результате мне в ебало кидают ошибку. Втф?
"object.__new__() takes exactly one argument" но ведь блин в примере было именно так...
414 2159572
Как реализовать подобное поведение с помощью Пистона:
У меня есть некий объект-словарь, я посылаю запрос на получение некого элемента из этого словаря, значение которого превышает 100. Если мы смотрим в словарь и на данный момент не видим такого элемента то "засыпаем" и ждем его появления, как только он появляется, отдаем его. Подозреваю тут асинхронку нужно ебошить, но вот как именно?
415 2159584
>>59572
Я когда-то такую штуку делал, но тут элемент ты получишь не сразу, а когда эвент луп отпустит, может у тебя адаптировать получится под твои нужды

https://ideone.com/qdAILK
416 2159670
Как отправить сообщение через aiogram вне декораторных функций?
Код вроде
tg = Bot(token=token)
tg.send_message(user_id, f'test')
не работает т.к. обычно он вызывается через await а await неполучается указать вне декораторных оберток.
417 2159679
>>59354
Скинь чатик, хочу в сокетах разобраться, как это работает.
418 2159692
>>59572
Можно добавить хук в методы изменяющие словарь, хук будет проверять появилось ли значение соответствующее условию. Если появилось, то хук вызывает коллбек.
419 2159726
>>59670

>обычно он вызывается через await а await неполучается указать вне декораторных оберток


неполучается указать вне декораторных оберток.

А ты подумай почему
420 2159736
>>59692
Легко сказать, неочевидно реализовать
Что значит "проверяет"? Оно в бесконечном цикле там сидит, проверяет, засыпает на секунду и снова проверяет?
421 2159738
>>59360
бот это же примитивная срань по шаблону, не?
422 2159754
>>59670
Не владею aiogram, то если ты хочешь вызвать корутину из синхронного кода, то есть то, что надо через await запускать, тебе надо запустить эту корутину в виде задачи
asyncio.create_task(tg.send_message(user_id, 'test'))

Так запустится, но результат корутины ты получить без await в любом случае не сможешь.
423 2160007
Хм, а как реализовать этот самый long-polling на питоне (не важно на каком фреймворке)?
Вот у меня есть данные которые я с сервака хочу передать паре клиентов, что на нем сейчас сидят, как это сделать блин? Все работает в формате реквест-респонс, я не могу просто и без задней мысли с сервака послать реквест клиенту на сайте. Вроде как есть выход - long polling: клиент просто посылает запрос и ждет ответа скажем 30 секунд, если ничего не происходит то снова шлет запрос и ждет. Вроде неплохо звучит но как это бля делать? Что во фласке что в фастапи или еще где реквесты обрабатываются особыми функциями-хендлерами и как же мне блин заставить конкретный хендлер отправить данные конкретному клиенту?
424 2160030
>>60007
while True:
----result = get_result()
----if result: break
----time.sleep(0.5)

)))
425 2160330
>>59584
Вообще говоря неплохая тема, как бы еще таймаут поставить чтобы в случае его превышения бросался эксепшн / возвращался None, а то иногла ждать до обсера - не лучшая идея
426 2160374
>>59584

>Я когда-то такую штуку делал


Очевидно недавно, код завязан на специфику версии 3.9, которой меньше года.

Как минимум явная ошибка в await_elem, там ты перезаписываешь future в словаре _await_task, не проверяя, есть ли там что-нибудь. При этом делаешь pop оттуда, когда достаёшь элемент. Очевидно может быть коллизия.

Честно говоря что-то странное, вообще ты какие-то именованные каналы или именованные события переизобретаешь.
427 2160381
>>59572
Здесь надо тебе прописать ТЗ корректно, тест-кейсы.

Что должно происходить, если ты сначала положишь элемент больше 100, а потом уберёшь его? И после этого будешь слушать?

Насколько большой словарь? Тут просто вопросы оптимизации могут быть.

Вообще такая идея может быть. Ты создаёшь свой класс-словарь. В нём есть множество (set) ключей, значения словаря по которым больше 100. И делаем asyncio.Event(), событие, которое срабатывает, если есть элемент такой.

Вот, в __setitem__ ты смотришь, какое значение. Если значение больше 100, помещаешь ключ в множество. Если меньше, делаешь discart ключа из множества.

После этого смотришь на размер множества и меняешь статус Event() по необходимости.

__delitem__ тоже надо скорректировать.
428 2160385
>>60381

>тест-кейсы


Конкретно принципиален такой тесткейс

my_dict[]
... пока в нём нет больших значений, но в другой задаче кто-то уже что-то ждёт
my_dict['key'] = 444
my_dict['key'] = 10
Вот тут синхронный код, без await. Ты записал большое значение, и тут же перезаписываешь его маленьким. Как должен вести себя словарь в этом случае?
429 2160546
Сап, а можете объяснить разницу между celery и asyncio? Ньюфаг питона, прочитал почти всего лутца и сделал пару проектов на коленке
430 2160560
>>60546
Ну чел... Это примерно как спрашивать, в чём разница между процессом и процессором.
431 2160627
>>60546
Лутц это реликт из конца нулевых. Про асинхронку он ничего не рассказывал - ничего удивительного
432 2160632
>>60546

>сделал пару проектов на коленке


Каких?
433 2160705
>>60632
В основном два телеграм бота (акция халявный бигмак в макдаке - авторег аккаунтов, парсер транспорта москвы по бортовым и гос номерам) и по мелочи парсеры, автоотправка форм (разработка типо бомбера обратных звонков с разных сайтов), раньше делал говно сайты на пыхапе и верстал хуевый дизайн.
Хз насколько тут это считается норм для новичка, но тупо тестировал возможности питона и пытался крутиться, заработать пассивно пару соток в день (пока профита нет, кроме опыта)
434 2161019
>>60560
то есть асинкио это физическое устройство а целери это код?
435 2161090
>>60030
Блять, это и есть long polling? Без рофлов?
ебануться нахуй
Даже если мы заменим эту ебень на асинхронки и asyncio.sleep все равно херня выходит
436 2161195
>>61090
Реализация long polling будет очень сильно зависеть от фреймворка и от задачи.

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

Хендлер не отвечает сразу, а подписывается на какую-то очередь или канал, из которого с таймаутом ждёт сообщение. Если пришло сообщение, отправляет его, если не пришло, отправляет сообщение "ничего пока нет, call again".
437 2161202
>>61195
>>61090
>>60007
Короче вот что-то вроде демки на aiohttp
https://ideone.com/j44YCk
Запускаешь, набираешь
http://localhost:8040/long_polling/
это запрос

За 15 секунд, если очередь пуста, соединение будет закрыто с сообщением соответствующим.

Если же ты в это время или заранее вызовешь
http://localhost:8040/msg/hello/
то тогда сервер ответит сообщением.

Это иллюстрация идеи.

С фласком будет сложнее, там нужно треды создавать.

И отдельный вопрос, как это поддерживать, когда ты за вебсервером стоишь.
438 2161779
>>59736
Основная идея вот такая -> https://ideone.com/NJKSxV

>Оно в бесконечном цикле там сидит, проверяет, засыпает на секунду и снова проверяет?


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

>без задней мысли с сервака послать реквест клиенту


Вебсокет

>как же заставить конкретный хендлер отправить данные конкретному клиенту


У клиента должен быть идентификатор. При получении запроса хендлер проверяет есть ли данные для клиента с этим идентификатором
439 2161781
>>61779

>Вебсокет


ws и long polling это разные технологии и подходы в принципе
440 2162026
Вопрос по Django. Обычно в модели юзера есть роли и каждая роль наделена комплексными типичными для роли правами. Но если есть потребность, как грамотно прописать для каждого юзера в отдельности какие-то права на конкретные view или действия?
К примеру у нас есть роль модератора, который может удалять посты, редактировать посты, банить пользователей. Но одному пользователю я хочу дать возможно тоже банить людей, но при этом не давать другие права модератора. А еще одному позволю только удалять посты. И т.д. Я не хочу создавать тысячу ролей на все возможные сочетания прав, а просто хочу как-то 1-2 кликами давать права на конкретные действия в конкретных view. Как такое обычно осуществляется? Извиняюсь за косноязычность.
441 2162074
>>62026
Создаёшь 2 модели: Role и Permission. Связь Many-to-Many
По сути всё, что тебе надо будет сделать - создать роли, в которых будут прописаны права на действия. Потом уже эти роли раздавать нужным пользователям.

Но это будет работать в том случае, если у тебя в принципе права у пользователей похожи. Если же у тебя принцип такой, что один пользователь может чо-то добавить, другой чо-то удалить, а третий отредактировать, при этом второй может посмотреть записи таблицы, а первый нет, то лучше напрямую с Permission работать без создания ролей
442 2162193
>>51231 (OP)
Привет анонычи, реквестирую литературу или курсы по асинхронщине в питоне для веба , всякие aiohttp и тп, везде по чуть-чуть я и сам нашел. Но наверное же есть материал, где львиная часть посвящена именно этой теме?
443 2162199
>>62193
пс , ролик из ОП-поста уровень хеллоуворлда, мне такое не надо
444 2162205
>>62193
Есть допустим sanic, который можно назвать асинхронным flaskом
445 2162208
>>62205
Спасибо, гляну.

Вообще цель такая, научится создавать асинхронные микросервисы , пс, классическая джанга используется, хочется большего.
446 2162342
Это так и должно работать, что if name in some_dict то же самое как и if name in some_dict.keys()?
447 2162350
Еле решаю задачки уровня изи на литкоде. Я тупой или просто нужно больше практики?
448 2162356
>>62193
Такой же есть реквест. Из советов бы выделил асинхронный фреймворк fastapi. Есть отдельный канал на youtube русскоязычный. В зарубежном сегменте тоже можно нагуглить отдельные плейлисты или скачать целые курсы с пиратской бухты. Еще есть такой проект вида написать чат в реальном времени на django channels и сокетах, тоже популярные и полезный вариант жоско познакомится с асинхронностью.
449 2162358
>>62350
скорее всего нужно пройти какой-нибудь курс, который последовательно познакомит с основными концепциями и типами задач. На этой базе уже будет полегче решать. Но есть много людей, которым алгосы не даются. Лично знаю ебейшего парня, который зарабатывает 10к зеленых, но при этом не умеет в алгоритмы, он не прошел собес в uber с легкой задачкой на нахождение анаграмм.
450 2162359
>>62342
да, if name in some_dict ищет совпадения в ключах.
451 2162389
>>62358
Ну, вот я, например, решал задачу про maximum subarray problem. Долго мучился и в итоге высрал кривое решение O(n^2). Потом прочитал про Kadane's algorithm и понял, что это ужасно просто. Но неужели до него можно быстро дойти, никогда с ним до этого не сталкиваясь? Или эти задачки (даже простые) основаны на том, что ты просто задрочил все эти алгоритмы?
452 2162430
>>62389

> решал задачу про maximum subarray problem


Это задачи из класса "динамическое программирование". Они или методами ДП решаются, или схожими идеями для простых случаев.

На литкоде таких довольно много.

Про себя не скажу, что владею хорошо этими техниками, для меня это сложные задачи. Когда не easy и когда надо хорошее решение.

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

Попробуй в литкоде выбирать по классам задач. Там есть и на другие темы.
453 2162436
>>62350
Самоучка или как?
454 2162449
>>62430
Короче, нужно больше практики и учить алгоритмы. Спасибо!
>>62436
Да. Ну, в универе было немного проганья, но можно считать, что его не было.
image.png2,1 Мб, 1024x1024
455 2162452
Форумчане, простите за беспокойство, я к вам с такой ситуацией.

Ищу "Партнера по отчетности".

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

Тоже кто сильно ленится, наверно в начале пути, чтоб пинать друг друга. Отчитываться о проделанной работе. Или ВДРУГ есть такой великодушный и терпеливый человек, который хочет попинать просто так.

Что-то вроде:
Сколько часов сегодня занимался, а хули так мало, твои оправдания?
А чё ты делаешь? Почему на двачах сидишь?!

-
Контакты: тг @M10875
27 лвл если что
то видео с ютуба youtube.com/watch?v=RkOJmw15nb4
456 2162459
>>62452
Найди конфу по Питону в тг и там общайся.
457 2162525
>>62452
В бизач иди
458 2162732
Подкиньте идею для джанги, чтоб с целери+реббитом, кешированием, работой с внешними сервисами и всякой прочей штукой. Хочу освежить знания по джанге, а вот сижу и придумать не могу, все простое получается.
459 2162803
>>62732
Сайт который показывает курс валют из нескольких источников с возможностью выгружать csv с историей изменения курса. Потом настрой locust и начинай гонять нагрузку
460 2162895
>>62356
Да это жоска, я конечно могу ошибаться, но Django Channels это как бы вставки в джанговый код , мне б полностью асинхронщину делать, мне кажется, подход с DJ(Django Channels) сработает в проектах джанги, где требуется что-то ускорить или добавить такие вещи как чат, а если я хочу быструю рест или того лучше графовую апишку, то наверное надо писать что-то сразу на асинхронщие
461 2163081
>>62389
Не, тут все нормально, я тоже не дошел самостоятельно до такого решения. Задачку ты выбрал хорошую, на собеседованиях может встретиться. Её еще можно решить используя частичные суммы. С помощью частичных сумм можно найти, например, все подмассивы с заданной суммой. Посмотри как-нибудь.
Насчет литкода. Я бы не стал там решать задачи. Лично я смотрю в основном на geeksforgeeks, там можно удобно по темам искать. Также просто гуглю задачу и смотрю на разных сайтах решения + нахожу похожие. Еще на medium куча классных лонгридов на темы алгоритмов.
Из последнего понравилось: Best Time To Buy & Sell Stocks On Leetcode — The Ultimate Guide.
Отдельно советую решить все задачи на sliding window
462 2163204
Питонач, помоги разобраться с циклами над словарями. У меня есть список и словарь. Словарь содержит все элементы этого списка в качестве значений. Нужно получить ключи только для тех значений, которые есть в списке, и положить эти ключи в отдельный список.

lst = [1, 3, 4]

dic = {"odin": 1, "dva": 2, "tri": 3, "chetire": 4, "pyat": 5}

result = []

# нужно получить result == ["odin", "tri", "chetire"]

Никак не могу допереть, как это сделать.
463 2163213
>>63204
[val for val in lst if val in dic.values()]
464 2163214
>>63213
А, ключи. Тогда
[k for k,v in dic.items() if v in lst]
465 2163219
>>63214
[k for k,v in dic.items() if v in set(lst)]
466 2163226
>>63219
Будет на каждом витке создаваться сет, хуевасто.
Да и по смыслу задачи там не должно быть дупов.
467 2163230
>>63226
А это что бы быстрее, только сет в отдельную переменную надо вынести
468 2163234
>>63214
Блин, у меня очень туго с list comprehension, никогда их не понимал.
А как мне вывести, если в lst есть какой-то элемент, которого нет в dict? Например 7. Т.е.:

lst = [1, 3, 4, 7]

dic = {"odin": 1, "dva": 2, "tri": 3, "chetire": 4, "pyat": 5}

print([k for k, v in dic.items() if v in lst])
#['odin', 'tri', 'chetire']
print(???)
#7
469 2163239
>>63234
Ну раз туго, то вот тебе сет компрехеншен.
https://ideone.com/Nkaxl4
470 2163278
В джанге, если базовое приложение. И дополнительно в нем создаются другие приложения. Я вот не понимаю логику создания дополнительных приложений. Что это? Сгруппированные по функциональности наборы страниц и логики или что?
Вот поясните.
471 2163312
>>63278

>Сгруппированные по функциональности наборы страниц и логики или что?


Да, вот есть у тебя форум на сайте, делаешь из него отдельное приложение, есть профиль пользователя - еще одно приложение, каталог товаров - так же
472 2163376
Я нюфаг, нихера не понял, почему как-то через жопу работает, когда я хочу импортировать модуль из пакета, который лежит на том же уровне, что и пакет, в который импортируется? Ну вот у меня папка, в ней пакет1 и пакет2, в модуле из пакета1 я пишу фром ..пакет2 импорт модуль2. И какая-то говнина случается. Но при этом когда я это устанавливаю как бы при помощи Поэтри (не очень понял, че я делаю если честно, делаю поэтри билд, а потом этот дистрибутив устанвливаю типа) и оно работает. Просто я курсик прохожу и типа я все сделал, оно работает, но тесты на этом сайте курсиков не проходят, наверное потому что они сам код проверяют и как-то там на этих импортах обсираются.

Гуглил, там вообще какая-то ебля пиздос. Это реально надо че-то там пыхтеть? Или как-то просто можно решить вопрос? Или мб просто сделать чтоб модуль2 был внутри модуля1 и типа норм?
473 2163377
>>63312
+

И далее просто include(новыеурлы.py) в каком-то главном приложении, я примерно так же понял
474 2163385
Как итерироваться одновременно по двум генераторам?

Типо вот этого:
for i, j in (range(10), range(-10, -1, -1))

Только в моем случае он не поймет меня и ошибку бросит
475 2163413
>>63385
Через zip
476 2163425
>>59670
Отправь реквестом напрямую запрос через API.
django.jpg120 Кб, 600x400
477 2163465
Здравствуйте няши. Пытаюсь вкатится в эту вашу джангу, но получается плохо.
Есть задача сделать форму с multiplechoicefield что бы чойсы брались из базы. Но по какой то причине форма не меняется при повторных вызовах. Т.е. один раз в дебаге в конструктор заходит, а при последующих уже не заходит. Похоже кешируется. Как бы мне побороть такое ее поведение? Кто знает?
478 2163570
Сап, питоны. Я тут недавно жаловался на отсутствие источников о продвинутых темах в питоне. Пока сам нашёл популярные сложные вопросы на собесах. Это mro, метаклассы, итераторы/генераторы/корутины, async/await и mutable defaults. Знает кто-нибудь книгу, где это всё подробно объясняется? Или где ещё тем почерпнуть?
479 2163572
>>63570
Большинство из этого нихуя не сложные вопросы, а самая что ни на есть база.

> mro, итераторы/генераторы и mutable defaults


Есть в любой не не совсем нубской книге.

> корутины, async/await


Есть книга от орайлей про asyncio, я пока не читал, но вроде годная.
Метаклассы есть у того же лутца и ещё в некоторых книгах видел, сам пока не вникал.
480 2163634
>>63572

>asyncio


Это же либа для имплементации корутин на генераторах, которая до async/await появилась. А async/await как раз её заменила.

Да база, но не для новичков. Фундамент из самых кишок питона. Как раз то что надо чтобы подняться с элементарного уровня до продвинутого. Мне скорее не объяснение надо, а список топиков, которые я ещё сам не нашёл. В какой-нибудь книге может в списке глав эти темы есть и тогда хочется взглянуть на соседние главы.
481 2163639
>>63634

>Как раз то что надо чтобы подняться с элементарного уровня до продвинутого.


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

Вот видел задачку написать функцию декоратор на подобии lru_cache, но можно упрощённую. И тут у новичка, который знает и про mutable defaults и про monkey patching и декораторы без проблем пишет всё равно случается тупик от непонимания как в декораторе хранить состояние кэша между вызовами функции. Очевидное решение сделать класс-декоратор, но требуется функция и чтобы её сделать нужно как раз вспомнить mutable defaults или monkey patching и догадаться применить один из этих методов. Поверхностное изучение этих тем на уровне простой осведомлённости о существовании таких вещей в питоне не достаточно чтобы решить задачу даже с учётом того, что вещи эти базовые.
482 2163644
>>63634

> Это же либа для имплементации корутин на генераторах, которая до async/await появилась


Нет, это именно базовая либа для асинхронщины, просто async/await позже внесли в синтаксис языка, это считай обвязка для них.
https://docs.python.org/3/library/asyncio.html

А так глянь книги от steven f lott, шарящий чел.
483 2163658
>>63644

> steven f lott


Спасибо
484 2163782
Как правильно определить интерфейс в Питоне?
Понимаю что малость нетипичный для питона процесс но все же - я в тайпингах использую интерфейсы а не сам класс, потому что так меньше связность и меньше возможностей наткнуться на циклический импорт

Вместо:
def get_user(self, id: str) -> User
Пишу:
def get_user(self, id: str) -> IUser

Как в таком случае правильно наследоваться от базового класса?
Есть вот у меня BaseModel, класс User надо пронаследовать от него а также и от IUser чтобы обозначить интерфейс.
485 2163787
>>51231 (OP)
Чому слева хуйня работает, а справа - нет?
Untitled.png255 Кб, 1920x1170
486 2163843
Собрал всех покемонов, буду теперь упарывать помаленьку.
487 2163957
>>63787
-- res += current
++ res += cv
489 2164075
Как это - "покрыть свой код тестами"? Я вроде что-то слыхал про ytest всякие но не совсем понятно как покрывать тестами django или flask-приложение

Косяк вот в чем: на предыдущем месте работы у нас не было никаких юнит-тестов) Вот вообще, я был фуллстек макакой и тестил попросту проверяя функционал, запустив локальный сервер. Сейчас меняю работку и в новой конторе мног овнимания уделено покрытию код тестами, а мне стремно признаться в моих пробелах тут, меня ж обоссут. Что это такое и с чем едят?
490 2164082
>>64075
Покрыть код - написать тесты на всю твою логику
491 2164100
>>64082
И как с запросами быть? Отправлять фейковый запрос? А что если в нем обязательны куки? Что если таких запросов несколько от нескольких разных клиентов но все должны быть проверены вместе?
492 2164107
>>64100
Мокай клиента.
493 2164489
>>64107
Мокай кабан кабаныча
Capture.JPG39 Кб, 526x692
494 2164495
не знаю, насколько тупой вопрос, возможно очень...

я не понимаю, зачем нужны кавычки и f в этой строчке:
full_name = f"{user_info['first']} {user_info['last']}"

почему нельзя просто
full_name = {user_info['first']} {user_info['last']}
ну я уже пробовал, так не работает, но всё равно я не понимаю

помогите нубу
495 2164503
>>64495

>full_name = f"{user_info['first']} {user_info['last']}"


>почему нельзя просто


>full_name = {user_info['first']} {user_info['last']}


В первом случае у тебя по итогу строка, во втором случае словарь. Точнее в этом случае вообще ошибка синтаксиса, но мог бы быть словарь.
496 2164506
>>64495
Ну, потому что это не валидное синтаксическое выражение? Ты забыл кстати скобочки убрть, они относятся к форматированию строки. А так у тебя просто два раза индексация словарей. Это как две переменные подряд написать: x x. Бессмыслица.
А форматирование у тебя вставляет переменные (значения ключей словаря) в строку и тогда их можно отобразить так, чтобы они рядом находились.
497 2164515
>>64100
Фейковых запросов не надо. Для начала покрой ту часть логики, которая работает без веба. Пиши данные в таблицки и смотри что они записываются и нужные связи проставляются. Дергай функции, которые должны инициировать запись в бд и проверяй что она такая какая и предполагалась. У джанги есть тестовый клиент и тестовая бд. Можно даже запросы посылать вида TestClient.get('localhost:8000/huy/pizda?page=1')
А вообще можешь в репозиториях гитхаба посомтреть. Там много проектов с примерами.
498 2164518
>>64503
>>64506
пасиба....
499 2164664
Опытные аноны, подскажите, стало интересно, я стронг джун, реализовал 2 настоящих проекта самостоятельно за последние 8 месяцев, в последнем все прям серьезно и докер и си ай, всякие редисы, селери и прочее, в общем опыт со всеми базовыми технологиями есть + в резюме указан опыт 4 месяцев всяких учебных и мелких фриланс проектов. На какую зп я могу претендовать с этими знаниями?
500 2164719
>>64664

> я стронг джун


Сколько жмешь?
501 2164739
Кто-нибудь в курсе, можно ли в aiogram показать кнопки без text?
Сейчас отображаю вот так:
await message.answer('Text', reply_markup=keyboard_start)
Но вот текст вообще не нужен
502 2164761
>>64739
поставь пробел.
503 2164795
>>64664
А какие у тебя знания?
В душе не ебу про докер, все делаю по статейкам, но у меня все проекты в докерах.
504 2164995
Прилетел оффер на 150к. Я мидолл с 1.5 годами опытами. Косяк в том что я сам не уверен что данная вакансия мне подходит. Псец, сижу думаю и возможно придется ее отклонять
505 2165001
>>64719
Около 60, только начал
506 2165138
>>64995
Не ссы. Почитай о языке, о инструментах что они юзают. Сходи, послушай что спрашивают. Может и пройдешь. Не знаешь - да и хуй с ними. Не думай, что тебя там обоссут и засмеют. Если так и будет, вставай и уходи.
Тред утонул или удален.
Это копия, сохраненная 1 февраля 2022 года.

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

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