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

Ответить в тред Ответить в тред
Check this out!
Питон тред №125 /python/ Аноним 11/08/21 Срд 14:04:12 21243891
1294277-1.jpg 100Кб, 1440x900
1440x900
python-Burmese-[...].jpg 326Кб, 1600x1067
1600x1067
Тред, посвящённый языку программирования Питон, #125

Предыдущий, версия 124.1 >>2100419 (OP)
Предыдущий, версия 124.0 >>2100023 (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
Аноним 11/08/21 Срд 14:52:37 21244472
1599158428image.jpg 58Кб, 930x720
930x720
Смотрите, есть у меня какой-то объект, который нужен в нескольких функциях, там, реквестс или подключение дб.
Очевидно, можно в глобальном скоупе их создать и пользоваться, но ровные пасаны делают if __main__ main() и не засирают его.
Остается или завернуть в ооп или пробрасывать его в все функции через параметры, что несколько тупо. Может ещё какой-то способ годный есть?
Аноним 11/08/21 Срд 15:19:34 21244713
>>2124352 →
а если мне нужно что-то вроде:
#file1.py
a = A()
from file2 import x
x()
#file2.py
def x():
__a.do1()
__a.do2()

или так нельзя?
Аноним 11/08/21 Срд 15:39:15 21244984
>>2124471
Это адски грязный код, слёту вообще не скажу, сработает ли, но в любом случае грязный.

Использовать глобальные переменные и синглтоны это дурной тон, антипаттерн, надо иметь обоснование, чтобы вот его использовать. Хотя этим пользуются. Слёту модули logging и asyncio вот на этом завязаны.

Но лучше всё-таки параметры передавать явно.

Набор переменных и данных, от которых зависит работа твоих функций, называется контекст.

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

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

То есть если своё решение пилить, то ты делаешь функцию условно get_context(), которая возвращает тебе словарь с переменными, нужными для работы. Лучше сразу делать get_context(name), чтобы именованный контекст был и можно было несколько разных глобальных словарей использовать.

А функция get_context уже работает с глобальным словарём.

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

Аноним 11/08/21 Срд 15:41:45 21245015
Аноним 11/08/21 Срд 16:02:11 21245246
>>2124501
Тут один или два анона с похожими вопросами? Или больше?

Паттерн
if __name__ == '__main__':
нужен для другого, чтобы можно было как запускать код, так и импортировать оттуда что-то без исполнения кода модуля.

Глобальные переменные зло.

Чтобы рекомендовать решения, надо на задачу глянуть.
Аноним 11/08/21 Срд 16:14:38 21245447
image.png 21Кб, 383x486
383x486
Аноним 11/08/21 Срд 16:48:23 21245858
Есть список (list) с текстом. Есть ли что-нибудь готовое, чтобы сгруппировать список? То есть удалить дубли. Или надо свой велосипед изобретать?
Аноним 11/08/21 Срд 17:15:20 21246159
>>2124585
В простейшем случае тебе нужны можнества, set
list(set(m))
но будет потеряна упорядоченность

Аноним 11/08/21 Срд 17:17:12 212461810
>>2124615
Да, уже нагуглил. Вот блядь как через жопу все в вашем бидоне
Аноним 11/08/21 Срд 17:30:55 212465811
>>2124618
С версии 3.6 словари сохраняют порядок добавления. Поэтому удалить дубликаты с сохранением относительного порядка можно так:

words = ["aaa", "aaa", "ab", "cd", "aaa", "ab", "cd", "efg", "cd", "ab"]
unique = dict.fromkeys(word).keys()

Аноним 11/08/21 Срд 17:46:53 212468812
Аноним 11/08/21 Срд 17:55:52 212469813
есть у кого внятные гайды как юзать multiprocessing ?
нашел русскоязычную документацию, но каких-то видосов/лекций русскоязычных вроде и нету
Аноним 11/08/21 Срд 18:20:44 212473414
>>2124658
О, это уже намного приятней, спасибо
Аноним 11/08/21 Срд 20:41:54 212487815
3.9+ не работает на семерке? время перекатываться, или какие подводные?
Аноним 11/08/21 Срд 21:05:29 212490416
>>2124878
Да, на Линукс. Потому что в Винде теперь не только зонды, но и онлайн вход в некст версии с удалением клиентов для торрента.
Аноним 11/08/21 Срд 23:58:03 212506617
>>2124878
Благо на неё особо никто не перешёл ещё
Придётся виртуалку заводить и через неё работать
Аноним 12/08/21 Чтв 00:36:47 212508918
Аноним 12/08/21 Чтв 00:55:52 212510119
Что нужно alembic, чтобы он увидел модели и заработал?
Аноним 12/08/21 Чтв 02:31:35 212513120
>>2124904
жаль с семерки уходить. обжился, привык.
>>2125066
или да, виртуалкой.
>>2125089
хардкорный вариант, но попробовать стоит.
Аноним 12/08/21 Чтв 03:47:39 212514221
>>2124447
Декораторы.
with db.connect() as con:
Аноним 12/08/21 Чтв 04:18:59 212514822
>>2125142
Это не декоратор, а контекст менеджер. И вопрос не о том, нужно использовать тот самый объект в разных функциях, не делая его глобальным.
Ну нормально же описано.
Аноним 12/08/21 Чтв 04:59:24 212515123
>>2125148
Где-то там должно быть или, но 4 утра.
Аноним 12/08/21 Чтв 08:19:08 212521024
image.png 25Кб, 870x164
870x164
Есть таблица mysql, которую читаю в пандас, где в полях записаны json строки типо пикрил.
Надо extract'ить некоторые поля наружу. Сделал сейчас через df.apply(lambda row: foo(row), axis=1), где в функции через json.loads и проверок, что нужные поля есть, возвращаю данные для новых столбцов.
Есть ли какое-то решение получше?
Аноним 12/08/21 Чтв 09:00:04 212523325
image.png 154Кб, 976x1284
976x1284
В прошлом треде не ответили, спрошу здесь. Есть парсер, который должен запускаться 3 раза в день. Сам парсинг может происходить несколько часов. Как это лучше запускать несколько раз в день - запускать скрипт кроном или как-то внутри скрипта засыпать на 8 часов между загрузкой страниц? Хотелось бы сделать все в коде, то есть чтобы скрипт был запущен постоянно, но пока не понятно как именно.
Аноним 12/08/21 Чтв 10:40:07 212530726
>>2124498
> Но всё равно это антипаттерн
Это место для фреймворка. Если нужно его расшить, нужно расширять.
Аноним 12/08/21 Чтв 11:32:02 212539327
>>2125131
Десятка хорошая и удобная система, с кучей доработок, ssh в комплекте, возможностью линукс-докер запускать, если у тебя не home, и др.

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

На самом деле гугол о тебе собирает намного больше информации.
Аноним 12/08/21 Чтв 11:35:51 212539628
>>2124878
>3.9+ не работает на семерке? время перекатываться, или какие подводные?
3.9 не нужен, там очень мало изменений относительно 3.8.

Аноним 12/08/21 Чтв 13:55:49 212552529
>>2125393

Но зачем, если можно просто перейти на линукс.
Аноним 12/08/21 Чтв 14:14:38 212554330
>>2125525
Я в основном сижу на линуксе, но есть компы с виндой.

Линукс не для всех задач годится.

Всё, что связано с обработкой медиа контента, там плохо - фото, видео, звук. Софт только под винду или мак, и даже wine не всегда спасает.

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

Аноним 12/08/21 Чтв 15:50:56 212565331
Аноним 12/08/21 Чтв 17:34:55 212580832
Аноним 12/08/21 Чтв 17:37:51 212580933
Аноним 12/08/21 Чтв 17:50:08 212581734
Аноны, вот для миграций в при использовании Алхимии есть Алембик, при использовании ДжангоОРМ есть своя система миграций. А есть ли система миграций для обычных ЖСОН схем?
К примеру храню я данные в файлике, в виде ЖСОНа, потом решил обновить схему(добавить\удалить поля, сменить тип хранящихся данных и т.п.), как мне накатить обновления на эту схему(конечно, можно каждый раз писать мигратор под конкретную схему, но это не универсально)? Задача относительно не сложная, думаю, что кем-то решенная, но готовых либ найти не удалось. Возможно, мудрый анон подскажет?
Аноним 12/08/21 Чтв 20:28:54 212594835
>>2125809
Да, спасибо, powerful хуйня.
Грек 13/08/21 Птн 04:02:47 212617836
Как понять что ты делаешь шаги вперед, а не стоишь на месте?

Я учу питон уже пол года, вот мой гитхаб -https://github.com/leirons, если кому-то не трудно за пару соток чекнуть мои проекты, дать какую-то полезную инфу, то скиньте свой тг, я вам отпишу.

Проблема в том что я вроде делаю онли легкие проекты, из пет проектов это бот для изучения английского, я там обосрался с глобалами, нужно исправлять и форум как этот, почти доделал, вроде. И я смотрю на тех кто занимается этим ну от года до трех и они прям ебашат, когда я пишу одну легкую дефолт хуйню и я вроде что-то знаю, но это что-то настолько мало по сравнению с другими людьми, хотя у меня все свободное время уходит только на программирование,инглиш,математику, но почему я не чувствую никакого развития, а только шаги на месте, это настараживает.
Аноним 13/08/21 Птн 04:40:31 212618437
>>2126178
Заканчивай форум и иди на собес. Только доделай его чтобы прям без багов и чтобы работали ровно те фичи, которые хотел реализовать изначально (а то пилить можно бесконечно).

Комментирование коммитов конечно у тебя...

"Ну и параша получилась"
"Попытка в html и css №2"
"some changes"
"Пуш"

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

Ну и собственно в readme тоже лучше распиши побольше. Что, как, откуда, куда, какой стек технологий.

"Много чего изменил, добавил Celery, лень крч писать" - чел, ты травишь? Пиши на английском и описывай все изменения. Хотя бы кратко. Тебе мозгов хватило написать форум, залить его на Гитхаб, а комменты как у дотера.
Аноним 13/08/21 Птн 05:30:48 212619338
image.png 3Кб, 249x128
249x128
image.png 14Кб, 139x545
139x545
image.png 5Кб, 455x50
455x50
>>2126178
Привет от Селери
Версии хуйово указал
Попытка в докстрингу?

Репы\проекты выглядят уныло. Почисти свой акк от говна.
Открой для себя прекрасный мир isort, black, autoflake.
Текст комитов выглядит очень плохо.
Тексты коментов не обнаружены.
> os.chdir(f'C:/Users/Chokeup/PycharmProjects\pythonProject2/EnglishLearningHelper
Не торт.
Структура проектов отсутствует.
Работы с нормальной БД не увидел(невнимательно смотрел может), только СКЛайт.

Если бы такой товарищ пришел на собес, с такими репами, наверное, взял бы на начинающего ждуна(или совсем не взял).
Аноним 13/08/21 Птн 06:18:36 212619739
>>2124447
Что, никто не знает?
Аноним 13/08/21 Птн 07:18:57 212620540
>>2124447
Так в чем вопрос то?
Делаешь функции нужные тебе, создаешь отдельно файлики\классы в которых описываешь реквестс\коннект к БД, затем импортируешь нужную тебе логику из этих файликов\классов в твои функции и юзаешь
Аноним 13/08/21 Птн 07:33:17 212621341
df2da37278e0270[...].jpg 15Кб, 372x363
372x363
Аноним 13/08/21 Птн 08:17:51 212623942
>>2126205
Чтобы каждый раз создавался новый реквестс\коннект к БД?
Аноним 13/08/21 Птн 11:17:49 212641743
Как-то можно внутри запускамого питон-скрипта, определить:
1) что за environment сейчас используется?
2) это conda environment или нет?
Аноним 13/08/21 Птн 11:44:03 212646644
>>2126417
Как в шелле делаешь, так же и определяй. Для venv-a я бы запустил pip -V и сравнил с собственной папкой, и со стандартным системным. Если выдаёт системное, то ошибка, если какой-то другой рандомный венв, то предупреждение.
Как проверить конду, я не знаю, к сожалению.
Аноним 13/08/21 Птн 13:23:06 212658245
>>2124389 (OP)
Тут есть те кто tkinter знает хорошо? Короче есть два поля, в одном надо чтоб после ввода при нажатии кнопки, введенное передавалось сразу в другое поле.
Аноним 13/08/21 Птн 14:01:18 212664446
>>2126582
А зачем знать хорошо? Сигнал повешай на поле, что содержимое изменилось, копируешь его и вставляешь во второе поле
Аноним 13/08/21 Птн 14:27:56 212669747
>>2126184
>>2126193

Спасибо обоим, да согласен, абсолютные пути это шлак, да и насчет комментариев и оформления тоже согласен, но это пипец как задолбует описывать каждый коммит.
Аноним 13/08/21 Птн 14:35:45 212671148
>>2126582
Можно сразу синхронизировать содержимое нескольких экземпляров Entry через общее значение textvariable (entry1, entry2 в примере ниже). Если надо обновить содержимое по нажатию кнопки, то через Entry.delete/Entry.insert (button_ok + entry3 там же).

https://ideone.com/WbXrxN
Аноним 13/08/21 Птн 14:58:53 212674549
>>2126697
Тестов нет, пустые файлы, переменные окружения и файлы бд прям в коде, привыкай писать английские комментарии и убрать лексикон из коммитов и коротко описывать сделанное, структуры проекта вообще нет.
>from .models import *
За такое по рукам бить надо
>return HttpResponse("Соси хуй забаненый пидорас")
Мы вам перезвоним
>C:/Users/Chokeup/PycharmProjects/pythonProject39/Forum/board/info.log
Мы вам перезвоним[2]
Научись использовать .gitignore
Очевидные комментарии удали, старайся писать так, чтоб они вообще не нужны были
Воспользуйся форматтером кода. У тебя пиздец какой-то

Тебе над стилистикой сильно поработать надо. В код особо не вникал, там склонить надо и запустить, а у тебя прям жесткая привязка
Аноним 13/08/21 Птн 15:03:43 212675250
>>2126239
Реквест\конект создавай заранее, потом просто бери инстанс который содержит в себе конект и юзай.
Если хочешь что-то сделать, посмотри как делают другие - как реализован конект к чему либо в aiohtt(server), flask.
Аноним 13/08/21 Птн 15:05:00 212675751
>>2126745
>Очевидные комментарии удали
Вот тут я бы подумал, стоит ли. Очевидное сегодня, становится неочевидным завтра.
Аноним 13/08/21 Птн 15:13:45 212676752
>>2124389 (OP)
Аноны, помогите. Опрашиваю в своей программе dns
А как сделать определенный exit code при ошибке, которая не попадает в exception, т.е. что-то непредвиденное?
Ну при exception легко поставить sys.exit(4)
А вот когда событие в exception не попадает, отрабатывает дефолтный код возврата для интерпретатора python, когда выполнение кода завершается ошибкой (по дефолту = 1)
Аноним 13/08/21 Птн 15:15:56 212677053
Снимок экрана 2[...].png 133Кб, 1804x648
1804x648
>>2126757
Значит переписывай код. Если не очевидно завтра окажется. Зацени, тут даже не знакомому с проектом всё очевидно
Аноним 13/08/21 Птн 15:20:37 212677554
Аноним 13/08/21 Птн 15:29:23 212678055
>>2126697
Аноны правы в критике.

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

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

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

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

Зачем у тебя вкомиччены лог-файлы? При этом есть другие файлы с комментарием "some changes", которые пустые?

Русские комментарии, помимо того, что принято пытаться в английский, тоже ни разу не понятны. Что такое "объект обсуждения"? Я понимаю, когда делают русские комментарии потому, что не хватает хорошего английского для лаконичного и точного описания. Но тут вообще хуже, чем без описания.

Аноним 13/08/21 Птн 15:32:31 212678356
image.png 6Кб, 646x154
646x154
Всем привет, отправляю запрос с помощью axios, на DRF, получаю 403 ошибку. В настройках стоит пик1. Где я ошибаюсь?
Аноним 13/08/21 Птн 16:00:23 212681657
Как отправить документ через telethon с именем вместо 'document'?
Через сохранение/загрузку файла всё работает, а если:
virtual_workbook = BytesIO()
virtual_workbook.name = 'test.xlsx'
wb.save(virtual_workbook)
bot.send_document(user_id, virtual_workbook.getvalue())
Нет.
Аноним 13/08/21 Птн 16:02:08 212681858
>>2126816
Я хуй знает, что это, но попробуй без getvalue(), просто объект.
Аноним 13/08/21 Птн 16:09:16 212682659
>>2126818
такое уже пробовал, там ошибка тогда.
Аноним 13/08/21 Птн 16:26:04 212683560
s3hazhvkekav5jj[...].png 98Кб, 518x588
518x588
Захотел сделать на питоне собственную систему анализа рабочей активности. Типа таймтрекер, но полностью под моим контролем без облаков.
Для начала, хочу просто записывать какое окно приложения активно, вводятся ли туда данные, вожу ли я по нему мышкой.

С чего начать? есть ли полный опенсорц?

Полнота и удобство интерфейс вторичны. Мне бы просто собрать.
Аноним 13/08/21 Птн 16:31:50 212683761
>>2126770
Ты показал простой кусок кода на 20 строк, а я говорю про проекты, в которых коментарий - редкое явление.
Я то переписывать не буду, т.к. пишу коментарии и документацию, по ним можно понять что и как работает, быстро и просто. Поэтому и топлю за них.
Аноним 13/08/21 Птн 16:33:28 212683862
Аноним 13/08/21 Птн 16:35:27 212683963
>>2126835
о, кое-как нагуглил такую хрень.
https://github.com/KalleHallden/AutoTimer


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

Накидайте других идей
Аноним 13/08/21 Птн 19:11:01 212695764
>>2126752
Так что ли?

# db.py
def connect():
____# bla bla bla
____return connection

connection = connect()

# main.py
from db import connection
Аноним 13/08/21 Птн 19:47:44 212699765
Грек 13/08/21 Птн 19:54:39 212700366
Есть ли способ получить список подписчиков в тиктоке? Веб приложение ограниченное.
Аноним 13/08/21 Птн 19:58:52 212701167
>>2126957
Так плохо заведомо, тебе надо или создавать соединение явно и сохранять в переменную внутри модуля, или реализовывать синглтон, когда соединение создаётся при первом вызове фунции вроде get_connection()

Неявное создание соединения просто при импорте модуля ОЧЕНЬ плохой стиль. Так никогда не делают.

Аноним 13/08/21 Птн 20:03:41 212701968
>>2127011
>>2126957
Но вообще, держать глобальное соединение в принципе плохо. Скорее принято делать через контекстные менеджены, вроде
with make_connection() as conn:
____здесь ты делаешь, что надо, вызываешь функции нужные и др.
____ты даже можешь глобально хранить conn, хотя это плохо.

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

Ты, как разработчик, должен предусматривать ситуации, когда соединение обрывается. В контекстном менеджере это очень легко грамотно обработать. В случае глобальных переменных намного хуже.
Аноним 13/08/21 Птн 20:08:29 212702569
>>2126783
Я уже даже csrftoken отправляю, но всё равно не работает. Помогите...
Аноним 13/08/21 Птн 20:29:23 212704470
>>2127019
> Ты, как разработчик, должен предусматривать ситуации, когда соединение обрывается
Либы умеют в реконект.
> держать глобальное соединение в принципе плохо
И при каждом запросе к серверу\скрипту заново конектиться к БД?

Такой подход прокатит если скрипт запускается раз в пару минут, а если это что-то должно быстро конектиться и отвечать\записывать данные - не подойдет подход с контекстным менеджером и новым конектом.
Аноним 14/08/21 Суб 00:04:27 212722871
>>2127019
>Ряяя зло яскозал
>Ты делаешь то что я скажу, а если ты сделаешь вот так я тебя выебу в сраку и отпизжу хуем в рот.
Ты из какой канавы попал вайти? Можешь нейтрально излагать, заебал уже , доминатор мамкин.

Большим наставником себя мнишь или что? Это просто блять код. Он тупой и простой, в айти все просто, нахуй ты усложняешь? Просто напиши как есть без своего очень важного экспертного мнения хорошо это или "совсем-совсем плохо".

Пиздец, кривляешься как сучка, ей богу.
Аноним 14/08/21 Суб 01:20:50 212725472
>>2127228
>. Он тупой и простой, в айти все просто, нахуй ты усложняешь?
Использовать глобальные переменные это тоже самое, что отобрать игрушку у ребёнка. Вроде бы просто, но нехорошо. И пройдёт время, и тебе это припомнят.
Аноним 14/08/21 Суб 07:21:31 212734173
>>2127228
Я не он, но кажется у тебя проблемы с восприятием
Аноним 14/08/21 Суб 10:38:36 212739774
Вот по си есть замечательная книга - си для идиотов
http://www.lib.ru/CTOTOR/starterkit.txt

А есть такое для змейки? Мне прост лень читать толстые книжки или тыкать кучу ссылок в офф доке. Я уже давно прогаю на других языках, просто быстренько ознакомится что тут в питоне и как и поехать
Аноним 14/08/21 Суб 11:04:57 212740775
Аноним 14/08/21 Суб 11:17:11 212741276
>>2127397
Dive into python сам читал.
Аноним 14/08/21 Суб 11:17:56 212741377
Аноним 14/08/21 Суб 12:52:01 212749878
Мне нужно написать скрипт, который выдает максимально рандомный ответ из списка вариантов. random для этого подходит?
Аноним 14/08/21 Суб 12:58:59 212750779
>>2127498
Зависит от применения. Для выбрать вариант из списка должно быть норм.
Аноним 14/08/21 Суб 13:31:43 212755480
>>2127498
Более чем. Смотри на
random.choice
random.choices
random.sample

скорее всего самый первый тебе нужен, если один вариант из выборки.
Аноним 14/08/21 Суб 16:58:23 212779381
У меня такой вопрос, можно на джанго сделать полноценный кинотеатр? Или надо делать на wp?
Аноним 14/08/21 Суб 17:03:31 212779882
>>2127793
Кинотеатр это стриминг видео, который делается отдельно, а вебморду к нему на чем хочешь можно сделать.
Аноним 14/08/21 Суб 17:32:49 212782583
>>2127798
Хотел бы сделать подобное и потестить на предмет трафика. А видосы где хранить? Опыта мало. Покупать готовое - жаба давит, на вордпрессе. Могу вот на питоне запилить для себя чисто на тест. Потом можно как-то развернуть будет. Я так понимаю тут все просто. Вебморда и плеер, так? Я только не знаю как заливать-транслировать видосы, фильмы.
Аноним 14/08/21 Суб 17:41:16 212783084
>>2127825
> А видосы где хранить? Опыта мало
> Покупать готовое - жаба давит
То есть ты и сделать не можешь и купить не можешь. Может тогда другим чем займись?
+ дело это не выгодное, за трафик будешь платить хулиард, с фильмов получать - нихуя.
Аноним 14/08/21 Суб 17:44:06 212783385
>>2127830
Ну это будет типо пет проекта все же. Ну и вдруг что-то получится. Сам джанго прост как палка. А вот с видосами - хз. Слышал что-то про видеобалансеры. Но вообще такое пилят на вордпрессе. Насчет платного трафа, ну есть доры как варик. Попробу протолкнуть. Но тут главное сделать конеш.
Аноним 14/08/21 Суб 17:46:12 212783486
>>2127833
Что ты за этот ворпдресс вцепился? Он тут вообще никаким боком. Может там есть какие-то готвоые плагины для этого, но там для любой хуйни плагины есть.
Аноним 14/08/21 Суб 17:52:59 212784187
Аноним 14/08/21 Суб 18:02:01 212784588
>>2127841
Что там, модные пацаны уже на ассемблере вэб делают?
Аноним 14/08/21 Суб 18:07:41 212784989
Аноним 14/08/21 Суб 18:49:42 212786790
>>2127833
>Сам джанго прост как палка.
Однако вопросы странные задаёшь. Значит с этой палкой не разобрался.

И вообще классика, хочу сделать крутую фенечку, хелп, ничего не умею, не знаю и денег нет.

ps: полноценный кинотеатр это сложная штука. В простом варианте для себя ты можешь тупо вставлять обычные видео, корректно закодированные, в тег <video>. И будет работать.
Аноним 14/08/21 Суб 18:55:21 212787391
Аноним 14/08/21 Суб 18:57:38 212787892
>>2127833
На так начни делать, сделай обвзяку вокруг кинотеатра своего, а потом для стриминга видо приходи сюда, спрашивай вответы.
Аноним 15/08/21 Вск 00:48:04 212818193
Аноним 15/08/21 Вск 07:34:19 212824294
>>2128181
Это ооп техника, речь о процедурном подходе.
Аноним 15/08/21 Вск 08:48:29 212825695
Чем отличается vscode от vscode-fhs? Сидел на атоме, но оч понравился этот редактор.
Аноним 15/08/21 Вск 15:03:44 212855196
>>2127873
На ассемблере сть варианты покруче и даже целые ОС!
Аноним 15/08/21 Вск 16:28:55 212863997
Аноним 15/08/21 Вск 17:22:15 212867498
Аноним 15/08/21 Вск 17:57:53 212870599
>>2128674
Исходный код открыт? Открой, почитай.
Аноним 15/08/21 Вск 18:23:45 2128719100
>>2128705
Хз, проверю. Так то жалко будет если все бабки утекут индусу. Жаль что банан не предоставляет обверток сам, как коинмаркет или же гекокоин, чтобы юзать апи на петухоне.
Аноним 15/08/21 Вск 19:41:05 2128764101
image.png 11Кб, 299x109
299x109
image.png 1Кб, 135x67
135x67
image.png 27Кб, 309x175
309x175
>>2128719
Не думаю что с либой есть проблемы, не будь шизоидом, там где это не надо.
Аноним 15/08/21 Вск 22:04:24 2128915102
Как заматчить вот такое?
><Element br at 0x185b162da80>
><Element br at 0x185b162dac0>
Вот так не получается
d[y] = re.sub(r'<Element br .+\n<Element br .+\n', r'\n', d[y])
Аноним 15/08/21 Вск 23:12:45 2128986103
>>2128915
Ничего не понятно, что у тебя за условине, зачем \n
>>> ss = "<Element br at 0x185b162da80>"
>>> res = re.match(r"^<Element br at (?P<addr>0x[0-9a-f]+)>$", ss)
>>> res.group('addr')
'0x185b162da80'
Аноним 15/08/21 Вск 23:19:28 2128996104
>>2128986
Я хочу в тексте заменить по две подобные строчки на одну пустую
Аноним 15/08/21 Вск 23:56:37 2129060105
image.png 96Кб, 1200x1238
1200x1238
>>2124389 (OP)

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

Науглил SQLAlchemy, она норм? Или есть что-то лучше?
Аноним 15/08/21 Вск 23:58:21 2129064106
>>2128915
Попробуй заменить шаблон на r'<Element br .+\n<Element br .+($|\n)'
Аноним 16/08/21 Пнд 00:48:53 2129162107
>>2129060
Есть куча всего, но алхимия фактически стандарт. Для миграций алембик
Аноним 16/08/21 Пнд 01:51:45 2129225108
Аноним 16/08/21 Пнд 06:15:46 2129266109
Аноним 16/08/21 Пнд 07:12:57 2129277110
>>2129266
Зачем ты желаешь анону зла? Что он тебе плохого сделал?
Аноним 16/08/21 Пнд 08:33:18 2129309111
>>2129277
> чтобы можно было к классу добавить аннотации полей и просто сохранить его потом.
По-моему для потребностей анона в самый раз, нет?
Аноним 16/08/21 Пнд 08:51:05 2129314112
>>2126184
> Заканчивай форум и иди на собес
Реклама скиллбоксов 10 лет из каждой щели, итоги. Вот после таких охуительных советов потом люди не могут понять почему они в айти вкатиться не могут.
> Только доделай его чтобы прям без багов и чтобы работали ровно те фичи, которые хотел реализовать изначально
Ну то есть через годик где-то?
>>2126178
Заходишь на мдн, ищешь там гайд по джанге. Делаешь тоже самое, но не сайт библиотеки, а там магазин питсы или там тот же форум. Потом гуглишь мега гайд по фласку на хабре, опять таки делаешь не прям как в гайде, а что-то околосвое, чтобы такое же, но чуть-чуть другое. Проходишь все этапы вплоть до развертывания под докер. Дальше придумываешь еще один свой проект, делаешь полностью сам. Как осилишь -- вот тогда можешь идти на собес. В айти, в отличии от других сфер, чтобы вкатиться ждуном нужно не быть лучше всех остальных соискателей, а быть на достаточном для ждуна уровне. И пока ты этого уровня не достиг, то можешь хоть 20 раз на собесы сходить, хоть 30, но тебя не возьмут(офк есть шанс около 1%, что у челов сдадут нервы и они возьмут кого смогут, но удачи на такое рассчитывать).
Аноним 16/08/21 Пнд 09:22:03 2129325113
>>2128915
Какой же я долбоеб, у меня там было readlines()
Аноним 16/08/21 Пнд 09:37:26 2129330114
>>2124389 (OP)
Привет, аноны.

Сидел проектировал на своей джанге, как вдруг пишет приятель, мол нужен скрипт там один на питончике. Ну ок, все бы ничего, но ему надо на винду и еще желательно с ОКОШЕЧКОМ ПРИЛОЖЕНИЯ, запускать что-то из терминала он не в состоянии, будет меня доебывать лишний раз.

Все бы ничего, но я не пользуюсь виндой вообще.

Сама логика скрипта реализована. Формат выхода данных сейчас просто в консоль, сделал мвп так сказать, нужно эту хуйню посадить на GUI и как-то запаковать в exe файл, чтобы приятель нажал 1 кнопочку и все.

Как мне это сделать безболезненно для меня? Ставить виндоус не хочу

Аноним 16/08/21 Пнд 09:51:31 2129338115
>>2129330
Заюзай ткинтер искаробочный, а он пусть поставит себе бидон с бидон.орг, уж должно хватить мозгов.
Без шинды вряд ли получится сделать шиндовый бандл.
Аноним 16/08/21 Пнд 09:55:44 2129339116
>>2129330
сделай через streamlit и закинь куданить
Аноним 16/08/21 Пнд 09:56:49 2129340117
>>2129330
Попробуй начать с гугла. Или тебе пересказывать первую ссылку из выдачи?
Аноним 16/08/21 Пнд 10:04:48 2129348118
>>2129338
бидон то он поставил, но ему подавай окошечко с кнопочкой в exe

>>2129338
Там скрипт обновляется каждые 5 минут, вряд ли подойдет. Я думал насчет онлайн компиляторов , чтоб он туда код вставил и все. Но мб есть какой-то упаковщик, вот мол тебе виртуальное окружение, вот .py файлы , запакуй это и все ?

>>2129340
PyInstaller не работает нормально с линукса на винду.
Аноним 16/08/21 Пнд 10:14:58 2129360119
>>2129330
Добавляешь в скрипт запуск веб-сервера и открытие браузера на странице с заветной кнопкой. И питона в винду уже завезли искаропки(вроде бы)
Аноним 16/08/21 Пнд 10:22:34 2129364120
16289799601650.gif 5724Кб, 277x500
277x500
>>2124389 (OP)
Всем привет
Мне внезапно стало нужно общаться со сторонним api (рассылка смс через мтс)
Есть книжка от МТС с примерами запросов в xml с описанием разных функций.

А как можно собрать минимальный питоновский скрипт для подключения апи (там токен), отправки запроса и получения ответа (хочу писать ответы в лог)?
Питон практически не держал в руках.
Я думаю, для restapi должен быть какой-то универсальный скриптец, где все предусмотрено?
Аноним 16/08/21 Пнд 10:29:03 2129369121
>>2129348
Ну да, его внутри винды внезапно собирать надо. Ну у тебя видимо по религиозным причинам харам на установку винды, так что проси друга поставить докер для винды и скидывай ему упакованное приложение
>>2129364
requests+logging
Аноним 16/08/21 Пнд 10:38:58 2129376122
>>2129369
>requests+logging
Я вроде не спрашивал названия либ (или что это блять, модули? похуй вообще).
Мне нужен пример скрипта, где уже все есть для отправки запроса и получения ответа.
Аноним 16/08/21 Пнд 10:39:33 2129379123
>>2129376
Это одна-две строчки, лол.
Аноним 16/08/21 Пнд 10:43:18 2129382124
>>2129379
Нет, как минимум, у тебя будет 3 строчки импорта. До логики мы еще не дошли, а уже идет четвертая.
Аноним 16/08/21 Пнд 11:23:40 2129402125
>>2126178
Сразу скажу, что я не вникал глубоко в твой код, а лишь пробежал по поверхностям. Смотрел только в репу с ботом для телеги.

1) Самое главное - где твой .gitignore? У тебя весь проект, судя по коммитам, был засран всяким ненужным шлаком. Найди в инете или напиши сам список файлов, которые гит будет игнорить. А вообще при создании репы гитхаб тебе сам предлагает гитигнор добавить. Галочку тыкнуть не забудь просто.
2) Настрой git config нормально. Иначе у тебя в коммитах то один пользователь, то другой.
3) is_user_created у тебя делает не то, что подразумевается. Он не только проверяет, есть ли пользователь, но и создаёт его зачем-то, если его нет. Причём, как я понимаю, функция неправильно у тебя работает.
4) Удали весь закомментированный код. Если тебе когда-то он понадобится, достанешь его из гита.
5) Весь хардкод тоже убери из репы. И айдишник своего акка в телеге тоже.
6) Базу данных тоже в репозитории не хранят. Удали её. (Вот тут тебе бы gitignore пригодился)
7) За глобалы знаешь чо пацаны со двора с твоими руками сделают? Особенно за res, res1, res2. Это вообще пиздец.
8) Лови нужный тебе эксепшн, а не всё, что падает.
9) Я правильно понял, что у тебя все "изученные" слова хранятся в оперативке? И, скажем, если ты перезапустишь бота, то всё к хуям упадёт? Хуёвое решение, скажем так.
10) Дебажные принты тоже удаляй после дебага

Всё, что перечислили аноны выше, тоже сюда относится, так что повторяться не буду.
Аноним 16/08/21 Пнд 11:24:01 2129403126
>>2129376
> Я вроде не спрашивал названия либ
Ох нихуя себе, у нас тут Мистер Крутой
> Мне нужен пример скрипта
А никто за тебя тестовое на ждуна делать не будет
Аноним 16/08/21 Пнд 11:31:16 2129414127
>>2129402
Я не понимаю, почему ты и другие аноны так к коммитам прицепились? Это проблема, да, но она не решаема, когда у парня эндпоинт называется ThemeSerializerv и при этом он обращается к ThemeSerializer. У чела нету понимания что он вообще делает и зачем, соответственно, когда он что-то меняет, то он не понимает что поменялось и почему. И пока чел не поймет что он вообще мать его делает, то и написать что-либо в коммите он не сможет.
Аноним 16/08/21 Пнд 11:36:16 2129422128
>>2129403
>Ох нихуя себе, у нас тут Мистер Крутой
А ты у нас Мистер Тупой, раз отвечаешь не на тот вопрос, который задавался?

>А никто за тебя тестовое на ждуна делать не будет
Тут большинство вопросов примерно такого же уровня, так что за весь тред не говори.
Аноним 16/08/21 Пнд 11:36:29 2129423129
>>2129414
Надо же начинать решать проблемы хоть с чего-то. Изменение стиля написания комментов к коммитам - маленький шаг на большом пути.
Аноним 16/08/21 Пнд 11:40:44 2129427130
>>2129422
> А ты у нас Мистер Тупой, раз отвечаешь не на тот вопрос, который задавался?
Если бы ты хоть немного себе представлял что такое токен и запрос к апи, то понял бы, что это и есть "универсальный скриптец"
> Тут большинство вопросов примерно такого же уровня, так что за весь тред не говори
Да, но остальные вкатуны не строят из себя супер профессионалов кода и не пишут дерзкие выпуки
Аноним 16/08/21 Пнд 11:44:03 2129430131
>>2129414
Да я не то, чтобы именно конкретно за коммиты цеплялся. Просто указал на то, что заметил за 5-10 минут пролистывания файлов и репозитория в целом. А "лицо репозитория" - это коммиты.
Ну а в том, что в коде пиздец творится - это да. Я просто не знаю, какой ему тут совет дать, кроме "Пиши нормально".
Аноним 16/08/21 Пнд 11:44:57 2129431132
>>2129427
>Если бы ты хоть немного себе представлял что такое токен и запрос к апи, то понял бы, что это и есть "универсальный скриптец"
Я представляю, т.к. видел реализацию на пошике. Это не отменяет того, что проще найти эти готовые 6-7 строк, чем рожать самому.

>Да, но остальные вкатуны не строят из себя супер профессионалов кода
Это твои фантазии, я ни разу не сказал, что я супер профессионал кода. Более того, я сказал, что питон практически в руках не держал. Если в чем-то не уверен - перечитай.
Аноним 16/08/21 Пнд 11:59:24 2129447133
>>2129431
> Я представляю, т.к. видел реализацию на пошике
Я не ебу что такое "пошик", но в любом случае ты не имеешь об этом никакого представления. Я просто намекну, что у токенов есть десятки стандартов и сотни велосипедных, а http методов основных только семь штук. И это не беря в расчет рест vs рестлесс шизов, которые тебе будут то 200 на ошибку возвращать, то 400.
> Это не отменяет того, что проще найти эти готовые 6-7 строк, чем рожать самому
Ну так иди читай доку, что ты блять собрался рожать, полоумный? Тебе надо только документацию транслировать в переменные, которые ты либе скармливать будешь.
Аноним 16/08/21 Пнд 12:04:57 2129452134
image.png 50Кб, 924x362
924x362
Сосака вкатывается на апворк, спешите видеть.
Аноним 16/08/21 Пнд 12:10:59 2129455135
>>2129314
Ты предлагаешь путь фуллстека, где надо до приличного уровня освоить все скиллы, очень разнообразные.

При этом так ты хрен к некоторым технологиям притронешься, потому что на небольших проектах они не нужны.
Аноним 16/08/21 Пнд 12:16:26 2129459136
>>2129452
сам написал, сам скнин принёс, думаю так
Аноним 16/08/21 Пнд 12:21:37 2129461137
>>2129455
> Ты предлагаешь путь фуллстека
Нет
> надо до приличного уровня освоить все скиллы, очень разнообразные
Это какие? Сетку на бутстрапе накидать со стандартной темой? Ничего, лишним не будет, тем более, что займет от силы неделю по 1-2 часа в день. Зато будет не абстрактные json'ы перекидывать, а с вполне конкретной целью.
> При этом так ты хрен к некоторым технологиям притронешься
Это к каким? Ты можешь конкретнее? Что это за "ты освоишь все скиллы, но некоторые не освоишь"?
> на небольших проектах они не нужны
Я сам вкатывался буквально так же и в проекте для автоматизации предприятия на 50к+ рыл с командой в 10 человек я ничего кардинально нового, кроме специализированных либ, которые вообще нет смысла ждуну изучатькафка, прометеус, сентри, етц не встретил
Аноним 16/08/21 Пнд 12:21:41 2129462138
>>2129459
Чтобы тебе показать? Делать мне больше нехуй.
Аноним 16/08/21 Пнд 12:33:48 2129473139
>>2129461
Всякие внешние сервисы вроде кафки-раббита, редиса и т.п. не нужны, для простого проекта это обычно переусложнение.

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

Можно пилить свои API, но они тоже нужны только там, где сложные задачи.
Аноним 16/08/21 Пнд 13:07:09 2129522140
limebgblack5 (2[...].png 26Кб, 512x512
512x512
limebgblackcrow[...].png 27Кб, 512x512
512x512
yellowbgblackcr[...].png 17Кб, 512x512
512x512
yellowbgwhiteha[...].png 24Кб, 512x512
512x512
Котаны, тред не читал, нужен совет по алгоритмам. Нужно нагенерить NFT картинок с имеющимися вероятностями получения определенного количества предметов на картинке.
Есть список словарей для обозначения предметов, которые могут попасться у картинки. В словарях - ключ-название предмета и вероятность получения, например 0.5, у каждого ключа уникальная.
И есть другой словарь, в котором хранится значение для вероятности получения определенного количества атрибутов у генерируемого предмета- например 0 предметов- вероятность 25%, 1 предмет -50, 2 предмета -25.
В конце должен получить ограниченную выборку, которая подходит по вероятности как для распределения по количетсву предметов, например 10.000 штук.
Сейчас я делаю полный список всех возможных комбинаций предметов, потом умножаю единицу (1.0), присвоенную каждой сгененрированной комбиницаии на все вероятности- отдельных предметов из списка словарей + еще умножаю на вероятность для определенного количества предметов. Тогда получаю правильный список вероятностей и выборки и из нее дергаю по нужному количеству предметы, и вроде бы всё хорошо. Но, когда количество общихвариантов начинает зашкаливать за 4кк это уже занимает по часу для генерации словаря возможных комбинаций.
Вопрос знатокам- можно ли как-то выбрать случайным образом список подоходящий по двум спискам вероятностей не генерируя полный список комбинаций + чтобы он соответсовал заданным вероятностям? Или сократить время. Сейчас с мультипоточностью я еще не знаком, может пора? Ну и да, с алгоритмами тоже не очень, как видите. Пинайте сильно, решение нужно.
Аноним 16/08/21 Пнд 13:09:46 2129529141
>>2129447
>но в любом случае ты не имеешь об этом никакого представления
И? Ты к чему так высираешься? Я и не говорил, что имею.

>Ну так иди читай доку, что ты блять собрался рожать, полоумный? Тебе надо только документацию транслировать в переменные, которые ты либе скармливать будешь.
Шел пятый пост, но ты продолжаешь строчить нерелевантную и несуразную хуйню, споря с соломенным чучелом.
Аноним 16/08/21 Пнд 13:51:13 2129551142
Вопросы по функции next (да и наверное по всем итераторам). Есть строка кода типа object = next(object for object in objects_list if object.name == 'vlad'). Я понимаю что эта функция делает, возвращает object из листа object у которого поле name равно 'vlad'. Но как это читать? Почему мы пишем object for object in objects_list. Зачем нам использовать конструкцию x for x? Второй object говорит о том, как мы обращаемся к каждому конкретному элементу на итерации, а первый object?
Аноним 16/08/21 Пнд 13:55:54 2129559143
>>2129551
result = [x for x in range(10)]
это то же самое что
result = []
for x in range(10):
__result.append(x)
Т.е. слева результат.
В твоем случае это ленивое генераторное выражение, поэтому нужен next, чтобы заставлять его собственно генерировать.
Аноним 16/08/21 Пнд 13:57:12 2129560144
>>2129551
x for x
x.attr for x
x[0] for x
x['key'] for x
Так понятнее?
Аноним 16/08/21 Пнд 14:32:12 2129593145
>>2129522
многопоточность или оптимизации подобного рода тебе не нужны.

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

Но главное комбинации.
Вот у тебя есть список словарей предметов. Допустим три словаря, в одном 10 предметов, в другом 100, в третьем 1000.

У тебя может быть ситуация, что из одного словаря будет выбрано два предмета? Вероятность, что в выборке будет предмет из первого словаря равна вероятности того, что в выборке будет предмет из третьего словаря, или же в 100 раз ниже?

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

Для 10к предметов ну может быть несколько секунд, если не автоматизировать. Но думаю, что скорее тоже доли секунды.
Аноним 16/08/21 Пнд 15:09:19 2129628146
image.png 194Кб, 763x334
763x334
Всем привет, скажите зачем нужно тестировать ORM? Популярный питонист на ютубе делает вот такие тесты. Неужели данные могут где-то поломаться, просто от создания?
Аноним 16/08/21 Пнд 15:16:11 2129632147
>>2129628
Фу, зачем нужны эти ф строки??
Аноним 16/08/21 Пнд 15:35:23 2129641148
>>2129632
Чтобы нормально формировать строки, а не через жопу.
Аноним 16/08/21 Пнд 15:50:48 2129649149
>>2129628
Могу предположить только, что проверка свойств, обязательное поле, валидное и т.д. А вообще это не имеет смысла, если у тебя не йоба класс со множеством внешних зависимостей.
Аноним 16/08/21 Пнд 16:01:07 2129660150
>>2129641
Если там не везде и строки лежат, то лучше преобразовывать явно через str(). Если же там и так строки, то f-строка здесь просто лишняя херня
Аноним 16/08/21 Пнд 16:05:38 2129669151
>>2129660
Я думал речь про вообще, а не конкретно тут.
Аноним 16/08/21 Пнд 16:30:14 2129693152
>>2129309
> peewee
У меня только отрицательный опыт работы с этой штукой, поэтому не посоветовал бы ее. Как и с Gino, к слову.
Аноним 16/08/21 Пнд 17:04:07 2129723153
Вопрос по argparse.
Я пишу утилитку в которой хочу реализовать два разных интерфейса: "нубский" с ответами на наводящие вопросы если не передавать аргументы и "быстрый" с передачей аргументов при запуске.
Собственно как мне сделать так, чтобы обязательные аргументы требовало ТОЛЬКО если был передан хоть один аргумент.
16/08/21 Пнд 17:30:35 2129738154
Питоногоспода, возможен ли вкат через Python Django/Flask на Урале? Если нет, хочеца экспертное мнение как вкатиться в бэк в обход пхп.
Аноним 16/08/21 Пнд 17:53:15 2129766155
Господа, как через питон создать большую и относитнльно сложную таблицу в elsx, работаю в openpyxl ну и в целом все получается, но как это сделать лучше, а то всю таблицу хардкорить в питон со всеми стилями это ппц
Аноним 16/08/21 Пнд 19:18:52 2129816156
>>2129628
Возможно, там кастомный менеджер модели, и автор тестирует что менеджер отдает то что нужно
Аноним 16/08/21 Пнд 19:20:19 2129818157
>>2129693
Gino то еще говнище, соглашусь. А чем peewee не нравится? Мне вспоминается только отсутствие нормального инструмента для миграций, по типу alembic.
Аноним 16/08/21 Пнд 19:49:46 2129852158
>>2129723
Как вариант, сначала через sys.argv проверяешь количество аргументов, и если аргументы есть, то уже запускаешь инициализацию argparse
Аноним 16/08/21 Пнд 21:18:00 2129912159
>>2129818
> вспоминается только отсутствие нормального инструмента для миграций
> только
)))
Аноним 16/08/21 Пнд 22:20:18 2129982160
>>2124389 (OP)
Парни, есть 3 события которые представлены строками, допустим:
"REDIRECT", "ERROR", "RETRY"

Когда встречается какое-то из событий то нужно выполнить определенную функцию (довольно обширную). Очевидно это стоило бы сделать через if-elif-elif но смотрится это так себе. Как реально крутые пацаны бы это намутили?
Аноним 16/08/21 Пнд 22:23:34 2129988161
>>2129593
спасибо. Я вроде сделал через разбиение на два этапа- первый для всех фи что обязательно должны входить, второй- для фич которые необязательны. Потом просто склеил нужное количество, с поправками на вероятности во втором, но всё заработало. До этого там, как писал, перемножал оба множества друг на друга, получался этот взрыв несчетный. Там комбинаций было 4кк от 100 предметов а на деплое у клиента- 146кк, за день не посчитало, пришлось изобретать.
Аноним 16/08/21 Пнд 22:34:02 2129996162
Аноним 16/08/21 Пнд 22:37:03 2129997163
>>2129996
Типо если x in dict делай dikt[x] ?
мимоанон
Аноним 16/08/21 Пнд 22:37:56 2129998164
хуй 16/08/21 Пнд 22:47:39 2130009165
ебать иду нахуй
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
from pyowm import OWM
owm = OWM('eacf0da41cd6d0b0492aba7dcf5588a3')
mgr = owm.weather_manager()
observation = mgr.weather_at_place('London,GB')
w = observation.weather
print(w)
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

почему блять не работает
все как на гетхабе

пишет
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Traceback (most recent call last):
File "D:\Python\test.py", line 4, in <module>
mgr = owm.weather_manager()
AttributeError: 'OWM25' object has no attribute 'weather_manager'
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Аноним 16/08/21 Пнд 22:48:53 2130010166
>>2130009
Потому что виндузятник.
Аноним 16/08/21 Пнд 22:50:37 2130014167
Аноним 16/08/21 Пнд 22:52:32 2130016168
>>2130014
Ну ты на версию для начала посмотри или открой в пайчарме и посмотри какие методы есть у класса.
хуй 16/08/21 Пнд 23:11:43 2130029169
залупа какая то напрямую поставил 3.0.0
заработало потом обновил и все работает
Аноним 16/08/21 Пнд 23:24:37 2130034170
>>2129996
А через ООП-выебоны?
Аноним 16/08/21 Пнд 23:27:52 2130035171
>>2130029
Ну теперь 3.1 поставь
В потом 3.1.1
А потом 2.7
Потом еще чего-нибудь наверни

Действительно, нахуя смотреть на платформу? Будем лучше наобум версии тыкать и вопрошать, хуль не работает
Аноним 17/08/21 Втр 00:42:29 2130078172
>>2129818
>А чем peewee не нравится
У меня он постоянно пытался создать хулиард конектов к БД(в то прекрасное время я не юзал ПгБаунсер для пет проектов) и они быстро заканчивались.
Аноним 17/08/21 Втр 06:11:24 2130124173
Аноним 17/08/21 Втр 07:24:09 2130135174
Объясните пожалуйста чем кардинально отличаются джанго, фласк и построенные на джанго cms? Например, на фласке и фастапи лучше сделан роутинг, удобней, по видосам разработка идет быстрее. Онлайн шоп можно сваять на фласке за час.
Аноним 17/08/21 Втр 08:46:28 2130160175
>>2130135
> Объясните пожалуйста чем кардинально отличаются джанго, фласк и построенные на джанго cms?
cms это cms, джанго и фласк почти ничем не отличаются. Просто джанго это такой комбайн, который все везет с собой, а фласк позволяет выбирать что конкретно тебе нужно. Так что джанго стабильнее и удобнее, а фласк более легковесный.
> Например, на фласке и фастапи лучше сделан роутинг
Эмм, чего?
> Онлайн шоп можно сваять на фласке за час
Ну если весь онлайн шоп это просто вывалить на пользователя описания из бд, то да. По времени на джангеи фласке одинаково займет
Аноним 17/08/21 Втр 09:25:15 2130195176
>>2129162
Как алембик подключить?
Аноним 17/08/21 Втр 09:30:16 2130198177
>>2130195
Попробуй загуглить, ну серьезно
Аноним 17/08/21 Втр 10:13:41 2130221178
>>2130016
А что, dir() уже не работает и надо скачивать пучарм для просмотра доступных свойств и методов?
Аноним 17/08/21 Втр 10:43:25 2130245179
Как подключить sentry к приложению на asyncio (без фреймворков типа aiohttp)? Выглядит приложение примерно как у тут >>2125233
Задача Kivala 17/08/21 Втр 11:33:09 2130274180
Сап.
Есть задача:
Вы создаете игру! Игрок пытается выстрелить в объект и может попасть (hit) или промахнуться (miss) .

В начале, игрок имеет 100 очков, попадание прибавляет 10 очков к результату игрока, а промах отнимает 20 очков.

Ваша программа должна принять результат 4 действий в качестве входных данных ("hit" or "miss"), затем рассчитать и вывести оставшиеся очки игрока.

Пример Входных Данных
hit
hit
miss
hit

Пример Выходных Данных
110

Объяснение: 3 попадания (hit) добавляют 30 очков, один промах (miss) отнимает 20, в результате чего общее количество очков составит 110.
Используйте цикл while, чтобы принимать входные данные во время каждой итерации и рассчитывать результат.

#эта программа не засчитывает первые входные данные, с следующие засчитывает
x=100
c=1
a=input()
while c<4:
if a=="hit":
x+=10
elif a=="miss":
x=x-20
a=input()
c +=1
print(x)
Аноним 17/08/21 Втр 11:41:27 2130281181
>>2130274
Так и решай задачу блять, смысл кому-то за тебя сделать.
Аноним 17/08/21 Втр 11:50:05 2130294182
>>2130274
В твоем варианте цикл отработает 3 раза. Подумай почему.

На питоне так не пишут, но ты всё равно подумай почему.
Аноним 17/08/21 Втр 11:58:12 2130305183
>>2130274
Научись использовать дебаггер, чесслово. Ну или хотя бы принты напихай, чтобы понимать что у тебя вообще происходит
Аноним 17/08/21 Втр 12:20:15 2130342184
Добрый день, у меня нетбук 2010 года с атомом 330 и 2 гб оперативы, пайчарм грузится по 5 минут, есть ли возможность поставить что-то менее серьезное и легковесное под виндоус 7 или дебиан бейзд системы, что бы оно показывало промпты вызова функций из модулей как пайчарм?
Сублайм 3 не хочет этого делать для меня.
Аноним 17/08/21 Втр 12:22:31 2130345185
Аноним 17/08/21 Втр 12:24:54 2130353186
>>2130342
Вс код.
Но я бы вообще не возился с таким анальным железом, это издевательство какое-то.
Аноним 17/08/21 Втр 12:26:25 2130358187
>>2130342
Тонни, Винг попробуй, но там такого может и нет.
Аноним 17/08/21 Втр 12:26:27 2130359188
>>2130342
А то что собрался там заводить? Можешь попробовать в онлайн IDE работать, 2 гига все равно маловато будет, так как для подсказок нужно анализировать твой код
Аноним 17/08/21 Втр 12:30:28 2130366189
>>2130353
выбора нет. Вижуал код меньше жрет оперативки - это правда, но все еще долго обрабатывает запросы к консоли, хотя если судить по ютубу все серьезные джанго дяди пользуются либо им либо блокнотиком. Железо в целом еще рабочее для мелких задач, как я уже говорил сублайм (технически хоть и не иде), в целом работает нормально к сожалению я пока не на таком уровне, что бы помнить все наизусть. Спасибо за предложение.
Аноним 17/08/21 Втр 12:37:09 2130379190
>>2130359
про 2 гига это верно, заводить собрался сначала что-то на фласке и джанго, все для обучения, так что держать должно.
но для дженерал пурпоуз тестов итд действительно колаб подходит как вот этот гражданин написал
>>2130345
Аноним 17/08/21 Втр 12:37:46 2130380191
>>2130358
Не знал про тхонни, спасибо, вилл лук интуит
Аноним 17/08/21 Втр 12:44:36 2130396192
>>2130379
Для обучения лучше с базовым синтаксисом разберись в совершенстве. Джанго с фласком успеется разобрать, там все просто, но вот если что-то в духе
x = [i2 for i in range(10)]
или там
for i in range(10):
yield i
с написанием собственных декораторов будет смущать, то это уже конечная и придется все равно идти учить базовый синтаксис
Аноним 17/08/21 Втр 12:53:07 2130412193
>>2130396
это, конечно, интересный вопрос поднят.
Впервые вижу, что бы так набивали лист, это вообще нормально так делать или просто фриндж кейс?
Аноним 17/08/21 Втр 13:02:32 2130430194
>>2130342
>у меня нетбук 2010 года
Чувак, а как, по-твоему, в 2010 году работали? А в 2000?

ВС код нормально более-менее должен работать. Можно работать вообще в виме.

>>2130366
>сожалению я пока не на таком уровне, что бы помнить все наизусть
Ты НИКОГДА не будешь на хорошем уровне, если будешь полагаться на IDE. Ты приучаешься к тому, чтобы не помнить и понимать, а смотреть подсказки.

Для новичков вообще IDE это зло страшное. Пиши в самом обычном редакторе с подсветкой синтаксиса и поддержкой базового форматирования, параметры функций смотри в документации.
Аноним 17/08/21 Втр 13:06:01 2130434195
>>2130412
Это называется лист компрехеншн. Используется чуть более, чем повсеместно. Ускоряет нехило так создание списка. Генераторы в самом простом случае уберегут от создания лишних глобальных переменных и опять же ускорят код. Без декораторов вообще охереешь с тем же фласком и джангой работать, те же мидлвари, на которых вполне может держаться 90% всех метрик и вся авторизация, по сути те же декораторы. Вот с этим всем и нужно работать.
>>2130430
> Ты НИКОГДА не будешь на хорошем уровне, если будешь полагаться на IDE
Ты скозал?
> Ты приучаешься к тому, чтобы не помнить и понимать, а смотреть подсказки
Что дадут выученные наизусть методы какого-нибудь класса из либы Васяна? Да даже из той же джанги?
> Для новичков вообще IDE это зло страшное
Все верно, только не из-за подсказок, которые как раз таки очень полезны. А потому что тот же пукчарм ебаный комбайн, в котором разобраться нормально та еще задача и для новичка абсолютно ненужная к тому же.
Аноним 17/08/21 Втр 13:10:50 2130448196
>>2130434
>Что дадут выученные наизусть методы какого-нибудь класса из либы Васяна? Да даже из той же джанги?
Ты просто открываешь документацию и смотрешь, что делает эта функция. Заодно какие-то детали, про аналоги и много чего ещё.
Аноним 17/08/21 Втр 13:13:21 2130452197
>>2130434
Спасибо за подробное объяснение. С декораторами/враперами у меня проблем не возникает. Тогда останусь на виндоус 7 + сублайм3. Жаль конечно, хотелось бы хотя бы туду лист как в пайчарме.
Аноним 17/08/21 Втр 13:16:41 2130457198
>>2130452
Товарищ, или оставайся на своём железе и учить аскетичной технике, вообще без IDE можно, или поищи себе на авито комп за 10-15 тысяч, но уже относительно приличный, на i3-i7, относительно старый, и чтобы 8 гб поставить. Лучше при этом линукс.

Для освоения базы питона железо не нужно. Но вот сопутствующего очень даже нужно, особенно под виндой.
Аноним 17/08/21 Втр 13:28:56 2130481199
>>2130457
Домашний пк у меня не вызывает таких проблем, мне нужно таскать с собой на работу ноут и учится в перерывах. К сожалению, все
портативные машины в ценовом сегменте 10-15 тысяч либо с пассивным охлаждением и выдают почти такие же результаты, либо в таком раздербаненом состоянии, что лучше даже не смотреть в их сторону. Так что там сразу ценник вырастает как минимум до 20ки и то не факт. У меня был изначально такой план, но оказалось, что в голове у меня до санкционные цены.
Что касается линукса, я пробовал кучу разных дистрибутивов, которые заявляют, что они легковесные итд, всякие лубунты, зорины итд, все сразу вгоняют проц этого ноута в 70 градусов и чуть ли не заставляют его скрипеть когда начинаешь делать хоть что-то серьезнее открытия терминала. Собственно поэтому я и вернулся к win7, у него производительность и нагрузка оказалась гораздо ниже(проц выходит за пределы 50с только если буквально заблокировать радиатор). Если у тебя есть какие-то конкретные рекомендации, я буду очень признателен.
Аноним 17/08/21 Втр 13:35:54 2130490200
>>2130481
Я не знаю, почему ты такой несчастный, но я себе как-то брал ноут на авито на уровне 6тр., 11.5 дюймов, с целероном, а не атомом, 4гб, куда я ставил убунту и она могла работать по 5+ часов от батареи.

Хочешь придумывать оправдания и искать головную боль - придумывай. Твоё дело.
Аноним 17/08/21 Втр 13:42:06 2130500201
>>2130490
Не буду спорить, я сам себя загнал в такие рамки своими жизненными решениями. Спасибо за всю помощь.
Аноним 17/08/21 Втр 13:45:58 2130508202
>>2130481
>>2130490
Иначе, от чего меня подрывает.
Ты пишешь, что купил рухлять, которая и в 2010 была low-end, который не стоило покупать, добавлять память не хочешь, держишь на нём современную жручую винду, и спрашиваешь, как туда поставить современную излишне прожорливую IDE?

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

Возможностей купить более адекватный комп масса.

Если у тебя плохое железо, это не беда, потому что 20 лет назад железо было совсем-совсем другим, о 2 гб и мечтать нельзя было, люди учились программировать очень даже. Просто тебе надо учиться, а не ставить последнюю IDE, надеясь, что она вместо тебя думать будет, и ты от неё думать научишься.

Поставь себе линукс, запускай консоль, вим, и там хоть на 512Мб можно работать. А уж на 1гб вообще зашибись.
Аноним 17/08/21 Втр 13:47:28 2130515203
>>2130342
Саблайн/vim и терминал
Аноним 17/08/21 Втр 13:47:50 2130516204
>>2130448
> Ты просто открываешь документацию и смотрешь, что делает эта функция
Это придется делать в любом случае лол. Как это вообще блять связано с подсказками? Сюда же тайпхинты, которые значительно помогают с разработкой, особенно новичкам, у которых половина ошибок это попытки взять ключ у списка или обратиться к методу get_user_id у строки.
> Заодно какие-то детали, про аналоги и много чего ещё
Еще раз -- как чтение документации связано с подсказками? Более того, я часто о каких-то аналогах функций/методов узнавал только из подсказок, так как название похожее
Аноним 17/08/21 Втр 13:51:53 2130529205
>>2130516
> особенно новичкам, у которых половина ошибок это попытки взять ключ у списка или обратиться к методу get_user_id у строки.
Вот именно поэтому новичкам не нужно, чтобы были подсказки.

Потому что когда нет подсказок, ты тренируешь память и внимательность, учишься думать, что делает твой код. А с подсказками становишься как макака.
Аноним 17/08/21 Втр 13:53:28 2130533206
>>2130342
вим+костыли.
если шинда то поудаляй все говно из автозагрузки, в свойства системы выставь максимальную производительность, но вообще конечно 2гб оперативки даже для 7ки мало.
Аноним 17/08/21 Втр 13:54:46 2130535207
>>2130516
>Еще раз -- как чтение документации связано с подсказками? Более того, я часто о каких-то аналогах функций/методов узнавал только из подсказок, так как название похожее
Обычно в документации у тебя на одной странице много чего, не только про одну функцию-метод. Там более подробно, ты можешь листать вверх-вниз. Там ссылки, по которым можно ходить, как на другие примитивы, так и на аналогичные функции.

Если ты активно лазаешь в документацию по какому-то модулю или классу, но нормально отвлечься и всю страницу прочитать. С IDE такого желания не возникает.
Аноним 17/08/21 Втр 14:09:58 2130551208
изображение.png 19Кб, 416x196
416x196
изображение.png 16Кб, 518x191
518x191
>>2130529
> Вот именно поэтому новичкам не нужно, чтобы были подсказки.
Чтобы программировать было как можно больнее?
> Потому что когда нет подсказок, ты тренируешь память и внимательность, учишься думать, что делает твой код
А знаешь что еще тренирует "память и внимательность"? Слежение за регистрами процессора. Все программирование это про упрощение и абстрагирование, ты же хочешь просто добавить работы и боли молодым, за которую они нихуя не получат.
>>2130535
> Обычно в документации у тебя на одной странице много чего, не только про одну функцию-метод. Там более подробно, ты можешь листать вверх-вниз. Там ссылки, по которым можно ходить, как на другие примитивы, так и на аналогичные функции.
> Обычно
Ахахахахаха бля братан, я не хочу тебя расстраивать, но документация обычно выглядит как-то так(см пик 1, 2). И понять что такое TopicPartition можно только зайдя в исходники. А понять что за topic передавать нужно -- можно только на опыте. И это еще считается образцовой документацией в сравнении с тем, что есть. Вполне может быть так, что документация сделана в лучших традициях гугла, докера и прочих пидорасов. И по итогу твоей документацией станут ишью на гитхабе и стаковерфлоу.
Аноним 17/08/21 Втр 14:40:27 2130582209
изображение.png 5Кб, 176x176
176x176
изображение.png 0Кб, 95x37
95x37
Объясните - почему так?
Аноним 17/08/21 Втр 14:42:13 2130584210
>>2130582
потомуша незя изменять картежи
Аноним 17/08/21 Втр 14:43:58 2130587211
изображение.png 1Кб, 163x83
163x83
>>2130584
Но если вывести x, то он будет измененным
Аноним 17/08/21 Втр 14:52:27 2130593212
>>2130582
Потому что ты принтишь пустой тюпл а не тот в который добавляешь фу.
Дальше ты перезаписываешь а тюплом х в котором уже есть фу и поэтому он принтится. Ты рили танкист что ли? В 2х соснах запутался.
Аноним 17/08/21 Втр 14:58:02 2130600213
>>2130551
>но документация обычно выглядит как-то так(см пик 1, 2)
Помощь от IDE в этом случае будет более содержательной?
Аноним 17/08/21 Втр 15:01:43 2130603214
>>2130274
point = 100
c = 0
while c<4:
if input() == "miss":
point-=20
else:
point+=10
c+=1
print(point)
Я это сделал
Аноним 17/08/21 Втр 15:02:35 2130606215
>>2130603
Вставляй хотя бы _ вместо пробела. Это ебалу невозможно прочитать
Аноним 17/08/21 Втр 15:06:18 2130609216
>>2130603
Кстати, что-то давно таких нулевых вкатышей не было, раньше по пару штук в день паслись.
Инфоцыгане переключились на что-то новое?
Аноним 17/08/21 Втр 15:09:28 2130613217
>>2130551
>ты же хочешь просто добавить работы и боли молодым,
Я хочу, чтобы молодые чему-то научились. Или может не хочу, но для их блага надо чему-то научиться.

Если ты закладываешься на подсказки, на то, что всё можно найти в гугле или на стековерфлод, ты НИКОГДА не наработаешь приличный уровень. Вот такой, чтобы ты сам мог давать рекомендации на стеке, когда других ответов нет.

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

Через несколько таких итераций ты будешь очень хорошо владеть предметом и легко писать код, без всяких IDE, и будешь понимать, что он делает.

Это я про обучение, освоение новых технологий.
Аноним 17/08/21 Втр 15:12:07 2130616218
>>2130613
>Это я про обучение, освоение новых технологий.
Что-то методы из 60x
Вот когда сам, без справочника будешь понимать и помнить все формулы сопромата..
Аноним 17/08/21 Втр 15:15:20 2130619219
>>2130616
Эти методы очень хорошо работают сейчас. В 60-е ты не мог не учиться, а сейчас можешь.

Это как решать интегралы. Тебе надо запомнить какие-нибудь 10 интегралов базовых, на основе них считать более сложные. Если же ты будешь в маткаде интегралы считать, сам ты их решать никогда не научишься.
Аноним 17/08/21 Втр 15:25:26 2130633220
>>2130600
> Помощь от IDE в этом случае будет более содержательной?
ctrl+левый клик => смотришь исходники
А вообще я не понимаю при чем здесь блять подсказки от IDE и документация? Пиздец, тайпхинты и синтаксический анализатор челу насрали в шаровары и запретили читать документацию.
>>2130613
> Я хочу, чтобы молодые чему-то научились
Как зазубривание методов очередной Васянской либы НАУЧИТ тебя чему-то?
> Если ты закладываешься на подсказки, на то, что всё можно найти в гугле или на стековерфлод, ты НИКОГДА не наработаешь приличный уровень
Кажется, я начинаю понимать твою проблему. Ты не знаешь зачем нужны подсказки, да? Они нужны не для того, чтобы по ним блять изучать что-то. Они нужны, чтобы передавать правильный тип данных и не охуевать от 8 часов поиска проблемы, когда совершенно левый сервис выплевывает 400 респонс что он ждал строку. а не число. Они нужны для того, чтобы не писать по 50 раз на дню get_user_name_by_id.
> Самое идеальное обучение, когда ты с какой-то библиотекой, модулем или технологией разбираешься, это писать код с нуля
> Вот ты разобрался с этим, понял, потом берёшь чистый файл и с нуля пишешь код, без подсказок, без заглядывания в доки.
> Думаешь над ним. Потом через какое-то время ты делаешь что-то подобное, не заглядывая в старые решения и документацию, если не сдашься.
Сочувствую твоему работодателю. У них разумист на программисте тратит оплачиваемое время на всякую хуйню вместо работы. Интересно, сколько десятков тысяч рублей в месяц ты выжираешь своими охуительными подходами к ознакомлению с новыми либами? К написанию нового проекта на новом стеке спустя год приступаешь? Или быстрее укладываешься?
Аноним 17/08/21 Втр 15:36:51 2130650221
>>2130633
Я тебе уже несколько раз сказал, что это нужно на этапе обучения, а не коммерческой разработки. Или может ты предлагаешь без обучения в серьёзную разработку лезть.

>>2130633
>Кажется, я начинаю понимать твою проблему. Ты не знаешь зачем нужны подсказки, да? Они нужны не для того, чтобы по ним блять изучать что-то. Они нужны, чтобы передавать правильный тип данных и не охуевать от 8 часов поиска проблемы,
Попробуй почитать про mypy. Этот пакет отловит всё это и много больше. Не благодари.

>>2130633
> У них разумист на программисте тратит оплачиваемое время на всякую хуйню вместо работы.
Работодатель тратит по итогу на порядок больше из-за поспешных решений, когда начинают лепить что-то, не понимая, что делают, инструмент, с которым работают, и т.п.
Ну то есть это, конечно, самая обычная история в реальности, но так быть не должно и происходит именно от этого.
Аноним 17/08/21 Втр 15:38:47 2130654222
>>2130633
Меня как-то на собесе на etl разраба в пыньков завалили за то, что я забыл, чем в sql отличается оконная функция RANK() от DENSE_RANK(). Такие же обмудни собесили, параллельно смотря в монитор.
Аноним 17/08/21 Втр 15:42:07 2130657223
>>2130654
>завалили за то
В 99% случает отказывают за другое, чем думают. Ты налажал в какой-нибудь самой базе и не заметил, а думаешь, что за что-то сложное тебя завернули.

Либо тупо мог чем-нибудь ещё не понравится, а уж повод найти можно.
Аноним 17/08/21 Втр 15:46:16 2130665224
>>2130657
Я глянул, я с этим не работаю и поэтому ответ не знаю.

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

Аноним 17/08/21 Втр 16:17:29 2130704225
>>2130650
> Я тебе уже несколько раз сказал, что это нужно на этапе обучения, а не коммерческой разработки
А это разные вещи, да? Не бывает же такого, что новый проект на новом стеке, который ты видишь первый раз в жизни. Как и не бывает такого, что внешнее апи спустя 2 года стало depricated и нужно переписывать на новое/переезжать на другой сервис.
> Попробуй почитать про mypy. Этот пакет отловит всё это и много больше. Не благодари.
Нипонял, это как? Это же подсказки! Нужно ебаться самому с нуля и никуда не подсматривать
> Работодатель тратит по итогу на порядок больше из-за поспешных решений
Ну куда там работодателю с требованием бизнеса, можно годик подождать, пока ты раздуплишься, код с нуля попишешь, выучишь все методы, запомнишь все тонкости. А там глядишь уже конкуренты займут нишу и ничего не понадобится.
> когда начинают лепить что-то, не понимая, что делают, инструмент, с которым работают, и т.п.
Блять, опять менеджеры ебаные чета пукают про дедлайны и требования заказчика, которому нужно было вчера. Пусть подождут, я у Васянской либы методы учу, вот когда выучу, пусть тогда и приходят.
> Ну то есть это, конечно, самая обычная история в реальности, но так быть не должно и происходит именно от этого
Нет, именно так быть и должно. Лучше чтобы сегодня работало хоть как-то, чем через год и без багов. Будет падать -- будем рестартить. Много жрет -- докупим серверов. Заказчику нужно здесь и сейчас, чтобы начать получать прибыль. А если будут проблемы, то он к тебе же и придет за доработками и фиксами. По итогу и у тебя денег горы, и у твоего заказчика. Все довольны. А конкуренты, которые через год только первую приватную бету выкатят без багов уже никому не будут нужны, ровно вместе с горе-разрабами, которые этот год учили все методы в super_liba_by_vasyan. Странно, что тебе такие простые и очевидные вещи не объяснили
Аноним 17/08/21 Втр 16:20:45 2130710226
>>2130654
>RANK() от DENSE_RANK()
В общем день прожит не зря, что-то новое узнал, чувствую себя мошенником тот анон, что за обучение на white board

Я этих штук не знал, и реализовывал этот функционал когда-то в коде. Хотя можно было сделать на уровне SQL. Стыдно.

Но это потому, что я не знаю SQL, хотя работал с ним на практике довольно плотно.

Типичная иллюстрация некомпетентности в реальной работе.

А всё потому, что я не потратил достаточно времени, чтобы учить SQL целенаправленно, по книгам, с решением задач, за что надо пару месяцев потратить. Чисто на обучение. Зато после этого и какой-то реальной практики можно честно писать себе "знание SQL" и это не будет мошенничеством.

К питону близкий пример. Можно написать код вида
arr = get_some_array()
index = 0
while index < len(arr):
____foo(index, arr[index])
____index += 1

или

arr = get_some_array()
for index in range(len(arr)):
____foo(index, arr[index])

оба варианта работают, можно, конечно, сказать, что такого?

Но это не программирование на питоне, и если ты пишешь "хорошее знание питона", то как бы странно. Если интервьювер попросит переписать с enumerate и ты не сможешь, то конечно сразу пошлют как мошенника. Потому что ты может быть программист крутой и смышлёный чел, то с языком не разобрался.
Аноним 17/08/21 Втр 16:23:07 2130714227
Пиздец вкатуны пожар устроили, юзать иде или не юзать.
Если мне на работе скажут использовать пучарм вместо моего вс кода или вима, т.к. лицензию купили, я просто помахаю головой и забью.
Или наоборот, запретят использовать пучарм, т.к. он разлагает мышление и это не тру, то я нахуй пошлю.
Как мне удобно, так и пишу.
Аноним 17/08/21 Втр 16:30:20 2130724228
>>2130704
>А это разные вещи, да? Не бывает же такого, что новый проект на новом стеке, который ты видишь первый раз в жизни.
Бывает. При плохой организации бывает. И у меня бывало. Это очень печально для проекта, когда вот так происходит, там неизбежно будет говно в коде и архитектуре. Я с этим сталкивался и исключений не видел.

Вещи абсолютно разные. Сначала ты учишься, только потом работаешь.

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

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

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

>А если будут проблемы, то он к тебе же и придет за доработками и фиксами.
"У меня нет времени". Потому что мелкая переделка, за которую много не заплатят, требует радикального рефакторинга, потому что сделано всё ужасно из-за некомпетентности исполнителя (меня).
Аноним 17/08/21 Втр 17:47:31 2130815229
>>2130710
>В общем день прожит не зря, что-то новое узнал, чувствую себя мошенником тот анон, что за обучение на white board
>Я этих штук не знал, и реализовывал этот функционал когда-то в коде. Хотя можно было сделать на уровне SQL. Стыдно.
>Но это потому, что я не знаю SQL, хотя работал с ним на практике довольно плотно.
А IDE бы тебе по RANK предложил и RANK(), и DENSE_RANK().
Аноним 17/08/21 Втр 18:00:48 2130828230
>>2130704
>которые этот год учили все методы в super_liba_by_vasyan
За год можно 10 васянских либ написать, не то что выучить методы.

Не знаю откуда у тебя такие сложности.

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

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

Мимо
Аноним 17/08/21 Втр 18:35:37 2130881231
>>2130724
> Бывает. При плохой организации бывает. И у меня бывало
Новые проекты бывают только при плохой организации? Я тебя услышал
> Ты должен уметь видеть ошибки без них. И плохо, когда у тебя инструмент отлавливает ошибку, когда ты её сам не видишь.
Покажи хоть одного человека, который не ошибался. Если каким-то образом пруфанешь, что у тебя всегда с первого раза все тесты проходит код, то скину 10к на карту.
> Более правильно нанять человека, который с этим уже реально работал и в этом понимает
Ага, я уже представил, как у тебя в компании решили подключить интеграцию с какими-нибудь гуглтаблицами и запилить для этого отдельный сервис на фастапи и ваша хрюша потом два года ищет человека, который не просто мидл, но еще и работал с этим стеком. Потом еще месяц онбоардинг и можно наконец-то приступать.
> Иначе ты слепишь что-нибудь, что потом невозможно будет поддерживать и дорабатывать, можно только переписать, убив кучу времени
Эмм, нет. Программирование это не знание всех методов в библиотеке. Это блять вообще самая незначительная часть кодинга, которая только отвлекает от самого программирования. И которую умные дяди постарались упростить до минимума, добавив тайпхинты, докстринги и подсказки.
> И я выливал код, который был ужасным из-за непонимания, и я работал с чужим кодом, с которым сложно было сделать, потому что разработчик не понимал, как делать грамотно
И он таким был не потому что ты плохо выучил все методы библиотеки, а потому что не сумел грамотные абстракции ввести, инкапсулировать логику, архитектуру сделал хуевую. Если у тебя хуевая реализация функции do_zaebis(), потому что ты сделал свой велосипед вместо использования уже готового интерфейса в либе, то ты можешь переписать ее и не трогать остальной код.
> В этом есть что-то хорошее и правильное?
Конечно есть, программист решает проблемы людей, а не создает их, зазубривая методы библиотек и специально замедляя и саботируя разработку.
> Потому что мелкая переделка, за которую много не заплатят, требует радикального рефакторинга, потому что сделано всё ужасно из-за некомпетентности исполнителя (меня).
Ну это только потому что ты/менеджеры твой компании не умеешь общаться с людьми. Заказчику нужно сразу говорить, что можно сделать быстро и как получится или долго и на заебись. И что потом доработки будут в копеечку. Это нормально и даже более того, это то, как нужно делать. А когда клиент вернется, то попросить нормальную сумму.
>>2130828
> За год можно 10 васянских либ написать, не то что выучить методы
Да хоть сколько, смысл в том, чтобы разобраться в либе и начать ее использовать можно в разы быстрее, чем сидеть и учить методы.
> Вообще, вполне очевидно что ты пишешь код только ради денег
Вот это открытие. А ты сам как? Святым духом питаешься? Живешь в бочке? Если нет, то не понимаю что тебя удивляет.
> соответственно писать код качественно тебе не выгодно
Как из утверждения про то, что я работаю ради денег следует то, что код я пишу хуевый? И как зубрежка методов делает код более качественным?
> Сам себе вредить не будешь, вот и остаётся верить что так надо.
Чему вредить? Это уже просто поток сознания пошел
> Тот чел видимо идейный
Согласен
> пишет чтобы решить задачу наилучшим образом
Как саботаж написания кода делает решение задачи лучше?
> По факту он ее решит, выложит на гит и ты будешь ее потом юзать и нахваливать
Ну как выложит, тогда и поговорим
> Но никогда не признаешь что ее разработали не ради бабла
Ты не понимаешь отличия между работой и хобби?
Аноним 17/08/21 Втр 18:37:43 2130882232
>>2130221
Это гораздо удобнее, посмотреть в цепочку вывовов либы. Всегда так делаю чтобы было норм понимание что происходит в коде. Порой там бывает полный пиздец.
Аноним 17/08/21 Втр 19:14:38 2130924233
Ты выдумываешь аргументы, потом другие, потом их опровергаешь.

>>2130881
>Новые проекты бывают только при плохой организации? Я тебя услышал
Если в проект серьёзно завязывается на какую-то технологию, причём разработчики с ней не знакомы, опыта нет, и времени на изучение нет, то это очень плохая организация разработки. И проблемы неизбежны.

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

И не путай обучение и работу. В обучении очень полезно самому спотыкаться на граблях. В работе нет.

>Эмм, нет. Программирование это не знание всех методов в библиотеке.
Тебе не нужно зубрить, у тебя есть документация.

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

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

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

Но вообще не об этом речь. А о том, что везде нужны профессионалы, которые понимают, с чем работают. А следующий вопрос, как вот стать этим самым профессионалом. И вот как раз IDE и подсказки очень сильно этому мешают. Легко в обучении, тяжело в бою, перефразируя.
Аноним 17/08/21 Втр 19:17:15 2130928234
Скажите мне, нахуй вы это спорите целый день?
Аноним 17/08/21 Втр 19:19:46 2130933235
Аноним 17/08/21 Втр 19:28:57 2130952236
>>2130881
>Ну как выложит, тогда и поговорим
Переобуешься сразу, чтобы выгоду не упустить. Смысл с тобой говорить? Сытый голодного не понимает. Когда перестанешь работать за еду и ночлег, тогда с тобой можно будет говорить. Сейчас у тебя даже в голове не укладывается, чтобы бывает иначе.

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

Ты продолжаешь настаивать на том, что запомнить два десятка методов ОЧЕНЬ сложно. Советую побольше читать.
Аноним 17/08/21 Втр 19:41:20 2130969237
Почему вот эта вот поебота возвращает список

> [3, 3, 3]
Аноним 17/08/21 Втр 19:41:52 2130970238
изображение.png 4Кб, 593x60
593x60
Аноним 17/08/21 Втр 19:45:32 2130974239
>>2130970
we need to go deeper
Это нормальная практика писать такой код? list comprehension и все такое, но не настолько же
Аноним 17/08/21 Втр 19:46:43 2130975240
>>2130970
Замыкание с последним 3.
Аноним 17/08/21 Втр 19:47:28 2130978241
>>2130974
Практическое баловство, очевидно же.
Аноним 17/08/21 Втр 19:48:27 2130979242
>>2130974
Нет, вообще не нормально, но на то оно и в кодерских задачках
>>2130975
А можно подробнее?
Аноним 17/08/21 Втр 19:50:19 2130981243
>>2130979
Что подробнее? Почитай, что такое замыкания.
Лямбда захватывает ссылку y, которая после отработки первого компрехешена получает значение 3.
Аноним 17/08/21 Втр 19:51:12 2130982244
Аноним 17/08/21 Втр 22:26:31 2131150245
>>2130970
как это отвратительно выглядит.
Аноним 18/08/21 Срд 09:11:26 2131364246
Аноним 18/08/21 Срд 09:24:23 2131375247
>>2130924
> Ты выдумываешь аргументы, потом другие
Именно так и работает дискуссия, да
> потом их опровергаешь.
Нет
> проект серьёзно завязывается на какую-то технологию, причём разработчики с ней не знакомы, опыта нет, и времени на изучение нет
Ты кажется так и не понял о чем я лол. Давай я тебе попробую объяснить -- изучать технологию и учить все методы это не одно и тоже. Ты подменяешь изучение чего-то зазубриванием методов и потом пытаешься доказать мне, что не изучать технологии перед использованием плохо. Да, это плохо. Как и зазубривание методов.
> Но категорически плохо, когда ты закладываешься на то, что как-нибудь сделаю, а там потом чекеры и тесты отловят ошибки
Так ты специально ставишь себя в условия, когда риск ошибки выше. Причем риск самой тупой и бездарной ошибки уровня опечатки. Такие ошибки даже новичкам ничего не дадут.
> Тебе не нужно зубрить, у тебя есть документация
Не понял, ты же выше писал обратное. Что нужно уметь написать все методы не подглядывая в документацию. И это абсурд очевидный
> Базу ты, конечно, должен знать. Не зубрить, ты просто должен её хорошо понимать и помнить без документации. База, это основные библиотеки твоего стека.
Не надо ничего помнить, нужно понимать какой функционал есть и представлять логику работы библиотеки или фреймворка. Все остальное находится в документации. Не надо засорять голову говном
> Конечно, но всё это потому, что не было достаточного учебного опыта с этими технологиями, чтобы понять, как с ними работать правильно
Да и знание наизусть даже основных методов не нужно для понимания как работать с чем-то правильно
> У тебя часто цепочка заказчиков и посредников, напрямую тебя не допустят к заказчику, все друг с другом грызутся, хотят нагнуть, большинство принимающих решения и контролирующих разработку ничего в этом не понимает
Не чет какая-то суперхуевая аутсорс галера у тебя была, у нас такой хуйни нету. Более того, сейчас с аутсорса перезжаем на аутстаф.
> А о том, что везде нужны профессионалы, которые понимают, с чем работают
Согласен
> А следующий вопрос, как вот стать этим самым профессионалом. И вот как раз IDE и подсказки очень сильно этому мешают.
Да как подсказки от иде помешать-то могут? Круто было бы, если бы иде могли накидать архитектуру, найти утечки памяти, оптимизировать код, грамотно инкапсулировать логику, построить отказоустойчивые очереди и прочее. Но они могут только не дать тебе опечататься во время написания кода. И уж вот это никак не делает тебя каким-то крутым спкецом
Аноним 18/08/21 Срд 10:04:34 2131409248
>>2130609
да вообще упал постинг вроде прилично за последнине полгода
Аноним 18/08/21 Срд 10:20:22 2131420249
>>2131409
Так летом всегда просадки, но вообще мне кажется, что все желающие с мозгами уже вкатились, а желающие без мозгов поняли бесперспективность этого занятияили у них из-за кризиса кончились деньги на курсы лол
Аноним 18/08/21 Срд 10:32:33 2131429250
>>2124389 (OP)
Научите мэдскильно понимать запись в строку, я как бы вроде понимаю суть что делает тот или иной кусок, но вот четко представить не могу как если бы было записано в столбик.
res2.extend(x for x in res1 if x[0] not in [y[0] for y in res2])
Вот типа такого как написать классически в столбец?
Аноним 18/08/21 Срд 10:34:51 2131431251
>>2131429
Погугли что такое списочные генераторы. Потом берешь и пишешь формирование списка через циклы. А потом переписываешь в списочный генератор.
Аноним 18/08/21 Срд 11:25:25 2131454252
>>2131429
> res2.extend(x for x in res1 if x[0] not in [y[0] for y in res2])
За такую хуйню надо по пальцам бить
> Научите мэдскильно понимать запись в строку
Все что идет до первого for воспринимай как окруженное list.append() внутри фора, а все что идет после считай записанным внутрь обычного for
Аноним 18/08/21 Срд 12:44:42 2131576253
Видал в жс-треде такое:

Частая ситуация когда 2 клиента общаются и если один из них не ответил по истечение определенного таймаута (скажем 5 минут) то приходит оповещение / разговор закрывается (то есть происходит какое-то событие)
Как подобное сделать на nodejs / express? Самое очевидно это сделать некую функцию через setInterval, которая будет запускаться скажем каждые 10 секунд, проходить по всем объектам чатов и находить просроченные по timestamp. Но выглядит это малость нерационально. Шо делать?


Как такое мутить на пистоне? Тут никаких setInterval и setTimeout нет
Аноним 18/08/21 Срд 12:46:23 2131580254
>>2131429
Учись сам с течением времени, читая чужой говнокод
И просто для справки: "мэдскильная запись в строку" оббыссывается с ходу на любом кодревью, не копируй долбоебов из интернетов (например с litcode) которые выебываются написанием громадных конструкций в 1 строку
Аноним 18/08/21 Срд 12:48:06 2131586255
>>2131580
Потому что не читаемо?
Аноним 18/08/21 Срд 12:59:47 2131603256
>>2131586
Да в общем и целом читаемо, просто ты всегда хочешь читать код по диагонали, цепляясь за какие-то ключевые слова и стандартные конструкции. А здесь тебе приходится останавливаться и тратить несколько десятков секунд, чтобы понять что происходит. Но проблема даже не в этом, а в том, что написать кривую хуйню проще простого, а поймать баг в 5-кратной вложенности компрехеншена это просто идите нахуй
Аноним 18/08/21 Срд 13:16:06 2131630257
>>2131603
Я вот тоже так думаю. Обычный код имеет нормальную глубину по горизонтали и вертикали, а эти однострочные выражения сводят глубину вертикали к 1, а горизонталь задирают довольно сильно вверх (по сложности восприятия или по концентрации синтаксиса).
Аноним 18/08/21 Срд 13:31:58 2131655258
>>2131420
Что делают летом обычно люди вместо того чтобы постить ИТТ?
Аноним 18/08/21 Срд 13:34:39 2131660259
>>2131655
Отдыхают, задрачивают блендер реакт и делают риг для фотограмметрии?
Аноним 18/08/21 Срд 13:39:41 2131668260
>>2131586
>>2131429
>>2131580
запись максимально коротко это не только плохо читаемо но еще и хуево для повторного использования.
Это же ебаное функциональное программирование.
можно прям весь код захуярить вот такими кнострукциями, но блядь это во первых очень сложно для восприятия, во вторых это просто бессмысленно.
вот пример в функциональном стиле, норм что ли?
input() # Пропускаем количества, обойдемся без них
print(
*map(
lambda x: x[1][0],
sorted(
zip(
sorted(
enumerate(map(int, input().split())),
key=lambda x: x[1]
),
sorted(
enumerate(map(int, input().split())),
key=lambda x: x[1],
reverse=True
)
),
key=lambda x: x[0][0]
)
)
)
Аноним 18/08/21 Срд 13:41:10 2131672261
НИЧЕГО НЕ ПОНЯЛ[...].mp4 1030Кб, 1280x720, 00:00:03
1280x720
Аноним 18/08/21 Срд 13:52:41 2131695262
>>2131655
Уходят в отпуск и отдыхают, гуляют вечерами на улице, уезжают к бабушке на каникулы, едут домой после сессии летней. Летом везде просадки, даже в продажах. Причем не в начале лета, а ближе к концу. Я до погромирования много где работал, в том числе в продажах. Самый пик это ранняя осень и начало весны.
Аноним 18/08/21 Срд 13:52:45 2131696263
Аноним 18/08/21 Срд 14:08:09 2131719264
>>2131375
Ты не понимаешь, как происходит обучение.

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

Если ошибки сразу исправляются автоматически, то он не учится. Он приучается писать с ошибками.

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

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

Ты предлагаешь с самого начала отказаться от того, чтобы учить слова и грамматику. Потому что при профессиональном серьёзном переводе всё равно придётся заглядывать в словари. Я говорю, что чтобы чему-то научиться, надо приложить усилия, но польза будет огромная, твой уровень и возможности другими будут.
Аноним 18/08/21 Срд 14:14:00 2131729265
>>2131695
Здесь видно по ньюфаг разделу, что трафик сильно упал. И в этом треде трафик небольшой.

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

А нюфаги с нулевыми вопросами это школьники и студенты обычно, взрослые реже домагают с такими вопросами других. А у них сейчас каникулы.
Аноним 18/08/21 Срд 14:14:10 2131730266
>>2131696
Обучалка чему? Особенно порадовало объяснения на 2 урока из 14 про то, как вообще начать писать код, что такое IDE и как ее настроить, что такое виртуальное окружение и потом сразу переход к тому, как писать свой парсер, что такое квери стринги и шаблонизаторы. Боюсь представить что будет у человека в голове после этого курса.
>>2131719
> Ты не понимаешь, как происходит обучение.
Нет, я прекрасно понимаю, программирование несравнимо проще тензорного анализа, но даже в нем я как-то смог разобраться и обучиться почти полностью самостоятельно.
> Человек учится тогда, когда ошибается, думает, почему ошибся и как не ошибаться. Учится, когда напряжённо думает, как реализовать что-то.
Но опечатка это не ошибка лол
> Если не ты при кодировании не из головы код берёшь, а постоянными подсказками пользуешься, ты не научишься думать
Ты либо не понимаешь как устроены подсказки, либо у тебя какая-то странная фиксация на том, чтобы самому исправлять все опечатки
Аноним 18/08/21 Срд 14:30:15 2131740267
image.png 122Кб, 480x360
480x360
>>2131668
Это МОДНА и КРУТА
Слышь, да, бистра сказалъ "Функциональщина крута"!
Аноним 18/08/21 Срд 14:31:23 2131745268
>>2131730
Ты приписываешь мне какие-то утверждения, и сам их опровергаешь.

>Но опечатка это не ошибка лол
Опечатка не создаёт больших проблем при обучении. Отловится при первом запуске. Ты сам её можешь увидеть, если прочитаешь свой код. И при работе больших проблем не создаёт. Нужен просто удобный редактор с подсветкой синтаксиса.

Ты вообще должен хорошо понимать, что делает тот код, который ты сам написал. Чтобы уметь его читать без IDE, не наводя на каждый вызов функции мышкой, чтобы посмотреть параметры, описание и т.п.
Аноним 18/08/21 Срд 15:24:30 2131815269
изображение.png 4Кб, 208x90
208x90
Почему это - валидный способ создания метода? Почему не ругается на отсутствие self?
Аноним 18/08/21 Срд 15:37:37 2131830270
>>2131815
Потому что args выступает как self, сам self не является зарезервированным, ты можешь туда что угодно написать, питухону похуй как будет называться твой указатель на экземпляр, просто по ПЕП8 принятно писать self (по аналогии с this в C++).
Аноним 18/08/21 Срд 15:39:57 2131837271
>>2131815
1) Почему ты думаешь, что self отсутствует?
2) Почему ты считаешь, что если валидный, то значит хороший?
>>2131745
> Опечатка не создаёт больших проблем при обучении. Отловится при первом запуске. Ты сам её можешь увидеть, если прочитаешь свой код
И почему новички должны отлавливать ее на первом запуске вместо автоматического дописывания и исправления в названиях методов?
> Нужен просто удобный редактор с подсветкой синтаксиса.
Подсветка синтаксиса расскажет, что ты забыл/не прожалась кнопка p в get_romethues_metrics и код работать не будет?
> Ты вообще должен хорошо понимать, что делает тот код, который ты сам написал
> Ты приписываешь мне какие-то утверждения, и сам их опровергаешь.
Где и что я тебе приписываю? Мы обсуждаем автоматическое исправление опечаток и ты уже в десятый раз говоришь о том, что делать опечатку это самое важное в обучении и без этого никуда.
> Чтобы уметь его читать без IDE, не наводя на каждый вызов функции мышкой, чтобы посмотреть параметры, описание и т.п.
Нахуя?
Аноним 18/08/21 Срд 15:40:10 2131838272
>>2131815
У тебя линтеры говно (их нет)
Любой тебе выделить, что это косяк
Аноним 18/08/21 Срд 16:00:17 2131880273
>>2131837
>И почему новички должны отлавливать ее на первом запуске вместо автоматического дописывания и исправления в названиях методов?
Очевидно потому, что они должны думать, что пишут, и читать, что пишут. А не выдавать рандом, пока не заработает.

>Подсветка синтаксиса расскажет, что ты забыл/не прожалась кнопка p в get_romethues_metrics и код работать не будет?
Нет. Над тем, как работает код, ты должен думать сам, головой.

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

В идеале ты смотришь на код и понимаешь, что происходит в каждой строчке. Что происходит с данными, насколько оптимально, какие возможны косяки и т.п. Для этого надо думать. И учиться думать.
Аноним 18/08/21 Срд 16:17:00 2131906274
>>2131880
> Очевидно потому, что они должны думать, что пишут, и читать, что пишут. А не выдавать рандом, пока не заработает.
Так, ладно, давай ты мне на примере покажешь как это улучшает уровень ПОНИМАНИЯ кода. Вот я новичек и пишу, например, такой код
resp = requests.get('google.com)
html_page = resp.text
soup = BeautifulSoup(html_pge, 'html.parser')
print(soup)
Потом я запускаю код и вижу, что опечатался. Исправляю опечатку. Где конкретно и в каком месте мои навыки выросли? Что нового я узнал? Чему научился?
> В идеале ты смотришь на код и понимаешь, что происходит в каждой строчке. Что происходит с данными, насколько оптимально, какие возможны косяки и т.п. Для этого надо думать. И учиться думать.
И как блять с этим связано исправление опечаток? Хватит заменять "исправление опечаток" на "понимать код". Я тебя спрашиваю как из ручной правки опечаток следует понимание кода, ты же в ответ просто заменяешь слова "исправить опечатку" на "учиться думать" и начинаешь спорить с мной, будто я говорю о том, что думать не надо.
Аноним 18/08/21 Срд 17:02:04 2131943275
>>2131906
>Потом я запускаю код и вижу, что опечатался.
И что? Это вообще к чему относится? Кавычку на первой строке покажет подсветка синтаксиса, ты сразу видишь, что строка не закрыта. А если ты вместо 'html.parser' напишешь 'htlm.parser', тебе тоже IDE ошибку найдёт?

Читай внимательно свой код.

Как программист, ты должен в первую очередь понимать, какие параметры куда подставлять. Например можно get('google.com'), или надо get('https://google.com/') и какие могут быть нюансы из-за этого? Что будет в случае ошибок?

Вот в этом главная работа программиста.

Если ты не в состоянии прочитать код и увидеть там опечатки, то это беда. Потому что ошибки, которые не способна увидеть IDE, найти на порядки сложнее. А у тебя навык не наработан, чтобы код смотреть, ты привык, что за тебя IDE/copilot дописывают.

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

Аноним 18/08/21 Срд 17:15:59 2131960276
Пиздец вы долбаебы код без IDE пишете? Да вы поехавшие нахуй, еще скажите что у вас в CI не стоят линтеры и проверки типов, а рефакторинг вы вручную хуярите.
Аноним 18/08/21 Срд 18:16:02 2132038277
>>2131960
Они и пробелы вручную ставят. Перешёл на 3й уровень вложенности? Будь добр 12 раз пробел нажать перед каждой строчкой, а то вдруг думать перестанешь.
Аноним 18/08/21 Срд 18:40:04 2132065278
>>2131576
Паттерн называется watchdog. Вариантов реализации у него полно, от полных часов внутри программы, до внешнего наблюдателя. Моё личное предпочтение, это использование сигналов ос
https://docs.python.org/3/library/signal.html#signal.SIGALRM
но у меня и системы все позикс совместимые.
Аноним 18/08/21 Срд 18:42:27 2132067279
>>2131960
>>2132038
Комфортобляди, спок. Скоро и жопу вытирать сами разучитесь.
Грек 18/08/21 Срд 19:05:51 2132091280
Кто может чекнуть мое резюме, скиньте свою телегу, с меня копеечка.
Аноним 18/08/21 Срд 19:08:10 2132093281
>>2131576
Тут самый первый вопрос, это как у тебя в приложении устроена конкурентность.

Два основных варианта, это многопоточность и асинхронность.

В обоих ты можешь реализовать паттерны аналогичные setInterval. Я работаю с asyncio в основном. Подход один в один.

Например в aiohttp обработчик вебсокетов, когда приходит соединение, поднимает несколько фоновых задач. Одна из задач это контроль за соединением, если ты обнаруживаешь, что нет активности давно, ты принудительно закрываешь вебсокет. Работает дубово, цикл с asyncio.sleep(несколько секунд), если зарегистрированная активность была, ок, если нет, закрываешь сокет.

Когда сети, то там всё ненадёжно, поэтому полезно иногда.

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

Клиентская сторона может повиснуть на логическом уровне, держать соединение, хотя реально его игнорировать.
Аноним 18/08/21 Срд 19:12:48 2132096282
>>2132091
Кидай сюда, пусть все посмеются.
Аноним 18/08/21 Срд 19:18:38 2132100283
>>2130245
Вручную отправлять каждое исключение через capture_exception()
Аноним 18/08/21 Срд 19:29:03 2132105284
>>2131729
Разве тут нет вкатчиков 60-70 лет?
Аноним 18/08/21 Срд 19:29:37 2132108285
А кстати, в какой части резюме на хх ру стоит кидать свой гит? На это вообще смотрят? На портфолио смотрят? Слышал на двощах что всем похуй на портфолио.
Аноним 18/08/21 Срд 19:32:56 2132111286
Аноним 18/08/21 Срд 21:57:10 2132227287
>>2132111
Умереть во время дебага - мечта любого программиста
Аноним 18/08/21 Срд 22:10:31 2132237288
image.png 4Кб, 412x46
412x46
Аноним 18/08/21 Срд 22:23:15 2132253289
>>2132237
Генэксп вместо компрехеншена выполняется по запросу, а не сразу.
Аноним 18/08/21 Срд 22:32:24 2132258290
image.png 29Кб, 410x583
410x583
https://pastebin.com/4SRZq9WN
Я очень сильно подозреваю что это можно как-то сократить, да ещё и так чтобы потом просто дописывать нужные параметры. Кто-нибудь может подсказать как?
Аноним 18/08/21 Срд 22:34:54 2132260291
Аноним 18/08/21 Срд 22:39:24 2132263292
image.png 11Кб, 478x259
478x259
Аноним 18/08/21 Срд 22:39:58 2132264293
>>2132093
>цикл с asyncio.sleep(несколько секунд), если зарегистрированная активность была, ок, если нет, закрываешь сокет
setInterval уровня /b
Аноним 18/08/21 Срд 22:50:14 2132276294
>>2132258
[del (wall)[j] for i in range (WALL_LEN) for j in ["marked_as_ads","post_type","date","copy_history","post_source","comments","likes","reposts","views","is_favorite"] if j in (wall)]
покормил
Аноним 18/08/21 Срд 22:51:57 2132280295
Аноним 18/08/21 Срд 23:03:38 2132289296
>>2132264
Предложи кошерный вариант
Аноним 18/08/21 Срд 23:25:30 2132305297
>>2132258
Вот так например

for wall_item in wall:
____for key in ["marked_as_ads", "post_type", "date" .....]:
________wall.pop(key, None)

pop(key, defaultValue) позволяет извлечь элемент, или default, если элемента нет. Это чтобы исключения не обрабатывать и чтобы на вхождение не проверять.
Аноним 18/08/21 Срд 23:26:24 2132307298
>>2132305
>________wall.pop(key, None)
fix
________wall_item.pop(key, None)
Аноним 18/08/21 Срд 23:27:10 2132308299
>>2132289
Пишешь свой ивент-луп
Добавляешь в него таски
Они там вертятся/крутятся
Все счастливы
Аноним 19/08/21 Чтв 00:35:06 2132332300
image.png 3Кб, 264x79
264x79
Кодить начал недавно, ссанными тряпками не бейте.
Есть функция которая из нескольких списков, состоящих из целых чисел, рандомно, в зависимости от веса определенного элемента, вытягивает этот самый элемент и закидывает его в другой список, который состоит из вот таких комбинаций рандомных элементов.

Приведу пример для ясности. У нас есть три списка, из которых будет производиться выборка:
list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4, 5]
list3 = [1, 2, 3]
Дальше происходит рандомное избрание элементов.
Из list1 выбирается элемент 3
Из list2 выбирается элемент 5
Из list3 выбирается элемент 1
Следовательно в итоговом двумерном списке, назовем его listRes, будет находится элемент, состоящий из данной выборки
listRes = [[3, 5, 1]]

Мне нужно сгенерировать из исходных списков в моем случае их 6 и число элементов в некоторых из них более 40 около 10к элементов в listRes. Главное условие - не должно быть никаких повторений. То есть если у нас есть элемент [1, 1, 1], то при получении в рандоме такого же элемента он должен браковаться и рандом должен начинаться опять, пока не будет получен элемент, которого ещё нет в итоговом списке. В цикле генерации у меня стоит проверка показанная на пикриле. Всё бы ничего, но после 1к элементов, перепроверка всех элементов и дальнейшая генерация рандомного значения, отличного от уже существующих, становится крайне долгой. Связываю это с рядом вещей:
1. Общее число элементов, которое постоянно увеличивается, отчего увеличивается нагрузка на перепроверку.
2. Рандом, завязанный на весе каждого определенного элемента исходных списков.

Нагенерить даже 4к элементов выходит крайне долго. Запускать генерацию на 8к я пока не решался вовсе. Прям хороших и годных способов оптимизации данного процесса не вижу, потому и пришёл за помощью сюда. Как можно улучшить мой алгоритм, но при этом сохранить все нужные условия, а именнно:
1. Элементы итогового списка не должны повторяться
2. В элементах итогового списка должно соблюдаться то же самое соответствие элементам исходных списков то есть, например, если в исходном списке list1 находятся цифры от 1 до 8, то цифры более 8, на месте первого элемента в подсписке входящем в listRes, быть не должно
3. Должно быть соответствие распределению по заданным весам то есть если в списке list1 у первого элемента вес равен 10, а у второго 8, то первый элемент должен попадаться в среднем чаще чем второй

Я подумывал просто перебрать все возможные комбинации из этих отдельных элементов исходных списков, а потом просто перемешать итоговый список, но как-то не смог реализовать это толково.
В общем, аноны, надеюсь на вас. Надеюсь, что расписал более-менее понятно. Если надо, то готов пояснить подробнее за какие-то вещи, которые здесь неясны.
Аноним 19/08/21 Чтв 00:52:31 2132352301
>>2132332
>рандомно, в зависимости от веса определенного элемента
шо?

>Главное условие - не должно быть никаких повторений
Делай через set (множество). Очевидно же. Только работай не с массивами а со строками. Потом в конце строки распрасишь в массивы
Аноним 19/08/21 Чтв 01:01:41 2132358302
Анончики, есть числовой массив вида a = [1, 2, 3, 4, 5, 6] и число n, допустим равное 3-м.
Я создаю n cписков в переменной соpy:
copy = [[] for dummy in range(n)]
Так вот, как мне копировать числа из массива 'a' по очереди в каждый из списков в cору, те 1 идет в первый список, 2 идет во второй, 3 в третий, 4 опять в первый и тд?
Аноним 19/08/21 Чтв 01:07:35 2132361303
>>2132358
for i in range (len(a)):
...
дальше допрешь?
Аноним 19/08/21 Чтв 01:09:28 2132362304
>>2132352
>>2132352
>шо?
В посте ж писал, что
>то есть если в списке list1 у первого элемента вес равен 10, а у второго 8, то первый элемент должен попадаться в среднем чаще чем второй
Элементы, у которых веса побольше, должны встречаться чаще в этом множестве из 10к элементов, чем те, у которых веса поменьше реализую всё это через параметр weights в random.choices

>Делай через set (множество). Очевидно же. Только работай не с массивами а со строками. Потом в конце строки распрасишь в массивы
Хороший совет, вот только как мне работать с учетом последнего пункта требований, а именно
> В элементах итогового списка должно соблюдаться то же самое соответствие элементам исходных списков то есть, например, если в исходном списке list1 находятся цифры от 1 до 8, то цифры более 8, на месте первого элемента в подсписке входящем в listRes, быть не должно
Set ведь, вроде как, вообще исключает повторения, а тут они допускаются среди элементов подсписков, но не допускаются совпадения подсписков целиком.
Аноним 19/08/21 Чтв 01:25:15 2132368305
>>2132332
Для начала сделай какую-нибудь отладочную печать, сколько элементов генерится, а сколько отсеивается. Например сделай счётчик сгенерированных элементов и отсеянных и выводи их после каждого удачного случая.

Чтобы понять, в чём проблема. Рандом не может "уставать", ему всё равно, 100 элементов сделать или 100 миллионов.

Возможно, у тебя количество отсевов растёт, и под конец на каждый полученный элемент приходится условно 1000 отсеянных.

Если так, то значит ты хочешь невозможного. Потому что распределение вероятностей в полученном множестве будет не тем, которое ты хочешь.
Вот условно, два множества, ['a', 'b'] и ['1','2'] вес a 0.9, b 0.1, fаналогично вес 1 0.9? вес 2 0.1
cскорее всего первым ты получишь a1, потом a2/b1, потом b2. Но всего 4 элемента максимум, и по итоговой выборке, если её оценивать, распределение весов будет 0.5 для всех элементов.

Делая отсев, ты тем самым смещаешь веса.

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

Или ты хочешь невозможного, или ты где-то налажал.
Аноним 19/08/21 Чтв 01:29:12 2132369306
>>2132358
Ну это даже для меня легко (3 месяца учу Питон). Пиши, если не допрешь сам
Аноним 19/08/21 Чтв 01:38:55 2132370307
>>2132368
>Возможно, у тебя количество отсевов растёт, и под конец на каждый полученный элемент приходится условно 1000 отсеянных.
Так и есть, так что здесь
>Если так, то значит ты хочешь невозможного
ты прав.

В таком случае, наверное, логичнее будет просто перебрать все возможные комбинации из элементов исходных списков, как я уже писал в >>2132332. Другой вопрос: как это сделать?
Аноним 19/08/21 Чтв 01:42:46 2132372308
>>2132362
Кстати, возможно тебе будет интересен другой подход для твоей задачи.

Ты делаешь векторы с исходными весами, например [1, 10].
Если выпадает какой-то элемент, то вес этого элемента уменьшаешь, скажем умножаешь на 0.9. Можно корректировать вес только в случае, когда элемент идёт на отсев.

Тогда у тебя получится естественная балансировка выборки.

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

Да, идёт смещение вероятностей, но делая отсев, ты это же смещение тоже делаешь.
Аноним 19/08/21 Чтв 08:50:53 2132460309
>>2132332
>Я подумывал просто перебрать все возможные комбинации из этих отдельных элементов исходных списков, а потом просто перемешать итоговый список, но как-то не смог реализовать это толково.
Так веса потеряются.

Всё правильно тебе про сет сказали.

>>2132362
>Set ведь, вроде как, вообще исключает повторения, а тут они допускаются среди элементов подсписков, но не допускаются совпадения подсписков целиком.
Так ты в сет помещаешь в сет подсписки целиком.
Делаешь так:
заводишь сет
myset = set()
получаешь свой подсписок
[3, 5, 1]
скукоживаешь его в строчку, например так (если уже строки, то map не нужен)
sublist = '#$'.join(map(str, [3, 5, 1]))
получается у тебя такая строка
'3#$5#$1'
запихиваешь её в сет
myset.add(sublist)
генерируешь сколько тебе надо (это можно оптимизировать, но выбираю простоту объяснения)
while len(myset) < 8000
после чего раскукоживаешь строчки из сета в список списков
list_of_sublists = [sublist.split("#$") for sublist in myset]

Аноним 19/08/21 Чтв 08:53:44 2132463310
>>2132460
>#$
Естественно, в зависимости от входных данных #$ можно на что угодно поменять, хоть на " ", хоть на \0
Аноним 19/08/21 Чтв 11:28:11 2132677311
>>2132370
Можно сгенерировать все комбинации и отсортировать их по суммарному весу со случайной добавкой (шум). Не надо тогда заморачиваться с отсевом дубликатов.

https://ideone.com/qBvvLY
Аноним 19/08/21 Чтв 16:18:21 2133005312
>>2132332
Тебе нужен недетерминированный вариант генерации? Если да, то насколько недетерминированный? Если можно и детерминированный, о нахуя тебе вообще тут рандом?
>>2131943
Не, соре, третий день эту хуйню я уже не хочу оюсуждать
Аноним 19/08/21 Чтв 16:51:09 2133062313
изображение.png 50Кб, 1272x609
1272x609
Они что, ебанутые?
Почему на питоне 3.8 этот PyOpenGL-accelerate ставился без проблем, а в 3.9 требует какую-то залупу на 4 гб, которую потом из системы нельзя удалить.

А набор с++ вместе с ide, где и opengl стоит, и ещё куча либ разных на все случаи жизни занимает намного меньше места и всё там работает как часы.
Аноним 19/08/21 Чтв 17:08:50 2133086314
Помогите, пожалуйста!

Мне нужно запускать скрипт через cron.
Вверху скрипта прописано:
#!/usr/bin/env python3
Так же есть виртуальное окружение на котором установлены всякие библиотеки.

sudo chmod a+x fileName.py - выдал

что я вставляю в cron:
(5 звезд) cd ~/scripts/projectFolder && source venv/bin/activate && ./fileName.py && deactivate
При этом просто строка:
cd ~/scripts/projectFolder && source venv/bin/activate && ./fileName.py && deactivate
выполняется нормально.

А сам крон перестает работать уже на моменте
cd ~/scripts/projectFolder && source venv/bin/activate

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

Аноним 19/08/21 Чтв 17:10:44 2133088315
>>2133086
?
cron это не программа и не утилита, это просто метод запуска проги
Что значит "запускаю через cron"?
Аноним 19/08/21 Чтв 17:14:19 2133091316
>>2133088
Ну мне нужно запускать скрипт по времени. Допустим раз в день.
Нагуглил, что это отлично можно делать через cron.

Т-е cron ответственный за запуск скрипта. Выше указал какие строки я вбиваю в crontab -e
Аноним 19/08/21 Чтв 17:27:35 2133108317
>>2133086
Попробуй source заменить на .
Аноним 19/08/21 Чтв 17:31:58 2133114318
>>2133086
Не надо ничего активировать, просто пропиши полный путь до питона, который в виртуальном окружении
(звездочки) /full/path/to/venv/bin/python path/to/fileName.py
Аноним 19/08/21 Чтв 17:51:11 2133124319
>>2133114
Спасибо. Помогло следующее:
cd ~/scripts/projectFolder && ~/scripts/projectFolder/venv/bin/python ~/scripts/projectFolder /fileName.py
Надо перейти вначале в папку проекта (что бы он мог локальный файлы подтягивать) а потом как ты сказал запускать.

Для чего тогда я chmod прорписывал:/
А вот про верхнюю строку, шедул или как-то так она называется может кто подсказать?
Я же правильно понял, что я могу прописать там путь к интерпретатору и запускать потом без вызова python, а просто через ./someFile.py?
Если да, то как ее прописывать?
Аноним 19/08/21 Чтв 18:05:43 2133143320
>>2133062
Потому что виндавс.
Аноним 19/08/21 Чтв 18:15:10 2133157321
>>2133124
Шебанг.
#! и команду интерпретатора.
Аноним 19/08/21 Чтв 19:21:08 2133242322
Вопрос насчет налоговой

Последнее время начал норм зарабатывать, получаю деньги на картку, не оформлен, могут ли быть проблемы с налоговой в теории?
Аноним 19/08/21 Чтв 19:25:29 2133251323
>>2133242
Я уже давно зарабатываю на фрилансе и думаю легализоваться, но боюсь, что возьмут за жопу и заставят за старое плотить нолог, лол.
Пока сижу. Но это через пионер, его хуй вычислишь.
Аноним 19/08/21 Чтв 19:28:17 2133255324
>>2133251
Закон о тунеядство, вот о чем надо думать, в совке не любили свободных художников, были сроки за это.
Аноним 19/08/21 Чтв 19:30:50 2133260325
>>2133255
Не взлетит, слишком дохуя народу в серую работает.
Вон бульбашенко хотел вернуть и даже его обоссали.
Аноним 19/08/21 Чтв 19:33:09 2133262326
>>2133260
Бля, ну вывести бабки с платежек - это рили изи, были бы. В серую работаю до поры до времени. Вот их и хотят обложить налогом. Или закрыть за тунеядство.
Аноним 19/08/21 Чтв 21:53:22 2133420327
>>2133242
похуй, срать.
если это не лямы.
алсо как ты умудряешься хорошо зарабатывать? скольок лямов в год?
Аноним 19/08/21 Чтв 22:02:34 2133431328
Как сейчас модно и принятно конфиги хранить? В .env?
Аноним 20/08/21 Птн 13:47:32 2134000329
Подскажите пожалуйста, есть ли какой нибудь цикл видеоуроков, чтобы по нему можно было полностью освоить Python, с нуля до продвинутого уровня. На ютубе ничего годного не нашёл. Эталон - уроки канала simple code по с++, вот нужно что нибудь такое, только по Python.
Аноним 20/08/21 Птн 14:25:18 2134055330
Аноним 20/08/21 Птн 15:31:16 2134136331
>>2134000
> уроки канала simple code по с++
> с нуля до продвинутого уровня
Там 2 тысячи выпусков?
Аноним 20/08/21 Птн 15:37:19 2134142332
>>2134055
Какое же говно, просто охуеть. Пробежался по названиям тем -- челы вообще не в курсе как нужно подавать информацию, просто навалили кучу говна в рандомном порядке. 10 минут на иттерируемые объекты, 20 на функции и два часа на венв лол
Аноним 20/08/21 Птн 15:42:33 2134149333
>>2134142
>Не смотрел, но осуждаю
Сейчас бы судить о качестве по хронометражу
Аноним 20/08/21 Птн 16:21:41 2134188334
image.png 5Кб, 403x186
403x186
Привет!
Смотрите, что мне подсказала ide.

Я не помню, что бы раньше было это -> None
Что оно означает? Где за это почитать?

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

Или это виз опыт приходит?
Аноним 20/08/21 Птн 17:37:30 2134272335
Ононы, а в Питоне много математики? Если я ненавижу все что связано с точными науками, стоит ли начинать учиться?
Аноним 20/08/21 Птн 17:40:52 2134279336
>>2134272
Нет, не стоит начинать.
Аноним 20/08/21 Птн 17:42:22 2134284337
>>2134188
Почитай про тайп-хинтинг.
Аноним 20/08/21 Птн 17:43:29 2134287338
Аноним 20/08/21 Птн 18:25:17 2134354339
>>2134272
Зависит не от языка, а от того что ты хочешь. Понятно, что в машобе без матана не обойтись. А автоматизация рутинных действий вообще не требует ничего, кроме арифметики.
Аноним 20/08/21 Птн 18:51:02 2134374340
>>2134272
Если делать либы для питона, или в нии и кб сидеть, то нет, если пилить сайты, и прочую лабуду, те юзать фреймворки, то да. Кароч, создавать велосипеды, нет, юзать велосипеды - да.
Аноним 20/08/21 Птн 18:55:07 2134379341
Аноним 20/08/21 Птн 19:02:37 2134388342
>>2134287
Из-за того что вопрос глупый.
Набор знаний\требований зависит от области, в которую собрался вкатываться.
Аноним 20/08/21 Птн 19:05:52 2134395343
>>2134188
Ну я так понимаю это типа чтобы сэкономить память или хз зачем. Чтобы тип был Ничего.
Аноним 20/08/21 Птн 19:18:46 2134420344
>>2134354
Я еще даже не вкатился, поэтому не знаю, чего хочу, хех. Но точно не чего-то, что потребует хотя бы универских знаний математики (по крайней мере в процессе первичного обучения).
>>2134374
О, юзать велосипеды я могу, спасибо.
>>2134388
Просто не знал с какой стороны спросить, лол. Слышал просто что тут нужно больше математики знать, чем в других популярных языках.
Аноним 20/08/21 Птн 20:10:44 2134457345
>>2134272
Вряд ли.
Если ты не кайфуешь от программирование и тебе не нравится себе в удовольствие кодить - то либо ты будешь макакой, которая выполняет сплошные рутинные задачи, либо у тебя должна быть железная дисциплина, чтобы изучить все тонкости и эффективно пользоваться разными инструментами. А если кайфуешь - то не задавал бы такой вопрос.
Аноним 20/08/21 Птн 20:25:34 2134474346
Есть где-то такая структура папок:
/app
-/sobaka
--f.py
-/kot
--/lysyj
---g.py

Как в g.py получить переменную, что определена в f.py?
__init__.py насоздавал, но как-то не работает, не видит
Аноним 20/08/21 Птн 20:27:10 2134475347
>>2134474
Типа если бы в kot создал файл, то она бы ещё видело, но ещё одну вложенность не терпит
Аноним 20/08/21 Птн 20:32:40 2134478348
>>2134475
Если три точки поставить типа
from ...sobaka.f import aaaa
то пишет ImportError: attempted relative import with no known parent package
Аноним 20/08/21 Птн 21:17:33 2134535349
>>2134457
>тебе не нравится себе в удовольствие кодить
Я пока не пробовал. Ну там в исходном страничек покопаться иногда интересно, лол.
Аноним 20/08/21 Птн 21:21:34 2134542350
photo2021-08-19[...].jpg 130Кб, 1280x856
1280x856
Посоветуйте пожалуйста книгу для совсем начинающего, чтобы можно было без доступа в интернет попрактиковаться.
Аноним 20/08/21 Птн 22:15:08 2134619351
Все привет.
Мимо дэвопс 4года экспы +N лет опыта в разработке пхп и около модмейкерских штучек на разных скриптовых языках.
С чего можно начать чтобы научиться писать пиздатый код на питоне?
Аноним 20/08/21 Птн 22:16:39 2134621352
>>2134619
Пока успел тут написать 1 приложуху на фласке которая уже в проде и начал изучать джангу. Вроде пока все идет легко и понятно.
Аноним 20/08/21 Птн 22:19:25 2134624353
>>2134188
Ты че пидор динамический что ли? Че пидор что ли бля? Выебу сука бля
__init__ всегда возвращает None блять, хуле оно там тебе подсказывает-то? небось жидбрейнс ебаный? выебал бы нахуй
Аноним 20/08/21 Птн 22:20:48 2134626354
>>2134542
Питон для детей(неиронично, книга охуенная, сам начинал с нее)
>>2134621
Опыт и только опыт, рекомендую тайпхинту и мупу использовать, улучшает качество кода автоматически.
>>2134188
Попробуй сначала с синтаксисом базовым разобраться, а то ты вообще по ходу не понимаешь, что происходит у тебя в коде. А так это тайпхинт.
>>2133431
dynaconf и подставлять secrets
>>2134149
А почему я не могу судить по хронометражу?
Аноним 20/08/21 Птн 22:24:56 2134633355
Стикер 585Кб, 250x250
250x250
Аноним 20/08/21 Птн 22:34:10 2134640356
>>2134626
>>Опыт и только опыт, рекомендую тайпхинту и мупу использовать, улучшает качество кода автоматически.
Хорошо, но я уже их использую. Иногда оно выглядит как привычка с C или делфей юзать статическую типизацию.
Аноним 20/08/21 Птн 22:35:53 2134645357
>>2134624
>>выебал бы нахуй
Ну оно просто подсказывает, это не означает что ты должен обязательно следовать его советам.
Аноним 20/08/21 Птн 22:56:23 2134671358
>>2124389 (OP)
Посоветуйте пожалуйста с какой книги лучше начать изучение новичку Эрик Мэтиз - Изучаем Python или Тони Гэддис - Начинаем программировать на Python?
Аноним 20/08/21 Птн 23:22:51 2134718359
>>2134671
Вкатыш Вкатунцов - Полный обзор книг для вката в Python.
Все эти нубские книги охватывают примерно одно и то же. Берешь любую, потом всё равно надо будет лезть вглубь самостоятельно.
Аноним 20/08/21 Птн 23:41:55 2134741360
>>2134640
Ну тогда рекомендую почитать про паттерны, я как-то задавался вопросом о том как писать абстрактно хороший код на питоне, но ничего особо годного не нашел. Язык слишком быстро меняется, чтобы была какая-то годная книжка, так как ей нужно настояться и пройти несколько редакций.
Аноним 20/08/21 Птн 23:51:21 2134752361
>>2134474
Ничего у меня не получается((( помогите
подскажите правильную структуру может быть

пока у меня
/app
-__init__.py
-/a
--__init__.py
--/b
---__init__.py
---c.py
-/x
--__init__.py

и ничего не работает
Если я пишу в /app/b/c.py
from app.models import variable_in_x
то пишет, что ModuleNotFoundError: No module named 'app'
Если я пишу в /app/b/c.py
from ...x import variable_in_x, то пишет
ImportError: attempted relative import with no known parent package
Впрочем и если пишу в /app/x/__init__.py
from app.a.b.c import variable_from_c
то пишет ModuleNotFoundError: No module named 'app'

Я уже не знаю что делать, в интернете не пойми что пишет, даже до того, что вручную добавлять путь, хотя вроде бы и просто всё
Работает только с совсем простым типа
a.py
b.py

и в a.py написать
from b import variable_in_b

помогите
Аноним 20/08/21 Птн 23:54:55 2134756362
>>2134752
Лазаю на гитхабе и там всё нормально у людей импортируется видимо раз столько кода написано, просто делают пустой __init__.py
Может потому что у меня venv, но вроде нет, раз я его перенес в родительскую директорию для app и ситуация такая же
Аноним 20/08/21 Птн 23:57:34 2134757363
Аноним 21/08/21 Суб 00:12:13 2134770364
>>2134757
да читал, может невнимательно

я уже даже и тестовый пример сделал
Пустая папка
в ней подпапка app, ну и venv
где есть пустой __init__.py

|-- test
| `-- app
| |-- __init__.py
| |-- n.py
| `-- r.py

в r.py пишет
a = 2
в n.py пишет
from app.r import a
print(a)

И оно при python n.py
ModuleNotFoundError: No module named 'app'

Если
from .r import a
print(a)
то
ImportError: attempted relative import with no known parent package

Только если
from r import a
print(a)

то тогда уже 2
но это же примитив вообще

если так сделаю

|-- __init__.py
|-- n
| |-- __init__.py
| `-- n.py
`-- r.py

и в n.py будет
from app.r import a
print(a)
то итог

ModuleNotFoundError: No module named 'app'

Аноним 21/08/21 Суб 00:17:30 2134776365
>>2134770
хотя тут венв не нужен, но суть не меняется
даже если deactivate, то одинаково
пайтон же един
Аноним 21/08/21 Суб 00:21:24 2134779366
>>2134770
Чел, ты так и не понял как работают импорты. Это одна из самых сложных тем, по крайней мере, я не знаю ни одного человека, который бы об нее не споткнулся хоть раз. Попробуй прочитать еще раз и очень внимательно
Аноним 21/08/21 Суб 00:23:05 2134781367
>>2134770
Ты что, дурачок?
Делаешь файл 1.py, внутри
from app.m import a
print(a)
Потом папка app, внутри m.py, внутри a='hui'
В чем проблема то блять?
Аноним 21/08/21 Суб 00:24:07 2134782368
>>2134474
> Как в g.py получить переменную, что определена в f.py
from app.sobaka.f import xxxx
например
но все зависит от точки запуска + занеси __init__ в моудли
Аноним 21/08/21 Суб 00:27:59 2134784369
>>2134781
У меня обратная задача, когда из этого субмодуля надо обратиться к файлу
и ты бы даже свое попробовал, оно тоже говорит, что модуля app нет
Аноним 21/08/21 Суб 00:30:11 2134786370
>>2134784
У тебя значит древний питон какой-то.
А лезть из пакета извне хуевая идея, так никто не делает.
Аноним 21/08/21 Суб 00:31:12 2134788371
Как сделать, чтобы типа есть папка projectname
в ней будет папка app
и чтобы в ней были любые папки и файлы
а я бы мог импортировать
просто
как app.papka1
и тд
Аноним 21/08/21 Суб 00:32:53 2134791372
>>2134786
python --version
Python 3.9.6

>А лезть из пакета извне хуевая идея, так никто не делает.
да делают хотя бы для моделей баз данных тех же

может просто на ночь уже и не поймешь, но очень странно всё это
Аноним 21/08/21 Суб 00:34:16 2134793373
>>2134788
Чел ты мб пойдешь документацию почитаешь? Но давай я тебе дам две подсказки:
1) Ты знаешь что такое точка входа скрипта? Погугли что это такое
2) Нельзя импортить ничего, что находится выше, чем точка запуска
Аноним 21/08/21 Суб 00:36:35 2134795374
image.png 104Кб, 1245x727
1245x727
Делаю пет на фласке. Надо прикрутить на страницу несколько фильтров, чтобы по нажатию кнопки get запрос переформировывался и хотелось, чтобы у юзера "сохранялись" последние выбранные фильтры. Я так подумал обычным фласк формами тут не обойтись, да? Подскажите популярное решение, наверняка эта часто встречающаяся задача.
Аноним 21/08/21 Суб 00:43:26 2134800375
Аноним 21/08/21 Суб 00:43:43 2134802376
>>2134793
а при чем тут точка входа, если речь даже просто о переменных тех же? я же не сервер пока что запускаю, а чисто переменные импортировать
> Нельзя импортить ничего, что находится выше, чем точка запуска
да ну
просто вместо . пишешь .. и так далее
это если относительно

а документация... да там ничего и не противоречит
ладно, завтра посмотрю уже ужас просто
Аноним 21/08/21 Суб 01:03:19 2134810377
>>2134802
> а при чем тут точка входа, если речь даже просто о переменных тех же?
Оооо понимаю нахуй, действительно, причем же блять тут точка входа, если у тебя идут импорта. Вот как думаешь, от какого места будут считаться импорты?
> я же не сервер пока что запускаю
А при чем тут нахуй сервер?
Аноним 21/08/21 Суб 01:42:17 2134821378
>>2134788
Не очень понятно, что тебе надо
В корне projectname ты можешь так и импортировать. Если ты хочешь откуда-то из глубины импортировать, изнутри app, то тебе надо добавить папку projectname в путь поиска модулей. Иначе твои приложения не знают, что такой модуль существует.
Аноним 21/08/21 Суб 19:10:04 2135486379
Есть для flask аналог django mptt? У flask mptt плохая документация.
Аноним 21/08/21 Суб 20:41:01 2135587380
>>2124389 (OP)
> Актуальность примерно 2015 года
Есть ли актуальный список литературы для изучения Python
Аноним 21/08/21 Суб 20:47:53 2135595381
>>2135587
После 3.6, это 2017+.
Более раннее надо смотреть, но тоже сойдет.
Аноним 21/08/21 Суб 22:14:11 2135688382
>>2135486
Нахуя?..
flask сам по себе реликт ебаный
Аноним 21/08/21 Суб 22:15:46 2135690383
>>2135595
Стек с того времени очень сильно поменялся. Из базы питона это asyncio и typing, куча сторонних решений вроде pytest, изменившиеся веб-фреймворки. Django тогда был, aiohttp/fastapi не было.

Технологии в целом с того времени заметно поменялись.

Надо новые факи составлять, но всем лень. Мне тоже и лень, и не чувствую в себе экспертности, чтобы вот этим заниматься.
Аноним 21/08/21 Суб 22:16:54 2135692384
>>2135688
Как оказывается, они этой весной поддержали асинхронность. Не вникал правда. Но да, всё равно реликт.
Аноним 21/08/21 Суб 22:24:21 2135695385
>>2135692
Чего блять? Что ты несешь?
Аноним 21/08/21 Суб 22:27:13 2135700386
Аноним 21/08/21 Суб 22:27:22 2135701387
>>2135690
Ну это можно поверху навернуть, да и это не нубские темы.
Аноним 21/08/21 Суб 22:30:52 2135705388
>>2135688
Такой же реликт как джанго. Фастапи рулит, правдап ему нужно время чтобы дозреть.
Аноним 21/08/21 Суб 22:41:02 2135717389
>>2135705
Джанго не реликт
Но кусок говна
Аноним 21/08/21 Суб 22:47:40 2135720390
>>2135700
Поридж спок, почитай сначала про то, какие проблемы порождает асинхронность, прежде, чем пихать ее в каждую щель
Аноним 21/08/21 Суб 22:53:09 2135726391
>>2135720
>какие проблемы порождает асинхронность
Посос, тут все в курсе про падение производительности для синхронных прог из-за накладных расходов на event loop и переключение контекста. Однако это падение редко будет превышать 10-20% для нормальных фреймворков и внезапно блять будет полностью нивелироваться при доступах к внешним ресурсам. А ты и дальше блокируйся на 400 мс при запросах к внешнему апи и на 1000+ мс при тяжелых запросах в базу
Аноним 21/08/21 Суб 22:55:49 2135729392
>>2135726
"пок-пок треды захуярю и все изи!"
А вот тут начнется поэзия нахуй, при доступах к общим ресурсам, локах и с кайфовыми неотлавливаемыми ошибками
Аноним 21/08/21 Суб 22:56:55 2135732393
>>2135726
Пчел, почитай про I/O+CPU bound задачи, асинхронность это не панацея. Если не хочешь, чтобы у тебя пользователь ждал по 10 секунд ответа от сервиса, то выбирай инструмент под задачу
Аноним 21/08/21 Суб 23:35:26 2135758394
>>2135720
Начал с асинхронного фреймворка, никаких подводных. Из различий только слова async и await.
Аноним 21/08/21 Суб 23:49:06 2135762395
>>2135758
Если все что делает твой сервис это агрегирует несколько ответов от других сервисов и складывает это в джсончик, то никаких проблем. Как только добавится CPU нагрузка и блокирующие вычислительные операции на ядре, то через раз будут возникать ситуации, когда между получением реквеста от пользователя и ответом ему будут вклиниваться 5-6 блокирующих CPU bound операций от других запросов. И пользователь будет охуевать от ответов сервиса по 2-3 секунды. asyncio называется asyncIO не просто так
Аноним 21/08/21 Суб 23:56:09 2135766396
>>2135762
Притянуто. Если у тебя настолько ёмкие операции, то скорее всего надо их выносить на отдельные вычислительные процессы-ноды.

Фласк и треды могут быть полезны только в том случае, если у тебя обычное приложение на одного пользователя с cpu-bound операциями, и тебе надо прикрутить к нему веб интерфейс.

Само собой вряд ли разумно под asyncio переделывать всю задачу, смысла нет.
Аноним 21/08/21 Суб 23:57:39 2135767397
Ребят, за плечами всего год опыта написания бэкенда на питоне, есть варик перекатиться в data engineer с обучением внутри компании. Стоит того или продолжить хуярить бэкенд?
Аноним 22/08/21 Вск 00:31:41 2135790398
Для чего кроме веба и машоба/бигдата в основном используют питон?
Аноним 22/08/21 Вск 00:34:49 2135791399
>>2135766
> Притянуто
Да, пиздец притянуто, только у меня на каждом втором проекте такое.
> Если у тебя настолько ёмкие операции
Для того, чтобы пользователь начал охуевать от задержок в 2-3 секунды, достаточно CPU bound операции на 100мс. Какой-нибудь рекомендательный алгоритм или там обрезка изображения с конвертацией под нужный формат.
> скорее всего надо их выносить на отдельные вычислительные процессы-ноды
И как ты с этими процессами собираешься общаться? Будешь запускать на той же машине, чтобы тащить на каждую реплику обработку жсонов в отдельном процессе? Как выстраивать отказоустойчивость будешь?
> Фласк и треды могут быть полезны только в том случае, если у тебя обычное приложение на одного пользователя с cpu-bound операциями, и тебе надо прикрутить к нему веб интерфейс.
Что нахуй значит "на одного пользователя"? Это блять что вообще такое? А если пользователей 10? Станешь использовать асинхронные фреймворки? Окей, вот тебе прилетел реквест, ты отправил запрос к бд и переключился на другую таску. А там БАЦ и CPU bound. Подождите 100мс. А следом еще 8 тасок, где снова БАЦ и CPU bound задача. Подождите еще 800мс. Ну, а теперь можно и свою CPU bound тасочку запустить на 100мс и отправить пользователю. По итогу, ожидание ответа заняло более 1 секунды. А если пользователей 100? А если 200? Там реквесты по таймаутам отваливаться начнут.
Аноним 22/08/21 Вск 00:57:18 2135798400
>>2135791
>Для того, чтобы пользователь начал охуевать от задержок в 2-3 секунды, достаточно CPU bound операции на 100мс.
Это значит что у тебя перегружен процессор вообще, и единственный вариант это как-то разгрузить его.

>>2135791
> Подождите 100мс.
> А если пользователей 100? А если 200?
А откуда ты собираешься брать 20 процессорных секунд? У тебя нет возможности выжать из одного процессора десятикратную производительность.

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

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

Это называется "изобретать свою очередь обработки сообщений", для этого есть готовые решения, конечно. Особенно если тебе надо надёжно.

Особых вариантов и нет. У тебя один управляющий узел, и пул вычислительных процессов-узлов, которые считают cpu-bound задачи.
Аноним 22/08/21 Вск 00:59:07 2135800401
>>2135790
Обработка данных - ETL задачи, какие-то сетевые сервисы и задачи автоматизации, масса инструментов известных для этого сделана на питоне.
Аноним 22/08/21 Вск 01:21:53 2135807402
Ух, после завтра начинается стажировка в компании, учил язык пол года, практиковался в запросах на SQL и немного джанго с aiogram. Страшновато, если честно, скорее всего на этой стажировке я не один и будет война за место.
Аноним 22/08/21 Вск 01:28:51 2135810403
>>2135798
>В случае asyncio у тебя есть возможность вызвать какую-то функцию в отдельном треде, или запустить отдельный поток.
Блять щито?)
Аноним 22/08/21 Вск 01:33:20 2135816404
>>2135791
>CPU bound
Взял и без задней мысли запустил в другом thread
Всякие декораторы из асинхронных либ по типу run_sync_as_async это и делают
Аноним 22/08/21 Вск 01:55:43 2135829405
>>2135807
Попробуй относиться иначе. Похуй на место в компании, всё равно на невыгодных позициях. Твоя задача прокачать технические скиллы, чтобы разобраться, как что работает и понять, как что делать.

Аноним 22/08/21 Вск 01:58:58 2135831406
Аноним 22/08/21 Вск 02:01:29 2135832407
a = float(input('Введите а: '))
b = float(input('Введите b: '))
c = float(input('Введите c: '))

def f(a,b,c):
return b2-4ac

d = f(a,b,c)

if d>0:
def f1(a,b,d):
return (-b+d
(0.5))/(2a)
def f2(a,b,d):
return (-b-d(0.5))/(2
a)
x1 = f1(a,b,d)
x2 = f2(a,b,d)
print(x1, x2)
elif d==0:
def f3(a,b,d):
return (-((b)/(2a)))
x1_2 = f3(a,b,d)
print(x1_2)
else:
def f5(a,b,d):
return (-b+d
(0.5))/(2a)
def f6(a,b,d):
return (-b-d(0.5))/(2*a)

x3 = f5(a,b,d)
x4 = f6(a,b,d)
print(x3, x4)

Даю на вход
1
-3
8.5
Выдает (1.5000000000000002+2.5j) (1.4999999999999998-2.5j)
А должно (1.5+2.5j) (1.5-2.5j)
Как загуглить это гавно или в чем проблема
Костыль с округлением ставить не хочу и не ебу как
Аноним 22/08/21 Вск 02:02:56 2135833408
>>2135832
Потрудись хоть немного форматировать свое говно. Юзай ideone
Это дерьмо никто и читать не будет
Аноним 22/08/21 Вск 02:25:18 2135835409
Аноним 22/08/21 Вск 02:38:06 2135837410
Аноним 22/08/21 Вск 04:15:56 2135850411
>>2135798
> Это значит что у тебя перегружен процессор вообще, и единственный вариант это как-то разгрузить его.
Нет, тебе достаточно сделать так, чтобы CPU операции выполнялись в том порядке, в каком они поступили.
> откуда ты собираешься брать 20 процессорных секунд? У тебя нет возможности выжать из одного процессора десятикратную производительность.
На одном ядре действительно нету. А вот на нескольких вполне себе есть.
> В случае asyncio у тебя есть возможность вызвать какую-то функцию в отдельном треде, или запустить отдельный поток.
Запускаешь в отдельном потоке
@
Вспоминаешь про гил
А если вне контекста питона, то асинхронный сервис может держать на одном ядре 500-700 рпс, при этом вычислительные мощности могут держать только 10. Тебе не кажется странным тащить асинхронный движок в каждый сервис, который будет не пойми зачем крутить луп, если на 50 ядер тебе нужен только один сервис для приема сообщений?
> Если тебе надо обрезать изображение, то тупо отправляешь задание в виде JSON в другой процесс и ждёшь ответа
Ты кажется начинаешь понимать зачем нужны асинхронные сервера, а зачем синхронные. Так, а теперь сделай следующий логический шаг и подумай, на чем будет написан сервис, обрезающий изображения?
> Это называется "изобретать свою очередь обработки сообщений"
Очередь сообщений нужна далеко не везде, И уж тем более с картинками ты ебанешься брокера использовать, чтобы эту картинку туда-сюда гонять.
> Особенно если тебе надо надёжно
Если тебе надо надежно, то к брокеру сообщений нужно прикручивать реплики и делать синхронную запись. То есть, брать кафку или костылить свое, если она не подходит. Сами по себе брокеры, конечно, понадежнее http, но то сорта говна.
> Особых вариантов и нет. У тебя один управляющий узел, и пул вычислительных процессов-узлов, которые считают cpu-bound задачи.
Ну это ты пока свой мвп на коленочке делаешь, то да, сойдет, а как дойдешь до нормальных продакшн решений с высокой отказоустойчивостью, то за такие решения тебя по рукам бить начнут. Начиная от отслеживания процессов(охуительная тема, базарю), заканчивая тем, что у тебя от каждой реплики 1 ядро автоматом откусывается просто по фану.
>>2135816
> Взял и без задней мысли запустил в другом thread
А потом ты жидко пукнув вспоминаешь про гил. И да,
> run_sync_as_async
все так же блокирует поток выполнения.
Аноним 22/08/21 Вск 09:07:59 2135910412
>>2135766
>Притянуто. Если у тебя там настолько ёмкие операции, то скорее всего надо их на отдельные вычислительные процессы-ноды.

>Фласк и треды могут быть полезны только в том случае, если у тебя обычном приложении на одного пользователя с cpu-bound операциями, и тебе куда надо прикрутить к нему веб интерфейс.

>Само собой вряд ли разумно под asyncio переделывать всю задачу, смысла нет.

Как вы заебали своей пацанской хуйней
Аноним 22/08/21 Вск 09:12:53 2135911413
>>2135832
floating point numbers гугли, они во всех языках одинаковые проблемы имеют.
Аноним 22/08/21 Вск 10:23:43 2135967414
EH-toPTSJHs.jpg 46Кб, 487x600
487x600
>>2135911
Ооо спасибо теперь знаю как искать решения
С меня
Аноним 22/08/21 Вск 10:30:26 2135969415
Если я нашел прилку на джанго типо туду, как ее поставить себе? Типо попользоваться самому. Если там нету зависимостей. Надо просто накатить джангу в виртенв, и там сделать миграции, да? Работать будет? Некоторые разрабы пишут как устанавливать. Этот нет.
Аноним 22/08/21 Вск 10:54:15 2135986416
>>2135850
Асинхронные фреймворки, кстати, поддерживают и синхронную обработку.
Аноним 22/08/21 Вск 11:11:00 2135998417
>>2135850
>гил
Каким образом гил будет способствовать блокированию потока выполнения?

>все так же блокирует поток выполнения
Ты понимаешь вообще что такое thread? Там контекст каждые N мкс переключается сам, где там блокирование будет?
Аноним 22/08/21 Вск 11:33:37 2136017418
>>2135998
>Каким образом гил будет способствовать блокированию потока выполнения?
Ты понимаешь что в рамках одного процесса питона треды не могут выполняться параллельно, а лишь только конкурентно и чтобы отпустить gil придется писать обертки на других языках? На нативном питоне у тебя будут охуительные просадки по производительности.
мимо другой чел
Аноним 22/08/21 Вск 11:39:21 2136022419
>>2136017
Епт мы говорим о блокировании а не о параллельности. Ало нахуй
Аноним 22/08/21 Вск 11:40:30 2136023420
>>2135969
> Если там нету зависимостей
Анус ставишь, что нет?
джанга это не зависимость, да?
Аноним 22/08/21 Вск 11:41:09 2136024421
image.png 915Кб, 900x900
900x900
Заблокировал ваши параллели. И что вы мне сделаете?
Аноним 22/08/21 Вск 11:41:42 2136025422
>>2136022
Что asyncio что треды для cpu задач не подходят, тут либо кидать задачи в брокер, либо писать обертки, либо брать другой язык и писать на нем.
Аноним 22/08/21 Вск 12:44:26 2136180423
>>2136023
Установил, все норм, да.
Аноним 22/08/21 Вск 13:49:01 2136285424
>>2136180
Потому что ты засрал свой глобальный интерпретатор
Аноним 22/08/21 Вск 15:35:55 2136460425
Ребята, прохожу стажировку, дали копаться в чужом коде и оптимизировать его, плюс немного убрать баги, задача вроде легкая, но я нихуя не понимаю, я вижу что хуево работать, но что делать я не знаю, после каждого действия все валится, я уже в тильте сижу, 6 часов потратил и за это время я убрал только переменные которые нигде в коде не используются и какую-то не нужную хуйню, может и нужную, но вроде нет.

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

Аноним 22/08/21 Вск 15:38:55 2136468426
>>2136460
> дали копаться в чужом коде и оптимизировать его
Что за проект-то? Сколько строк кода/модулей?
Аноним 22/08/21 Вск 15:40:53 2136474427
>>2136460
Если ты нихуя не умеешь, то что ты там можешь улучшить?
Аноним 22/08/21 Вск 15:45:44 2136479428
Аноним 22/08/21 Вск 15:46:26 2136481429
>>2136474
Я не говорил что нихуя не умею, просто тяжело понять что где и как.
Аноним 22/08/21 Вск 16:38:27 2136546430
>>2135767
мне так и не ответил никто. неужели в треде нет data engineer'ов?
Аноним 22/08/21 Вск 17:14:46 2136607431
Стикер 572Кб, 375x375
375x375
Аноним 22/08/21 Вск 17:55:31 2136675432
>>2136460
>задача вроде легкая, но я нихуя не понимаю
о боже

> я вижу что хуево работать, но что делать я не знаю
о боже праведный!

> после каждого действия все валится
Добро пожаловать в мир реальной разработки

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

Ты реально считаешь, что вот тебе, зелёному и без опыта, можно дать рабочий сложный код, который скорее всего долго делали, и ты сможешь быстро его улучшить? Если так, то у меня плохие новости для тебя и для тех, кто взял тебя к себе работать.
Аноним 22/08/21 Вск 18:06:28 2136699433
>>2130582
Специфика списков, которые продолжают ссылаются на один и тот же объект: после изменения только одного из них, изменяется и второй. Свойство некопируемости при присвоении характерно только для списков, но не кортежей, то есть кортежи здесь подобны не спискам, а строкам или численным переменным.
Аноним 22/08/21 Вск 18:12:56 2136707434
image.png 5Кб, 235x211
235x211
Аноним 22/08/21 Вск 18:36:58 2136742435
https://stackoverflow.com/questions/43241221/how-can-i-wrap-a-synchronous-function-in-an-async-coroutine
Вот способ запуска синхронной блокирующей функции в асинхронном коде (по факту просто внутри нового треда). А как запустить асинхронную функцию в синхронном коде? То есть как закинуть асинхронный таск, чтобы тот пошел выполняться и при исполнении выполнил некий переданный ему коллбек, при этом не блокируя main-loop ?
Аноним 22/08/21 Вск 18:51:34 2136752436
>>2136460
а что в компаниях код никак не документируют?
зелень
Аноним 22/08/21 Вск 18:55:56 2136756437
>>2136742
Функции asyncio.create_task/loop.create_task синхронные, то есть ты из синхронного кода можешь запустить задачу.

Из синхронного кода ты можешь кормить очередь с помощью put_nowait.

Ты не можешь делать await в синхронном коде.

К Future/Task ты можешь добавить синхронный коллбэк, который будет вызван, когда они исполнятся.
То есть
task = asyncio.create_task(coroutine) <-- синхронный вызов
task.add_done_callback(foo) <-- синхронный вызов, коллбэк тоже обычная функция.

Сложнее будет заблокироваться и ждать, по идее можно сделать через очереди, ты создаёшь queue.Queue() и ждёшь данные оттуда. А данные туда помещаешь в коллбэке.

Надо аккуратно смотреть, что там threadsafe, а что нет, если ты в многопоточке делаешь. Asyncio в целом не threadsafe.
Аноним 22/08/21 Вск 19:02:17 2136760438
>>2136756
>ты создаёшь queue.Queue() и ждёшь данные оттуда.
Хотя я сейчас торможу и надо думать, что будет, если эвент луп работает в другом треде.

Внутри одного треда эти паттерны очевидно не работают, эвент луп не получит управления, пока ты сам ему не разрешишь через await.
Насколько помню, ты в каждом треде можешь запустить свой эвент луп, но какие-то нюансы есть. Я это пробовал давно когда-то, даже работало, но реально не использовал, чисто для игр.
Аноним 22/08/21 Вск 19:18:11 2136776439
>>2136756
В жопаскрипте можно сирануть промисом, передав ему коллбек и код пойдет исполняться дальше, не ожидая исполнения этого промиса. То же самое и с setTimeout. Я про это говорил
(похоже тоже придется тредами серить)
Аноним 22/08/21 Вск 19:18:30 2136777440
>>2124389 (OP)
Какие мысли насчет Nim? Годнота или скоро сдохнет?
Аноним 22/08/21 Вск 19:24:22 2136782441
>>2135986
Так дело не в том поддерживают или нет, а в том, что у тебя крутится луп просто так.
>>2135998
> Каким образом гил будет способствовать блокированию потока выполнения?
Тем, что ты не можешь запустить 5 cpu задач параллельно. Точнее, конечно можешь, только они будут выполняться дольше, чем 10 задач последовательно.
> Ты понимаешь вообще что такое thread? Там контекст каждые N мкс переключается сам, где там блокирование будет?
Возьми и попробуй запустить, что как маленький. И посмотри на время выполнения
Аноним 22/08/21 Вск 19:26:50 2136784442
>>2136776
В JS когда ты промис делаешь или setTimeout, ты не можешь дождаться результата в этой ветке.

То есть сначала твоя ветвь исполнения доходит до конца, финального return, ветвь умрёт, и только потом будет вызвана новая функция. Это если без await.

Это всё потому, что в JS поддержка эвент луп в коробке, это основа языка с самого начала. Но там нет тредов.

Ты можешь реализовать аналогичное поведение в питоне, просто делай create_task или call_soon.

С совмещением тредов и event loop много нюансов.
Аноним 22/08/21 Вск 19:28:01 2136785443
>>2136784
>await
да await это вообще сахар, что в питоне что в жс

> Но там нет тредов
(пиздеж)
Аноним 22/08/21 Вск 19:33:07 2136790444
>>2136782
>Тем, что ты не можешь запустить 5 cpu задач параллельно. Точнее, конечно можешь, только они будут выполняться дольше, чем 10 задач последовательно.
Одинаково из-за GIL. На тредах ты в каком-нибудь PIL можешь получить рост за счёт того, что там реально работа делается внутри Си-функций, не блокирующих GIL. Соответственно ты больше ядер процессора используешь.

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

Оверхед от асинкио минимальный, меньше, чем оверхед от тредов. То есть когда тебе надо примитивный JSON выплюнуть, не требующий обращения к БД и т.п., то асинхронность не нужна и на синхронных последовательных вызовах можно больше производительность получить. Только делает ли твой сервер при этом что-то реально полезное?
Аноним 22/08/21 Вск 19:34:47 2136792445
>>2136785
>да await это вообще сахар, что в питоне что в жс
Нет конечно, в JS принципиально меняет логику исполнения программы. Ты не сможешь просто так переписать код с await на код без await.

Аноним 22/08/21 Вск 19:35:25 2136794446
>>2136782
>Тем, что ты не можешь запустить 5 cpu задач параллельно
Ты вообще не понимаешь что значит конкурентность и параллельность
Никому и не нужно выполнять 5 cpu задач параллельно в питоне (а если нужно то они проебались с ЯПом). Их через треды запускают чтоб блин обычные задачи не блочились из-за них
Аноним 22/08/21 Вск 19:41:37 2136800447
>>2136792
Пчел, иди кури мануал.
Изначально в жс асинхронка работала на коллбеках через макротаски, потом чтоб вылечить это говно запилили промисы, а уже поверх промисов ебанули async/await. Все что делает async это превращает синхронную функцию в функцию возвращающую промис, а await резолвит промис вот и все в пистоне async превращает функцию в асинхронный генератор а await "резолвит" результат
Любой код через await переписывается через Promise.then().catch()
Аноним 22/08/21 Вск 19:47:08 2136807448
>>2136800
Просто вот перепиши на промисы без await такую функцию

async function func() {
let res = 0;
for (let i = 0; i < 100; i ++) {
____const value_1 = await foo_1(i);
____const value_2 = await foo_2(i);
____if (value_2 > value_1) {
________res += value_2
____} else {
________res += value_1 * i;
____}
}
return res;
}
Ты просто прочитал в каком-то индусском мануале про синтаксический сахар, а сам не понял. Нет, ни разу не сахар.
Аноним 22/08/21 Вск 20:01:49 2136827449
image.png 21Кб, 382x425
382x425
Аноним 22/08/21 Вск 20:04:03 2136829450
Аноним 22/08/21 Вск 20:12:17 2136842451
>>2136829
А разве строка (9) во всех 100 итерациях будет вызвана не до того, как произойдёт присвоение в (7) и (8)?
В (7) и (8) ты собираешь очередь на исполнения тел промисов, которые вызваны уже потом будут.
Аноним 22/08/21 Вск 20:12:53 2136844452
Аноним 22/08/21 Вск 20:30:21 2136858453
Screenshot from[...].png 193Кб, 1908x1072
1908x1072
Вот какое решение предлагает бабель, упрощённый вариант задачи. На скрине.

И проще нельзя. Решение >>2136827 на первый взгляд смотрится рабочим, то это решение из подхода callback hell, как раньше делали. Точно так же можно без прописов, просто через setTimeout.

await невозможно реализовать просто. В питоне под await лежит активное использование механизма генераторов yield from, в версии 3.4 даже они явно использовались, но в 3.5 от этого отказались.

С помощью цепочки yield from реализовывается механизм event loop. Аналогично, насколько я понимаю, и в JS.

Разница в логике промисов и await принципиальная. Когда делаешь await, то тем самым у тебя несколько веток кода одновременно работают, попеременно переключаюсь друг в друга. Если делать коллбэки или промисы, которые тоже коллбеки, то тело коллбэка будет вызвано только после того, как верта, откуда был вызов, завершится. В одном случае параллельное исполнение, в другом случае последовательное, просто мы передаём контекст в последующие вызовы.
Аноним 22/08/21 Вск 20:51:24 2136870454
>>2136858

> И проще нельзя. Решение >>2136827 на первый взгляд смотрится рабочим, то это решение из подхода callback hell, как раньше делали. Точно так же можно без прописов, просто через setTimeout.

Так, падажи. Т.е. написать "сложный" код, который реализует ту же самую логику, но без async/await можно? Тогда async/await это и есть сахар, которые помогает писать код просто.

> Разница в логике промисов и await принципиальная. Когда делаешь await, то тем самым у тебя несколько веток кода одновременно работают, попеременно переключаюсь друг в друга. Если делать коллбэки или промисы, которые тоже коллбеки, то тело коллбэка будет вызвано только после того, как верта, откуда был вызов, завершится. В одном случае параллельное исполнение, в другом случае последовательное, просто мы передаём контекст в последующие вызовы.

Так, падажи №2. await в функции равносилен возврату из неё и ожиданию результата промиса. Вариант на чистых промисах тоже делает return там где находится await. В плане паралельности тут никакой разницы.

Аноним 22/08/21 Вск 21:35:45 2136917455
>>2136870
>Т.е. написать "сложный" код, который реализует ту же самую логику, но без async/await можно? Тогда async/await это и есть сахар, которые помогает писать код просто.
Нельзя, ты меняешь логику программы. Если сваливаться в демогогию, то любой код можно на машине Тьюринга реализовать.

Решение >>2136827 меняет алгоритм решения, тут вообще переход от циклов к функциональному рекурсивному стилю. Это ни разу не сахар, это другое решение просто. Но да, иначе решать можно. А вариант >>2136829 мне кажется нерабочим в принципе.

> await в функции равносилен возврату из неё и ожиданию результата промиса.
Нет, await полностью меняет рантайм. Сахар это объявление функции как async. Тогда ты пишешь async function, просто возвращаемое значение оборачивается в промис.

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

Без await ты не можешь получить значение промиса, никак. Потому что тело промиса запустится только после того, как твоя ветвь исполнения завершит работу и умрёт. Потому что очередь обработки.
Аноним 22/08/21 Вск 22:15:23 2136962456
10.05Cat2.jpg 98Кб, 673x427
673x427
Эх, надо лезть в эти асинки, чтобы стать асинкобогом, в треде выступать и ставить всех на место.
Но лень.
Аноним 22/08/21 Вск 22:20:24 2136966457
>>2136962
Лучше про ML поспорь о чём-нибудь. А то я ничего не знаю про это. Но люблю ставить на место. Будет базар, будет повод изучить.
Аноним 23/08/21 Пнд 13:53:24 2137452458
Вот мне интересно, как лучше заполнять массивы?

Если я пишу цикл, в котором append делаю, то мне так наглядней и можно сказать привычней писать

А когда делаю это в одну строку mass = [item for item in itemMas]
то так менее привычно и иногда, если более сложная конструкиця, можно подзапутаться.

Различаются ли эти варианты чем-нибудь?
Пока что если простое заполнение - пишу в одну строку, если более сложное, то расписываю фор и апендю.
Аноним 23/08/21 Пнд 13:57:05 2137457459
>>2137452
Есть очевидная разница.
Компрехеншен генирирует новый список из чего-либо, это суть map.
Цикл это просто повторящиейся действия, они могут что угодно делать.
Аноним 23/08/21 Пнд 14:11:15 2137491460
>>2137457
>Компрехеншен
Cпасибо, почитал про это и получил все ответы. А еще слово крутое.
Аноним 23/08/21 Пнд 14:33:41 2137525461
>>2137452
>А когда делаю это в одну строку mass = [item for item in itemMas]
Так тебе нужен какой-то исходник(itemMas), без него ты не сможешь список создать.

В цикле тебе не нужны сторонние объекты, ты заполняешь массив по своему усмотрению.
Аноним 23/08/21 Пнд 14:42:09 2137532462
>>2137525
m = [formula(x) for x in range(1, 10)]
Аноним 23/08/21 Пнд 15:49:27 2137621463
>>2136917
>Без await ты не можешь получить значение промиса, никак
Все с тобой ясно, наркоман, иди на мдн открой описание промисов. То, что выше пример безе await это, конечно, другое, не считается и вообще другая логика, ага.
Аноним 23/08/21 Пнд 15:57:18 2137633464
В питоне можно сделать интерфейс в тайп хинтинге как в ГО?
Условно, есть либа Foo, которую сейчас изменять нельзя, в ней есть некоторый класс Bar. Я хочу написать другой класс-интерфейс, в котором описывались бы некоторые методы, который реализует класс Bar, но при этом не наследует этот интерфейс и что бы pycharm при этом не ругался на это, если бы я указал этот интерфейс в аннотации, но в функцию/метод закинул бы Bar.
Аноним 23/08/21 Пнд 15:59:22 2137637465
Двач, почитал и посмотрел несколько лекций по питону и вчера решился на свою первую маленькую программу. Что можешь сказать про код? Целый вечер его писал, но как же кайфово, когда пытаешься, делаешь ошибки и оно в конце концов начинает работать :3
https://pastebin.com/U3Js4Rb3
Аноним 23/08/21 Пнд 16:03:10 2137642466
1316522332001.jpg 52Кб, 457x589
457x589
Анон, как сгруппировать список таким образом, чтобы нужные индексы элементов были вместе?
Например, есть список:
[1,1,2,3,1,5,1,4,1,2,2,6,1,5...]
Надо последовательно сгруппировать индексы элементов, если сумма элементов меньше или равна, например, 10.
Т.е. получить что-то вроде
[[0,1,2,3,4],[5,6,7],[8,9,10],[11,12],[13,...]...]
Аноним 23/08/21 Пнд 16:06:21 2137645467
>>2137637
Молодец.
Вначале привыкни к синтаксису - поделай задачки как в школе на алгаритмы.
Когда привыкнешь и у тебя есть какая-либо задача - вбиваешь ее в гугл/ютаб и смотришь есть ли решения или похожие решения.
Адаптируешь под свои нужны.
Если решений нет, гуглишь схожие темы/стаки оверфлоу/хабры или в конечном счете документацию.

На первых парах этого достаточно, а дальше ты сам поймешь уже, что именно тебе нужно подтянуть/изучить.
Аноним 23/08/21 Пнд 16:11:37 2137649468
>>2137637
Слишком мелкоскрипт, нечего обсуждать.
Навскидку, перемудрил с функциями. Достаточно гет, который вернет суп, и парс. Ну и извлекать лучше в словарь с говорящими ключами, а не в лист. Плюс забирать какой-то айди для проверки, новая ли это запись.
Аноним 23/08/21 Пнд 16:11:57 2137650469
image.png 8Кб, 468x186
468x186
Аноним 23/08/21 Пнд 16:31:19 2137677470
Хули этот пистон такой уебанский?
Нужно переместить и перезаписать папку folder_a/folder_b/ в folder_a/
Пробую через shutil
Если folder_a/folder_b уже существует, то эта хуйня перемещает в folder_b/ и получается folder_a/folder_b/folder_b.

Пиздец просто.
Аноним 23/08/21 Пнд 16:37:07 2137684471
>>2137650
Спасибо.
Но, кажется, как только условие выполнится, все последующие индексы в свои отдельные подсписки добавляются.
[[0, 1, 2, 3, 4], [5], [6], [7], [8], [9], [10], [11], [12], [13]]
Аноним 23/08/21 Пнд 16:40:14 2137689472
>>2137684
Тебе кажется. Внимательнее скопируй седьмую строку.
Аноним 23/08/21 Пнд 16:51:47 2137699473
Аноним 23/08/21 Пнд 17:04:27 2137714474
1.png 169Кб, 2048x668
2048x668
Смотрите какой "хуйне" на курсах учат. Нужно было создать словарь из строки в одну строчку (но я еще в функцию обернул). Как бы никто не мешает решать через циклы и так далее, но в курсе все же предлагают решать все именно в одну строку.
Аноним 23/08/21 Пнд 17:08:24 2137719475
>>2137714
Что-то слишком многословно, можно проще.
Аноним 23/08/21 Пнд 17:10:57 2137724476
>>2137714
Это же хуйня, нигде не нужно кроме того, что бы на двачах выебываться. На работе никто так делать не будет.
Аноним 23/08/21 Пнд 17:11:55 2137728477
>>2137724
Или на курсах, которые учат бест практиес
Аноним 23/08/21 Пнд 17:12:16 2137730478
>>2137724
Делать словари компрехеншеном? Мне казалось, постоянно так делают.
Аноним 23/08/21 Пнд 17:14:18 2137732479
>>2137730
Больше 90, ну максимум 120 символов в строке никто не делает, это плохо читается, вертикально лучше восприятие идёт чем горизонтально.
Аноним 23/08/21 Пнд 17:14:23 2137733480
>>2137730
Что такое компрехеншен?
Аноним 23/08/21 Пнд 17:19:04 2137739481
db955e87403e87f[...].jpg 97Кб, 968x544
968x544
image.png 51Кб, 1348x766
1348x766
Аноним 23/08/21 Пнд 17:20:28 2137741482
>>2137739
Это вложенный генератор?
Аноним 23/08/21 Пнд 17:21:42 2137742483
>>2137732
Так там всё в скобочках, можно спокойно расставлять переносы, чтобы K P A C U B O было
Аноним 23/08/21 Пнд 17:21:44 2137743484
>>2137532
У него другое в примере.
Аноним 23/08/21 Пнд 17:22:45 2137744485
>>2137739
Хотел так сделать, но яндекс текст не распознал, а перепечатывать мне было лень.
Аноним 23/08/21 Пнд 17:23:07 2137746486
>>2137742
С переносами выглядит дико кринжево тоже
типа
)
))
(
(
(
Аноним 23/08/21 Пнд 17:23:13 2137747487
>>2137741
Нет, просто список.
Аноним 23/08/21 Пнд 17:25:15 2137750488
>>2137746
Я про внешние фигурные тоже. Прямо перед каждым for переходишь на новую строчку, и выглядит нормально.
Аноним 23/08/21 Пнд 17:36:17 2137764489
image.png 22Кб, 810x377
810x377
bel-768x591.jpg 26Кб, 768x591
768x591
Я даже пижже придумал.
Аноним 23/08/21 Пнд 18:19:26 2137840490
Кто шарит за ебучий Django, особенно дженерик классы, напишите, пожалуйста, а то я здесь вскроюсь скоро

@fluffy_cat_with_a_shotgun
Аноним 23/08/21 Пнд 18:21:32 2137851491
>>2137840
Так а нах тебе вскрываться, если у тебя дробаш есть?
Аноним 23/08/21 Пнд 20:00:24 2138020492
Анон, напомни, пожалуйста, если идти по циклу, извлекая отдновременно элемент и следующий элемент, то при достижении последнего элемента в списке будет ошибка (потому что элемент+1 не существует) или питон обрабатывает подобное?
Аноним 23/08/21 Пнд 20:06:04 2138024493
>>2138020
Зачем это учитывать?
Иди до элемент-1, или сделай zip с сдивгом на 1.
Аноним 23/08/21 Пнд 20:10:43 2138028494
Можно ли с джангой реализовать динамическую подгрузку данных? У меня нет моделей, данные тяну по апи из OLAP, в пандасе их обрабатываю под нужны, генерю хтмл и отдаю в браузер. Иногда там бывают таблицы по паре тыщ строк, хочу чтоб сначала грузилось 100, а остальное по мере прокрутки.
Аноним 23/08/21 Пнд 20:18:24 2138036495
>>2138020
Ну так добавь except IndexError: pass
Аноним 23/08/21 Пнд 22:56:40 2138176496
>>2138028
Отдавай по ресту с пагинацией.
Аноним 24/08/21 Втр 02:00:46 2138250497
Всем привет.Нужно сделать сайт на Django.Сайт про походы.На главной странице-интерактивный календарь.Даты ближайших походов выделены,цветом,например.Когда пользователь наводит курсор на такую дату,выпадает небольшое окно с информацией о походе.Если пользователь нажимает на дату,его перенаправляет на страницу похода.Я имею общее представление о маршрутах,представлениях,базе данных,html и css,но я не понимаю как сделать такой календарь.Буду благодарен,если кто-нибудь подскажет,хотя бы в двух словах,ну,или укажет,что именно из документации Django мне нужно изучить.Заранее спасибо.

Аноним 24/08/21 Втр 02:14:16 2138252498
>>2138250
В чем проблема конкретно?
Календарь делается на ЖСе. В БД хранишь даты походов и инфу о нем.
Аноним 24/08/21 Втр 03:15:31 2138268499
>>2138252
Всё,кажется,понял.Спасибо тебе большое.
Аноним 24/08/21 Втр 09:21:22 2138328500
Если мы берем функцию len() (или любуюдругую) в цикле, то она при каждой итерации вычисляется заново или питон ее выносит условия в отдельную ячейку?

Например,
while x < len(z):
Аноним 24/08/21 Втр 09:37:45 2138338501
>>2138328
Каждый раз вычисляется заново.
Аноним 24/08/21 Втр 09:48:58 2138346502
>>2138338
То есть, если условие не изменяется в процессе, то рациональнее вывести его в отдельную переменную?
Аноним 24/08/21 Втр 09:55:09 2138350503
>>2138346
Если оно у тебя не изменяется, то как ты из цикла выйдешь? Или ты про что-то другое?
Аноним 24/08/21 Втр 09:55:18 2138351504
Как создаются элементы на главной странице? Например, в интернет магазине есть товары на главной странице, как их туда добавляют? Отдельная таблица для главной страницы? Пускай она для всех пользователей будет одинакова.
Аноним 24/08/21 Втр 09:57:01 2138352505
>>2138350
Неправильно сформулировал. Не условия,а одна из его частей. В данном случае len(z). Лучше его определить в переменную y и само условия записать как x < y.
Аноним 24/08/21 Втр 10:01:51 2138356506
>>2138352
Если оно не изменяется в процессе цикла то лучше. Но в случае с len это не нужно, так как для стандартных типов оно константное. Питон записывает его в отдельную ячейку в памяти для каждого такого объекта и изменяет ее когда нужно.
Аноним 24/08/21 Втр 10:11:12 2138357507
>>2138351
Зачем тебе отдельная? Сделай выборку из существующих. На какие параметры завязываться сам думай. Можешь по цене выдавать ,количеству просмотров и тд.
Аноним 24/08/21 Втр 10:14:57 2138362508
Аноним 24/08/21 Втр 10:59:53 2138449509
>>2138352
Это не имеет смысла, ты будешь дрочить такие микрооптимизации, а насерешь большую кучу уровнем повыше. Расслабься.
Аноним 24/08/21 Втр 12:00:41 2138515510
>>2138449
Это зависит от того, насколько тяжелая там будет операция, вполне может быть, что там лишние 500 мс будут высчитываться каждый раз в определенных случаях
Аноним 24/08/21 Втр 12:17:17 2138528511
>>2138515
Такие тяжелые операции в основном влияют на управление циклом, так что один раз вычислить не вариант.
Аноним 24/08/21 Втр 12:23:06 2138532512
Метод оптимального пассивного поиска:
https://pastebin.com/kN0VXm3B

Что можно исправить?
Вообще результат выдает верный, но мне кажется, что написано криво и сам алгоритм не верный.
Или по алгоритму я и должен в конце получать ДВА значения и сравнивать между собой? Тем более вне цикла!
Аноним 24/08/21 Втр 12:32:26 2138546513
>>2138528
Это зависит исключительно от конкретной реализации, может влияют, а может нет
Аноним 24/08/21 Втр 12:34:47 2138549514
Если мы берём срез за срезом от строки, или удаляем её часть за частью, можно ли как-то сохранить индексацию оригинальной строки?
Аноним 24/08/21 Втр 12:35:55 2138551515
>>2138549
Вначале создатть переменную oldStroka, которую не будешь срезать?
Аноним 24/08/21 Втр 12:41:37 2138560516
>>2138549
От конца до начала идти.
Аноним 24/08/21 Втр 12:41:49 2138561517
>>2138551
А смысл?
Сопоставлять куски с оригинальной строкой? А если они несколько раз встречаются?
Аноним 24/08/21 Втр 12:47:17 2138572518
>>2138561
Сделать словарь с элементами их индексами?
Аноним 24/08/21 Втр 12:59:00 2138590519
>>2138572
Грубо говоря, я ищу подстроки в строке - т.е. мне нужны индексы. Но поскольку 1 подстрока в строке может встречаться N раз, а мне нужны только самые первые, есть идея после нахождения подстроки, просто срезать кусок и искать что нужно дальше. Но индексы в таком случае будут новые.
Можно попробовать вот так >>2138560
Или брать верхний индекс найденной подстроки "e", делать срез, а к индексам новым прибавлять "e".
Аноним 24/08/21 Втр 13:06:58 2138598520
Раньше работал с джангой 1.11/ 2.1.
Сейчас что-то везде стали хотеть её, а я думал она нахуй умерла. Есть где гайды быстро посмотреть что поменялось и в целом освежить знания? Только не надо официальный туториал или док, они пиздец какие водянистые. Просто без примеров короткое описание
Аноним 24/08/21 Втр 13:08:46 2138601521
image.png 21Кб, 511x335
511x335
Аноним 24/08/21 Втр 13:15:40 2138612522
Аноним 24/08/21 Втр 14:35:05 2138715523
Уважаемые, какие минимальные требования (кроме знания сабжа) необходимы, чтобы устроиться на работу?
Аноним 24/08/21 Втр 14:40:46 2138722524
Аноним 24/08/21 Втр 14:41:56 2138723525
Никаких. На работу даже без умения "hello world" писать устраиваются.
Аноним 24/08/21 Втр 14:46:32 2138728526
>>2138715
Вышка инж. специальности. Опыт работы от 1 года.
Аноним 24/08/21 Втр 15:02:50 2138745527
>>2138532
Алгоритм формально верный, но в такой реализации малоосмысленный. Если N у тебя настолько мало, что можно последовательно вычислить значения f(x) на всех выбранных точках интервала, как ты это делаешь, определяя dotYmass, то к концу вычислений минимум уже у тебя в руках:

https://ideone.com/xYGkI8

Соль метода в том, чтобы вычислять f(x) только по мере надобности и в определенных точках (в точках dotXmass[c], dotXmass[d] в твоих обозначениях). К тому же, в конструкциях типа dotXmass = dotXmass[a:b], dotYmass = dotYmass[a:b] у тебя каждый раз тратится время на инициализацию нового среза.

Аноним 24/08/21 Втр 17:38:49 2138881528
Поизучал джанго. Самая сложная штука в дж это мтв ака мвс. Посмотрел чужие гиты проекты там, больше всего кода в этих контроллерах. Так вот. Если с cbf я еще разобрался, то почему то cbv кажется сложным. Хотя ооп знаю. Говорят что юзать cbv проще и читабельней. Подскажите где можно почитать про cbv, может есть читы или шпаргалки по теме, про оф доки знаю. Пытаюсь вот видео на ютабе смотреть для понимания дзена вьюшек на классах.
Аноним 18/10/21 Пнд 11:40:38 2186552529
image.png 13Кб, 227x223
227x223
Хочу сделать обёртку для функции requests.post которая передаёт все аргументы но возвращает объект json (если есть конечно)
Проблема в том что post принимает как именованные аргументы так и нет
requests.post(url = 'https://google.com') тоже самое что и
requests.post('https://google.com')

Моя обёртка (1)
ЭТА ХУЙНЯ ПОЛНАЯ, сам понимаю
Подскажи анон, как мне адекватно передавать аргументы из функции обёртки в функцию конфетку?
Аноним 18/10/21 Пнд 14:39:34 2186727530
image.png 4Кб, 336x55
336x55
Аноним 21/10/21 Чтв 15:39:19 2189478531
понимаю чо это не стак оверфлоу, но...
юзаю
a if a else b
есть ли способ покороче?
Аноним 21/10/21 Чтв 16:50:57 2189544532
>>2189478
Напиши функцию
get(a=None, b=None):
value = globals().get(a, b)
return value if value else b
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов