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

Ответить в тред Ответить в тред
Check this out!
Питон тред №127 /python/ Аноним 06/09/21 Пнд 08:02:43 21512311
mona-smaller880.jpg 272Кб, 880x1177
880x1177
guidoa.jpeg 78Кб, 1280x853
1280x853
py-magic.png 7Кб, 443x198
443x198
Тред, посвящённый языку программирования Питон, #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
Аноним 06/09/21 Пнд 11:18:35 21513432
image.png 96Кб, 959x288
959x288
Пхахах пацаны прикиньте тут в профайлере написано cumtime
лол
Аноним 06/09/21 Пнд 11:32:03 21513533
Аноним 06/09/21 Пнд 11:52:23 21513744
>>2151353
Сейчас бы нонейма слушать
Аноним 06/09/21 Пнд 11:53:43 21513765
>>2151353
Евангелист Мозиллы, который стал придворным шутом в ХТМЛ Академии. Лицо представили?
Аноним 06/09/21 Пнд 12:14:52 21513946
Как-то можно множественные условия вида
if a == b or a ==c or a ==d
более компактно записать?
Аноним 06/09/21 Пнд 12:17:06 21514017
>>2150856 →
Эт вроде зависит от используемых библиотек + от системы
Аноним 06/09/21 Пнд 12:18:42 21514058
Аноним 06/09/21 Пнд 12:18:50 21514069
>>2151394
for elem in (b, c, d):
----if a == elem:
--------do_shit()

но вообще так не делают ,пиши нормально
Аноним 06/09/21 Пнд 12:21:34 215141310
142289244810234[...].jpg 52Кб, 448x482
448x482
Аноним 06/09/21 Пнд 12:28:09 215142511
Screenshot from[...].png 5Кб, 223x94
223x94
>>2151353
У тебя синдром дефицита внимания и гипеактивность. Ты не разобрался в аргументах видео и того, что тут говорили, а сразу постить сюда пытаешься.

> File "/home/<anon>/demo.py", line 5
> print("World")
> ^
>IndentationError: unindent does not match any outer indentation level

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

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

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

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

Корень проблем в совместимости, а не во вкусах.
Аноним 06/09/21 Пнд 12:33:24 215142612
>>2151425
Долбоеб блять
Тебе уже 500 раз пояснялось, что современные ide изи конвертируют табы в пробелы
Ты че в блокноте или в виме хуяришь?
Напоминаешь шизика, который топит за написание жс-кода исключительно в стиле es5 "шоб точно работало во всех браузерах", когда ему начинают пояснять про транспиляторы, лишь раздаются визги "вы ничо не понимаете" и наша принцесса убегает в закат
Аноним 06/09/21 Пнд 12:48:56 215144713
>>2151426
У тебя не просто СДВГ, но ещё и какие-то аффективные расстройства коммуникации.

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

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

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

Можешь жить в своём мирке и делать как считаешь идеальным, с сообществом не пересекаться, никто не запрещает.
Аноним 06/09/21 Пнд 12:49:44 215145014
>>2151426
Падажжи, если они конвертируют, и в итоге все равно в коде пробелы, то за какие именно табы копротивление? Чисто за клавишу что ли? Ну так что жать - это дело вкуса, тебе-то какая разница кто каким пальцем отступы ковыряет, если в коде один фиг пробелы получатся.

Алсо, кулстори в тему - пришел как-то проект на поддержку, там не было соглашений/линтеров и т.п., не удивлюсь, если часть предыдущих разрабов в блокноте код писала. Потому что по всему проекту было сраное месиво из табов и пробелов. Так вот когда мы его завели в гит, оказалось что в интерфейсе битбакета таб равен ВОСЬМИ пробелам. Как это выглядело - врагу не пожелаешь. пыха, хуле
Аноним 06/09/21 Пнд 12:56:21 215146015
>>2151447
> мне надо под твой файл перенастроить редактор, чтобы он работал с табами
Он сам работает с табами, дурында. Ты вообще с этим не сталкивался, а корчишь знатока. Съеби.
Аноним 06/09/21 Пнд 13:00:11 215146516
>>2151460
Редактор при нажатии на Tab обычно по-умолчанию делает замену на пробелы. Потому что так принято, поэтому это уже давно настройки по-умолчанию. Отображение пробелов-табов можно поставить, вот тут они показаны >>2151425

Аноним 06/09/21 Пнд 13:01:58 215146617
>>2151465
Редактор с пробелами сможет загрузить табы и наоборот, вопрос только в консистентности, которая как раз соблюдается в масштабе одного редактора.
Аноним 06/09/21 Пнд 13:09:11 215147418
>>2151466
В рамках одного проекта, одной кодовой базы, невозможно совмещать табы и пробелы. Для питона в виду известных вещей это абсолютно критично.

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

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

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

Когда будешь вести какие-нибудь серьёзные проекты, когда сможешь пытаться правила навязывать. Только не будешь, потому что с тобой никто в команде работать не захочет. А в одиночку серьёзные вещи не делаются.
Аноним 06/09/21 Пнд 13:11:27 215147619
>>2151474
Я не понимаю, почему ты споришь. Это настраивается и это работает. Ты с этим не сталкивался, потому что это работает, а всё равно споришь.
Аноним 06/09/21 Пнд 13:12:07 215147820
>>2151474
>невозможно совмещать табы и пробелы
бляяяя
ты врубаешься вообще что таб конвертируется в пробел и наоборот по щелчку пальцев мыши? или нет?
Аноним 06/09/21 Пнд 13:19:03 215148521
>>2151478
Ты предлагаешь лезть куда-то в настройки и чего-то править то в одну сторону, то в другую. Зачем?

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

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

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

Аноним 06/09/21 Пнд 13:25:23 215149322
Screenshot from[...].png 30Кб, 780x244
780x244
Screenshot from[...].png 12Кб, 304x186
304x186
в догонку из PEP8

На этом тему считаю исчерпанной
Аноним 06/09/21 Пнд 15:00:14 215154323
Аноним 06/09/21 Пнд 15:07:21 215155624
Че за тема с пробелами и табами? Я нахуярил в пучарме код совмещая табы и пробелы. Он без проблем запустился
Аноним 06/09/21 Пнд 15:14:34 215156625
>>2151556
Ты в курсе как работает ide?
Аноним 06/09/21 Пнд 15:20:38 215157426
>>2151543
Код показывай, мы то откуда знаем какие у тебя либы и как все настроено
Аноним 06/09/21 Пнд 15:54:28 215161227
skuf4.png 71Кб, 218x231
218x231
Аноним 06/09/21 Пнд 15:57:06 215161728
Питоны, чем сейчас модно генерировать документацию из докстринг?
Аноним 06/09/21 Пнд 17:28:00 215170729
>>2151465
Тупой редактор так делает. Нормальный смотри что там было и оставляет - были табы оставит табы, были пробелы заменит таб на пробелы (vscode).
Аноним 06/09/21 Пнд 18:45:16 215179030
Поясните плис. Вот читаю хх. Если со стеком что относится к питону более ясно. Я про бек например, ну там флас или джанго или из апи чтот. А вот что относится к деплою, девопу, тут куча всего идет, и кубернетес, и докер, и графана, и кафка, и еще дох чего, та же жира напр. Так вот. Какие такие связки учить или юзать. Или вообще пох, потом скажут, почитать доки, да деплоить и девопать.
Аноним 06/09/21 Пнд 19:56:08 215185431
image.png 431Кб, 610x385
610x385
Пикрил подходит к тебе и говорит "Слыш, скажи вим крута!"
Твои действия?
Аноним 06/09/21 Пнд 20:05:38 215186032
>>2151854
По ssh я пишу в виме, а обычно я пишу в фар менеджере. Съеби, щенок.
Аноним 06/09/21 Пнд 20:06:02 215186133
Аноним 06/09/21 Пнд 22:25:27 215192134
Все, с субботы вкатываюсь в айти
Аноним 06/09/21 Пнд 22:44:41 215193035
>>2151921
Неси пивас, Петрович, вкатим тебя.
Аноним 06/09/21 Пнд 23:25:32 215195536
>>2151231 (OP)
Анонче, реквестирую книгу по асинхронному веб питонычу. Вообще задача вникнуть в Django Channels , но я готов начать и с каких-нибудь асинхронных фреймворков в общем смысле.
Аноним 06/09/21 Пнд 23:29:23 215196037
>>2151955
Тут был какой-то маняасинхронщик, писавший свои васянские поделки
Аноним 06/09/21 Пнд 23:40:58 215196538
image.png 174Кб, 512x288
512x288
Добрый вечер, друзья. Хочу попросить вашего совета. Моя история такова. Был у меня питон установлен, использовал я его для написания мелких скриптов по работе, установлен был давно и все было хорошо. Вовремя обновлял, когда надо было подгружал библиотеки через pip и радовался своим незатейливым скриптам, которое мне здорово помогали обрабатывать однотипные экселевские книги. Но наступили мрачные времена и волей случая пришлось обновить компьютер. И вот начал я устанавливать питон. И ЖИЗНЬ МОЯ ПРЕВРАТИЛАСЬ В АД!Ну думаю установлю сразу анаконду -вроде удобно. Скачал и поставил. Потом начал пытаться настроить. Но не тут-то было. ПИП вообще никак не вызывался и не становился привычными для меня способами. БОЛЕЕ ТОГО! Ни один из найденных на форумах способов через CMD вызвать питон не увенчался успехом. Понимаю, что скорее всего что-то делал не так я. Вот. Короче не смог я разобраться с тем как и в каком виде лежит этот питон в пакете анаконда. Когда через тот же cmd я пытался найти питон, мне деликатно предложили его скачать - открылась ссылка на майкрасофт стор. Закралась мысль, что питона-то может на компе и вовсе нет или он какой-то не такой. Ну скачал. Пип установил. Но вот в чём беда. Посидев ещё немного, все же нашёл я этот сраный питон в сраной конде. Теперь у меня их два. Причём CMD наотрез не видит того, который установлен с кондой (версии, к слову, разные), а конда, выходит не знает о существовании новой версии на компе. Командная строка любыми магическими командами не находит кондавский питон, но находит свежеуствновленный. ЕЩЁ! Раньше через строку я вызывал питон командой py. Теперь она не работает, работает только команда python. Тоже не понимаю почему. ТАК ВОТ. Может кто-то объяснить мне всю эту магию или стоит снести всё нахер пока не поздно и устанавливать по какому-то определенному алгоритму?
Аноним 06/09/21 Пнд 23:49:39 215196939
>>2151965
винда?

взял и установил дефолтный интерпретатор с оф сайта для начала, потом и анаконду душить будешь
Аноним 06/09/21 Пнд 23:52:18 215197040
>>2151960
Ну вот мне бы вникнуть в это все с азов. Дальше задачи об обедающих филасафах с курса операционных систем и базовых упражнений по запуску тредов я не делал. Вообще для этого можно сразу на Go писать, но задача для начала разобраться с питоном в этом вопросе(в вопросе асинхронного веба)
Аноним 07/09/21 Втр 00:02:00 215197241
Аноним 07/09/21 Втр 00:19:02 215197842
>>2151970
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 какие-нибудь курсы позырь
Аноним 07/09/21 Втр 00:28:43 215198143
>>2151972
Удали к херам анаконды и сторонние питоновские интерпретаторы, загрузи установщик с python.org и ебошь
Аноним 07/09/21 Втр 01:46:14 215198844
>>2151978
>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
Аноним 07/09/21 Втр 01:52:32 215198945
image.png 656Кб, 600x450
600x450
Аноним 07/09/21 Втр 11:29:21 215210646
>>2151965
команда питон, причем питон 3 это норма.
а конда вроде работает только в виртуальном окружении?
наверное поэтому не видит питон на компе.
по крайней мере из строки ты просто можешь запустить питон а на анаконде по умолчанию свое окружение
Аноним 07/09/21 Втр 11:51:24 215212647
Как прасить сайт, который шлет нахуй с каптчей селениум, а на запросы от реквестс отдаёт 403 какие бы заголовки ты там не прописывал.
Возможно ли селениумом открывать дефолтный хром?
Аноним 07/09/21 Втр 11:52:27 215212848
>>2152126
1. Апи
2. bs4 и парсинг html
3. selenium
Аноним 07/09/21 Втр 11:54:52 215213049
>>2152128
1. Апи
было бы апи вопроса не возникло бы
2. 2. bs4 и парсинг html
БС это парсер для разбора страниц, запросы то ты всё равно отправляешь через requests
3. Как уже и писал его детектируют антискрэпинговые системы.
Аноним 07/09/21 Втр 11:57:19 215213250
>>2152130
Я не король скрепинга, посмотри что можно сделать чтоб наебать систему. Она ж анализирует твое поведение и твое заголовки которые ты отослал в запросе, просто так не понять - человек шлет запрос или бот
Вероятно ты User-Agent хуеровый прописал
Аноним 07/09/21 Втр 12:25:12 215215551
>>2152132
Там очень много подводных камней помимо заголовков и есть подозрение, что проще эмулировать пользовательский браузер, чем подделывать селениум.
Аноним 07/09/21 Втр 12:31:45 215216052
>>2152155
Даже на самом дваче какая-то защита приличная стоит.

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

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

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

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

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

Конечно если очень хотеть, то и обойти это будет можно. Но это тоже серьёзный скилл уже, не всё так тривиально.
Аноним 07/09/21 Втр 13:26:27 215220353
>>2152155
Так ты селениумом и эмулируешь пользовательский браузер и скорее всего и так уже используешь драйвер хрома. Тебе или нужно дырки в сайте искать или отвалить денег на решал капчи.
Аноним 07/09/21 Втр 13:49:33 215222554
>>2152126
Хедер то сделал в реквесте?
Аноним 07/09/21 Втр 14:23:35 215225455
>>2152203
Сенениум слишком весь в себе, в него только ограниченно можно вмешаться. И поэтому он палится.

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

Ты можешь, в принципе, вместо того, чтобы исполнять js код, как это селениум делает, просто тупо выслать ответ, который от тебя ожидает сервер. И серверу будет сложно понять, что на самом деле там просто консольное приложение, а не реальный браузер. Но для этого надо хорошо изучить протокол, что там и как происходит. Это может быть очень сложно.
Аноним 07/09/21 Втр 14:26:18 215225656
>>2152254
>А обычный браузер высылает какой-то запрос на сервер и после этого нормально работает.
Селениум и так использует хром, ты же не зря chromedriver туда прокидываешь. В нем можно сделать абсолютно все, что ты делаешь в обычном браузере и жс скрипты действуют точно так же.
Аноним 07/09/21 Втр 14:44:47 215227757
Как запустить асинхронный код из синхронного? Когда делаю просто:
asyncio.create_task(my_task())
То получаю ошибку "RuntimeError: no running event loop"

Как запульнуть my_task так чтобы он начал исполняться на заднем плане и мой код не блокировался ожидая его исполнения? Тред в котором event loop будет создан?
Аноним 07/09/21 Втр 14:59:44 215230158
Есть одна таблица в мускуле. Нужно написать чисто служебную вебморду, которая:
1) проводит авторизацию
2) выводит таблицу
3) позволяет добавлять записи с валидайцией
4) позволяет редактировать записи с валидайцией
На каком стеке писать этот костыль в 2022, чтобы минимально забивать голову хтмл, пагинацией, шаблонизацией и вот этой фронтендовской фигнёй?
Аноним 07/09/21 Втр 14:59:55 215230259
>>2152277
Это значит, что скорее всего у тебя луп еще не запущен на момент вызова этой функции, тебе заранее нужно его вызвать
Если хочешь исполнения в отдельном процессе/треде, то юзай это.
https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor
Хотя, если тебе достаточно просто задачу запустить, то можно простыми тредами/процессами обойтись без асинхронщины.
Аноним 07/09/21 Втр 15:02:54 215230760
Аноним 07/09/21 Втр 15:08:08 215231361
>>2152307
Так проще phpMyAdmin тогда. Мне надо возможности конечным пользователям порезать: не давать удалять записи, давать редактировать только отдельные поля. Я доверяю их намерениям, я не доверяю их рукам.
Аноним 07/09/21 Втр 15:08:52 215231462
Аноним 07/09/21 Втр 15:09:06 215231563
image.png 32Кб, 599x432
599x432
>>2151231 (OP)
Кто знает как сделать эту хуйню на питоне, какие библиотеки лучше (именно для тех которые точками помечены), в задании дана ток platform
Аноним 07/09/21 Втр 15:11:00 215231864
Аноним 07/09/21 Втр 15:13:38 215232465
>>2152315
Если винда, то через wmi.
Если линукс - через dmidecode.
Аноним 07/09/21 Втр 15:14:22 215232666
image.png 1397Кб, 992x899
992x899
Аноним 07/09/21 Втр 15:14:45 215232767
>>2152313
Ну я бы админку джанго заюзал потому что много очень с фреймворком работал и мне всякие эти ограничения быстро красиво приделать и добавления - изи. По сути это мне дало бы красивые формочки, модельки и пространство для остальной логики, которой можно достаточно накастомить. А так да, наверняка это не лучший выбор, погугли crm всякие, пожет тебе что то такое нужно.
Аноним 07/09/21 Втр 15:21:45 215233468
>>2152324
а dmidecode даёт инф о сопроцессорах?
Аноним 07/09/21 Втр 15:27:05 215234269
>>2152334
Хуй знает, я компы со сопроцессором с 1994 года не видел. Но о процессоре он инфу даёт точно.
Аноним 07/09/21 Втр 15:28:38 215234470
>>2152342
сейчас вроде как они просто встроенные,хз
Аноним 07/09/21 Втр 15:30:31 215234771
>>2152342
Начиная то-ли с пентиума, то-ли с 486 сопроцессор это просто часть процессора, а не внешний чип.

Но при этом набор команд остался тот же.
Аноним 07/09/21 Втр 15:38:26 215235872
>>2152347 >>2152344
Я так понимаю они не то что стали встроенными, они размазались по современным наборам расширений. То есть даже логически/виртуально этого блока не осталось.
Сегодня под сопроцессорами в зависимости от ситуации могут понимать GPU, TPU и прочие DSP. Но вряд ли в задании об этом речь. Скорее всего методичка из 1994.
Аноним 07/09/21 Втр 15:45:52 215236873
>>2152326
>>2152314
>>2152277
Этот код очень странный и не смотрится корректным.

Если ты пытаешься запускать обработчик не из главного треда, ты должен создавать 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
Аноним 07/09/21 Втр 15:57:05 215238674
>>2152358
ХЗ что там в задании имели в виду. Я бы предположил, что надо показать набор инструкций, который поддерживает данный процессор.
Аноним 07/09/21 Втр 16:19:30 215240575
>>2152277
Короче, котик, попробую может сегодня-завтра запилить пример, как это делать. Хотя может другие сделают.

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

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

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

Я бы предложил типовой паттерн, что ты заводишь в треде с лупом очередь, обычную, queue.Queue(), она потокобезопасная, в отличии от asyncio.Queue(), которая потокоопасная. И в неё суёшь корутину. А в треде с лупом ты уже берёшь данные из очереди и делаешь loop.create(task(coro))

Аноним 07/09/21 Втр 16:31:46 215241776
>>2152368
asyncio.run сам же под капотом создает loop и кидает в него корутину
Аноним 07/09/21 Втр 18:54:10 215256677
x = 1
x=1
в чём разница и есть ли она? или просто вопрос стиля?
Аноним 07/09/21 Втр 18:55:03 215256878
>>2152566
Когда хуй сосешь, есть ли разница, дорабатываешь ты потом языком по стволу или нет?
Аноним 07/09/21 Втр 19:12:19 215257379
>>2152568
надо у твоего бати спросить
Аноним 07/09/21 Втр 19:28:51 215257980
>>2152566
Когда делаешь x=1 то присваивается сильнее, может и 2 стать. А x = 1 это строго по стандарту.
Аноним 07/09/21 Втр 20:31:21 215261481
>>2152566
Ты же знаешь что в пайтоне отступы заменяют скобки? Иди читать Кнута, пока не сделаешь ~50% от материала его книг, к питону даже не прикосайся.
Аноним 07/09/21 Втр 21:46:50 215265882
>>2152566
С отступами переменная, без константа.
Аноним 07/09/21 Втр 21:50:28 215266283
Аноним 07/09/21 Втр 21:51:31 215266484
Аноним 07/09/21 Втр 23:31:31 215270985
>>2152405
>>2152277
Стало интересно, запилил какой-то пример
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,
которая безопасно помещает коллбэк в луп другого треда, а вэтом коллбэке уже можно добавить в цикл какую-нибудь корутину.

Судя по всему других способов более-менее разумных и нет.
Аноним 07/09/21 Втр 23:35:24 215271286
>>2152709
>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)
Аноним 07/09/21 Втр 23:49:22 215271887
>>2152712
Смотрится по-уебански
Аноним 07/09/21 Втр 23:55:39 215271988
Аноним 08/09/21 Срд 00:03:47 215272289
>>2152719
Передача аргументов не в коллбеке отдельно
Аноним 08/09/21 Срд 00:09:14 215272790
image.png 11Кб, 568x216
568x216
>>2152709
Есть объект asyncio.Condition, его можно проверять в том таске а не эвейтить Event напрямую
Аноним 08/09/21 Срд 00:34:05 215273691
Ребята, занимаюсь программированием уже пол года и у меня на такие задачки уходит по часу, это нормально, или может это просто не для меня? Тильт ловлю когда не могу решить что-то, с логикой видимо проблемы.

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

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.

Аноним 08/09/21 Срд 00:41:52 215274092
>>2152736
Хз, почему у тебя час на это ушел. Просто больше практики нужно.
Аноним 08/09/21 Срд 02:16:24 215276793
>>2152405
>Представь, что ты в одном треде делаешь loop.create_task, когда этот луп в другом треде исполняется
А в чем проблема? Питоновские треды же не выполняются параллельно
Аноним 08/09/21 Срд 07:53:40 215279894
>>2152767
>А в чем проблема? Питоновские треды же не выполняются параллельно
Треды выполняются конкурентно, их для этого придумывали. Переключение с треда на тред может произойти в любой момент времени. Если это произойдёт в момент, когда ты работаешь с общими данными для нескольких потоков, у тебя могут быть большие проблемы.

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

Очень дикое расхождение. Конечно, всё очень зависит конкретных операций, что в критических участках находятся.
Аноним 08/09/21 Срд 09:48:23 215284395
>>2152798
А, я думал, что сам луп распидорасит от такого надругательства, с разделяемыми ресурсами понятно
Аноним 08/09/21 Срд 12:16:06 215291896
Хелп. Пишу парсер. Логика такая: парсятся события на текущий день: старттайм, линк на событие. Затем для этих событий с интервалом раз в n минут парсится инфа. Вроде все ок, но событий может быть 0-n и они могут проходить параллельно. Мне не понятно как динамически генерировать таски для каждого события и убивать их после n-итераций. Смотрел шедулеры разные, там только статичные таски можно запланировать.
Аноним 08/09/21 Срд 12:22:06 215292397
>>2152918
Ничего не понятно, но вообще тебе наверное надо делать очередь задач на обработку, при этом у тебя есть пул исполнителей этих задач. Они берут задачи из очереди и исполняют. А в очередь ты кладёшь задания.

Аноним 08/09/21 Срд 12:44:56 215293698
>>2152923
Вот есть события на сегодня - x y z. Их я спарсил в 00:00. Для них я записываю время их начала, например, 13:00 14:15 17:30 и линк на страницу с информацией о событии. Следовательно для первого события мне нужно сгенерировать таск, который стартанет в 13:00 и который на протяжении 5 часов, каждую минуту будет считывать информацию об этом событии на его странице, а потом умрет. И так для всех событий. Событий может быть 0-n.
Аноним 08/09/21 Срд 12:48:56 215293999
>>2152936
Это ты наколеночный крон костыляешь. Если очень хочешь повторить уже сделанное, то смотри, как сделано в кроне и копируй. Если нет, то используй системный.
Аноним 08/09/21 Срд 13:57:11 2152982100
Питон полное дермище а не язык и это будет так до тех пор пока туда не завезут строгую статическую типизацию и нормальные потоки
Аноним 08/09/21 Срд 14:00:26 2152986101
>>2152982
А еще возможность компиляции, а не то что сейчас костыли какие-то с numba и cython.

Короче питон это пример того, как изначальное говно взлетает под мощным пиаром мегакорпорации и подхватывается миллионами безмозглых хомячков.
Аноним 08/09/21 Срд 14:01:43 2152989102
>>2152982
>>2152986
Так съеби в свой элитный язык, хули ты прибежал?
Аноним 08/09/21 Срд 14:06:16 2152994103
>>2152989
Я прошел донести тебе что
1. Твоя язык говно ( отсюда можно сделать вывод, что лучше перейти на что-то другое, например С# )
2.
>подхватывается миллионами безмозглых хомячков.
Стоит задуматься, кто ты в этой пищевой цепочке.
Аноним 08/09/21 Срд 14:07:07 2152996104
>>2152994
>Я прошел донести тебе что
Всем похуй на тебя и что ты там "хотел донести", клоун)
Аноним 08/09/21 Срд 14:07:29 2152998105
Аноним 08/09/21 Срд 14:09:06 2153000106
>>2152996
Ну как минимум, тебе не похуй, раз твой пукан взорвался от моих слов истины.
Аноним 08/09/21 Срд 14:09:53 2153001107
>>2152986
>Короче питон это пример того, как изначальное говно взлетает под мощным пиаром мегакорпорации и подхватывается миллионами безмозглых хомячков.
Што? Какая корпорация стоит за питоном?
Аноним 08/09/21 Срд 14:17:24 2153011108
GuidovanRossumO[...].jpg 3272Кб, 2336x3504
2336x3504
>>2153001
Ебать ты Алёша. Пишет на языке и не знает, кто его создал, и где он работал.

Аноним 08/09/21 Срд 14:19:14 2153012109
>>2153011
То что он там работал еще не значит, что язык продвигали. Это вообще его сайд проект был, в отличии от какого нибудь Пайка, который целеноправленно пилит ГО и гугл ему за это деньги платит.
Аноним 08/09/21 Срд 14:23:11 2153015110
>>2153012
Цитата из википедии:
>From 2005 to December 2012, he worked at Google, where he spent half of his time developing the Python language.
Как раз таки он там сидел и целенаправленно пилил питон.
Или ты думаешь питон внезапно стал такой популярный потому, что язык сам по себе хороший? Существует великое множество языков которые намного лучше питона во всех планах, однако они почему-то не взлетают так. Догадываешься почему?$$$?
Аноним 08/09/21 Срд 14:34:33 2153026111
>>2153015
>Как раз таки он там сидел и целенаправленно пилил питон.
Это сайд проект, гугл выделяет время на личные разработки, если они помогают компании. Основная работа у него была другая, в отличии от Пайка

>Или ты думаешь питон внезапно стал такой популярный потому, что язык сам по себе хороший?
Потому что простейший вкат, хеллоу вордл можно написать через 5 минут после знакомства с языком
Аноним 08/09/21 Срд 14:34:35 2153027112
>>2153015
Потому что наукоблядям и журналистам нравится простой синтаксис.
Аноним 08/09/21 Срд 14:37:13 2153030113
>>2153015
Гугол никогда не продвигал питон. Они никак не поддерживали его своими сервисами, например. Они не продвигали в открытый код какое-либо значимое количество систем на питоне - меньше, чем на других языках.

То есть это просто какой-то небольшой вклад в опенсорс, но он идёт по десяткам направлений, но это совсем не то, что Go или системы вроде кубернетиса.
Аноним 08/09/21 Срд 14:38:22 2153031114
Или js с V8.
Аноним 08/09/21 Срд 14:41:32 2153034115
>>2153026
Дело не в простейшем вкате, а в том, что на нём в принципе очень приятно писать.

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

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

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

Поддерживают и разрабатывают серьёзные вещи ведь совсем не вчерашние вкатуны. Это очень серьёзный народ.
Аноним 08/09/21 Срд 14:47:10 2153035116
Писал на сисярпе, плотили 100к. Сейчас пишу на петоне, плотют 200к. И похуй, говно он или не говно, пока за него платят.
Аноним 08/09/21 Срд 14:52:31 2153038117
>>2153026
Да в гугле раньше можно было тратить 1 день в неделю на развитие своего проекта с учетом того, что он может принести прибыль. Этот хуеплет там по официальным данным тратил 50% своего рабочем времени на развитие питона, ты думаешь гугл такая корпорация альтруистов, что платили ему зарплату за то, чтобы тут развивал свой проект? Ясен хуй у гугла был свой интерес в этом. Но потом видимо что-то пошло не так ( видимо не договорились ) и он уволился оттуда, но в это время в развитие питона было вбухано уже немало денег, но т.к. проект под открытой лицензией аля BSD то и гугл никак не мог претендовать на приклеивание своего логотипа к языку. Вот и все.

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

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

>Perl
Вот взять тот же перл, бля да у перла куча ахуенных фишек, которые питону и не снились. Жаль только перл умер.
Аноним 08/09/21 Срд 14:55:12 2153043118
>>2153038
>В конечном итоге вся эта мазьня на питоне переписывается на С++ или что-то такое, где все предназначено для прода
Шкила, ты где прод на плюсах видел последний раз? Только алгоритмически сложные задачи на них переписывают
Аноним 08/09/21 Срд 14:57:44 2153044119
>>2153043
Школьник-теоретик вот как раз тут ты. Я уже 13 лет на С\С++ серверные и не только приложухи пишу. Давай расскажи мне по подробнее, что там только на С++ переписывают в твоем 10Б?
Аноним 08/09/21 Срд 15:04:49 2153049120
>>2153044
Это ты тот шизик, который грезит HFT и думает, что везде так нужно?
Аноним 08/09/21 Срд 15:27:31 2153062121
>>2153049
Шизик, ты думаешь С++ используется только в HFT? Ебать у тебя искаженное восприятие мира. Хотя хуле тут, если обезьянка сидит в своем узконаправленном мире модных фреймворков, то откуда ей знать, что большая прикладного часть софта в мире написана на С\С++.
Аноним 08/09/21 Срд 15:33:06 2153066122
>>2153062
Ну приведи пример, где продукты изначально написанные на питоне переписываются на плюсах. Прост тут изначально постановка задачи такая, что никто в здравом уме не будет начинать писать на питоне, если требуется перфоманс сишки
Аноним 08/09/21 Срд 15:33:52 2153067123
>>2152736
Если занимаешься полгода, то распарсить этот руглиш и закодить dfs -- вполне нормально, даже если ушел час.
Аноним 08/09/21 Срд 15:46:48 2153075124
>>2153066
За примером далеко ходить не надо. Я работаю в сфере Computer Vision, дата саентисты пишут свои прототипы на питухоне, которые в конечном итоге надо переписывать на С++, потому что в этой области всегда требуется максимальная производительность. Когда я туда пришел там был большой проект написанный на питоне, который все это делал но очень медленно, без возможности ни вертикального, ни горизонтального масштабирования. И что в итоге? Проект был успешно переписан на С++ и сейчас легко масштабируется на сотни машин, в кучей GPU и CPU ядер.

Окей другой пример, вася пупкин написал клевое веб приложение на питоне. И вдруг его приложение взлетело до небес, появились миллионы посетителей в сутки, ну прям настоящий хайлод. Конечно у Васи возникнут проблемы и со скоростью работы и с масштабированием, поэтому будучи благоразумным человеком Вася примет верное решение нанять людей и переписать свою питонопарашу на нормальный язык\языки предназначенные для этого, чтобы в дальнейшем не возникало проблем.
Аноним 08/09/21 Срд 15:51:38 2153081125
>>2153075
>Computer Vision
Дурачек, я и писал про алгоритмические задачи
Аноним 08/09/21 Срд 15:51:47 2153082126
>>2153075
Кстати еще один замечательный пример, когда-то давно цукерберг написал свою парашу фб на пыхе, и не принял верного решения в самом начале переписать пока еще не разросшийся проект на что-то более адекватное. В итоге фейсбук наелись говна придумывая компиляторы похапе языка. Но в конечном итоге все равно все было переписано на С++\Java\etc давным давно
Аноним 08/09/21 Срд 15:54:11 2153083127
>>2153066
Просто погугли сколько библиотек для Питона написано на крестах или С и не позорься.
Аноним 08/09/21 Срд 15:54:32 2153087128
>>2153075
Почему тогда ин100грам не перевели с джанги на c++/rust?
Аноним 08/09/21 Срд 15:54:44 2153088129
>>2153075
Так пистон для других задач, вкатыш. Питон для того чтобы быстро и удобно что-то написать чтобы оно как-то работало а не писать хуйлоад и прочую залупу.
Аноним 08/09/21 Срд 15:55:37 2153090130
>>2153081
Еблан не окончивший хотя бы минимальный вуз, ты вообще вкурсе что программы = алгоритмы + структуры данных?
Блять, что за хуйню ты вообще высираешь? Ты вообще имеешь хотя бы представление как выглядит программа? Судя по твоим шизойдным высерам - нет.
С
Аноним 08/09/21 Срд 15:57:52 2153094131
>>2153083
V8 тоже написан на плюсах, срочно выкидываем ЖС

>>2153090
Ебать вкатыш пригорел, ты прекрасно понял, что речь шла о тяжелых алгоритмических задачах, где у плюсовой числодробилки нет равных
Аноним 08/09/21 Срд 15:58:33 2153095132
>>2153094
А это не про плюсы было, а про то кто и зачем написал V8 для js.
Аноним 08/09/21 Срд 15:59:49 2153096133
>>2153087
С чего ты взял? Сомневаюсь что инста с ее посещаемостью работает на какой-то динамической параше.

>>2153088
Я про это и говорю, алексей. Питон годится только для накалякания чего либо на коленке не больше. Но какой смысл было высирать столько библиотек на изначальна хуевый язык, если максимальная его профпригодность равна программе написанной на каленке?
Аноним 08/09/21 Срд 16:01:26 2153099134
>>2153096
>профпригодность
Чел ты тралишь тупостью, я понял.
Аноним 08/09/21 Срд 16:05:27 2153102135
>>2153094
Да, я не пригорел, просто чувствую твой уровень подготовки, судя по твоим нелепым высерам и он равен типичному питонабыдлу вообще не разбирающегося хотя бы в минимальной архитектуре ПО. И не понимаю, зачем ты пытаешься со мной спорить. Это все равно что муравей будет доказывать богу что он не прав в чем-то, нелепо выглядит.


Аноним 08/09/21 Срд 16:06:28 2153104136
>>2153096
НАЧИНАЕТЕ ПИСАТЬ ПРОЕКТ НА НОРМАЛЬНОМ ЯЗЫКЕ, ВЫ ЖЕ НЕ БЫДЛЫ КАКИЕ-ТО
@
ТО ЧТО МОЖНО БЫЛО СДЕЛАТЬ ЗА МЕСЯЦ НА ПИТОНЕ ВЫ ДЕЛАЕТЕ ЗА 4 МЕСЯЦА НА ПЛЮСАХ
@
КОНКУРЕНТЫ УЖЕ ВЫПУСТИЛИ АЛЬТЕРНАТИВНУ И ДЕЛАЮТ ФИЧИ КАЖДЫЙ РЕЛИЗ
@
ВЫКАКИВАЕТЕ НА РЫНОК СВОЙ ПРОДУКТ
@
ЖИДКО ПУКНУВ ПРОЕКТ ЗАКРЫВАЮТ ПОТОМУ ЧТО НИШУ УЖЕ ЗАНЯЛИ


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

>>2153102
Ебать ты жиробубель
Аноним 08/09/21 Срд 16:06:30 2153106137
Аноним 08/09/21 Срд 16:18:08 2153113138
>>2153104
>А вообще, с чего это ты взял, что полезный продукт == хайлоад?
Я такое не утверждал.

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

>>2153106
Ну что я могу сказать:
1. Всегда вызывала отторжение любая продукция сделанная цукербергом как и он сам.
2. Интаграм постоянно тормозит и лагает, теперь ясно почему.
3. Даже если убрать предвзятость, то единственная задача инстаграмма - показать фото\видео, то есть передать пользователю ссылку на cdn где это хранится, возможно с ахуеевшимми миллиардами фейсбука, им не впадлу платить за медленность питона. Возможно там еще куча легаси кода который не так просто искоренить и поэтому им проще платить больше денег за сервера, чем переписывать все на другой язык. Но то что использования питона в таком проекте - это неразумно - это факт.
Аноним 08/09/21 Срд 16:23:37 2153118139
>>2153104
>НАЧИНАЕТЕ ПИСАТЬ ПРОЕКТ НА НОРМАЛЬНОМ ЯЗЫКЕ, ВЫ ЖЕ НЕ БЫДЛЫ КАКИЕ-ТО
>@
>ТО ЧТО МОЖНО БЫЛО СДЕЛАТЬ ЗА МЕСЯЦ НА ПИТОНЕ ВЫ ДЕЛАЕТЕ ЗА 4 МЕСЯЦА НА ПЛЮСАХ
>@
>КОНКУРЕНТЫ УЖЕ ВЫПУСТИЛИ АЛЬТЕРНАТИВНУ И ДЕЛАЮТ ФИЧИ КАЖДЫЙ РЕЛИЗ
>@
>ВЫКАКИВАЕТЕ НА РЫНОК СВОЙ ПРОДУКТ
>@
>ЖИДКО ПУКНУВ ПРОЕКТ ЗАКРЫВАЮТ ПОТОМУ ЧТО НИШУ УЖЕ ЗАНЯЛИ
Лол, так никто не говорит, начинать сразу по хардкору, как я помню еще во времена когда я увлекался геймдевом, на местном форуме были чуваки которые сказали, ПОШЛИ ВСЕ НАХУЙ С ВАШИМИ ДВИЖКАМИ МЫ БУДЕМ ПИЛИТЬ СВОЙ С НУЛЯ, в итоге они 4 года пилили какие-то зачатки игры, и к тому времени когда они выкатили первую демку графика и все их технологии уже безнадежно устарели.
Нет, просто ко всему надо подходить с умом, и продумывать перспективы.
К тому же, даже если писать на сразу на С++, хотя я к такому не агитирую, на с++ есть куча библиотек используя которые можно быстренько все сделать.
Аноним 08/09/21 Срд 16:24:42 2153122140
>>2153113
>Но то что использования питона в таком проекте - это неразумно - это факт.
Получается, разрабы реддита, кворы, пинтереста и ещё кучи проектов с нормальной такой посещяемостью, где под капотом также джанга, либо миллиардеры, либо неразумные.
Аноним 08/09/21 Срд 16:25:00 2153123141
>>2153075
>Окей другой пример, вася пупкин написал клевое веб приложение на питоне. И вдруг его приложение взлетело до небес, появились миллионы посетителей в сутки, ну прям настоящий хайлод. Конечно у Васи возникнут проблемы и со скоростью работы и с масштабированием, поэтому будучи благоразумным человеком Вася примет верное решение нанять людей и переписать свою питонопарашу на нормальный язык\языки предназначенные для этого, чтобы в дальнейшем не возникало проблем.

Это ошибочное мнение, что продукт обязательно дорастет до такого состояние, когда переписывание кода станет выгоднее, чем обслуживание железа. Питон прекрасно живет на средних проектах и где добавить новую фичу гораздо приоритетнее, чем снизить стоимость сервера на условные несколько тысяч долларов и поменять штат на плюсовиков, которые эту самую выгоду сожрут за ЗП побольше. Использование языков диктуется бизнесом, а не абстрактным ну язык говно же
Аноним 08/09/21 Срд 16:27:02 2153125142
>>2153123
А что будет в мире, где начался дефицит чипов?
Аноним 08/09/21 Срд 16:29:29 2153128143
>>2153125
Все откатимся на няшную и будем оптимизировать все до усрачки, собственно распространения "медленных" языков связано с тем, что железо подешевело настолько, что процессоры можно ведрами покупать.
Аноним 08/09/21 Срд 16:33:09 2153133144
>>2153122
Получается так, если они это все используют.
Но опять же, смотря где и как, может у них джанго отвечает вообще за какую-то малонагруженную часть, либо просто пробрасывает запросы дальше. Просто все это гигантские проекты состоят из сотен микросервисов, которые написаны на различных языках.

>>2153123
Может в вебе это так и работает, но вот в CV где от скорости работы твоего ПО зависит будут ли у тебя заказчики или нет, так уже не пройдет. И опять же мы говорим о сферических стартапах в вакууме, компании уже имеющие опыт разработки ПО, вряд ли будут начинать новые свои проекты не с основных технологий использующихся в компании.
Аноним 08/09/21 Срд 16:35:36 2153138145
>>2153133
> компании уже имеющие опыт разработки ПО, вряд ли будут начинать новые свои проекты не с основных технологий использующихся в компании.

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

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

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

Но нормально технически подкованный менеджер, вряд ли стал бы начинать новый проект с какой-либо перспективой роста на питоне. Гораздо лучше Java/Go/C++ да что угодно, в зависимости от отаросли, лишь бы не пришлось перепиливать это все в конечном итоге.
Аноним 08/09/21 Срд 17:14:34 2153161147
>>2153156
Лол, а ты думаешь, что на плюсах пишут потому что это дохуя пиздатый язык, а не потому что это оптимальная числодробилка даже с проблемой поддерживаемости и всратой инфраструктурой где даже пакетного менеджера не завезли?
Сколько ты сам проектов от начала до конца завершил, что бы знать как нужно собирать команду и как может развиваться продукт, если ты занимаешься только написанием числодробилок?
Аноним 08/09/21 Срд 17:49:36 2153179148
>>2153161
Во-первых, выкинь из головы идею плюсы - это "числодробилка", это далеко не единственный плюс плюсов.
Во-вторых, на плюсах пишут потому что это самый быстрый язык из доступных + у которого богатый функционал + где ты не платишь за то, что не используешь + то что на плюсах ты можешь написать, что угодно + любая либа представляющая собой какой-либо апи к железу имеет интерфейс только на С\С++.
3. о какой "проблеме поддерживаемости" ты говоришь? Плюсы компилируются в нативный байт код процессора, под какую архитектуру у тебя есть компилятор под такую это и будет работать.
4. пакетные менеджеры есть и не один, тот же vcpkg например. Но я ими если честно никогда не пользовался, т.к. всю жизнь пишу программы под линукс, где пакетным менеджером служит команда apt install libname-dev.
5. Я разработчик, а не менеджер, а работал я в разных командах и имею представление о всей этой внутренней кухне.
6. Ты чего к плюсам доебался? Я же не только за плюсы говорю. Плюсы не всегда оптимальный выбор, и даже я иногда плююсь от них и думаю как бы это было проще написать на С# или Java, где есть все из коробки, правда java тоже та еще монструозная параша.
Аноним 08/09/21 Срд 18:07:38 2153194149
>>2153179
>Во-первых, выкинь из головы идею плюсы - это "числодробилка", это далеко не единственный плюс плюсов.
Я говорил конкретно про тебя.

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

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

>5. Я разработчик, а не менеджер, а работал я в разных командах и имею представление о всей этой внутренней кухне.
С чего ты взял что имеешь представление? Ты бюджеты считал или персонал нанимал? Может знаешь во сколька вся команда разработки обходилась или сколько резюме проходило через лидов?
Аноним 08/09/21 Срд 18:30:25 2153209150
Стикер 585Кб, 250x250
250x250
Аноним 08/09/21 Срд 18:31:42 2153212151
>>2153194
>Я говорил конкретно про тебя.
?

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

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

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

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

>С чего ты взял что имеешь представление? Ты бюджеты считал или персонал нанимал? Может знаешь во сколька вся команда разработки обходилась или сколько резюме проходило через лидов?
Лол, я начиная с первой работы собеседовал новых людей с лидами. Бюджеты не считал но примерно знал, во сколько что обходится. Да я и сейчас сам себе лид, в одном стартапе по найму, так что всякие расходы на сервера, железо и прочее я сам рассчитываю и уже обговариваю с непосредственным начальством.
Аноним 08/09/21 Срд 19:14:18 2153239152
>>2153156
>главное чтоб как-то работало.
"Как-то" работать будет на плюсах, потому что сделать хорошо там сложно. А на языках высокого уровня будет работать хорошо, если ты нормально пишешь. Стабильно, чётко и корректно, а это главное.

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

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

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

Реальность в том, что производительность языков программирования не является узким местом в большинстве задач. А вот скорость разработки, возможность поддержки, качество кода - являются.
Аноним 08/09/21 Срд 19:34:56 2153252153
>>2153239
То, что ты описал применимо только к вебмакакингу.

>"Как-то" работать будет на плюсах, потому что сделать хорошо там сложно. А на языках высокого уровня будет работать хорошо, если ты нормально пишешь. Стабильно, чётко и корректно, а это главное.
Конечно, ведь средняя обезьяна пришедшая из питона лучше не сможет сделать в силу отсутствия знаний, скилов и интеллекта, на то она и обезьяна. Но зачем обезьяне доверять гранату, когда это можно доверить компетентным людям которые умеют с этим хорошо обращаться?
И С++, к твоему сведению, является языком высокого уровня.
К тому же никто же не заставляет писать на С++, ну если не вышел умом пиши на golang хотя бы или java/C#.
В общем, тут все зависит от жадности инвестора, платишь мало денек - получаешь команду даунов на питоне которые делают хуево, платишь хорошо получаешь хорошую команду со стеком С++\Java которые делают хорошо, любой сервис.
Аноним 08/09/21 Срд 19:38:28 2153253154
>>2153252
>golang
Вот ты и попался макакен
Аноним 08/09/21 Срд 19:44:04 2153257155
>>2153252
>К тому же никто же не заставляет писать на С++, ну если не вышел умом пиши на golang хотя бы или java/C#.
Ты хотел сказать на Rust
Аноним 08/09/21 Срд 19:48:16 2153262156
>>2153252
Ты тот шизик, что ходит по всем темам и твердит "динамо дрисня". Уйди. Не хочется на тебя время тратить.
Аноним 08/09/21 Срд 19:51:47 2153265157
>>2153253
>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. По-моему, очень круто! Ну, программистам скорее всего такой расклад не очень понравится — мало кто любит быть винтиком в системе.
Аноним 08/09/21 Срд 19:53:31 2153267158
image.png 397Кб, 1000x1642
1000x1642
>>2153252
>В общем, тут все зависит от жадности инвестора, платишь мало денек - получаешь команду даунов на питоне которые делают хуево, платишь хорошо получаешь хорошую команду со стеком С++\Java которые делают хорошо, любой сервис.

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

https://lvivity.com/top-highly-paid-programming-languages
Аноним 08/09/21 Срд 19:55:04 2153270159
>>2153265
Вот именно, абсолютно макакенский язык, в котором еще можно выстрелить себе в ногу
Аноним 08/09/21 Срд 20:03:42 2153276160
>>2153267
Надо перекатываться на bash/shell. Сразу хороший плюс к зарплане.
Аноним 08/09/21 Срд 21:08:13 2153308161
image.png 7Кб, 186x172
186x172
image.png 12Кб, 450x438
450x438
Хелп, пытаюсь обновить значения конкретных ячеек двухмерного массива. Почему в результате каждый столбец воспринимается как ячейка? Как обновлять значения ячеек?
Аноним 08/09/21 Срд 21:09:55 2153309162
>>2153308
[[0]*3] 3
не сработает, делай по-другому.
Аноним 08/09/21 Срд 21:20:56 2153311163
>>2153276
Баш это сраное говно, потолок которого однострочники. Катись в перл - это индустриальность си плюс мощь лиспа. Но он умер.
Аноним 08/09/21 Срд 21:32:45 2153313164
image.png 1302Кб, 940x620
940x620
>>2153308
Зачем фуфелы постоянно пытаются в маняумножение массивов?
Аноним 08/09/21 Срд 21:35:44 2153316165
>>2153311
Еблан, нуб, вкатыш, у баша своя ниша, он не говно, он хорошо выполняет свои задачи для которых предназначен. Перл - это вообще другая стихия. Надо быть полным ебланом, чтобы сравнивать баш и перл.
Аноним 08/09/21 Срд 21:37:39 2153317166
>>2153316
+
Это как сравнивать отсос и давание в жопу
Никогда не понимал типов готовых сосать лишь бы их не ебали. Отсос - унизительно, поэтому в случае чего настоящий мужик будет гордо стоять раком и примет в жопу хуй, даже не пискнув ни разу. Такие дела
Аноним 08/09/21 Срд 21:39:21 2153318167
>>2153317
Шарпер, вернись в свой тред.
Аноним 08/09/21 Срд 21:40:15 2153320168
image.png 7Кб, 253x86
253x86
>>2153313
Потому что суть питона в том, что все можно сделать сполшага, а новички дальше короткой статьи о новом материале не заходят, видимо.
>>2153309
Получилось, спасибо
Аноним 08/09/21 Срд 21:40:39 2153321169
>>2153311
>Баш это сраное говно, потолок которого однострочники
Долбоеб детектед, не быть тебе девопсом
Аноним 08/09/21 Срд 22:26:20 2153340170
>>2153316
>>2153317
Раскудахтались-то. Я вам говорю, что баш это сраное говно, в котором приходится пачкать руки, потому что так сложилось исторически. На перле можно заменить простыню баша в пару строчек с вертухи, потому что он делался в том числе для этого.
Найдите мне кого-то, кто скажет, что баш это охуенный язык для скриптов. Это и не язык вовсе, а игрушечная автоматизация.
Но ничего, зумерье продавит какой-то клоунскрипт и будете радостно писать на нем, как это вышло с системд, а баш превратится в легаси заглушку, где ему самое место.
>>2153321
И не собирался. Ойти-сантехник для комуникации говн, велика птица.
Аноним 08/09/21 Срд 22:30:27 2153344171
skuf.png 113Кб, 300x245
300x245
Аноним 08/09/21 Срд 22:34:18 2153346172
Аноним 08/09/21 Срд 22:35:28 2153347173
16242090310140.png 490Кб, 418x512
418x512
Аноним 08/09/21 Срд 23:49:14 2153394174
Можете на пальцах объяснить, для чего нужна библиотека Pebble?
Кто-нибудь использует её?
Где про неё можно почитать и потренироваться с ней?
Инб4 документация
Аноним 09/09/21 Чтв 01:15:13 2153420175
image.png 17Кб, 486x194
486x194
Почему код сверху работает, а снизу нет? Как можно заполнить список объектами, не прописывая 32 строки?
Аноним 09/09/21 Чтв 01:22:43 2153422176
>>2153420
А что делает код снизу?
Аноним 09/09/21 Чтв 01:24:13 2153423177
>>2153420
Невермайнд, ты while с for перепутал.
Аноним 09/09/21 Чтв 01:31:10 2153427178
>>2153423
Бля, точно, ахаахах
Аноним 09/09/21 Чтв 01:42:04 2153434179
Ищу IDE. Кодил всегда для себя - посчитать что-то алгоритмически, что не могу математически, спарсить дату, что-то типа того. Сейчас нейроночки потихоньку изучаю. Раньше пользовался IDLE, потому что ничего другого не нужно было. Но с нейроночками ощущаю потребность в смене IDE для удобства. Например, у IDLE при выводе в шелл есть явна задержка, насколько я понимаю и обучение становится дольше просто из-за этого. Сейчас пытаюсь освоиться с SublimeText, но у него свои проблемы: во-первых, не нашёл как заставить matplotlib показывать плоты, во-вторых, во время обучения нейронки GUI тупо фризится. Всякие по мелочи проблемы, типа он не видит PATH от ffmpeg, тогда как IDLE его видит (и гугл помог очень условно). Короче тоже проблемный.
Пробовал Jupyter, но чет прямо совсем не понравилось по ощущениям.
Я не собираюсь прогать в команде, не собираюсь выкладывать код на гитхаб, хочу просто для себя экспериментировать и изучать, чтобы было удобно. Что анон может посоветовать в моей ситуации?
Аноним 09/09/21 Чтв 06:28:19 2153462180
Аноним 09/09/21 Чтв 07:10:11 2153468181
>>2153434
Такие баловальщики сидят как раз в жупитере. Мне он тоже не особо понятен, но реально популярен.
Аноним 09/09/21 Чтв 09:12:56 2153490182
Кто нибудь знает можно ли переопределить встроенную функцию в питоне, затем зайти в эту функцию и вызвать уже не рекурсивно эту же функцию, а встроенную функцию. Например я переопределяю функцию print(), вызываю ее и из этой функции print(), хочу вызвать Built-in print(), которая встроена в питон. Как это сделать?
Аноним 09/09/21 Чтв 09:23:06 2153497183
>>2153490
прикиньте получилось

__builtin__.print()
Аноним 09/09/21 Чтв 09:35:01 2153504184
Делаю отступ одним пробелом во всех языках, и ебись оно врот.
В детстве делал табами, потом 4 пробела, потом два, сейчас один.

Но я и не лезу в ваши галеры, понятно дело.
Аноним 09/09/21 Чтв 09:35:44 2153505185
16245631204220.png 945Кб, 1080x1080
1080x1080
>>2153504
>В детстве делал табами, потом 4 пробела, потом два, сейчас один
Аноним 09/09/21 Чтв 09:38:54 2153508186
>>2153504
Нахуя тогда делать один пробел, если можно сделать один таб? Самый ебанутый вариант у тебя.
Аноним 09/09/21 Чтв 09:44:13 2153511187
Аноним 09/09/21 Чтв 10:26:43 2153527188
>>2153490
>Например я переопределяю функцию print()
А нахуя тебе ее переопределять?)
Создай новую бля, присвой ей свой идентификатор
Аноним 09/09/21 Чтв 10:27:16 2153529189
>>2153508
С одним пробелом на экране больше всего места.

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

Есть даже понятие tsv по аналогии c csv
Аноним 09/09/21 Чтв 10:54:51 2153544190
>>2153529
Ты там на домофоне сидишь штоле, что не хватает места в ширину?
Аноним 09/09/21 Чтв 11:14:58 2153557191
>>2153527
у меня не было доступа к куску кода в котором вызывалась буилтин функция, я ее переопределил и когда тот кусок кода вызывал типо билтин функцию, то он вызывал мою функцию.
Аноним 09/09/21 Чтв 11:21:05 2153562192
Аноним 09/09/21 Чтв 12:03:29 2153584193
>>2153557
Переопределять функции билтин либы в принципе не есть гуд. Используй partial.
Ровно как и называть аргументы в методах/функциях таким образом
Аноним 09/09/21 Чтв 12:25:33 2153604194
>>2153584
partial вообще не про это. Его концептуально неправильно использовать для такого.
Аноним 09/09/21 Чтв 12:52:04 2153635195
Как найти наименьшую/старейшую дату в тексте?
Искать через регулярку, определять позиции начала конца, перегонять в datetime и возвращть позицию найденного значения как-то громоздко. Есть ли альтернативы?
Аноним 09/09/21 Чтв 12:54:42 2153639196
>>2153635
re.finditer и сверяй по ходу.
Аноним 09/09/21 Чтв 14:29:29 2153743197
Какой самый минимальный срок обучения, чтобы можно было выполнять хоть какую-то оплачиваемую работу, пусть даже 1к в день?
Аноним 09/09/21 Чтв 14:39:23 2153766198
>>2153743
Тебе не питон нужен, а фронтэнд Джаваскрипт+цсс + хтмл. 3 месяца если будешь сидеть по 10 часов в день. Пишешь сайт идешь на собеседование
Аноним 09/09/21 Чтв 16:12:25 2153831199
Аноним 09/09/21 Чтв 16:35:28 2153843200
>>2153831
\b лучше вместо тех хуиток, он zero-width.
Аноним 09/09/21 Чтв 17:50:29 2153883201
>>2153843
Да, полезная штука. Спасибо.
Аноним 09/09/21 Чтв 18:20:12 2153897202
>>2153604
Падажжи, то есть ты целиком нахуячил новую функцию и назвал ее print? Или все же переопределил его, расширив - как именно тогда?
Аноним 09/09/21 Чтв 18:22:45 2153898203
>>2153831
А если формат даты американский/японский? А если не через точку? А если месяц записан буквами?
Аноним 09/09/21 Чтв 19:15:08 2153945204
>>2152301
Бампну вопрос ещё раз и завтра засяду хуярить на flask-wtf / flask-sqlalchemy если других предложений не будет.
Аноним 09/09/21 Чтв 20:04:45 2154013205
>>2153898
Переделываешь регулярку и меняешь второй аргумент в strptime.
Аноним 09/09/21 Чтв 20:23:52 2154024206
>>2154013
Готов заранее анус поставить что все даты в тексте таким образом найдутся?
Аноним 09/09/21 Чтв 20:37:52 2154047207
>>2154024
Ты почему-то ищешь, к чему бы доебаться, но с какими-то надуманными аргументами. Откуда мне знать в каком формате у того анона даты в тексте? Он спрашивает, как это вообще сделать - с регулярками или без.
Аноним 09/09/21 Чтв 20:46:53 2154062208
>>2154047
Я просто люблю обсуждать анусы
Аноним 09/09/21 Чтв 20:48:52 2154065209
>>2154062
А ты сделал себе отбеливание?
Аноним 10/09/21 Птн 02:21:08 2154202210
У кого-нибудь есть курсы или уроки по Kivy? Что-то вроде все установил, а даже первую прогу с Хеллоу ворлд не могу запустить.

Или есть другие решения для запуска простеньких скриптов на Андроид?
Аноним 10/09/21 Птн 08:02:03 2154228211
Screenshot20210[...].jpg 168Кб, 720x1560
720x1560
Аноним 10/09/21 Птн 09:51:38 2154268212
>>2152126
Вот это попробуй. У меня с сайтами, защищёнными CloudFlare, работало.
https://github.com/ultrafunkamsterdam/undetected-chromedriver

Ещё можешь скопировать параметры запроса, делаемого твоим хромом, и скормить их requests. Будет работать до поры до времени
Аноним 10/09/21 Птн 10:27:31 2154291213
Аноним 10/09/21 Птн 10:31:03 2154294214
>>2153897
короче, я переопределил буилтин функцию, какой-то кусок кода ее вызвал и получилось, что вызвалась моя функция, я внутри своей функции вызвал настоящую буилтин функцию, добавил к ее возврату, то что мне нужно и вернул в ту функцию которая вызвала мою функцию.
Аноним 10/09/21 Птн 10:53:22 2154305215
>>2154291
Разобрался, это просто бездумно скопипащенный кусок.
Аноним 10/09/21 Птн 19:28:48 2154617216
Аноны, тупой, наверное вопрос.
Лениво вкатываюсь. Даже без цели, а так, голову занять и что то прикладное при случае накидать. Не в этом дело. Накидал простенькую программу (из укуса питона да) типа адресной книги с добавлением, удалением, изменением. Сохранить в файл загрузить. Вот и весь функционал. Решил прикрутить ui. Начал смотреть в сторону QtPy. И даже прикрутил. Доволен до жопы. Интересно, но заебла одна штука.
Пишу в PyCharm. И эта сволочь, когда я начал пытаться в интерфейс, перестала выкатывать ошибки в свою консольку. Окно софтины открывается работает, а когда пытаюсь жать на отрабатываемую в данный момент кнопочку или ещё что - подвисает и вылетает с каким то одним и тем же эрроокодом в консоли. Пытался Его гуглить - пишут это типа проблема IDE, она ошибки иногда не показывает.
Приходится искать мой файл, запускать в голом питоне и смотреть ошибки там.
Ну это же полная хуйня, можно это пофиксить?
А ещё эта поебень на три страницы кода собирается в .exe файл в 35 мегабайт, лол.
Аноним 10/09/21 Птн 20:41:09 2154680217
Сап, подскажите, как в гите создать ветку в удаленной репе из ветки в удаленной репе при этом не делая checkout на эту ветку и желательно не создавая локальную ветку?
Аноним 10/09/21 Птн 23:03:13 2154776218
изображение.png 31Кб, 1156x269
1156x269
изображение.png 7Кб, 1008x39
1008x39
Кто работал с django-filters? Как можно задать полю queryset без указания это напрямую в классе. Мне нужно исходя из адреса определенной страницы уже формировать queryset, но сейчас я это не могу сделать.

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

Заранее спасибо! Очень долго с проблемой сижу, даже в исходники пытался лезть...
Аноним 11/09/21 Суб 00:49:37 2154813219
>>2154776
Через init наверное можно, там небось есть словарь с фильтрами.
Аноним 11/09/21 Суб 00:53:14 2154814220
>>2154617
>А ещё эта поебень на три страницы кода собирается в .exe файл в 35 мегабайт, лол.
А как ты хотел лол, питон вообще для этого не совсем подходит, он же не компилируется.
Аноним 11/09/21 Суб 01:03:55 2154818221
>>2154814
Даже если бы и компилировался, всё равно эти тулкиты надо носить с собой, это не нативный гуй.
Аноним 11/09/21 Суб 05:49:20 2154855222
>>2151860
Покажи конфиг Фара. Хочется посмотреть как работают профи.
Аноним 11/09/21 Суб 10:43:58 2154896223
image.png 96Кб, 300x162
300x162
Аноним 11/09/21 Суб 10:48:54 2154898224
Думаю что учить.. аноны, что можно делать на пайтоне помимо ебаного мл?

понятно что все, но для чего еще питон используется?
Аноним 11/09/21 Суб 11:08:02 2154907225
>>2154898
сайт можешь сделать
игру можешь сделать
Аноним 11/09/21 Суб 11:09:09 2154908226
>>2154907
телеграм ботов делать можешь, соцсеточку можешь
Аноним 11/09/21 Суб 12:17:56 2154952227
Как сделать аналог двачерского бесконечного скролла, что бы изменившее положение треды не повторялись? Пока что придумал первым запросом отсылать список айдишек а потом уже загружать содержимое по нему. Но пока непонятно что отображать, если пользователь начал скролить через час после загрузки страницы, если часть тредов утонула
Аноним 11/09/21 Суб 12:18:15 2154953228
Аноны, почему всем похуй на мой код?
Аноним 11/09/21 Суб 13:16:05 2154986229
image.png 64Кб, 1226x467
1226x467
>>2154813
Сделал, но теперь проблема, что вызываю после присваивания self.declared_filters, там показывает мой новый фильтр. Но он не отображается в форме, его просто нет. Те которые объявлены как атрибуты класса, есть.

Аноним 11/09/21 Суб 13:17:39 2154987230
>>2154952
Сделай при ajax запросе проверку, есть такой id или тред утонул, если нет, возвращай массив без него.
Аноним 11/09/21 Суб 14:02:30 2155022231
image.png 20Кб, 1001x92
1001x92
image.png 32Кб, 1013x249
1013x249
>>2154986
Фух, сделал. Вот решение, если кому-то в будущем понадобиться.
Решение простое, но именно в этой библиотеке не очевидное.
Всем спасибо.
Аноним 11/09/21 Суб 14:19:22 2155033232
>>2154987
Я думал над этим, но меня смущает ситуация, когда сайт закончится на 3-ей странице если пользователь последний раз обновлял нулевую несколько часов назад переключившись на что-нибудь другое, а потом вернувшись к борде.
Аноним 11/09/21 Суб 15:00:14 2155062233
>>2155033
Да и пускай, это лучше чем он увидит тред, зайдет в него, а он уже удален.
Аноним 11/09/21 Суб 17:23:51 2155209234
Есть у вас видеокурс по питону с нуля? Куда искать?
Аноним 11/09/21 Суб 18:35:38 2155278235
>>2155033
По дате нужно, берешь n записей старше даты последнего.
Аноним 11/09/21 Суб 18:52:12 2155297236
>>2155278
Ну тут тоже проблема в том, что борда быстро кончится, если на нулевую давно не заходили и часть тредов утонуло. Да и потенциально этот пет расчитан на максимальный перформанс и мне кажется, что выборка из базы по конкретным айдишкам будет быстрее чем расчет по дате.
Аноним 11/09/21 Суб 18:56:42 2155300237
>>2154952
Ты о чем вообще? Бесконечный скролл где?
Аноним 11/09/21 Суб 18:58:08 2155303238
>>2155300
Когда ты скролишь двач, то треды автоматически подгружаются когда ты доходишь до конца страницы, я делаю свою пет-борду и хочу аналог сделать
Аноним 11/09/21 Суб 18:59:41 2155305239
image.png 741Кб, 1280x720
1280x720
>>2154952
>>2155303
Подгружаешь при заходе на /board_name список айдишников тредов в виде массива, первые скажем 20 из них грузятся и отдаются клиенту. Когда клиент долистал до конца, отправляешь запрос и подгружаешь остальные 20 тредов по их айдишникам (если какие-то из них сдохли за это время то ничего не возвращаешь клиенту вместо того чтобы падать или кидать невалидный урл и идешь дальше)
Очевидно же
Аноним 11/09/21 Суб 19:02:39 2155307240
>>2155305
Так уже писал выше что так можно сделать, но тут проблема в том, что борда быстро кончится, если нулевую давно не обновляли, а занимались чем то другим.
Аноним 11/09/21 Суб 20:55:54 2155443241
Сап, ананасы. В пайтоне относительно недавно начал учить год назад как на работу устроился и столкнулся сейчас с новой для себя проблемой.
Подскажите, пожалуйста, как лучше всего ускорить выполнение моей функции: https://dumpz.org/cDxQKp5s7cm8 в генераторе первая строка съехала, блэт
Суть: пишу микросервис на фласке, суть которого получать на вход большой список данных и ходить с ними в десяток других сервисов, агрегируя необходимую информацию, в результате формировать огромный csv файл и отправлять в респонсе. Проблема в том, что некоторые сервисы возвращают огромное количество данных и, соответственно, требуют много времени на получение ответа от них вплоть до 3-5 секунд. Собственно, обработка списка из 100 строк может занять до 5 минут времени, что достаточно долго, учитывая что в идеале за это время хотелось бы обрабатывать в десять-двадцать раз больше информации.
Вопрос - какими способами можно ускорить данный процесс?
Первая мысль - наладить трединг или мультипроцессинг с каким-нибудь producer-consumer, но я не могу пока понять, как лучше сделать это внутри моего генератора.
Аноним 11/09/21 Суб 21:06:16 2155448242
Аноним 11/09/21 Суб 21:12:27 2155453243
Всем привет, подскажите идею для мини(или не очень) проекта чтобы поработать с celery/redis, kafka и другими страшными технологиями.
Аноним 11/09/21 Суб 21:52:59 2155472244
Аноним 11/09/21 Суб 22:43:31 2155517245
Я может совсем наркоман, но все же.

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

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

('Бананы', [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]

Я слишком много хочу от Питона?
Аноним 11/09/21 Суб 23:09:13 2155531246
Аноним 11/09/21 Суб 23:10:44 2155535247
>>2155531
А без Лямбды никак?
Аноним 11/09/21 Суб 23:13:55 2155544248
Аноним 11/09/21 Суб 23:14:39 2155548249
Аноним 11/09/21 Суб 23:42:00 2155569250
>>2155535
Через компрехеншен пиши: так в сто раз короче и читабельнее. Мап/фильтр + лямбда пишут только джуны и свитчеры с жявы.
Аноним 11/09/21 Суб 23:46:45 2155571251
>>2155569
Что такое компрехеншен? Списочное выражение?
Аноним 12/09/21 Вск 05:46:46 2155625252
>>2155443
А почему не джанго?
Аноним 12/09/21 Вск 09:33:01 2155660253
>>2155443
Если на синхронном фреймворке писать, то тебе надо или отправлять задание через что-нибудь вроде celery, либо использовать треды.

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

Но я бы иначе реализовал, вот так примерно:
https://ideone.com/NFT5Ud
Аноним 12/09/21 Вск 09:37:18 2155663254
Аноним 12/09/21 Вск 11:25:30 2155700255
Я конечно все понимаю, джанга типо у нас удобная, доки хорошие, расширений много... но как блять вы ебетесь с синхронным доступом в БД? Он же синхронный нахуй, блокирующий. Если с requests еще можно намутить финт с тредами (что кстати ведет к своим "ништякам" если не юзаешь ThreadPoolExecutor а просто ебошишь треды), то с БД если твой драйвер синхронный - то можешь только пососать писос, треды тут не спасут (ну помочь они смогут только в одном - запросы в БД перестанут блочить весь сервак, т.к. контекст на тредах постоянно будет переключаться)
Как жить на синхронном фреймворке и лазать в БД?
Аноним 12/09/21 Вск 11:28:45 2155704256
>>2155700
А как раньше весь интернет работал, до появления моды на асинхронщину? По снегу ходили десять километров запрос в базу послать, а как же.
Аноним 12/09/21 Вск 12:06:22 2155741257
>>2155700
>Как жить на синхронном фреймворке и лазать в БД?
В чём проблема? Берешь и лезешь. В это время твой процесс с синхронном фреймворком ждёт, а другие запросы обслуживают другие инстансы.

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

Асинхронщина становится необходимой, когда ты продолжительные запросы начинаешь обрабатывать, вебсокеты в первую очередь. Хотя тредами тоже можно решить.
Аноним 12/09/21 Вск 12:29:12 2155761258
>>2155741
Как вебсокеты относятся к асинхронщине?
мимохуй
Аноним 12/09/21 Вск 12:41:03 2155770259
>>2155761
Так, что невозможно работать с постоянными соединениями в блокирующем режиме, кроме совсем примитивных сценариев.
Аноним 12/09/21 Вск 12:44:22 2155775260
>>2155770
Хм, че-то я не задумывался над этим раньше. Погонял вебсокеты в fastapi, но это очевидный асинхронный фремворк, еще ради эксперимента ебошил их в nodejs но вся жс-среда асинхронна по свой сути и основана на ивентах и коллбеках. А как же тогда юзать вебсокеты в джанго или фласке? Неужели их там нет?
Аноним 12/09/21 Вск 13:02:07 2155785261
>>2155775
Есть свои костыльные реализации на тех же тредах
Аноним 12/09/21 Вск 15:44:43 2155896262
>>2155775
>фласке
Ебаный реликт
Аноним 12/09/21 Вск 16:11:30 2155917263
Блин, никак не могу разобраться с ебучей venv на питоне.
В жопаскрипте с npm было проще и понятнее. У меня стоит несколько интерпретаторов (2.7, 3.7 и 3.8) как мне создать venv с конкретным питоном - 3.7 ? Потому что по дефолту создается с 3.8
Не говоря уже о том что у меня в глобальном интерпретаторе затесалось несколько "левых" пакетов типо alembic которые заботливо перелезают в новую venv когда ее создаю, как создать "чистую" среду?

Linux Ubuntu
Аноним 12/09/21 Вск 16:16:42 2155919264
Аноним 12/09/21 Вск 16:19:06 2155920265
>>2155917
просто создаёшь окружение командой
python3.8 -m venv ~/virtualenvs/py38

Можешь путь к конкретному питону глобально прописать
/usr/bin/python3.8 -m venv ~/virtualenvs/py38

Аноним 12/09/21 Вск 16:31:51 2155934266
image.png 18Кб, 1210x61
1210x61
image.png 38Кб, 464x512
464x512
Аноним 12/09/21 Вск 16:36:24 2155936267
>>2155934
Ну ХЗ, разбираться надо, у меня на убунтах это работает. И на которой сейчас сижу, и на других я точно так же всегда ставил, причём без какой-либо специальной настройки.

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

Сейчас ради интереса попробую в убунте под докером с нуля питон поставить и проделать
Аноним 12/09/21 Вск 17:55:57 2155977268
>>2151231 (OP)
Сосач ку. Я смотрю курс мфти. А где брать примеры задач для самостоятельного решения? Подкиньте ресурсов
Аноним 12/09/21 Вск 17:57:55 2155979269
Аноним 12/09/21 Вск 17:59:24 2155982270
Аноним 12/09/21 Вск 18:13:54 2155991271
>>2155979
Промоутеры Степика, хороший заход, но нет, не пойдёт так.

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

Хотя весь этот материал в плане знаний доступен бесплатно, без регисртации и смс в массе разных вариантов.
Аноним 12/09/21 Вск 18:21:35 2155994272
>>2155991
Не спорю, что со временем будут добавляться новые платные курсы от автора этих курсов (они уже у него есть) и на платформе вообще.

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

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

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

Видосики - для тупых зумерков, которые будут с экрана по буковке код копировать.
Аноним 12/09/21 Вск 18:26:29 2155997273
>>2155994
Вот какое дело. Это анон-доска, тут анон-демократия.

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

То есть противоречит духу анон-сообщества.
Аноним 12/09/21 Вск 18:32:29 2156001274
>>2155997
У "нас". Я сам этот курс начал летом, и если бы не этот курс, то меня бы здесь не было.

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

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

И я сильно сомневаюсь, что ты сидишь через браузер с отключенным js, пуская трафик через цепочку дедиков в далеких странах и тщательно подбираешь слова, чтобы тебя нельзя было вычислить через анализ манеры общения. А если это делаешь ты, то так не делает > 90% населения треда. Не строй себе иллюзий, "анон".
Аноним 12/09/21 Вск 18:42:31 2156005275
>>2151231 (OP)
Сап. Подскажите книгу, по питону продвинутого уровня. А то лутца прочитал уже давно. Уже работаю разрабом. И датаклассы и тайпхинты успел выучить. Но только потому что увидел их в работе и загуглил. А сколько ещё вещей, который я не видел и не изучил? Например не умею дэбажить и профилировать. Плохо понимаю что умеют pip и tox. Не знаю как внутри там под капотом работает питон. Да и вообще мало ли что я ещё не знаю. Знает кто-нибудь углубленную книгу по питону?
Аноним 12/09/21 Вск 19:28:12 2156028276
Аноним 12/09/21 Вск 19:35:33 2156035277
>>2156005
Для питона очень большой перевес вкатунских книг, серьзных мало, надо собирать по крупицам по всяким статейкам, выступлениям, видяшкам.
Аноним 12/09/21 Вск 20:25:09 2156083278
>>2156035
Для тех, кто умеет программировать на других языках и хочет про питон больше узнать, очень полезна Intermediate Python, тоненькая книжка именно про особую специфику питона.

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

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

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

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

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

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

Всякие sqlanchemy и связанные вещи, тоже большая очень тема.
Аноним 13/09/21 Пнд 00:04:34 2156225279
>>2156005
Свейгарт Э. - Программирование для детей
Аноним 13/09/21 Пнд 04:04:20 2156265280
>>2156035
А может в треде соберём годноту про крупицам?
Аноним 13/09/21 Пнд 06:28:53 2156279281
pyth.png 41Кб, 460x150
460x150
Везде пишут, что интерактивная сессия печатает то же, что и repr.
Тогда как вы объясните пикрил?
repr накинул обратного слэша. Значит interactive echo это не равнозначно repr?
Аноним 13/09/21 Пнд 06:51:09 2156280282
Аноним 13/09/21 Пнд 07:50:47 2156294283
Аноним 13/09/21 Пнд 12:25:12 2156440284
>>2155517
list(enumerate(entry for entry in args if entry and type(entry) == str))
Аноним 13/09/21 Пнд 13:55:44 2156476285
>>2156440
enumerate начинает с нуля, если не указать арг start=1. Мы вам перезвоним.

Но вообще короче этот как раз тот кейс когда для читабельности лучше луп сделать.
Аноним 13/09/21 Пнд 16:09:09 2156592286
>>2156476
Цикл с аппендами медленнее, и громоздче.
Просто вы не умеете готовить компрехеншны и распаковку.
filtered_data = (entry for entry in args if isinstance(entry, str))
result = [*enumerate(filtered_data, 1)]
Аноним 13/09/21 Пнд 16:11:03 2156595287
>>2151231 (OP)
У меня функция обращается к ссылке и скачивает пак видосиков, мне надо чтоб она это делала автоматически в определенное время суток заданное мной, как это сделать?
Аноним 13/09/21 Пнд 16:16:41 2156596288
>>2156595
- Бесконечный луп с проверкой времени
- Запустить в нужное время с sleep(3600 * 24)
- cron
- Какая-нибудь библиотеканейм, которая работает по тому же принципу
Выбирай о хошь
Аноним 13/09/21 Пнд 16:17:02 2156597289
>>2155517
Анончик тебе правильно говорит, делай циклом, если не в код-гольф играешь.
>>2156595
Планировщиком задач в виндовсе, cron-ом в линуксе.
Аноним 13/09/21 Пнд 16:19:33 2156601290
Аноним 13/09/21 Пнд 16:23:47 2156603291
image.png 3Кб, 477x63
477x63
Аноним 13/09/21 Пнд 16:26:07 2156604292
>>2156601
Ты ебанулся? Какие еще нахер наносекунды? Оценка в наноманясекундах за цикл не имеет вообще никакого смысла и ничего не поможет тебе оценить. У меня примерно похожее получилось что и у анона >>2156603 - компрехеншн быстрее
Аноним 13/09/21 Пнд 16:30:44 2156606293
Помогите разобраться с энкодингом:
Получаю в скрипте с запроса жсон, в нём содержится поле с кириллицей, которое при выводе становится нечитабельным набором символов. При попытке стандартного энкод-декода из цп1251 в ютф8 вылезает ошибка "utf-8' codec can't decode byte "0xd4" invalid continuation byte".
Скрипт крутится в кубере, на линуксовом контейнере (настраивал его не я).
Как правильно вывести строку с русеком при данной ситуации?
Аноним 13/09/21 Пнд 16:34:52 2156609294
>>2156604
Шизоид, таблетки. Усредненные оценки по множественным ранам хороши тем, что сглаживают случайности. Это БАЗА всей экспериментальной науки. Лурк моар, как говорится.

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

Выводы как обычно: шизойды экономят на спичках, засирая код идиотскими трехэтажными компрехеншенами. Более опытные питонюги временами выбирают циклы исходя из конкретного кейса и их код чиатется намного лучше. И ничем не уступает по скорости (это если вообще отвлечься от того, что оптимизировать питон это да вы вообще блядь отбитые)
Аноним 13/09/21 Пнд 16:40:36 2156613295
>>2156609
>И это отлично бьется с теорией
Так ты не теоретизированиями занимайся. А на практику посмотри

>почти одинаковый байткод
Так одинаковый или почти одинаковый?
Аноним 13/09/21 Пнд 16:41:14 2156614296
>>2156609
Кстати я вас наебал, вызывать %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)

Аноним 13/09/21 Пнд 16:47:57 2156620297
>>2156613
Практика такова, что я ваши компрехеншены отбриваю на ревью и вы бугуртите...
Аноним 13/09/21 Пнд 16:49:45 2156622298
16245631204220.png 945Кб, 1080x1080
1080x1080
>>2156620
>>2156614
>вызывать %timeit надо
Его вообще никак вызывать не надо
Нормальные пацаны юзают нормальный IDE
Аноним 13/09/21 Пнд 16:50:27 2156624299
>>2156620
Дима, ты?
Заебал ты уже мои МР отклонять, собака
Аноним 13/09/21 Пнд 17:17:26 2156659300
Компрехеншены однозначно нужны и вообще это очень удобная и крутая штука питона.

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

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

И дело в читаемости в первую очередь, а не в экономии наносекунд на итерацию цикла.
Аноним 13/09/21 Пнд 17:23:09 2156665301
>>2156659
>>2156601
А эту штуку [x for x in range(100000)]
можно записать как
[*range(100000)]
Причём работать будет заметно быстрее, нет присвоения лишней переменной и байтокод сильно разный.
Аноним 13/09/21 Пнд 17:24:57 2156668302
>>2156620
>Практика такова, что я ваши компрехеншены отбриваю на ревью и вы бугуртите...
Такое возможно, если ревьювер не умеет писать на питоне, а из тех, кто "за две недели синтаксис проглядел и может работать".
Аноним 13/09/21 Пнд 17:47:41 2156698303
>>2156665
>присвоения лишней переменной
Ну вот да, когда мы приходим к таким оптимизациям, кажется пора менять питон на что-то batya approved вроде крестов.

Аноним 13/09/21 Пнд 17:52:09 2156706304
>>2156698
Это не оптимизация ради оптимизации, это просто лишние переменные, что вредно для читаемости.

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

Потом в любом случае полезно думать о том, во что вливается твой код. И не делать лишний раз тормоза, когда их можно не делать, причём без вреда для поддерживаемости кода.
Аноним 13/09/21 Пнд 18:10:27 2156723305
Как мне сделать так, что бы генератор возвращал гарантированно один объект? Есть что нибудь типа [ ... ].first() ?
Аноним 13/09/21 Пнд 18:14:31 2156726306
Аноним 13/09/21 Пнд 19:33:01 2156803307
>>2156706
Чел, ренж со звездочкой это оооч частный случай.
Аноним 13/09/21 Пнд 19:36:04 2156805308
>>2156726
Прилетает ехидный StopIteration,
Вы забыли добавить kek = object(); next(iterator, kek), мы вам перезвоним.
Аноним 13/09/21 Пнд 20:12:39 2156841309
>>2156609
>трехэтажными компрехеншенами
В примере самый обычный компрехеншн с фильтром из одного условия, который в любом учебнике есть. Призыва использовать их всегда не было, а только показано, как исправить другой код. Где мои два оставшихся этажа?

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

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

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

>>2156805
Откуда он прилетает, если в том посте даже кода нет, а только указание на нужный метод? Хорошо наверное воображать то, чего не существует, и спорить с ним.
Алсо, на практике в подавляющем числе случаев код взятия первого элемента не создает видимость наличия этого элемента, как предложил ты, а передает в default что-то вроде None или статического маркера, если нон возможен как значение в генераторе, так что твой код тоже ни о чем.
Аноним 13/09/21 Пнд 20:27:26 2156859310
>>2151965
а какие ты скрипты писал для работы?
Аноним 13/09/21 Пнд 20:28:08 2156860311
>>2156841
как предложил ты, а передает в default что-то вроде None или статического маркера, если нон возможен как значение в генераторе, так что твой код тоже ни о чем.
Читай задание и не пукай.

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

> Когда дорастешь до обработок каких-нибудь таблиц на пару миллионов значений
Ох щас бы крутить табличные данные в голом питоне. Ты понимаешь, что ты отбитый наглухо?
Аноним 13/09/21 Пнд 20:42:31 2156875312
Допустим, у вас есть несколько модулей в проекте и в них вы часто используете какую-нибудь небольшую функцию, зачастую таких функций несколько и они постепенно перерастают в модуль utils/helpers, что уже само по себе плохо, так как при пересборке зависимостей вам придется обновить все библиотеки, которые его юзают, даже если изменилась одна функция, которую некоторые из модулей могут не использовать. Как решить эту проблему правильнее? Я чет кроме копирования функций по месту требовния ничего не могу придумать.
Аноним 13/09/21 Пнд 20:55:39 2156897313
Аноним 13/09/21 Пнд 20:55:52 2156900314
>>2156860
>Что там first в джанге возвращает, ммм?
None он возврщает шиз, ничем не отличается от next([T], None), возвращаемое значение в любом случае Optional[T] и его требуется проверить на None
Аноним 13/09/21 Пнд 21:00:46 2156905315
>>2156900
А так ты просто читаешь код жопой. object() как раз чаще всего и используется как статический маркер.
Аноним 13/09/21 Пнд 21:00:58 2156906316
>>2156897
Кароче, есть набор функций, которые по чуть чуть юзаешь везде. В один момент перенес их в модуль utils. Теперь когда ты изменяешь функцию get_zalupa пересобираются библиотеки, которые используют модуль utils, но которым функция get_zalupa не нужна, но которые используют функцию get_jopa из того же модуля. Модули, которые используют get_zalupa и get_jopa являются пересекающимися множествами.
Аноним 13/09/21 Пнд 21:03:17 2156907317
>>2156905
Это означает говнокод, тут либо дефолт который можно использовать дальше по коду либо None. Все остальное выглядит как полный треш за который обоссут на ревью.
Аноним 13/09/21 Пнд 21:12:19 2156910318
Аноним 13/09/21 Пнд 21:15:18 2156915319
>>2156726
Нипомогло. Обошелся [0] в конце
Аноним 13/09/21 Пнд 21:17:16 2156918320
>>2156906
Я не пойму, что ты имеешь в виду под пересобирается.
Аноним 13/09/21 Пнд 21:18:59 2156920321
>>2156907
> дефолт который можно использовать дальше
Его положили в переменную kek, значит можно. Попущен.
Аноним 13/09/21 Пнд 21:23:08 2156931322
>>2156918
Представь, что у тебя ci/cd настроен так, что пуш в мастер для модуля создает новую версию пакета и заливает ее в твой pypi/на сервер. При этом проверяются все либы, которые зависимы от исходной и так же пересобираются, пока везде не будет самая новая версия твоего модуля.
Аноним 13/09/21 Пнд 21:28:37 2156943323
>>2156920
мимо
Ты буйный школьник какой-то.
Решение дали. Я, кстати, не знал, что вот next() такое умеет. Правда им реально не пользуюсь.

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

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

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

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

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

Аноним 13/09/21 Пнд 21:40:50 2156959324
Аноним 13/09/21 Пнд 21:45:03 2156965325
>>2156959
В стандартной либе полно треш кода
Особенно забавно:
cache_get = cache.get # bound method to lookup a key or return None
cache_len = cache.__len__ # get cache size without calling len()
Аноним 13/09/21 Пнд 21:48:17 2156969326
image.png 15Кб, 530x183
530x183
image.png 17Кб, 532x206
532x206
>>2156965
На самом деле это имеет смысл. Вынесенные методы работают быстрее, так как не приходится парсить объект на его наличие
Аноним 13/09/21 Пнд 21:51:54 2156975327
>>2156965
Тоже думаю, что тут оптимизационное байтоёбство. Кеш всё-таки должен быть быстрым и это разумно.
>>> 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

Надо тестировать, насколько разница велика. Но при учёте, что ты пишешь системную библиотеку, которой часто пользуются, то почему нет?
Аноним 13/09/21 Пнд 21:51:57 2156976328
>>2156969
Думал что подобное должны были оптимизировать для встроенных типов, как например разворачивание числовых выражений в константу.
Аноним 13/09/21 Пнд 21:56:00 2156985329
>>2156975
Там кстати объект используется как дефолт в случае если не задан размер, дальше по коду идет link = cache_get(key); if link is not None:
Аноним 13/09/21 Пнд 21:59:09 2156988330
>>2156976
Нет так просто с этим. Ты можешь захотеть создать свой класс, унаследованный от словаря, и переопределить в нём нужные методы.

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

Ну и в принципе есть такое, что язык плохо оптимизирован. Просто его изначально создавали без такого прицела. Там много чего можно было бы оптимизировать, если сделать специальные особые типы с ограниченными возможностями. Например, те же словари, но без возможности наследования от них.
Аноним 13/09/21 Пнд 21:59:32 2156989331
>>2156976
У питона очень тупой итрепретатор, к сожалению, хотя при генерации байт-кода уже можно было бы сделать оптимизации. Вроде за производительность планировали взяться в следующих релизах. Охуел, когда узнал, что даже вызов функции в питоне это тяжелая операция.
Аноним 13/09/21 Пнд 22:00:45 2156991332
>>2156988
Ну там ниже идет вроде манкипатч try:
from _functools import _lru_cache_wrapper
except ImportError:
pass
Это вроде как сишная реализация которая перекрывает то что было выше
Аноним 13/09/21 Пнд 22:05:30 2156994333
>>2156985
Правильно, потому что если размер задан, то в кэше лежат уже не сами значения, а кортежи в которых помимо значений есть еще и указатели на позицию в кольцевом буфере.

Поэтому, просто None означает что мы ничего такого в кэш не клали.
Аноним 13/09/21 Пнд 22:05:34 2156995334
Аноним 13/09/21 Пнд 22:09:18 2156999335
>>2156991
В плане байтоёбства я вот что не понимаю
строки 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)
(звёзды слетят, ну все поймут)
Это обходится в две лишние ненужные операции в байткоде.
Аноним 13/09/21 Пнд 22:10:29 2157001336
>>2156999
Один хуй ниже патчат код сишной либой лол.
Аноним 13/09/21 Пнд 22:29:53 2157039337
>>2156975
>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 начали оптимизировать это
Аноним 13/09/21 Пнд 22:34:18 2157047338
>>2151231 (OP)
Привет, анон. Так вышло, что надо переходить по изъебистой ссылке в питоне, urllib и requests выкидывают похожие ошибки

ProtocolError: ('Connection aborted.', OSError(0, 'Error'))
Типа того, в гугле 0 инфы по делу, может кто знает как решить ? или посоветуйте либу, не эти 2 хуйни, которая может подключиться по прокси (http , socks5 ), сделать куда-то запрос без лишней ебли головы
Аноним 13/09/21 Пнд 22:44:34 2157058339
>>2157047
requests пиздец хуйня, отвратительно работает подключение по HTTP прокси. Вместо того, чтобы выкинуть ошибку, считает прокси валидными при заведомо плохих данных. Пиздец, открыл их гитхаб, не только у меня проблемы с ними. А альтернативу б найти
Аноним 14/09/21 Втр 00:51:08 2157176340
XncMvwHVu9U.jpg 371Кб, 1280x960
1280x960
Насколько критично читать лутца на англе? Мне больше бумажные издания нравятся соответственно быстро получить могу только на русском, много ли я потеряю?
Аноним 14/09/21 Втр 03:47:28 2157210341
>>2156860
>щас бы крутить табличные данные в голом питоне
Спойлер не читай @ сразу отвечай
Аноним 14/09/21 Втр 06:57:12 2157222342
Аноны, посоветуйте, как изучать python. Сейчас учусь на первом курсе на направлении, не связанном с программированием, но подумал, что было бы неплохо изучить его для себя, ибо в будущем вполне может пригодиться. Сам я с питоном знаком, сдавал с его помощью ЕГЭ по информатике, хотя сам прекрасно понимаю, что это достаточно далеко от настоящего программирования. Так что бы мне такого почитать, чтобы разобраться? Думал почитать Лутца, но прекрасно осознаю, что тысячу страниц я не осилю, так что пока начал читать "Укус питона"
Аноним 14/09/21 Втр 07:12:26 2157223343
Аноним 14/09/21 Втр 09:24:22 2157241344
>>2151231 (OP)
Какой в питоне есть годный способ сделать несколько попыток повторения при какой-то ошибке? Я обычно делаю рекурсивные вызовы со счетчиком, но это как-то не очень.
Аноним 14/09/21 Втр 09:46:17 2157253345
>>2157210
Не оправдывайся, рукожопка.
Аноним 14/09/21 Втр 10:25:13 2157272346
>>2151231 (OP)
Как создать ссылку для получения файлов в бесконечном цикле? При обращении к ссылке файлы должны автоматически сохраняться в указанную директорию.
Аноним 14/09/21 Втр 10:29:36 2157276347
>>2157272
Просто дернуть хттп-метод.
Аноним 14/09/21 Втр 11:04:52 2157292348
>>2157241
Напиши свой retry декоратор
Аноним 14/09/21 Втр 11:25:45 2157299349
Меня тут не обоссут если спрошу пару вопросов из институтской программы? Перевожусь из одного универа в другой и нужно изучать пайтон.
Аноним 14/09/21 Втр 11:37:54 2157306350
Аноним 14/09/21 Втр 11:51:12 2157317351
Короче, делаю дз по джанго. В одном из заданий говорится, что нужно написать код во вьюшке, чтоб при заходе на /условность открывался список, просто текст. И я это сделал. Админка работает, на главной текст, на /условность тоже текст есть. Задание проверили и сказали, что ожидают предопределение списка, оборачивание его в теги нумерованного списка, формирование строки, которую опять нужно обернуть в теги и "подать" в HttpResponse. Я по правде сказать в прошлом универе писал чуть-чуть на си шарпе и то, плохо что помню.
Вот допустим во вьюшке у меня представление

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

Что мне сделать то нужно? Я плохо понял что от меня требуется.
Аноним 14/09/21 Втр 11:54:05 2157318352
Сказали в urls все окей, нужно что то со вьюшкой сделать.
Аноним 14/09/21 Втр 11:54:26 2157320353
>>2157222
поясни как сдавал еге на питоне
что там за задания?
Аноним 14/09/21 Втр 11:58:10 2157324354
>>2157276
Пользуюсь фласком, вот функция:


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

return jsonify()
Сам файл приходит с постмана, но хули дальше делать не знаю, через open не сохранялся.
Аноним 14/09/21 Втр 12:00:55 2157326355
>>2157317
>ожидают предопределение списка
Наверное чо-то типо получения списка из базы?

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

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

А по факту хуйня какая-то, а не задача
Аноним 14/09/21 Втр 12:03:37 2157328356
>>2157326
короче мне просто создать html и дать путь к нему, чтоб не хранить текст во вьюшке?
Аноним 14/09/21 Втр 12:03:59 2157329357
>>2157326
>Достаёшь из контекста
Обосрался тут. Не из контекста, а из списка, конечно

И построение строки будет что-то типо:
"<ol>" + "".join([f'<li>{item}</li>' for item in items]) + "</ol>"
Не проверял, работает ли вообще
Аноним 14/09/21 Втр 12:04:59 2157330358
>>2157253
Ты нормальный? Речь о составе команды, при чем тут криворукость? Даже если лично я навелосипежу эту обработку на крестах-жабах, никто в здравом уме не будет это принимать, т.к. понадобится нанимать отдельного спеца на какой-нибудь кривой непостоянный график для поддержки этого решения, когда весь проект и, соответственно, команда для него - змеевеки.
Аноним 14/09/21 Втр 12:05:48 2157331359
>>2157328
Дык я не знаю, чо вы там изучить успели уже. По нормальному если делать - надо создать context и туда передать свой список значений, а потом во темплейте уже подставлять через тэги типо
<ol>
{% for item in items %}
<li>{{ item}}</li>
{% endfor %}
</ol>
Аноним 14/09/21 Втр 12:10:53 2157335360
>>2157331
Я тебя понял. Спасибо.
Аноним 14/09/21 Втр 17:43:15 2157599361
>>2157272
Передавать retry_count в kwargs пока тот не дойдёт до библиотечной функции, которая этот параметр поддерживает. Если нет возможности, то пиши свой велосипед с удобным тебе логгингом, проверкой результата и хэндлинга эксепшенов
Аноним 14/09/21 Втр 17:43:57 2157600362
Аноним 14/09/21 Втр 19:27:50 2157730363
>>2157320
В этом году ЕГЭ сделали полностью компьютерным, так что можно было абсолютно все задания решать с помощью компьютера, но некоторые всё же быстрее на листочке решить.
Из тех, что решаются с помощью программы, были задания на решение уравнения с несколькими неизвестными и параметрам, задания на написание программы с рекурсией, программы для перевода в другие системы исчисления, обработка массивов с числами, обработка текстовых файлов, нахождение промежуточного значения переменной, две задачи прикладного содержания.
Если интересно, можешь в Гугле набрать "решу ЕГЭ информатика" и посмотреть типовой тест
Аноним 14/09/21 Втр 20:01:13 2157764364
>>2157730
>Если интересно, можешь в Гугле набрать "решу ЕГЭ информатика" и посмотреть типовой тест
Загуглил, чуть иначе. Вот такой вариант нашёл, пробный онлайн-тест:
https://inf-ege.sdamgia.ru/test?id=9195205
Что-то там такой конкретный литкод, я не ожидал.

Попробую ради интереса чуть порежать, пока не надоест.
Аноним 14/09/21 Втр 22:12:16 2157921365
>>2151231 (OP)
О боже блять, ну что за еб твою мать. Запустил фастапи, попытался создать соединение через вебсокет, постоянно высирается ошибка 403:
('127.0.0.1', 49434) - "WebSocket /ws" 403

Делаю как в примерах, все равно та же хуйня. Думал распространенная рпоблема, но нихера подобного. Что это блять?
Аноним 14/09/21 Втр 22:51:20 2157948366
Аноним 14/09/21 Втр 22:58:17 2157952367
16081056956400.png 661Кб, 640x640
640x640
Объясните ньюфагу. Вот допустим у меня есть функция_1 которая return список. Есть функция_2 которая что-то делает с этим списком.
Я должен передавать список в папрметрах функции_2 или можно обращаться к списку как к аргументу функции_2? Есть какие-то рекомендации или это фломастеры на вкус и цвет?
Аноним 14/09/21 Втр 22:59:42 2157955368
>>2157952
Просто вызываешь одну функцию внутри тела другой функции. Можешь конечно и как аргумент при вызове перекидывать.
Аноним 15/09/21 Срд 00:54:42 2158012369
Кто-нибудь с dash работал?
Как засунуть глобальную переменную в input callback'a?
Аноним 15/09/21 Срд 01:27:14 2158019370
>>2157764
>>2157730
что такое алгоритмический язык и бейсик?
бейсик это язык на котором написан код для запуска депеш на пневмопочте?
Аноним 15/09/21 Срд 12:05:08 2158224371
>>2151231 (OP)
Вопрос по фласку ip выводится через request.remote_addr, а как дату вывести? Причем желательно именно дату без времени в часах и минутах.
Аноним 15/09/21 Срд 13:42:15 2158296372
Как элегантно раскидать вложенные условия? Допустим, нужный результат зависит от функции, вызов которой зависит от: x > 0 или y > 0 или z > 0,. То есть на выходе получается 8 вариантов. Если писать через IF-ы, выйдет жесть, пока что вижу такой подход — преобразовать три условия в три бита и в зависимости от преобразования двоичного числа в десятичное вызывать нужную функцию. Но хз, как-то не по питонячьи звучит, так можно и на плюсах написать, может у питона есть свое решение для такого рода задач.
Аноним 15/09/21 Срд 14:02:45 2158308373
Как в wxPython'е сделать кнопку с прозрачным изображением (скруглённые углы), чтобы фон продолжал отображаться?

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

Я даже не против иметь два "объекта": один для отрисовки и второй для нажатия. Но как мне тогда сделать полностью прозрачный объект, который будет лишь для захвата клика мыши?
Аноним 15/09/21 Срд 14:20:41 2158314374
>>2158308
Ну как обычно, часами бьёшься, а как спросишь — тут же решение нашёл.
Хотя, вроде вот разобрался — нужно унаследовать от StaticBitmap'а и в EVT_PAINT хендлере не делать dc.Clear(), и там же dc.DrawBitmap().
Аноним 15/09/21 Срд 14:22:00 2158315375
Пасаны памахите.
Пилю джанго проект. Внезапно одна приложуха начала выплевывать страницу как текст html Ни ошибок ничего. Код самой приложухи не менялся. Что делать? куда смотреть? Гугл не помог.
Аноним 15/09/21 Срд 14:40:24 2158341376
>>2158315
Контент тайп какой в заголовках?
Аноним 15/09/21 Срд 15:31:56 2158403377
>>2158341
С заголовками все норм. Но дело было действительно в контейнт тайпе. Кто то передал словарь контекст в рендер дважды, как раз на позицию контент тайпа. Убрал лишний словарь все заработало.
Аноним 15/09/21 Срд 16:04:47 2158425378
Пожалуйста, объясните как тут ( https://pythobyte.com/gui-calculator-using-tkinter-7c934a0e/ ) всё работает. Переписал весь код, но застрял на строке variable_name, при запуске ошибка наименования, parent_window не найден.
Аноним 15/09/21 Срд 16:38:18 2158449379
>>2151231 (OP)
Ебаный рот этого fasapi блять...
Сука битый час уже ебусь с ошибкой рендеринга темплейта jinja. Когда юзаю там url_for то эта мразь высираетм не NoMatchFound то есть не находит файла который я там ему указала. Абсолютно не ясно блять, хули ему не так, отладить - тоже
Аноним 15/09/21 Срд 16:39:54 2158451380
Как в Selenium (Firefox) скачать изображение по ссылке?
У меня открывается она в виде изображения
Аноним 15/09/21 Срд 17:19:56 2158498381
Двач, нужна помощь в запуске diff с помощью питона. Надо сравнить 2 дерева именно diff'ом.

subprocess.call('diff -qr ' + folder1 + ' ' + folder2 + '> file.txt', shell=True) не создает файл. Возможно проебал listdir или что-то еще.
Лучше в телегу, @nevershi, за помощь могу чуть отблагодарить.
Аноним 15/09/21 Срд 17:21:58 2158499382
>>2158498
немного проебался с кавычками около файла, там пробел >file.txt
быстрофикс
Аноним 15/09/21 Срд 19:13:28 2158582383
>>2158019
Алгоритмический язык - язык, который используется для Кумира (программка для изучения программирования в средней школе). А про Бейсик не знаю, не думаю, что ещё в принципе в каких-либо школах изучают
Аноним 15/09/21 Срд 20:09:46 2158618384
>>2158498
Я вызывал 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)])

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

>>2158296
4 раза перечитал пока понял. Python way в данном случае сделать кортеж args и словарь kwargs аргументов функции, заполнить их в произвольном порядке, произвольным способом, и в конце вызвать один раз функцию с этим словарем в качестве аргумента используя операции распаковки func (args, *kwargs).
https://realpython.com/python-kwargs-and-args/
Аноним 16/09/21 Чтв 00:24:20 2158737385
>>2151231 (OP)
Как правильно хранить все инстансы конкретного класса?
У меня есть набор объектов моего класса Session. У каждой Session есть свой уникальный id, хочу метод типо get_session(id) который по этому уникальному айдишнику достанет конкретную сессию
Аноним 16/09/21 Чтв 01:32:38 2158772386
>>2158737
Берешь дикт, делаешь ключ-айдишку и значение-инстанс, можешь под это дело создать класс SessionStorage и реализовать метод get_session
Аноним 16/09/21 Чтв 01:37:20 2158775387
>>2158582
нахуя назвали кумир? это рофл или троллинг?
Аноним 16/09/21 Чтв 01:43:54 2158777388
8f24389c596128d[...].jpg 205Кб, 1178x1706
1178x1706
>>2158775
Должно было быть Кумар, но ошиблись.
Аноним 16/09/21 Чтв 07:04:02 2158827389
Смотрите, какая хуйня.
https://ideone.com/WWNNVv
Выдает один объект на неиспользуемые вызовы, а потом его же дает на первом следующем используемом, лол.
Это оптимизация конкретно вм cpython? Есть где почитать про такие штуки?
Аноним 16/09/21 Чтв 10:13:46 2158892390
что это блядь.mp4 1226Кб, 960x540, 00:00:06
960x540
Аноним 16/09/21 Чтв 10:42:30 2158913391
>>2158827
Это не один объект, это разные объекты размещенные в одной и той же части памяти, просто у тебя при отсутствии присваивания lst тут же уничтожается и при следующих вызовах питом переиспользует эту память
Аноним 16/09/21 Чтв 10:49:05 2158919392
>>2158913
Хмм, похоже на то. https://ideone.com/atK3oC
На как он так постоянно попадает в тот же адрес, если даже последовательно созданные могут очень отличатся?
Аноним 16/09/21 Чтв 10:54:12 2158921393
>>2158919
Считай что у питона в этот момент есть набор ячеек с выделенной памятью, которую еще не освободили и размера которой хватает, что бы закинуть туда твой lst
Аноним 16/09/21 Чтв 11:01:03 2158926394
>>2151231 (OP)
Как открыть видос используя фласк в новой вкладке браузера? Файл хранится у меня, при переходе по ссылке должен воспроизводится, вроде как надо юзать return send_file(тут чета написать надо), но хз что.
Аноним 16/09/21 Чтв 13:48:23 2159073395
>>2158926
Звучит довольно просто, надо только хатетепе-метод дернуть.
Аноним 16/09/21 Чтв 13:57:50 2159083396
Подскажите пожалуйста, как в джанго во вьюшке вернуть HttpResponse со строкой, состоящей из элементов списка, обёрнутых (элементов) в теги?

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

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

....

return HttpResponse(tasks_str)

Но я плохо понимаю суть происходящего, сейчас у меня вьюшка возвращает
HttpResponce('<ul>'
'<li>'Раз'<li>'
'<li>'Два'<li>'
'<ul>' ) и т.д
Аноним 16/09/21 Чтв 14:16:22 2159093397
>>2159083
Целиком код покажи. Чо за tasks_str?
И страничку отрендеренную тож скинь
Аноним 16/09/21 Чтв 14:24:59 2159105398
>>2159093
Я честно сам не знаю что за переменная это, это в примере так, и мне нужно в 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>')
Аноним 16/09/21 Чтв 14:27:21 2159107399
>>2159093

А реальная страница просто выглядит как список у меня
Аноним 16/09/21 Чтв 14:48:56 2159123400
>>2159105
>>2159107
Чо-то ты нахуевертил тут. Зачем тебе два метода вообще?

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

Внутри advertisement_list.html юзаешь темплейт тэги.
<ul>
{% for task in tasks %}
<li>{{ task }}</li>
{% endfor %}
</ul>
Аноним 16/09/21 Чтв 14:49:44 2159125401
>>2159123
Обосрался со словарём.
{'tasks': tasks}
Аноним 16/09/21 Чтв 14:55:27 2159133402
>>2159123
Там первый для главной страницы и второй для /блабла. Это неправильно? Вроде работает

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

Спасибо огромное что отозвался и помог, вечером буду пробовать.
Аноним 16/09/21 Чтв 14:58:03 2159136403
>>2159133
Это ты? >>2157317
Я ж тебе написал уже как чо нужно делать.
Второй день одно и то же тебе пишу. Ей богу документацию почитай например

>>2159123-кун

Аноним 16/09/21 Чтв 14:59:42 2159137404
>>2159123
И что значит {'tasks': tasks} в конце render ? Я всегда в конце ставил {} и знал лишь то, что это все дело возьмет мой html и вернет.
Аноним 16/09/21 Чтв 15:02:20 2159139405
>>2159133
>Там первый для главной страницы и второй для /блабла. Это неправильно? Вроде работает
Я не знаю, что для тебя "правильно". Если тебе просто html отобразить без проброса данных, то сойдёт

>Что вообще делают темплейт теги и чем отличаются от html ?
Ну смари. Вот видишь этот словарик "{'tasks': tasks}" загадочный? Це есть context. В этом контексте ты передаёшь данные, которые прокидываются в твой файл, указанный на один параметр раньше. То есть в данном случае в "advertisement/advertisement_list.html".
Внутри html-ки ты можешь брать данные из контекста при помощи языка шаблонов Джанги. Как что там работает расписывать не буду - доки в помощь, там нет ничего сложного.
Аноним 16/09/21 Чтв 15:02:26 2159140406
>>2159136
Да, я. Хех. Ну у меня туговато пока идет, плохо понимаю. Почитаю, спасибо.
Аноним 16/09/21 Чтв 18:58:23 2159354407
Мужичье, подсобите нубу. Сделал пару проектов: легенький чат на сокетах, типичный бложек с админкой. Так вот, хочется намутить что-то интересное и полезное, чтобы не пылилось в репозитории, а использовалось кем-либо. В голову ничего кроме скучных ботов с погодой не приходит, но лесом их. По части веба знаю только фласк и некоторые расширения. Есть идеи?
Аноним 16/09/21 Чтв 19:06:14 2159360408
>>2159354
Бот или площадку для профсоюзов. Сейчас эта хрень нарастает, и среди айтишников тоже.
Аноним 16/09/21 Чтв 19:10:18 2159365409
>>2159354
Пиши то что интересно тебе и не бойся сложности.
Аноним 16/09/21 Чтв 21:52:02 2159469410
В Фастапи пытаюсь проставить куки или хедеры, никаких ошибок не падает, ответ приходит фронту но там нет ни кук, ни хедеров которыя я проставил
ВТФ?
Аноним 16/09/21 Чтв 21:56:15 2159473411
Появляется вот такая штука при попытке запушить в гит, помогите пожалуйста, 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.
Аноним 16/09/21 Чтв 22:26:38 2159494412
>>2159469
Подозревал что дело в CORS. Все так и оказалось. Он блять localhost и 127.0.0.1 считает разными хостами блять
Ну вот че это захуйня? Что за еб вашу мать?
убил 4 часа на эту хуйню
Аноним 17/09/21 Птн 00:16:35 2159540413
image.png 35Кб, 788x324
788x324
Попытался прикола ради заделать синглтон как советовали в инетах. В результате мне в ебало кидают ошибку. Втф?
"object.__new__() takes exactly one argument" но ведь блин в примере было именно так...
Аноним 17/09/21 Птн 00:58:06 2159572414
Как реализовать подобное поведение с помощью Пистона:
У меня есть некий объект-словарь, я посылаю запрос на получение некого элемента из этого словаря, значение которого превышает 100. Если мы смотрим в словарь и на данный момент не видим такого элемента то "засыпаем" и ждем его появления, как только он появляется, отдаем его. Подозреваю тут асинхронку нужно ебошить, но вот как именно?
Аноним 17/09/21 Птн 01:52:27 2159584415
>>2159572
Я когда-то такую штуку делал, но тут элемент ты получишь не сразу, а когда эвент луп отпустит, может у тебя адаптировать получится под твои нужды

https://ideone.com/qdAILK
Аноним 17/09/21 Птн 09:13:46 2159670416
Как отправить сообщение через aiogram вне декораторных функций?
Код вроде
tg = Bot(token=token)
tg.send_message(user_id, f'test')
не работает т.к. обычно он вызывается через await а await неполучается указать вне декораторных оберток.

Аноним 17/09/21 Птн 09:43:01 2159679417
>>2159354
Скинь чатик, хочу в сокетах разобраться, как это работает.
Аноним 17/09/21 Птн 10:01:08 2159692418
>>2159572
Можно добавить хук в методы изменяющие словарь, хук будет проверять появилось ли значение соответствующее условию. Если появилось, то хук вызывает коллбек.
Аноним 17/09/21 Птн 11:14:09 2159726419
>>2159670
>обычно он вызывается через await а await неполучается указать вне декораторных оберток
неполучается указать вне декораторных оберток.

А ты подумай почему
Аноним 17/09/21 Птн 11:48:22 2159736420
>>2159692
Легко сказать, неочевидно реализовать
Что значит "проверяет"? Оно в бесконечном цикле там сидит, проверяет, засыпает на секунду и снова проверяет?
Аноним 17/09/21 Птн 11:49:56 2159738421
>>2159360
бот это же примитивная срань по шаблону, не?
Аноним 17/09/21 Птн 12:18:52 2159754422
>>2159670
Не владею aiogram, то если ты хочешь вызвать корутину из синхронного кода, то есть то, что надо через await запускать, тебе надо запустить эту корутину в виде задачи
asyncio.create_task(tg.send_message(user_id, 'test'))

Так запустится, но результат корутины ты получить без await в любом случае не сможешь.
Аноним 17/09/21 Птн 18:21:22 2160007423
Хм, а как реализовать этот самый long-polling на питоне (не важно на каком фреймворке)?
Вот у меня есть данные которые я с сервака хочу передать паре клиентов, что на нем сейчас сидят, как это сделать блин? Все работает в формате реквест-респонс, я не могу просто и без задней мысли с сервака послать реквест клиенту на сайте. Вроде как есть выход - long polling: клиент просто посылает запрос и ждет ответа скажем 30 секунд, если ничего не происходит то снова шлет запрос и ждет. Вроде неплохо звучит но как это бля делать? Что во фласке что в фастапи или еще где реквесты обрабатываются особыми функциями-хендлерами и как же мне блин заставить конкретный хендлер отправить данные конкретному клиенту?
Аноним 17/09/21 Птн 18:40:04 2160030424
>>2160007
while True:
----result = get_result()
----if result: break
----time.sleep(0.5)

)))
Аноним 17/09/21 Птн 23:09:57 2160330425
>>2159584
Вообще говоря неплохая тема, как бы еще таймаут поставить чтобы в случае его превышения бросался эксепшн / возвращался None, а то иногла ждать до обсера - не лучшая идея
Аноним 18/09/21 Суб 00:33:11 2160374426
>>2159584
>Я когда-то такую штуку делал
Очевидно недавно, код завязан на специфику версии 3.9, которой меньше года.

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

Честно говоря что-то странное, вообще ты какие-то именованные каналы или именованные события переизобретаешь.
Аноним 18/09/21 Суб 00:41:36 2160381427
>>2159572
Здесь надо тебе прописать ТЗ корректно, тест-кейсы.

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

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

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

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

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

__delitem__ тоже надо скорректировать.
Аноним 18/09/21 Суб 00:46:31 2160385428
>>2160381
>тест-кейсы
Конкретно принципиален такой тесткейс

my_dict[]
... пока в нём нет больших значений, но в другой задаче кто-то уже что-то ждёт
my_dict['key'] = 444
my_dict['key'] = 10
Вот тут синхронный код, без await. Ты записал большое значение, и тут же перезаписываешь его маленьким. Как должен вести себя словарь в этом случае?
Аноним 18/09/21 Суб 12:00:40 2160546429
Сап, а можете объяснить разницу между celery и asyncio? Ньюфаг питона, прочитал почти всего лутца и сделал пару проектов на коленке
Аноним 18/09/21 Суб 12:55:41 2160560430
>>2160546
Ну чел... Это примерно как спрашивать, в чём разница между процессом и процессором.
Аноним 18/09/21 Суб 14:37:33 2160627431
>>2160546
Лутц это реликт из конца нулевых. Про асинхронку он ничего не рассказывал - ничего удивительного
Аноним 18/09/21 Суб 14:44:10 2160632432
>>2160546
>сделал пару проектов на коленке
Каких?
Аноним 18/09/21 Суб 17:15:35 2160705433
>>2160632
В основном два телеграм бота (акция халявный бигмак в макдаке - авторег аккаунтов, парсер транспорта москвы по бортовым и гос номерам) и по мелочи парсеры, автоотправка форм (разработка типо бомбера обратных звонков с разных сайтов), раньше делал говно сайты на пыхапе и верстал хуевый дизайн.
Хз насколько тут это считается норм для новичка, но тупо тестировал возможности питона и пытался крутиться, заработать пассивно пару соток в день (пока профита нет, кроме опыта)
Аноним 19/09/21 Вск 10:20:42 2161019434
>>2160560
то есть асинкио это физическое устройство а целери это код?
Аноним 19/09/21 Вск 12:20:57 2161090435
>>2160030
Блять, это и есть long polling? Без рофлов?
ебануться нахуй
Даже если мы заменим эту ебень на асинхронки и asyncio.sleep все равно херня выходит
Аноним 19/09/21 Вск 14:20:13 2161195436
>>2161090
Реализация long polling будет очень сильно зависеть от фреймворка и от задачи.

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

Хендлер не отвечает сразу, а подписывается на какую-то очередь или канал, из которого с таймаутом ждёт сообщение. Если пришло сообщение, отправляет его, если не пришло, отправляет сообщение "ничего пока нет, call again".

Аноним 19/09/21 Вск 14:40:10 2161202437
>>2161195
>>2161090
>>2160007
Короче вот что-то вроде демки на aiohttp
https://ideone.com/j44YCk
Запускаешь, набираешь
http://localhost:8040/long_polling/
это запрос

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

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

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

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

И отдельный вопрос, как это поддерживать, когда ты за вебсервером стоишь.
Аноним 20/09/21 Пнд 10:44:58 2161779438
>>2159736
Основная идея вот такая -> https://ideone.com/NJKSxV
>Оно в бесконечном цикле там сидит, проверяет, засыпает на секунду и снова проверяет?
Нет. Чтобы изменить словарь, надо вызвать один из его методов изменяющих этот самый словарь. Вот в этих методах и прописывай дополнительное поведение. В остальное время там нечего проверять.
>>2160007
>без задней мысли с сервака послать реквест клиенту
Вебсокет
>как же заставить конкретный хендлер отправить данные конкретному клиенту
У клиента должен быть идентификатор. При получении запроса хендлер проверяет есть ли данные для клиента с этим идентификатором
Аноним 20/09/21 Пнд 10:46:42 2161781439
>>2161779
>Вебсокет
ws и long polling это разные технологии и подходы в принципе
Аноним 20/09/21 Пнд 15:24:55 2162026440
Вопрос по Django. Обычно в модели юзера есть роли и каждая роль наделена комплексными типичными для роли правами. Но если есть потребность, как грамотно прописать для каждого юзера в отдельности какие-то права на конкретные view или действия?
К примеру у нас есть роль модератора, который может удалять посты, редактировать посты, банить пользователей. Но одному пользователю я хочу дать возможно тоже банить людей, но при этом не давать другие права модератора. А еще одному позволю только удалять посты. И т.д. Я не хочу создавать тысячу ролей на все возможные сочетания прав, а просто хочу как-то 1-2 кликами давать права на конкретные действия в конкретных view. Как такое обычно осуществляется? Извиняюсь за косноязычность.
Аноним 20/09/21 Пнд 16:52:17 2162074441
>>2162026
Создаёшь 2 модели: Role и Permission. Связь Many-to-Many
По сути всё, что тебе надо будет сделать - создать роли, в которых будут прописаны права на действия. Потом уже эти роли раздавать нужным пользователям.

Но это будет работать в том случае, если у тебя в принципе права у пользователей похожи. Если же у тебя принцип такой, что один пользователь может чо-то добавить, другой чо-то удалить, а третий отредактировать, при этом второй может посмотреть записи таблицы, а первый нет, то лучше напрямую с Permission работать без создания ролей
Аноним 20/09/21 Пнд 19:37:40 2162193442
>>2151231 (OP)
Привет анонычи, реквестирую литературу или курсы по асинхронщине в питоне для веба , всякие aiohttp и тп, везде по чуть-чуть я и сам нашел. Но наверное же есть материал, где львиная часть посвящена именно этой теме?
Аноним 20/09/21 Пнд 19:45:39 2162199443
>>2162193
пс , ролик из ОП-поста уровень хеллоуворлда, мне такое не надо
Аноним 20/09/21 Пнд 19:52:36 2162205444
>>2162193
Есть допустим sanic, который можно назвать асинхронным flaskом
Аноним 20/09/21 Пнд 19:56:08 2162208445
>>2162205
Спасибо, гляну.

Вообще цель такая, научится создавать асинхронные микросервисы , пс, классическая джанга используется, хочется большего.
Аноним 20/09/21 Пнд 22:46:36 2162342446
Это так и должно работать, что if name in some_dict то же самое как и if name in some_dict.keys()?
Аноним 20/09/21 Пнд 23:04:49 2162350447
Еле решаю задачки уровня изи на литкоде. Я тупой или просто нужно больше практики?
Аноним 20/09/21 Пнд 23:10:30 2162356448
>>2162193
Такой же есть реквест. Из советов бы выделил асинхронный фреймворк fastapi. Есть отдельный канал на youtube русскоязычный. В зарубежном сегменте тоже можно нагуглить отдельные плейлисты или скачать целые курсы с пиратской бухты. Еще есть такой проект вида написать чат в реальном времени на django channels и сокетах, тоже популярные и полезный вариант жоско познакомится с асинхронностью.
Аноним 20/09/21 Пнд 23:21:29 2162358449
>>2162350
скорее всего нужно пройти какой-нибудь курс, который последовательно познакомит с основными концепциями и типами задач. На этой базе уже будет полегче решать. Но есть много людей, которым алгосы не даются. Лично знаю ебейшего парня, который зарабатывает 10к зеленых, но при этом не умеет в алгоритмы, он не прошел собес в uber с легкой задачкой на нахождение анаграмм.
Аноним 20/09/21 Пнд 23:23:02 2162359450
>>2162342
да, if name in some_dict ищет совпадения в ключах.
Аноним 21/09/21 Втр 00:09:53 2162389451
>>2162358
Ну, вот я, например, решал задачу про maximum subarray problem. Долго мучился и в итоге высрал кривое решение O(n^2). Потом прочитал про Kadane's algorithm и понял, что это ужасно просто. Но неужели до него можно быстро дойти, никогда с ним до этого не сталкиваясь? Или эти задачки (даже простые) основаны на том, что ты просто задрочил все эти алгоритмы?
Аноним 21/09/21 Втр 02:09:59 2162430452
>>2162389
> решал задачу про maximum subarray problem
Это задачи из класса "динамическое программирование". Они или методами ДП решаются, или схожими идеями для простых случаев.

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

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

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

Попробуй в литкоде выбирать по классам задач. Там есть и на другие темы.
Аноним 21/09/21 Втр 02:19:42 2162436453
Аноним 21/09/21 Втр 02:48:56 2162449454
>>2162430
Короче, нужно больше практики и учить алгоритмы. Спасибо!
>>2162436
Да. Ну, в универе было немного проганья, но можно считать, что его не было.
Аноним 21/09/21 Втр 03:09:28 2162452455
image.png 2144Кб, 1024x1024
1024x1024
Форумчане, простите за беспокойство, я к вам с такой ситуацией.

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

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

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

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

-
Контакты: тг @M10875
27 лвл если что
то видео с ютуба youtube.com/watch?v=RkOJmw15nb4
Аноним 21/09/21 Втр 04:09:09 2162459456
>>2162452
Найди конфу по Питону в тг и там общайся.
Аноним 21/09/21 Втр 07:40:05 2162525457
Аноним 21/09/21 Втр 12:37:43 2162732458
Подкиньте идею для джанги, чтоб с целери+реббитом, кешированием, работой с внешними сервисами и всякой прочей штукой. Хочу освежить знания по джанге, а вот сижу и придумать не могу, все простое получается.
Аноним 21/09/21 Втр 14:02:25 2162803459
>>2162732
Сайт который показывает курс валют из нескольких источников с возможностью выгружать csv с историей изменения курса. Потом настрой locust и начинай гонять нагрузку
Аноним 21/09/21 Втр 15:44:57 2162895460
>>2162356
Да это жоска, я конечно могу ошибаться, но Django Channels это как бы вставки в джанговый код , мне б полностью асинхронщину делать, мне кажется, подход с DJ(Django Channels) сработает в проектах джанги, где требуется что-то ускорить или добавить такие вещи как чат, а если я хочу быструю рест или того лучше графовую апишку, то наверное надо писать что-то сразу на асинхронщие
Аноним 21/09/21 Втр 18:00:25 2163081461
>>2162389
Не, тут все нормально, я тоже не дошел самостоятельно до такого решения. Задачку ты выбрал хорошую, на собеседованиях может встретиться. Её еще можно решить используя частичные суммы. С помощью частичных сумм можно найти, например, все подмассивы с заданной суммой. Посмотри как-нибудь.
Насчет литкода. Я бы не стал там решать задачи. Лично я смотрю в основном на geeksforgeeks, там можно удобно по темам искать. Также просто гуглю задачу и смотрю на разных сайтах решения + нахожу похожие. Еще на medium куча классных лонгридов на темы алгоритмов.
Из последнего понравилось: Best Time To Buy & Sell Stocks On Leetcode — The Ultimate Guide.
Отдельно советую решить все задачи на sliding window
Аноним 21/09/21 Втр 19:21:58 2163204462
Питонач, помоги разобраться с циклами над словарями. У меня есть список и словарь. Словарь содержит все элементы этого списка в качестве значений. Нужно получить ключи только для тех значений, которые есть в списке, и положить эти ключи в отдельный список.

lst = [1, 3, 4]

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

result = []

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

Никак не могу допереть, как это сделать.
Аноним 21/09/21 Втр 19:28:20 2163213463
>>2163204
[val for val in lst if val in dic.values()]
Аноним 21/09/21 Втр 19:30:12 2163214464
>>2163213
А, ключи. Тогда
[k for k,v in dic.items() if v in lst]
Аноним 21/09/21 Втр 19:32:56 2163219465
>>2163214
[k for k,v in dic.items() if v in set(lst)]
Аноним 21/09/21 Втр 19:34:36 2163226466
>>2163219
Будет на каждом витке создаваться сет, хуевасто.
Да и по смыслу задачи там не должно быть дупов.
Аноним 21/09/21 Втр 19:36:11 2163230467
>>2163226
А это что бы быстрее, только сет в отдельную переменную надо вынести
Аноним 21/09/21 Втр 19:38:45 2163234468
>>2163214
Блин, у меня очень туго с 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
Аноним 21/09/21 Втр 19:44:49 2163239469
Аноним 21/09/21 Втр 20:17:37 2163278470
В джанге, если базовое приложение. И дополнительно в нем создаются другие приложения. Я вот не понимаю логику создания дополнительных приложений. Что это? Сгруппированные по функциональности наборы страниц и логики или что?
Вот поясните.
Аноним 21/09/21 Втр 20:50:49 2163312471
>>2163278
>Сгруппированные по функциональности наборы страниц и логики или что?
Да, вот есть у тебя форум на сайте, делаешь из него отдельное приложение, есть профиль пользователя - еще одно приложение, каталог товаров - так же
Аноним 21/09/21 Втр 21:59:42 2163376472
Я нюфаг, нихера не понял, почему как-то через жопу работает, когда я хочу импортировать модуль из пакета, который лежит на том же уровне, что и пакет, в который импортируется? Ну вот у меня папка, в ней пакет1 и пакет2, в модуле из пакета1 я пишу фром ..пакет2 импорт модуль2. И какая-то говнина случается. Но при этом когда я это устанавливаю как бы при помощи Поэтри (не очень понял, че я делаю если честно, делаю поэтри билд, а потом этот дистрибутив устанвливаю типа) и оно работает. Просто я курсик прохожу и типа я все сделал, оно работает, но тесты на этом сайте курсиков не проходят, наверное потому что они сам код проверяют и как-то там на этих импортах обсираются.

Гуглил, там вообще какая-то ебля пиздос. Это реально надо че-то там пыхтеть? Или как-то просто можно решить вопрос? Или мб просто сделать чтоб модуль2 был внутри модуля1 и типа норм?
Аноним 21/09/21 Втр 22:00:18 2163377473
>>2163312
+

И далее просто include(новыеурлы.py) в каком-то главном приложении, я примерно так же понял
Аноним 21/09/21 Втр 22:19:09 2163385474
Как итерироваться одновременно по двум генераторам?

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

Только в моем случае он не поймет меня и ошибку бросит
Аноним 21/09/21 Втр 23:04:29 2163413475
Аноним 21/09/21 Втр 23:27:35 2163425476
>>2159670
Отправь реквестом напрямую запрос через API.
Аноним 22/09/21 Срд 00:24:32 2163465477
django.jpg 120Кб, 600x400
600x400
Здравствуйте няши. Пытаюсь вкатится в эту вашу джангу, но получается плохо.
Есть задача сделать форму с multiplechoicefield что бы чойсы брались из базы. Но по какой то причине форма не меняется при повторных вызовах. Т.е. один раз в дебаге в конструктор заходит, а при последующих уже не заходит. Похоже кешируется. Как бы мне побороть такое ее поведение? Кто знает?
Аноним 22/09/21 Срд 08:00:37 2163570478
Сап, питоны. Я тут недавно жаловался на отсутствие источников о продвинутых темах в питоне. Пока сам нашёл популярные сложные вопросы на собесах. Это mro, метаклассы, итераторы/генераторы/корутины, async/await и mutable defaults. Знает кто-нибудь книгу, где это всё подробно объясняется? Или где ещё тем почерпнуть?
Аноним 22/09/21 Срд 08:08:51 2163572479
>>2163570
Большинство из этого нихуя не сложные вопросы, а самая что ни на есть база.
> mro, итераторы/генераторы и mutable defaults
Есть в любой не не совсем нубской книге.
> корутины, async/await
Есть книга от орайлей про asyncio, я пока не читал, но вроде годная.
Метаклассы есть у того же лутца и ещё в некоторых книгах видел, сам пока не вникал.
Аноним 22/09/21 Срд 10:05:52 2163634480
>>2163572
>asyncio
Это же либа для имплементации корутин на генераторах, которая до async/await появилась. А async/await как раз её заменила.

Да база, но не для новичков. Фундамент из самых кишок питона. Как раз то что надо чтобы подняться с элементарного уровня до продвинутого. Мне скорее не объяснение надо, а список топиков, которые я ещё сам не нашёл. В какой-нибудь книге может в списке глав эти темы есть и тогда хочется взглянуть на соседние главы.
Аноним 22/09/21 Срд 10:14:56 2163639481
>>2163634
>Как раз то что надо чтобы подняться с элементарного уровня до продвинутого.
Тут я конечно загнул, но смысл надеюсь передал.

Вот видел задачку написать функцию декоратор на подобии lru_cache, но можно упрощённую. И тут у новичка, который знает и про mutable defaults и про monkey patching и декораторы без проблем пишет всё равно случается тупик от непонимания как в декораторе хранить состояние кэша между вызовами функции. Очевидное решение сделать класс-декоратор, но требуется функция и чтобы её сделать нужно как раз вспомнить mutable defaults или monkey patching и догадаться применить один из этих методов. Поверхностное изучение этих тем на уровне простой осведомлённости о существовании таких вещей в питоне не достаточно чтобы решить задачу даже с учётом того, что вещи эти базовые.
Аноним 22/09/21 Срд 10:26:53 2163644482
>>2163634
> Это же либа для имплементации корутин на генераторах, которая до async/await появилась
Нет, это именно базовая либа для асинхронщины, просто async/await позже внесли в синтаксис языка, это считай обвязка для них.
https://docs.python.org/3/library/asyncio.html

А так глянь книги от steven f lott, шарящий чел.
Аноним 22/09/21 Срд 10:41:34 2163658483
Аноним 22/09/21 Срд 12:54:27 2163782484
Как правильно определить интерфейс в Питоне?
Понимаю что малость нетипичный для питона процесс но все же - я в тайпингах использую интерфейсы а не сам класс, потому что так меньше связность и меньше возможностей наткнуться на циклический импорт

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

Как в таком случае правильно наследоваться от базового класса?
Есть вот у меня BaseModel, класс User надо пронаследовать от него а также и от IUser чтобы обозначить интерфейс.
Аноним 22/09/21 Срд 13:00:04 2163787485
image.png 39Кб, 559x865
559x865
image.png 33Кб, 510x864
510x864
>>2151231 (OP)
Чому слева хуйня работает, а справа - нет?
Аноним 22/09/21 Срд 13:34:45 2163843486
Untitled.png 255Кб, 1920x1170
1920x1170
Собрал всех покемонов, буду теперь упарывать помаленьку.
Аноним 22/09/21 Срд 15:13:52 2163957487
Аноним 22/09/21 Срд 15:50:03 2163983488
Аноним 22/09/21 Срд 17:45:41 2164075489
Как это - "покрыть свой код тестами"? Я вроде что-то слыхал про ytest всякие но не совсем понятно как покрывать тестами django или flask-приложение

Косяк вот в чем: на предыдущем месте работы у нас не было никаких юнит-тестов) Вот вообще, я был фуллстек макакой и тестил попросту проверяя функционал, запустив локальный сервер. Сейчас меняю работку и в новой конторе мног овнимания уделено покрытию код тестами, а мне стремно признаться в моих пробелах тут, меня ж обоссут. Что это такое и с чем едят?
Аноним 22/09/21 Срд 17:49:11 2164082490
>>2164075
Покрыть код - написать тесты на всю твою логику
Аноним 22/09/21 Срд 18:04:15 2164100491
>>2164082
И как с запросами быть? Отправлять фейковый запрос? А что если в нем обязательны куки? Что если таких запросов несколько от нескольких разных клиентов но все должны быть проверены вместе?
Аноним 22/09/21 Срд 18:08:29 2164107492
Аноним 22/09/21 Срд 22:56:15 2164489493
>>2164107
Мокай кабан кабаныча
Аноним 22/09/21 Срд 23:08:23 2164495494
Capture.JPG 39Кб, 526x692
526x692
не знаю, насколько тупой вопрос, возможно очень...

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

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

помогите нубу
Аноним 22/09/21 Срд 23:14:33 2164503495
>>2164495
>full_name = f"{user_info['first']} {user_info['last']}"
>почему нельзя просто
>full_name = {user_info['first']} {user_info['last']}
В первом случае у тебя по итогу строка, во втором случае словарь. Точнее в этом случае вообще ошибка синтаксиса, но мог бы быть словарь.
Аноним 22/09/21 Срд 23:18:27 2164506496
>>2164495
Ну, потому что это не валидное синтаксическое выражение? Ты забыл кстати скобочки убрть, они относятся к форматированию строки. А так у тебя просто два раза индексация словарей. Это как две переменные подряд написать: x x. Бессмыслица.
А форматирование у тебя вставляет переменные (значения ключей словаря) в строку и тогда их можно отобразить так, чтобы они рядом находились.
Аноним 22/09/21 Срд 23:27:15 2164515497
>>2164100
Фейковых запросов не надо. Для начала покрой ту часть логики, которая работает без веба. Пиши данные в таблицки и смотри что они записываются и нужные связи проставляются. Дергай функции, которые должны инициировать запись в бд и проверяй что она такая какая и предполагалась. У джанги есть тестовый клиент и тестовая бд. Можно даже запросы посылать вида TestClient.get('localhost:8000/huy/pizda?page=1')
А вообще можешь в репозиториях гитхаба посомтреть. Там много проектов с примерами.
Аноним 22/09/21 Срд 23:29:46 2164518498
Аноним 23/09/21 Чтв 10:06:54 2164664499
Опытные аноны, подскажите, стало интересно, я стронг джун, реализовал 2 настоящих проекта самостоятельно за последние 8 месяцев, в последнем все прям серьезно и докер и си ай, всякие редисы, селери и прочее, в общем опыт со всеми базовыми технологиями есть + в резюме указан опыт 4 месяцев всяких учебных и мелких фриланс проектов. На какую зп я могу претендовать с этими знаниями?
Аноним 23/09/21 Чтв 10:58:52 2164719500
>>2164664
> я стронг джун
Сколько жмешь?
Аноним 23/09/21 Чтв 11:11:00 2164739501
Кто-нибудь в курсе, можно ли в aiogram показать кнопки без text?
Сейчас отображаю вот так:
await message.answer('Text', reply_markup=keyboard_start)
Но вот текст вообще не нужен
Аноним 23/09/21 Чтв 11:26:34 2164761502
Аноним 23/09/21 Чтв 11:59:18 2164795503
>>2164664
А какие у тебя знания?
В душе не ебу про докер, все делаю по статейкам, но у меня все проекты в докерах.
Аноним 23/09/21 Чтв 14:55:05 2164995504
Прилетел оффер на 150к. Я мидолл с 1.5 годами опытами. Косяк в том что я сам не уверен что данная вакансия мне подходит. Псец, сижу думаю и возможно придется ее отклонять
Аноним 23/09/21 Чтв 15:00:55 2165001505
>>2164719
Около 60, только начал
Аноним 23/09/21 Чтв 18:29:27 2165138506
>>2164995
Не ссы. Почитай о языке, о инструментах что они юзают. Сходи, послушай что спрашивают. Может и пройдешь. Не знаешь - да и хуй с ними. Не думай, что тебя там обоссут и засмеют. Если так и будет, вставай и уходи.
Аноним 23/09/21 Чтв 18:52:06 2165168507
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов