Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: — А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. Исходник: https://dumpz.org/bASGKD8cCFDf
>>2151353 У тебя синдром дефицита внимания и гипеактивность. Ты не разобрался в аргументах видео и того, что тут говорили, а сразу постить сюда пытаешься.
> File "/home/<anon>/demo.py", line 5 > print("World") > ^ >IndentationError: unindent does not match any outer indentation level
Для питона и yaml проблема имеет особое значение, потому что табы и пробелы несовместимы между собой. Ещё особая роль у табов в make-файлах.
Здесь проблема чуть сложнее, чем визуальное отображение в редакторах.
Ты можешь спокойно использовать табы, но только если пышешь проект один или в одну команду с общими правилами, и твой код полностью изолирован от другого кода, никаких копи-паст, бойлерплейта и т.п.
Учти, что библиотечный код питона при этом тоже полностью на пробелах.
>>2151425 Долбоеб блять Тебе уже 500 раз пояснялось, что современные ide изи конвертируют табы в пробелы Ты че в блокноте или в виме хуяришь? Напоминаешь шизика, который топит за написание жс-кода исключительно в стиле es5 "шоб точно работало во всех браузерах", когда ему начинают пояснять про транспиляторы, лишь раздаются визги "вы ничо не понимаете" и наша принцесса убегает в закат
>>2151426 У тебя не просто СДВГ, но ещё и какие-то аффективные расстройства коммуникации.
Вот ты пишешь код. Я хочу внести в него правку. Чтобы я смог внести правку, мне надо под твой файл перенастроить редактор, чтобы он работал с табами. Когда в соседнем окне и для других людей мне нужны настройки с пробелами. Нет, я не буду перенастраивать редактор, просто не буду в твой код что-то вливать. И не пущу тебя в свой код, чтобы ты там табами пачкал.
Да, если вдруг твой код мне понадобится, то я легко пропущу его через автозамену. Но только я тебе потом влить его не смогу, потому что он полностью перезатрёт твой.
Проблема совместимости. А отсюда то, как принято в сообществе. В сообществе питона только пробелы.
Можешь жить в своём мирке и делать как считаешь идеальным, с сообществом не пересекаться, никто не запрещает.
>>2151426 Падажжи, если они конвертируют, и в итоге все равно в коде пробелы, то за какие именно табы копротивление? Чисто за клавишу что ли? Ну так что жать - это дело вкуса, тебе-то какая разница кто каким пальцем отступы ковыряет, если в коде один фиг пробелы получатся.
Алсо, кулстори в тему - пришел как-то проект на поддержку, там не было соглашений/линтеров и т.п., не удивлюсь, если часть предыдущих разрабов в блокноте код писала. Потому что по всему проекту было сраное месиво из табов и пробелов. Так вот когда мы его завели в гит, оказалось что в интерфейсе битбакета таб равен ВОСЬМИ пробелам. Как это выглядело - врагу не пожелаешь. пыха, хуле
>>2151447 > мне надо под твой файл перенастроить редактор, чтобы он работал с табами Он сам работает с табами, дурында. Ты вообще с этим не сталкивался, а корчишь знатока. Съеби.
>>2151460 Редактор при нажатии на Tab обычно по-умолчанию делает замену на пробелы. Потому что так принято, поэтому это уже давно настройки по-умолчанию. Отображение пробелов-табов можно поставить, вот тут они показаны >>2151425
>>2151465 Редактор с пробелами сможет загрузить табы и наоборот, вопрос только в консистентности, которая как раз соблюдается в масштабе одного редактора.
>>2151466 В рамках одного проекта, одной кодовой базы, невозможно совмещать табы и пробелы. Для питона в виду известных вещей это абсолютно критично.
Или твой проект должен быть на табах, или на пробелах. Таб это символ с кодом аски-кодом 9, пробел это символ с аскикодом 32.
Можно рассуждать на тему как идеологически правильнее, но делать надо так, как принято в индустрии, чтобы не создавать проблемы.
Когда ты пытаешься внедрять табы в питон-код, ты создаёшь большие проблемы для других. Причём из-за ерунды. Вот и всё.
Когда будешь вести какие-нибудь серьёзные проекты, когда сможешь пытаться правила навязывать. Только не будешь, потому что с тобой никто в команде работать не захочет. А в одиночку серьёзные вещи не делаются.
>>2151478 Ты предлагаешь лезть куда-то в настройки и чего-то править то в одну сторону, то в другую. Зачем?
Вот ты залил на гитхаб код с табами. Мне надо серьёзно переработать код. Я его скачиваю, делаю замену на пробелы. Если я после этого волью правки, с точки зрения гида это будет уже весь мой код, 100% замена кода будет. Мне надо конвертировать пробелы в табы обратно? И помнить, какой файл в каком формате?
Есть единые стандарты. Они не всегда идеальные, но их надо придерживаться, если нет возможности стандарты изменить.
А такой возможности нет. Переписывать все проекты на табы никто не будет, только потому, что так тебе кажется более современным.
>>2151465 Тупой редактор так делает. Нормальный смотри что там было и оставляет - были табы оставит табы, были пробелы заменит таб на пробелы (vscode).
Поясните плис. Вот читаю хх. Если со стеком что относится к питону более ясно. Я про бек например, ну там флас или джанго или из апи чтот. А вот что относится к деплою, девопу, тут куча всего идет, и кубернетес, и докер, и графана, и кафка, и еще дох чего, та же жира напр. Так вот. Какие такие связки учить или юзать. Или вообще пох, потом скажут, почитать доки, да деплоить и девопать.
>>2151231 (OP) Анонче, реквестирую книгу по асинхронному веб питонычу. Вообще задача вникнуть в Django Channels , но я готов начать и с каких-нибудь асинхронных фреймворков в общем смысле.
Добрый вечер, друзья. Хочу попросить вашего совета. Моя история такова. Был у меня питон установлен, использовал я его для написания мелких скриптов по работе, установлен был давно и все было хорошо. Вовремя обновлял, когда надо было подгружал библиотеки через pip и радовался своим незатейливым скриптам, которое мне здорово помогали обрабатывать однотипные экселевские книги. Но наступили мрачные времена и волей случая пришлось обновить компьютер. И вот начал я устанавливать питон. И ЖИЗНЬ МОЯ ПРЕВРАТИЛАСЬ В АД!Ну думаю установлю сразу анаконду -вроде удобно. Скачал и поставил. Потом начал пытаться настроить. Но не тут-то было. ПИП вообще никак не вызывался и не становился привычными для меня способами. БОЛЕЕ ТОГО! Ни один из найденных на форумах способов через CMD вызвать питон не увенчался успехом. Понимаю, что скорее всего что-то делал не так я. Вот. Короче не смог я разобраться с тем как и в каком виде лежит этот питон в пакете анаконда. Когда через тот же cmd я пытался найти питон, мне деликатно предложили его скачать - открылась ссылка на майкрасофт стор. Закралась мысль, что питона-то может на компе и вовсе нет или он какой-то не такой. Ну скачал. Пип установил. Но вот в чём беда. Посидев ещё немного, все же нашёл я этот сраный питон в сраной конде. Теперь у меня их два. Причём CMD наотрез не видит того, который установлен с кондой (версии, к слову, разные), а конда, выходит не знает о существовании новой версии на компе. Командная строка любыми магическими командами не находит кондавский питон, но находит свежеуствновленный. ЕЩЁ! Раньше через строку я вызывал питон командой py. Теперь она не работает, работает только команда python. Тоже не понимаю почему. ТАК ВОТ. Может кто-то объяснить мне всю эту магию или стоит снести всё нахер пока не поздно и устанавливать по какому-то определенному алгоритму?
>>2151960 Ну вот мне бы вникнуть в это все с азов. Дальше задачи об обедающих филасафах с курса операционных систем и базовых упражнений по запуску тредов я не делал. Вообще для этого можно сразу на Go писать, но задача для начала разобраться с питоном в этом вопросе(в вопросе асинхронного веба)
>>2151978 >go на мультрединге хуярит Там неявное переключение контекста, то есть await'ы есть, но их расставляет за тебя компилятор
https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html >What’s brilliant about the Go cooperating scheduler is that it looks and feels preemptive. You can’t predict what the Go scheduler is going to do. This is because decision making for this cooperating scheduler doesn’t rest in the hands of developers, but in the Go runtime. It’s important to think of the Go scheduler as a preemptive scheduler and since the scheduler is non-deterministic, this is not much of a stretch.
>There are four classes of events that occur in your Go programs that allow the scheduler to make scheduling decisions. This doesn’t mean it will always happen on one of these events. It means the scheduler gets the opportunity. >The use of the keyword go >Garbage collection >System calls >Synchronization and Orchestration
>>2151965 команда питон, причем питон 3 это норма. а конда вроде работает только в виртуальном окружении? наверное поэтому не видит питон на компе. по крайней мере из строки ты просто можешь запустить питон а на анаконде по умолчанию свое окружение
Как прасить сайт, который шлет нахуй с каптчей селениум, а на запросы от реквестс отдаёт 403 какие бы заголовки ты там не прописывал. Возможно ли селениумом открывать дефолтный хром?
>>2152128 1. Апи было бы апи вопроса не возникло бы 2. 2. bs4 и парсинг html БС это парсер для разбора страниц, запросы то ты всё равно отправляешь через requests 3. Как уже и писал его детектируют антискрэпинговые системы.
>>2152130 Я не король скрепинга, посмотри что можно сделать чтоб наебать систему. Она ж анализирует твое поведение и твое заголовки которые ты отослал в запросе, просто так не понять - человек шлет запрос или бот Вероятно ты User-Agent хуеровый прописал
>>2152132 Там очень много подводных камней помимо заголовков и есть подозрение, что проще эмулировать пользовательский браузер, чем подделывать селениум.
>>2152155 Даже на самом дваче какая-то защита приличная стоит.
Вот предлагаю в свежем приватном окне открыть f12, и после этого попробовать загрузить какой-нибудь тред на дваче. Вот не получился так просто, хотя думаю, что обходится.
То есть хрен так просто логи соберёшь, как там что к чему коннектится.
Скрипты могут в принципе отлавливать, что находятся в режиме отладки.
Куча способов понять, что не живой пользователь, а окно селениума, по системным событиям вроде движений мышки, фокусов и т.п.
Короче если очень хотеть, то защититься можно. А сейчас многие хотят.
Конечно если очень хотеть, то и обойти это будет можно. Но это тоже серьёзный скилл уже, не всё так тривиально.
>>2152155 Так ты селениумом и эмулируешь пользовательский браузер и скорее всего и так уже используешь драйвер хрома. Тебе или нужно дырки в сайте искать или отвалить денег на решал капчи.
>>2152203 Сенениум слишком весь в себе, в него только ограниченно можно вмешаться. И поэтому он палится.
То есть условно там срабатывает скрипт, который определяет, что крутится на селениуме, и после этого блокирует работу. А обычный браузер высылает какой-то запрос на сервер и после этого нормально работает.
Ты можешь, в принципе, вместо того, чтобы исполнять js код, как это селениум делает, просто тупо выслать ответ, который от тебя ожидает сервер. И серверу будет сложно понять, что на самом деле там просто консольное приложение, а не реальный браузер. Но для этого надо хорошо изучить протокол, что там и как происходит. Это может быть очень сложно.
>>2152254 >А обычный браузер высылает какой-то запрос на сервер и после этого нормально работает. Селениум и так использует хром, ты же не зря chromedriver туда прокидываешь. В нем можно сделать абсолютно все, что ты делаешь в обычном браузере и жс скрипты действуют точно так же.
Как запустить асинхронный код из синхронного? Когда делаю просто: asyncio.create_task(my_task()) То получаю ошибку "RuntimeError: no running event loop"
Как запульнуть my_task так чтобы он начал исполняться на заднем плане и мой код не блокировался ожидая его исполнения? Тред в котором event loop будет создан?
Есть одна таблица в мускуле. Нужно написать чисто служебную вебморду, которая: 1) проводит авторизацию 2) выводит таблицу 3) позволяет добавлять записи с валидайцией 4) позволяет редактировать записи с валидайцией На каком стеке писать этот костыль в 2022, чтобы минимально забивать голову хтмл, пагинацией, шаблонизацией и вот этой фронтендовской фигнёй?
>>2152277 Это значит, что скорее всего у тебя луп еще не запущен на момент вызова этой функции, тебе заранее нужно его вызвать Если хочешь исполнения в отдельном процессе/треде, то юзай это. https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor Хотя, если тебе достаточно просто задачу запустить, то можно простыми тредами/процессами обойтись без асинхронщины.
>>2152307 Так проще phpMyAdmin тогда. Мне надо возможности конечным пользователям порезать: не давать удалять записи, давать редактировать только отдельные поля. Я доверяю их намерениям, я не доверяю их рукам.
>>2151231 (OP) Кто знает как сделать эту хуйню на питоне, какие библиотеки лучше (именно для тех которые точками помечены), в задании дана ток platform
>>2152313 Ну я бы админку джанго заюзал потому что много очень с фреймворком работал и мне всякие эти ограничения быстро красиво приделать и добавления - изи. По сути это мне дало бы красивые формочки, модельки и пространство для остальной логики, которой можно достаточно накастомить. А так да, наверняка это не лучший выбор, погугли crm всякие, пожет тебе что то такое нужно.
>>2152347>>2152344 Я так понимаю они не то что стали встроенными, они размазались по современным наборам расширений. То есть даже логически/виртуально этого блока не осталось. Сегодня под сопроцессорами в зависимости от ситуации могут понимать GPU, TPU и прочие DSP. Но вряд ли в задании об этом речь. Скорее всего методичка из 1994.
Если ты пытаешься запускать обработчик не из главного треда, ты должен создавать event loop явно, через loop = asyncio.new_event_loop() потому что по-умолчанию asyncio предполагает, что event loop будет создан в главном треде.
Поэтому надо делать скорее что-то вроде def do_async(): ____async def coro(): ________код ____loop = asyncio.new_event_loop() ____loop.run_until_complete(coro())
Также ты должен помнить, что операции по работе с циклом обработки сообщений в основном не thread safe и поэтому там надо работать с этим очень вдумчиво и аккуратно. Если ты пытаешься из других тредов что-то пихать в тред с event loop
>>2152277 Короче, котик, попробую может сегодня-завтра запилить пример, как это делать. Хотя может другие сделают.
Тут весь сок не в том, чтобы запустить цикл, а в том, как его кормить задачами. Надо сверяться с доками и смотреть код, но там в основном все операции потокоопасные. Поэтому ты не можешь делать loop.create_task() из другого треда.
Представь, что ты в одном треде делаешь loop.create_task, когда этот луп в другом треде исполняется. И в этот момент тред переключается на тот, в котором луп. Или на другой, из которого ты тоже захочешь луп чем-то накормить.
Там мютексы под это дело нигде не предусмотрены, лупу из-за этого может стать очень плохо, с ним мягко надо.
Я бы предложил типовой паттерн, что ты заводишь в треде с лупом очередь, обычную, queue.Queue(), она потокобезопасная, в отличии от asyncio.Queue(), которая потокоопасная. И в неё суёшь корутину. А в треде с лупом ты уже берёшь данные из очереди и делаешь loop.create(task(coro))
>>2152566 Ты же знаешь что в пайтоне отступы заменяют скобки? Иди читать Кнута, пока не сделаешь ~50% от материала его книг, к питону даже не прикосайся.
>>2152405 >>2152277 Стало интересно, запилил какой-то пример https://ideone.com/aMwASt штука довольно практичная может быть, если надо работать одновременно с оконным приложением tkinter/qt и asyncio event loop. Там с комментариями.
Через очереди пожалуй сложно, потому что если мы делаем queue.Queue(), то при q.get() мы блокируем тред и луп в том числе. А если делать какие-то опросы через каждые сколько-то миллисекунд, то это адски кривой колхоз из Индии.
Использовать базовые примитивы asyncio мы не можем, поскольку они не потокобезопасные, как не можем использовать ни asyncio queue.put_nowait(), ни loop.create_task - в смысле мы не можем вызывать из из другого треда, чем соответствующий event loop.
Но специально для этого в asyncio есть функция loop.call_soon_threadsafe, которая безопасно помещает коллбэк в луп другого треда, а вэтом коллбэке уже можно добавить в цикл какую-нибудь корутину.
Судя по всему других способов более-менее разумных и нет.
Ребята, занимаюсь программированием уже пол года и у меня на такие задачки уходит по часу, это нормально, или может это просто не для меня? Тильт ловлю когда не могу решить что-то, с логикой видимо проблемы.
Что нужно сделать я сразу то понял, но маялся с тем как это реализовать, итог - вышло все через жопу, но сделано, потратил час, стыдновато.
Your program should get two parameters from command line:
- string of size N^2, that describes square matrix of characters N*N;
- string that describes given word.
The first string is converting to matrix using the following rule. String "QWEASDZXC" forms the matrix:
['Q','W','E',
'A','S','D',
'Z','X','C']
Your program should print to the console the sequence of cells those build the given word.
Every next character of word can be placed just in the neighbor cell: on the top, on the bottom, on the left or on the right from the cell with previous character.
E.g. if it is given matrix "QLGNAEKIRLRNGEAE" and word "KING", then sequence of cells will be [1,2]->[1,3]->[0,3]->[0,2] After solving the task test it carefully with different examples.
>>2152405 >Представь, что ты в одном треде делаешь loop.create_task, когда этот луп в другом треде исполняется А в чем проблема? Питоновские треды же не выполняются параллельно
>>2152767 >А в чем проблема? Питоновские треды же не выполняются параллельно Треды выполняются конкурентно, их для этого придумывали. Переключение с треда на тред может произойти в любой момент времени. Если это произойдёт в момент, когда ты работаешь с общими данными для нескольких потоков, у тебя могут быть большие проблемы.
Классический пример: https://ideone.com/iDVS1x уж совсем примитив, но > expected: 2000000, calculated: 1639497
Очень дикое расхождение. Конечно, всё очень зависит конкретных операций, что в критических участках находятся.
Хелп. Пишу парсер. Логика такая: парсятся события на текущий день: старттайм, линк на событие. Затем для этих событий с интервалом раз в n минут парсится инфа. Вроде все ок, но событий может быть 0-n и они могут проходить параллельно. Мне не понятно как динамически генерировать таски для каждого события и убивать их после n-итераций. Смотрел шедулеры разные, там только статичные таски можно запланировать.
>>2152918 Ничего не понятно, но вообще тебе наверное надо делать очередь задач на обработку, при этом у тебя есть пул исполнителей этих задач. Они берут задачи из очереди и исполняют. А в очередь ты кладёшь задания.
>>2152923 Вот есть события на сегодня - x y z. Их я спарсил в 00:00. Для них я записываю время их начала, например, 13:00 14:15 17:30 и линк на страницу с информацией о событии. Следовательно для первого события мне нужно сгенерировать таск, который стартанет в 13:00 и который на протяжении 5 часов, каждую минуту будет считывать информацию об этом событии на его странице, а потом умрет. И так для всех событий. Событий может быть 0-n.
>>2152936 Это ты наколеночный крон костыляешь. Если очень хочешь повторить уже сделанное, то смотри, как сделано в кроне и копируй. Если нет, то используй системный.
>>2152989 Я прошел донести тебе что 1. Твоя язык говно ( отсюда можно сделать вывод, что лучше перейти на что-то другое, например С# ) 2. >подхватывается миллионами безмозглых хомячков. Стоит задуматься, кто ты в этой пищевой цепочке.
>>2152986 >Короче питон это пример того, как изначальное говно взлетает под мощным пиаром мегакорпорации и подхватывается миллионами безмозглых хомячков. Што? Какая корпорация стоит за питоном?
>>2153011 То что он там работал еще не значит, что язык продвигали. Это вообще его сайд проект был, в отличии от какого нибудь Пайка, который целеноправленно пилит ГО и гугл ему за это деньги платит.
>>2153012 Цитата из википедии: >From 2005 to December 2012, he worked at Google, where he spent half of his time developing the Python language. Как раз таки он там сидел и целенаправленно пилил питон. Или ты думаешь питон внезапно стал такой популярный потому, что язык сам по себе хороший? Существует великое множество языков которые намного лучше питона во всех планах, однако они почему-то не взлетают так. Догадываешься почему?$$$?
>>2153015 >Как раз таки он там сидел и целенаправленно пилил питон. Это сайд проект, гугл выделяет время на личные разработки, если они помогают компании. Основная работа у него была другая, в отличии от Пайка
>Или ты думаешь питон внезапно стал такой популярный потому, что язык сам по себе хороший? Потому что простейший вкат, хеллоу вордл можно написать через 5 минут после знакомства с языком
>>2153015 Гугол никогда не продвигал питон. Они никак не поддерживали его своими сервисами, например. Они не продвигали в открытый код какое-либо значимое количество систем на питоне - меньше, чем на других языках.
То есть это просто какой-то небольшой вклад в опенсорс, но он идёт по десяткам направлений, но это совсем не то, что Go или системы вроде кубернетиса.
>>2153026 Дело не в простейшем вкате, а в том, что на нём в принципе очень приятно писать.
Я, например, когда начал писать на питоне, уже имел серьёзный опыт на C++ и PHP, ещё с кучей языков шапочно знаком бы, с JS, Java, Perl, и ещё какой-то шлак.
И после питона были языки, JS вот серьёзно, и во что-то смотреть приходилось типа Ruby и Go. Но ничто вот настолько не вставляло, как питон.
И таких как я масса.
Поддерживают и разрабатывают серьёзные вещи ведь совсем не вчерашние вкатуны. Это очень серьёзный народ.
>>2153026 Да в гугле раньше можно было тратить 1 день в неделю на развитие своего проекта с учетом того, что он может принести прибыль. Этот хуеплет там по официальным данным тратил 50% своего рабочем времени на развитие питона, ты думаешь гугл такая корпорация альтруистов, что платили ему зарплату за то, чтобы тут развивал свой проект? Ясен хуй у гугла был свой интерес в этом. Но потом видимо что-то пошло не так ( видимо не договорились ) и он уволился оттуда, но в это время в развитие питона было вбухано уже немало денег, но т.к. проект под открытой лицензией аля BSD то и гугл никак не мог претендовать на приклеивание своего логотипа к языку. Вот и все.
>Потому что простейший вкат, хеллоу вордл можно написать через 5 минут после знакомства с языком Вкат не проще, чем в любом другом языке с динамической типизацией. Хелоу ворлд можно на любом языке научиться писать за 5 минут, другое дело потом тратить кучу времени на знакомство со стандартной библиотекой и остальными фичами\костылями языка.
>>2153034 Ты просто сложные проекты на пиптоне видимо не нюхал, после такого ты бы тоже так же как и я стал бы его ненавидеть, потому что этот язык кроме как писать хелоу ворды и какие-то наброски на коленках ни для чего не годится. В конечном итоге вся эта мазьня на питоне переписывается на С++ или что-то такое, где все предназначено для прода.
>Perl Вот взять тот же перл, бля да у перла куча ахуенных фишек, которые питону и не снились. Жаль только перл умер.
>>2153038 >В конечном итоге вся эта мазьня на питоне переписывается на С++ или что-то такое, где все предназначено для прода Шкила, ты где прод на плюсах видел последний раз? Только алгоритмически сложные задачи на них переписывают
>>2153043 Школьник-теоретик вот как раз тут ты. Я уже 13 лет на С\С++ серверные и не только приложухи пишу. Давай расскажи мне по подробнее, что там только на С++ переписывают в твоем 10Б?
>>2153049 Шизик, ты думаешь С++ используется только в HFT? Ебать у тебя искаженное восприятие мира. Хотя хуле тут, если обезьянка сидит в своем узконаправленном мире модных фреймворков, то откуда ей знать, что большая прикладного часть софта в мире написана на С\С++.
>>2153062 Ну приведи пример, где продукты изначально написанные на питоне переписываются на плюсах. Прост тут изначально постановка задачи такая, что никто в здравом уме не будет начинать писать на питоне, если требуется перфоманс сишки
>>2153066 За примером далеко ходить не надо. Я работаю в сфере Computer Vision, дата саентисты пишут свои прототипы на питухоне, которые в конечном итоге надо переписывать на С++, потому что в этой области всегда требуется максимальная производительность. Когда я туда пришел там был большой проект написанный на питоне, который все это делал но очень медленно, без возможности ни вертикального, ни горизонтального масштабирования. И что в итоге? Проект был успешно переписан на С++ и сейчас легко масштабируется на сотни машин, в кучей GPU и CPU ядер.
Окей другой пример, вася пупкин написал клевое веб приложение на питоне. И вдруг его приложение взлетело до небес, появились миллионы посетителей в сутки, ну прям настоящий хайлод. Конечно у Васи возникнут проблемы и со скоростью работы и с масштабированием, поэтому будучи благоразумным человеком Вася примет верное решение нанять людей и переписать свою питонопарашу на нормальный язык\языки предназначенные для этого, чтобы в дальнейшем не возникало проблем.
>>2153075 Кстати еще один замечательный пример, когда-то давно цукерберг написал свою парашу фб на пыхе, и не принял верного решения в самом начале переписать пока еще не разросшийся проект на что-то более адекватное. В итоге фейсбук наелись говна придумывая компиляторы похапе языка. Но в конечном итоге все равно все было переписано на С++\Java\etc давным давно
>>2153075 Так пистон для других задач, вкатыш. Питон для того чтобы быстро и удобно что-то написать чтобы оно как-то работало а не писать хуйлоад и прочую залупу.
>>2153081 Еблан не окончивший хотя бы минимальный вуз, ты вообще вкурсе что программы = алгоритмы + структуры данных? Блять, что за хуйню ты вообще высираешь? Ты вообще имеешь хотя бы представление как выглядит программа? Судя по твоим шизойдным высерам - нет. С
>>2153087 С чего ты взял? Сомневаюсь что инста с ее посещаемостью работает на какой-то динамической параше.
>>2153088 Я про это и говорю, алексей. Питон годится только для накалякания чего либо на коленке не больше. Но какой смысл было высирать столько библиотек на изначальна хуевый язык, если максимальная его профпригодность равна программе написанной на каленке?
>>2153094 Да, я не пригорел, просто чувствую твой уровень подготовки, судя по твоим нелепым высерам и он равен типичному питонабыдлу вообще не разбирающегося хотя бы в минимальной архитектуре ПО. И не понимаю, зачем ты пытаешься со мной спорить. Это все равно что муравей будет доказывать богу что он не прав в чем-то, нелепо выглядит.
>>2153096 НАЧИНАЕТЕ ПИСАТЬ ПРОЕКТ НА НОРМАЛЬНОМ ЯЗЫКЕ, ВЫ ЖЕ НЕ БЫДЛЫ КАКИЕ-ТО @ ТО ЧТО МОЖНО БЫЛО СДЕЛАТЬ ЗА МЕСЯЦ НА ПИТОНЕ ВЫ ДЕЛАЕТЕ ЗА 4 МЕСЯЦА НА ПЛЮСАХ @ КОНКУРЕНТЫ УЖЕ ВЫПУСТИЛИ АЛЬТЕРНАТИВНУ И ДЕЛАЮТ ФИЧИ КАЖДЫЙ РЕЛИЗ @ ВЫКАКИВАЕТЕ НА РЫНОК СВОЙ ПРОДУКТ @ ЖИДКО ПУКНУВ ПРОЕКТ ЗАКРЫВАЮТ ПОТОМУ ЧТО НИШУ УЖЕ ЗАНЯЛИ
А вообще, с чего это ты взял, что полезный продукт == хайлоад? Есть много отраслей, где требуется куча бизнес-логики для ограниченного круга людей и никто не срет 300кк rps
>>2153104 >А вообще, с чего это ты взял, что полезный продукт == хайлоад? Я такое не утверждал.
>куча бизнес-логики для ограниченного круга людей Ты имеешь ввиду Enterprise и его единственного царя джунглей - Java?
>>2153106 Ну что я могу сказать: 1. Всегда вызывала отторжение любая продукция сделанная цукербергом как и он сам. 2. Интаграм постоянно тормозит и лагает, теперь ясно почему. 3. Даже если убрать предвзятость, то единственная задача инстаграмма - показать фото\видео, то есть передать пользователю ссылку на cdn где это хранится, возможно с ахуеевшимми миллиардами фейсбука, им не впадлу платить за медленность питона. Возможно там еще куча легаси кода который не так просто искоренить и поэтому им проще платить больше денег за сервера, чем переписывать все на другой язык. Но то что использования питона в таком проекте - это неразумно - это факт.
>>2153104 >НАЧИНАЕТЕ ПИСАТЬ ПРОЕКТ НА НОРМАЛЬНОМ ЯЗЫКЕ, ВЫ ЖЕ НЕ БЫДЛЫ КАКИЕ-ТО >@ >ТО ЧТО МОЖНО БЫЛО СДЕЛАТЬ ЗА МЕСЯЦ НА ПИТОНЕ ВЫ ДЕЛАЕТЕ ЗА 4 МЕСЯЦА НА ПЛЮСАХ >@ >КОНКУРЕНТЫ УЖЕ ВЫПУСТИЛИ АЛЬТЕРНАТИВНУ И ДЕЛАЮТ ФИЧИ КАЖДЫЙ РЕЛИЗ >@ >ВЫКАКИВАЕТЕ НА РЫНОК СВОЙ ПРОДУКТ >@ >ЖИДКО ПУКНУВ ПРОЕКТ ЗАКРЫВАЮТ ПОТОМУ ЧТО НИШУ УЖЕ ЗАНЯЛИ Лол, так никто не говорит, начинать сразу по хардкору, как я помню еще во времена когда я увлекался геймдевом, на местном форуме были чуваки которые сказали, ПОШЛИ ВСЕ НАХУЙ С ВАШИМИ ДВИЖКАМИ МЫ БУДЕМ ПИЛИТЬ СВОЙ С НУЛЯ, в итоге они 4 года пилили какие-то зачатки игры, и к тому времени когда они выкатили первую демку графика и все их технологии уже безнадежно устарели. Нет, просто ко всему надо подходить с умом, и продумывать перспективы. К тому же, даже если писать на сразу на С++, хотя я к такому не агитирую, на с++ есть куча библиотек используя которые можно быстренько все сделать.
>>2153113 >Но то что использования питона в таком проекте - это неразумно - это факт. Получается, разрабы реддита, кворы, пинтереста и ещё кучи проектов с нормальной такой посещяемостью, где под капотом также джанга, либо миллиардеры, либо неразумные.
>>2153075 >Окей другой пример, вася пупкин написал клевое веб приложение на питоне. И вдруг его приложение взлетело до небес, появились миллионы посетителей в сутки, ну прям настоящий хайлод. Конечно у Васи возникнут проблемы и со скоростью работы и с масштабированием, поэтому будучи благоразумным человеком Вася примет верное решение нанять людей и переписать свою питонопарашу на нормальный язык\языки предназначенные для этого, чтобы в дальнейшем не возникало проблем.
Это ошибочное мнение, что продукт обязательно дорастет до такого состояние, когда переписывание кода станет выгоднее, чем обслуживание железа. Питон прекрасно живет на средних проектах и где добавить новую фичу гораздо приоритетнее, чем снизить стоимость сервера на условные несколько тысяч долларов и поменять штат на плюсовиков, которые эту самую выгоду сожрут за ЗП побольше. Использование языков диктуется бизнесом, а не абстрактным ну язык говно же
>>2153125 Все откатимся на няшную и будем оптимизировать все до усрачки, собственно распространения "медленных" языков связано с тем, что железо подешевело настолько, что процессоры можно ведрами покупать.
>>2153122 Получается так, если они это все используют. Но опять же, смотря где и как, может у них джанго отвечает вообще за какую-то малонагруженную часть, либо просто пробрасывает запросы дальше. Просто все это гигантские проекты состоят из сотен микросервисов, которые написаны на различных языках.
>>2153123 Может в вебе это так и работает, но вот в CV где от скорости работы твоего ПО зависит будут ли у тебя заказчики или нет, так уже не пройдет. И опять же мы говорим о сферических стартапах в вакууме, компании уже имеющие опыт разработки ПО, вряд ли будут начинать новые свои проекты не с основных технологий использующихся в компании.
>>2153133 > компании уже имеющие опыт разработки ПО, вряд ли будут начинать новые свои проекты не с основных технологий использующихся в компании.
Меня в ВТБ и МТС приглашали пилить сервисы на питоне. Бюджет у продукта под патронажем крупной компании ничем не отличается от бюджета стартапа, везде деньги экономят.
>>2153138 Тут очень много нюансов, например, да может они хотят сделать все по быренькому и задешево и им похуй как это будет работать медленно или быстро, главное чтоб как-то работало. Вообще парадигма разработки "как-то" у нас очень развита, главное чтоб было как-то похуй, что криво, похуй что медленно, похуй что потом никто не разберется в сорцах, главное чтобы было "как-то" и чем ближе компания к гос структурам тем больше там эта парадигма развита, потому что бюджет выделяют, а видимость работы создать надо вот и делают тяп ляп ля галочки. Но да ладно это экскурс. Другой аспект, то что во-первых, средняя обезьяна на питоне берет намного меньше денег среднего разработчика на Java/Scala/Go/C++ и т.д. во-вторых, разработчика на питон найти намного проще, чем на чем-то другом потому что вкатышей пруд пруди готовых работать на любых условиях, в-третьих может у них в департаменте который ответсвенный на новый проект нету просто адекватных людей способных собрать хорошую команду и единственный человек хоть как-то понимающий в програмировании это сис-админ эникейщик знающий маломальски питон, который будет набирать народ в команду. Плюс им может быть так же похуй на проект, и они не заморачиваются над его качеством.
В общем резюмируя, вообще всю суть сегодняшнего треда. На питоне пишут не потому что он пиздатый язык и пиздатая технология и на нем все так ахуенно получается. Да на питоне можно быстро что-то нахуярить это факт спасибо куче библиотек на все виды деятельности. Получится ли это всрато? В конечном итоге с ростом проекта да. Будет ли это тяжело поддерживать в дальнейшем и внедрять новый функционал? Да. Получится ли это медленно? Да. Будет ли стоит разработка дешевле на начальном этапе? Да. Легко ли будет найти разработчика? Да.
И если у компании или стартапа есть средства и возможности перекрыть все недостатки питона то да, окей, это может быть выгодно с точки зрения бизнеса.
Но нормально технически подкованный менеджер, вряд ли стал бы начинать новый проект с какой-либо перспективой роста на питоне. Гораздо лучше Java/Go/C++ да что угодно, в зависимости от отаросли, лишь бы не пришлось перепиливать это все в конечном итоге.
>>2153156 Лол, а ты думаешь, что на плюсах пишут потому что это дохуя пиздатый язык, а не потому что это оптимальная числодробилка даже с проблемой поддерживаемости и всратой инфраструктурой где даже пакетного менеджера не завезли? Сколько ты сам проектов от начала до конца завершил, что бы знать как нужно собирать команду и как может развиваться продукт, если ты занимаешься только написанием числодробилок?
>>2153161 Во-первых, выкинь из головы идею плюсы - это "числодробилка", это далеко не единственный плюс плюсов. Во-вторых, на плюсах пишут потому что это самый быстрый язык из доступных + у которого богатый функционал + где ты не платишь за то, что не используешь + то что на плюсах ты можешь написать, что угодно + любая либа представляющая собой какой-либо апи к железу имеет интерфейс только на С\С++. 3. о какой "проблеме поддерживаемости" ты говоришь? Плюсы компилируются в нативный байт код процессора, под какую архитектуру у тебя есть компилятор под такую это и будет работать. 4. пакетные менеджеры есть и не один, тот же vcpkg например. Но я ими если честно никогда не пользовался, т.к. всю жизнь пишу программы под линукс, где пакетным менеджером служит команда apt install libname-dev. 5. Я разработчик, а не менеджер, а работал я в разных командах и имею представление о всей этой внутренней кухне. 6. Ты чего к плюсам доебался? Я же не только за плюсы говорю. Плюсы не всегда оптимальный выбор, и даже я иногда плююсь от них и думаю как бы это было проще написать на С# или Java, где есть все из коробки, правда java тоже та еще монструозная параша.
>>2153179 >Во-первых, выкинь из головы идею плюсы - это "числодробилка", это далеко не единственный плюс плюсов. Я говорил конкретно про тебя.
>3. о какой "проблеме поддерживаемости" ты говоришь? Плюсы компилируются в нативный байт код процессора, под какую архитектуру у тебя есть компилятор под такую это и будет работать. Это когда на разработку функционала тратится дохуя времени, потому что ты не можешь обмазаться нормальными абстракциями. В плюсах требуется гораздо больше действий на написание той же функциональности и соответственно с ее поддержкой. Начиная от работы со строками, которая стала мемом и заканчивая ручным управлением памятью.
>4. пакетные менеджеры есть и не один, тот же vcpkg например. Но я ими если честно никогда не пользовался, т.к. всю жизнь пишу программы под линукс, где пакетным менеджером служит команда apt install libname-dev. Лул, как же охуенно иметь общую среду для приложения и операционной системы разработчика. Расскажешь как две версии одной либы на одном компьютере установить?
>5. Я разработчик, а не менеджер, а работал я в разных командах и имею представление о всей этой внутренней кухне. С чего ты взял что имеешь представление? Ты бюджеты считал или персонал нанимал? Может знаешь во сколька вся команда разработки обходилась или сколько резюме проходило через лидов?
>Это когда на разработку функционала тратится дохуя времени, потому что ты не можешь обмазаться нормальными абстракциями. В плюсах требуется гораздо больше действий на написание той же функциональности и соответственно с ее поддержкой. Начиная от работы со строками, которая стала мемом и заканчивая ручным управлением памятью. Это зависит от того, используешь ли ты какие-то фреймворки или либы заточенные под это. Вот возьмем например кодирование\декодирование видео. Ты же не будешь писать свой парсер контейнера, потом имплементацию декодера\энкодера для конкретного кодека и т.д? Ты возьмешь уже готовенький ffmpeg и нахуяришь быстренько на нем. Либо просто opencv. И поверь в случае с opencv вообще никакой разницы в коде не будет между с++ и питоном, т.к. все методы и там и там зеркальные.
>Начиная от работы со строками, которая стала мемом Это что там такого сложного? И что за мемы такие? Типа каждый разработчик на с++ должен написать свою имплементацию std::string? лол, этот мем уже лет 15 как потерял актуальность, еще в с++ 98 со строками стандартной библиотеки все было нормально, на крайняк всегда был boost где есть все алгоритмы какие хочешь.
>заканчивая ручным управлением памятью. std::shared_ptr/std::unique_ptr - лол с появлением с++11 никто уже не выделяет память через new в сырые указатели и тем более через malloc. Да и до с++ 11 был boost shared_ptr который все адекватные люди юзали.
>Лул, как же охуенно иметь общую среду для приложения и операционной системы разработчика. Расскажешь как две версии одной либы на одном компьютере установить? Лол, либо компилируешь и инсталируешь с нужным --prefix либо просто бинарники уже готовые копируешь куда надо и юзаешь оттуда. В чем проблема?
>С чего ты взял что имеешь представление? Ты бюджеты считал или персонал нанимал? Может знаешь во сколька вся команда разработки обходилась или сколько резюме проходило через лидов? Лол, я начиная с первой работы собеседовал новых людей с лидами. Бюджеты не считал но примерно знал, во сколько что обходится. Да я и сейчас сам себе лид, в одном стартапе по найму, так что всякие расходы на сервера, железо и прочее я сам рассчитываю и уже обговариваю с непосредственным начальством.
>>2153156 >главное чтоб как-то работало. "Как-то" работать будет на плюсах, потому что сделать хорошо там сложно. А на языках высокого уровня будет работать хорошо, если ты нормально пишешь. Стабильно, чётко и корректно, а это главное.
На питоне байтоёбские вещи не очень пишут, никто не будет, конечно, реализовывать код перепаковки картинки на питоне. Для этого используют внешние библиотеки, специально оптимизированные.
Серьёзные сервисы всё равно на одном сервере не пускают, там несколько серверов для разных задач. Такая история, что из-за нехватки производительности сервис упирается в потолок, бывает очень редко. Точнее бывает, но из-за производительности БД, очередей и т.п., что с языком программирования не очень связано.
Для бизнеса имеет значение хватает ли ресурсов для работы или нет. И какова стоимость ресурсов в расчёте на одного клиента, отношение расхода на ресурсы к поступлениям от клиента.
Реальность в том, что производительность языков программирования не является узким местом в большинстве задач. А вот скорость разработки, возможность поддержки, качество кода - являются.
>>2153239 То, что ты описал применимо только к вебмакакингу.
>"Как-то" работать будет на плюсах, потому что сделать хорошо там сложно. А на языках высокого уровня будет работать хорошо, если ты нормально пишешь. Стабильно, чётко и корректно, а это главное. Конечно, ведь средняя обезьяна пришедшая из питона лучше не сможет сделать в силу отсутствия знаний, скилов и интеллекта, на то она и обезьяна. Но зачем обезьяне доверять гранату, когда это можно доверить компетентным людям которые умеют с этим хорошо обращаться? И С++, к твоему сведению, является языком высокого уровня. К тому же никто же не заставляет писать на С++, ну если не вышел умом пиши на golang хотя бы или java/C#. В общем, тут все зависит от жадности инвестора, платишь мало денек - получаешь команду даунов на питоне которые делают хуево, платишь хорошо получаешь хорошую команду со стеком С++\Java которые делают хорошо, любой сервис.
>>2153253 >golang > Я только сегодня понял, что почти никто толком-то и не понимает, зачем вообще Go нужен. Если коротко, то Go нужен для того, чтобы проектировать robust software. Я не знаю, как правильно перевести это слово на русский, но это скорее всего что-то вроде «надежный». Так вот, Go сделали, потому что гуглу нужен был инструмент для написания надежного кода. На самом деле не сколько гуглу, сколько Робу Пайку, который последние две декады, как минумум, одержим идеей сделать сишку с каналами и зелеными потоками. Так получилось, что Роб Пайк попал в нормальную компашку с другими штрихами из Bell Labs, крутейшим Russ Cox, Фицпатриком и т.д. Этим ребятам несложно было убедить гугл, что им нужен новый язык и вобщем-то, бабосики они на него выбили.
> Так, это было небольшое лирическое отступление, давайте вернемся к теме. Да, зачем же все-таки гуглу был нужен новый язык? Ну, тут все понятно, давайте послушаем слова самого Роба Пайка:
> Фишка в том, что наши программисты гуглеры, а не ученые. Это обычно молодые, только выпустившиеся пацаны, которые возможно выучили Java, возможно даже C/C++ и может быть Python. Они не в состоянии понимать пробздетый язык, но мы все равно хотим, чтобы они делали хороший софт. Таким образом, мы даем им легкопонимаемый язык, к которому они быстро привыкнут.
> А теперь давайте попытаемся понять, что же он имел ввиду. Если грубо говоря, то он сказал, что в гугле работают не самые умные ребята («не способные понимать крутой язык»), так что они придумали такой язык, который просто невозможно не понять. Это на самом деле очень круто для менеджмента. Посудите: можно нанять 100 посредственных программистов, дать им в руки Go и эта армия обезьян будет генерить вам много «неплохого» и очень даже поддерживаемого кода! Go это фантастический инструмент для менеджмента, лучше не придумать: моментально загоняем всех программистов в рамки go-fmt (никто не сможет пропихнуть свой стиль форматирования), забираем у них любые абстракции сложнее интерфейса и получается такой конвеер кода, в котором developer is just another brick in the wall. По-моему, очень круто! Ну, программистам скорее всего такой расклад не очень понравится — мало кто любит быть винтиком в системе.
>>2153252 >В общем, тут все зависит от жадности инвестора, платишь мало денек - получаешь команду даунов на питоне которые делают хуево, платишь хорошо получаешь хорошую команду со стеком С++\Java которые делают хорошо, любой сервис.
Плюсовики и джависты стоят дешевле чем разработчик на питоне, никто просто не хочет в говне валятся
Хелп, пытаюсь обновить значения конкретных ячеек двухмерного массива. Почему в результате каждый столбец воспринимается как ячейка? Как обновлять значения ячеек?
>>2153311 Еблан, нуб, вкатыш, у баша своя ниша, он не говно, он хорошо выполняет свои задачи для которых предназначен. Перл - это вообще другая стихия. Надо быть полным ебланом, чтобы сравнивать баш и перл.
>>2153316 + Это как сравнивать отсос и давание в жопу Никогда не понимал типов готовых сосать лишь бы их не ебали. Отсос - унизительно, поэтому в случае чего настоящий мужик будет гордо стоять раком и примет в жопу хуй, даже не пискнув ни разу. Такие дела
>>2153313 Потому что суть питона в том, что все можно сделать сполшага, а новички дальше короткой статьи о новом материале не заходят, видимо. >>2153309 Получилось, спасибо
>>2153316 >>2153317 Раскудахтались-то. Я вам говорю, что баш это сраное говно, в котором приходится пачкать руки, потому что так сложилось исторически. На перле можно заменить простыню баша в пару строчек с вертухи, потому что он делался в том числе для этого. Найдите мне кого-то, кто скажет, что баш это охуенный язык для скриптов. Это и не язык вовсе, а игрушечная автоматизация. Но ничего, зумерье продавит какой-то клоунскрипт и будете радостно писать на нем, как это вышло с системд, а баш превратится в легаси заглушку, где ему самое место. >>2153321 И не собирался. Ойти-сантехник для комуникации говн, велика птица.
Можете на пальцах объяснить, для чего нужна библиотека Pebble? Кто-нибудь использует её? Где про неё можно почитать и потренироваться с ней? Инб4 документация
Ищу IDE. Кодил всегда для себя - посчитать что-то алгоритмически, что не могу математически, спарсить дату, что-то типа того. Сейчас нейроночки потихоньку изучаю. Раньше пользовался IDLE, потому что ничего другого не нужно было. Но с нейроночками ощущаю потребность в смене IDE для удобства. Например, у IDLE при выводе в шелл есть явна задержка, насколько я понимаю и обучение становится дольше просто из-за этого. Сейчас пытаюсь освоиться с SublimeText, но у него свои проблемы: во-первых, не нашёл как заставить matplotlib показывать плоты, во-вторых, во время обучения нейронки GUI тупо фризится. Всякие по мелочи проблемы, типа он не видит PATH от ffmpeg, тогда как IDLE его видит (и гугл помог очень условно). Короче тоже проблемный. Пробовал Jupyter, но чет прямо совсем не понравилось по ощущениям. Я не собираюсь прогать в команде, не собираюсь выкладывать код на гитхаб, хочу просто для себя экспериментировать и изучать, чтобы было удобно. Что анон может посоветовать в моей ситуации?
Кто нибудь знает можно ли переопределить встроенную функцию в питоне, затем зайти в эту функцию и вызвать уже не рекурсивно эту же функцию, а встроенную функцию. Например я переопределяю функцию print(), вызываю ее и из этой функции print(), хочу вызвать Built-in print(), которая встроена в питон. Как это сделать?
>>2153508 С одним пробелом на экране больше всего места.
Таб это управляющий символ, он служит для создания простейших таблиц. Как раз на ассемблере я табами и отступал, ведь исходник там это по сути таблица.
>>2153527 у меня не было доступа к куску кода в котором вызывалась буилтин функция, я ее переопределил и когда тот кусок кода вызывал типо билтин функцию, то он вызывал мою функцию.
>>2153557 Переопределять функции билтин либы в принципе не есть гуд. Используй partial. Ровно как и называть аргументы в методах/функциях таким образом
Как найти наименьшую/старейшую дату в тексте? Искать через регулярку, определять позиции начала конца, перегонять в datetime и возвращть позицию найденного значения как-то громоздко. Есть ли альтернативы?
>>2154024 Ты почему-то ищешь, к чему бы доебаться, но с какими-то надуманными аргументами. Откуда мне знать в каком формате у того анона даты в тексте? Он спрашивает, как это вообще сделать - с регулярками или без.
>>2153897 короче, я переопределил буилтин функцию, какой-то кусок кода ее вызвал и получилось, что вызвалась моя функция, я внутри своей функции вызвал настоящую буилтин функцию, добавил к ее возврату, то что мне нужно и вернул в ту функцию которая вызвала мою функцию.
Аноны, тупой, наверное вопрос. Лениво вкатываюсь. Даже без цели, а так, голову занять и что то прикладное при случае накидать. Не в этом дело. Накидал простенькую программу (из укуса питона да) типа адресной книги с добавлением, удалением, изменением. Сохранить в файл загрузить. Вот и весь функционал. Решил прикрутить ui. Начал смотреть в сторону QtPy. И даже прикрутил. Доволен до жопы. Интересно, но заебла одна штука. Пишу в PyCharm. И эта сволочь, когда я начал пытаться в интерфейс, перестала выкатывать ошибки в свою консольку. Окно софтины открывается работает, а когда пытаюсь жать на отрабатываемую в данный момент кнопочку или ещё что - подвисает и вылетает с каким то одним и тем же эрроокодом в консоли. Пытался Его гуглить - пишут это типа проблема IDE, она ошибки иногда не показывает. Приходится искать мой файл, запускать в голом питоне и смотреть ошибки там. Ну это же полная хуйня, можно это пофиксить? А ещё эта поебень на три страницы кода собирается в .exe файл в 35 мегабайт, лол.
Сап, подскажите, как в гите создать ветку в удаленной репе из ветки в удаленной репе при этом не делая checkout на эту ветку и желательно не создавая локальную ветку?
Кто работал с django-filters? Как можно задать полю queryset без указания это напрямую в классе. Мне нужно исходя из адреса определенной страницы уже формировать queryset, но сейчас я это не могу сделать.
1 пик как сейчас 2 как хотелось бы
Заранее спасибо! Очень долго с проблемой сижу, даже в исходники пытался лезть...
>>2154617 >А ещё эта поебень на три страницы кода собирается в .exe файл в 35 мегабайт, лол. А как ты хотел лол, питон вообще для этого не совсем подходит, он же не компилируется.
Как сделать аналог двачерского бесконечного скролла, что бы изменившее положение треды не повторялись? Пока что придумал первым запросом отсылать список айдишек а потом уже загружать содержимое по нему. Но пока непонятно что отображать, если пользователь начал скролить через час после загрузки страницы, если часть тредов утонула
>>2154813 Сделал, но теперь проблема, что вызываю после присваивания self.declared_filters, там показывает мой новый фильтр. Но он не отображается в форме, его просто нет. Те которые объявлены как атрибуты класса, есть.
>>2154987 Я думал над этим, но меня смущает ситуация, когда сайт закончится на 3-ей странице если пользователь последний раз обновлял нулевую несколько часов назад переключившись на что-нибудь другое, а потом вернувшись к борде.
>>2155278 Ну тут тоже проблема в том, что борда быстро кончится, если на нулевую давно не заходили и часть тредов утонуло. Да и потенциально этот пет расчитан на максимальный перформанс и мне кажется, что выборка из базы по конкретным айдишкам будет быстрее чем расчет по дате.
>>2155300 Когда ты скролишь двач, то треды автоматически подгружаются когда ты доходишь до конца страницы, я делаю свою пет-борду и хочу аналог сделать
>>2154952 >>2155303 Подгружаешь при заходе на /board_name список айдишников тредов в виде массива, первые скажем 20 из них грузятся и отдаются клиенту. Когда клиент долистал до конца, отправляешь запрос и подгружаешь остальные 20 тредов по их айдишникам (если какие-то из них сдохли за это время то ничего не возвращаешь клиенту вместо того чтобы падать или кидать невалидный урл и идешь дальше) Очевидно же
>>2155305 Так уже писал выше что так можно сделать, но тут проблема в том, что борда быстро кончится, если нулевую давно не обновляли, а занимались чем то другим.
Сап, ананасы. В пайтоне относительно недавно начал учить год назад как на работу устроился и столкнулся сейчас с новой для себя проблемой. Подскажите, пожалуйста, как лучше всего ускорить выполнение моей функции: https://dumpz.org/cDxQKp5s7cm8в генераторе первая строка съехала, блэт Суть: пишу микросервис на фласке, суть которого получать на вход большой список данных и ходить с ними в десяток других сервисов, агрегируя необходимую информацию, в результате формировать огромный csv файл и отправлять в респонсе. Проблема в том, что некоторые сервисы возвращают огромное количество данных и, соответственно, требуют много времени на получение ответа от них вплоть до 3-5 секунд. Собственно, обработка списка из 100 строк может занять до 5 минут времени, что достаточно долго, учитывая что в идеале за это время хотелось бы обрабатывать в десять-двадцать раз больше информации. Вопрос - какими способами можно ускорить данный процесс? Первая мысль - наладить трединг или мультипроцессинг с каким-нибудь producer-consumer, но я не могу пока понять, как лучше сделать это внутри моего генератора.
Пытаюсь все сделать через одно списочное выражение (а не 2, как уже сделал). Но как в списочное выражение засунуть итератор? Чтобы каждому новому элементу присваивалось вот это 1,2,3
result = [str(итератор) + ") " + i for i in args if type(i) == str and len(i) > 0]
Я конечно все понимаю, джанга типо у нас удобная, доки хорошие, расширений много... но как блять вы ебетесь с синхронным доступом в БД? Он же синхронный нахуй, блокирующий. Если с requests еще можно намутить финт с тредами (что кстати ведет к своим "ништякам" если не юзаешь ThreadPoolExecutor а просто ебошишь треды), то с БД если твой драйвер синхронный - то можешь только пососать писос, треды тут не спасут (ну помочь они смогут только в одном - запросы в БД перестанут блочить весь сервак, т.к. контекст на тредах постоянно будет переключаться) Как жить на синхронном фреймворке и лазать в БД?
>>2155700 >Как жить на синхронном фреймворке и лазать в БД? В чём проблема? Берешь и лезешь. В это время твой процесс с синхронном фреймворком ждёт, а другие запросы обслуживают другие инстансы.
Естественно запускается много инстансов. Если ты круды пилишь, то главный затык не в том, что инстансы долго ждут ответ, а в том, что медленные запросы могут просто завесить сервер БД. То есть у тебя тупо БД нагрузку не потянет, и никакие треды и асинхронщина не спасут.
Асинхронщина становится необходимой, когда ты продолжительные запросы начинаешь обрабатывать, вебсокеты в первую очередь. Хотя тредами тоже можно решить.
>>2155770 Хм, че-то я не задумывался над этим раньше. Погонял вебсокеты в fastapi, но это очевидный асинхронный фремворк, еще ради эксперимента ебошил их в nodejs но вся жс-среда асинхронна по свой сути и основана на ивентах и коллбеках. А как же тогда юзать вебсокеты в джанго или фласке? Неужели их там нет?
Блин, никак не могу разобраться с ебучей venv на питоне. В жопаскрипте с npm было проще и понятнее. У меня стоит несколько интерпретаторов (2.7, 3.7 и 3.8) как мне создать venv с конкретным питоном - 3.7 ? Потому что по дефолту создается с 3.8 Не говоря уже о том что у меня в глобальном интерпретаторе затесалось несколько "левых" пакетов типо alembic которые заботливо перелезают в новую venv когда ее создаю, как создать "чистую" среду?
>>2155934 Ну ХЗ, разбираться надо, у меня на убунтах это работает. И на которой сейчас сижу, и на других я точно так же всегда ставил, причём без какой-либо специальной настройки.
Мне кажется ты в какой-то момент что-то у себя в системе просто сломал.
Сейчас ради интереса попробую в убунте под докером с нуля питон поставить и проделать
>>2155979 Промоутеры Степика, хороший заход, но нет, не пойдёт так.
Вы эти курсы бесплатно открываете, чтобы потом толкать за деньги платные. Это банальная реклама. Причём надо зарегистрироваться, чтобы эти курсы посмотреть.
Хотя весь этот материал в плане знаний доступен бесплатно, без регисртации и смс в массе разных вариантов.
>>2155991 Не спорю, что со временем будут добавляться новые платные курсы от автора этих курсов (они уже у него есть) и на платформе вообще.
Но конкретно эти два курса - бесплатные. И могут тебя протащить с нуля до анонимных функций и работы с файлами.
Покажи мне еще бесплатный курс, где в тексте дается теория, а следом по 200+ задачек на курс.
Учебники - устарели, потому что нужно не только неокортекс абстракциями грузить, но и в спинной мозг загружать привычку делать отступы 4 пробелами, писать int(input()) и прочие подобные базовые вещи.
Видосики - для тупых зумерков, которые будут с экрана по буковке код копировать.
>>2155997 У "нас". Я сам этот курс начал летом, и если бы не этот курс, то меня бы здесь не было.
В своем высокомерии вы так досидитесь в своей усмановской клоаке до того, что здесь новичков не будет и будут сидеть только олды, пока и тем не надоест этот подментованный форум (аноны, ага).
Обновления шапки где? Собирались де тредов 5-10 назад. Вот и добавьте в шапку норм курсы с автопроверкой. Хватит уже нубов мучать толстыми томами или курсами на инглише (который не все на слух могут воспринимать).
И я сильно сомневаюсь, что ты сидишь через браузер с отключенным js, пуская трафик через цепочку дедиков в далеких странах и тщательно подбираешь слова, чтобы тебя нельзя было вычислить через анализ манеры общения. А если это делаешь ты, то так не делает > 90% населения треда. Не строй себе иллюзий, "анон".
>>2151231 (OP) Сап. Подскажите книгу, по питону продвинутого уровня. А то лутца прочитал уже давно. Уже работаю разрабом. И датаклассы и тайпхинты успел выучить. Но только потому что увидел их в работе и загуглил. А сколько ещё вещей, который я не видел и не изучил? Например не умею дэбажить и профилировать. Плохо понимаю что умеют pip и tox. Не знаю как внутри там под капотом работает питон. Да и вообще мало ли что я ещё не знаю. Знает кто-нибудь углубленную книгу по питону?
>>2156035 Для тех, кто умеет программировать на других языках и хочет про питон больше узнать, очень полезна Intermediate Python, тоненькая книжка именно про особую специфику питона.
Продвинутую книжку хотелось бы иметь, но вряд ли их много.
Каждую продвинутую тему надо описывать многословно, и таких тем много.
На самом деле официальный туториал весьма хорош и там про всё есть.
Сложнее, когда надо в сторону идти и смотреть сторонние пакеты, вот этого там нет.
Например pytest, это внешняя система и надо изучать отдельно.
Датаклассы это лишь минимальная часть от технологии, если серьёзно лезть, надо attrs/cattr и pydantic, две известные системы независимые.
Всякие sqlanchemy и связанные вещи, тоже большая очень тема.
Везде пишут, что интерактивная сессия печатает то же, что и repr. Тогда как вы объясните пикрил? repr накинул обратного слэша. Значит interactive echo это не равнозначно repr?
>>2156476 Цикл с аппендами медленнее, и громоздче. Просто вы не умеете готовить компрехеншны и распаковку. filtered_data = (entry for entry in args if isinstance(entry, str)) result = [*enumerate(filtered_data, 1)]
>>2151231 (OP) У меня функция обращается к ссылке и скачивает пак видосиков, мне надо чтоб она это делала автоматически в определенное время суток заданное мной, как это сделать?
>>2156595 - Бесконечный луп с проверкой времени - Запустить в нужное время с sleep(3600 * 24) - cron - Какая-нибудь библиотеканейм, которая работает по тому же принципу Выбирай о хошь
>>2156601 Ты ебанулся? Какие еще нахер наносекунды? Оценка в наноманясекундах за цикл не имеет вообще никакого смысла и ничего не поможет тебе оценить. У меня примерно похожее получилось что и у анона >>2156603 - компрехеншн быстрее
Помогите разобраться с энкодингом: Получаю в скрипте с запроса жсон, в нём содержится поле с кириллицей, которое при выводе становится нечитабельным набором символов. При попытке стандартного энкод-декода из цп1251 в ютф8 вылезает ошибка "utf-8' codec can't decode byte "0xd4" invalid continuation byte". Скрипт крутится в кубере, на линуксовом контейнере (настраивал его не я). Как правильно вывести строку с русеком при данной ситуации?
>>2156604 Шизоид, таблетки. Усредненные оценки по множественным ранам хороши тем, что сглаживают случайности. Это БАЗА всей экспериментальной науки. Лурк моар, как говорится.
Так вот, усредненные показывают что таки да, компрехеншен быстрее, но очень маргинально. И это отлично бьется с теорией, потому что две эти разные функции порождают почти одинаковый байткод.
Выводы как обычно: шизойды экономят на спичках, засирая код идиотскими трехэтажными компрехеншенами. Более опытные питонюги временами выбирают циклы исходя из конкретного кейса и их код чиатется намного лучше. И ничем не уступает по скорости (это если вообще отвлечься от того, что оптимизировать питон это да вы вообще блядь отбитые)
>>2156659 >>2156601 А эту штуку [x for x in range(100000)] можно записать как [*range(100000)] Причём работать будет заметно быстрее, нет присвоения лишней переменной и байтокод сильно разный.
>>2156620 >Практика такова, что я ваши компрехеншены отбриваю на ревью и вы бугуртите... Такое возможно, если ревьювер не умеет писать на питоне, а из тех, кто "за две недели синтаксис проглядел и может работать".
>>2156665 >присвоения лишней переменной Ну вот да, когда мы приходим к таким оптимизациям, кажется пора менять питон на что-то batya approved вроде крестов.
>>2156698 Это не оптимизация ради оптимизации, это просто лишние переменные, что вредно для читаемости.
С точки зрения анализа кода код сильно разный, в одном случае по итогу у тебя есть переменная x, в другом случае её нет. Из-за этого и разница в производительности.
Потом в любом случае полезно думать о том, во что вливается твой код. И не делать лишний раз тормоза, когда их можно не делать, причём без вреда для поддерживаемости кода.
>>2156609 >трехэтажными компрехеншенами В примере самый обычный компрехеншн с фильтром из одного условия, который в любом учебнике есть. Призыва использовать их всегда не было, а только показано, как исправить другой код. Где мои два оставшихся этажа?
>>2156614 Разница в 50%. Да, очень маргинально отличается. Когда дорастешь до обработок каких-нибудь таблиц на пару миллионов значений в фоновых тасочках какого-нибудь селери, вспомнишь про то, как писать эффективный код и выкинешь змею нет, не выкинешь, скажут пм и клиент
Переписка с шизами, считаюших таковыми всех вокруг, кроме себя, окончена.
>>2156803 Распаковка работает с любым итерируемым объектом, в том числе с кастомными генераторами, источниками данных и т.д.
>>2156805 Откуда он прилетает, если в том посте даже кода нет, а только указание на нужный метод? Хорошо наверное воображать то, чего не существует, и спорить с ним. Алсо, на практике в подавляющем числе случаев код взятия первого элемента не создает видимость наличия этого элемента, как предложил ты, а передает в default что-то вроде None или статического маркера, если нон возможен как значение в генераторе, так что твой код тоже ни о чем.
>>2156841 как предложил ты, а передает в default что-то вроде None или статического маркера, если нон возможен как значение в генераторе, так что твой код тоже ни о чем. Читай задание и не пукай.
>Алсо, на практике в подавляющем числе случаев код взятия первого элемента не создает видимость наличия этого элемента, Что там first в джанге возвращает, ммм?
> Когда дорастешь до обработок каких-нибудь таблиц на пару миллионов значений Ох щас бы крутить табличные данные в голом питоне. Ты понимаешь, что ты отбитый наглухо?
Допустим, у вас есть несколько модулей в проекте и в них вы часто используете какую-нибудь небольшую функцию, зачастую таких функций несколько и они постепенно перерастают в модуль utils/helpers, что уже само по себе плохо, так как при пересборке зависимостей вам придется обновить все библиотеки, которые его юзают, даже если изменилась одна функция, которую некоторые из модулей могут не использовать. Как решить эту проблему правильнее? Я чет кроме копирования функций по месту требовния ничего не могу придумать.
>>2156860 >Что там first в джанге возвращает, ммм? None он возврщает шиз, ничем не отличается от next([T], None), возвращаемое значение в любом случае Optional[T] и его требуется проверить на None
>>2156897 Кароче, есть набор функций, которые по чуть чуть юзаешь везде. В один момент перенес их в модуль utils. Теперь когда ты изменяешь функцию get_zalupa пересобираются библиотеки, которые используют модуль utils, но которым функция get_zalupa не нужна, но которые используют функцию get_jopa из того же модуля. Модули, которые используют get_zalupa и get_jopa являются пересекающимися множествами.
>>2156905 Это означает говнокод, тут либо дефолт который можно использовать дальше по коду либо None. Все остальное выглядит как полный треш за который обоссут на ревью.
>>2156918 Представь, что у тебя ci/cd настроен так, что пуш в мастер для модуля создает новую версию пакета и заливает ее в твой pypi/на сервер. При этом проверяются все либы, которые зависимы от исходной и так же пересобираются, пока везде не будет самая новая версия твоего модуля.
>>2156920 мимо Ты буйный школьник какой-то. Решение дали. Я, кстати, не знал, что вот next() такое умеет. Правда им реально не пользуюсь.
Этот параметр нужен как раз для таких целей.
Использовать так object это какая-то лютая дикость. Приведи пример, чтобы в каком-нибудь реальном проекте для каких-то подобных целей object использовался.
<Более того, не понятно как вообще это можно потом использовать, ну будет у тебя kek типа object. Что ты с этим будешь делать?
Если не хочется None, то тогда делают Ellipsis (троеточие) result = next(gen(), ...) if result is Ellipsis: ____pass
Это альтернатива None, поскольку None всё-таки может штатным образом возвращаться.
>>2156943 >Использовать так object это какая-то лютая дикость. Приведи пример, чтобы в каком-нибудь реальном проекте для каких-то подобных целей object использовался.
>>2156959 В стандартной либе полно треш кода Особенно забавно: cache_get = cache.get # bound method to lookup a key or return None cache_len = cache.__len__ # get cache size without calling len()
>>2156976 Нет так просто с этим. Ты можешь захотеть создать свой класс, унаследованный от словаря, и переопределить в нём нужные методы.
Если делать такие оптимизации, то придётся городить что-то очень сложное.
Ну и в принципе есть такое, что язык плохо оптимизирован. Просто его изначально создавали без такого прицела. Там много чего можно было бы оптимизировать, если сделать специальные особые типы с ограниченными возможностями. Например, те же словари, но без возможности наследования от них.
>>2156976 У питона очень тупой итрепретатор, к сожалению, хотя при генерации байт-кода уже можно было бы сделать оптимизации. Вроде за производительность планировали взяться в следующих релизах. Охуел, когда узнал, что даже вызов функции в питоне это тяжелая операция.
>>2156988 Ну там ниже идет вроде манкипатч try: from _functools import _lru_cache_wrapper except ImportError: pass Это вроде как сишная реализация которая перекрывает то что было выше
>>2156985 Правильно, потому что если размер задан, то в кэше лежат уже не сами значения, а кортежи в которых помимо значений есть еще и указатели на позицию в кольцевом буфере.
Поэтому, просто None означает что мы ничего такого в кэш не клали.
>>2156991 В плане байтоёбства я вот что не понимаю строки 542-547 def wrapper(args, kwds): ____# No caching -- just a statistics update ____nonlocal misses ____misses += 1 ____result = user_function(args, kwds) ____return result
На кой хрен тут создаётся переменная result? Почему нельзя сразу сделать return user_function(args, *kwds) (звёзды слетят, ну все поймут) Это обходится в две лишние ненужные операции в байткоде.
>>2156975 >2 LOAD_ATTR 1 (get) The LOAD_ATTR instruction now uses new “per opcode cache” mechanism. It is about 36% faster now for regular attributes and 44% faster for slots. (Contributed by Pablo Galindo and Yury Selivanov in bpo-42093 and Guido van Rossum in bpo-42927, based on ideas implemented originally in PyPy and MicroPython.) В 3.10 начали оптимизировать это
>>2151231 (OP) Привет, анон. Так вышло, что надо переходить по изъебистой ссылке в питоне, urllib и requests выкидывают похожие ошибки
ProtocolError: ('Connection aborted.', OSError(0, 'Error')) Типа того, в гугле 0 инфы по делу, может кто знает как решить ? или посоветуйте либу, не эти 2 хуйни, которая может подключиться по прокси (http , socks5 ), сделать куда-то запрос без лишней ебли головы
>>2157047 requests пиздец хуйня, отвратительно работает подключение по HTTP прокси. Вместо того, чтобы выкинуть ошибку, считает прокси валидными при заведомо плохих данных. Пиздец, открыл их гитхаб, не только у меня проблемы с ними. А альтернативу б найти
Насколько критично читать лутца на англе? Мне больше бумажные издания нравятся соответственно быстро получить могу только на русском, много ли я потеряю?
Аноны, посоветуйте, как изучать python. Сейчас учусь на первом курсе на направлении, не связанном с программированием, но подумал, что было бы неплохо изучить его для себя, ибо в будущем вполне может пригодиться. Сам я с питоном знаком, сдавал с его помощью ЕГЭ по информатике, хотя сам прекрасно понимаю, что это достаточно далеко от настоящего программирования. Так что бы мне такого почитать, чтобы разобраться? Думал почитать Лутца, но прекрасно осознаю, что тысячу страниц я не осилю, так что пока начал читать "Укус питона"
>>2151231 (OP) Какой в питоне есть годный способ сделать несколько попыток повторения при какой-то ошибке? Я обычно делаю рекурсивные вызовы со счетчиком, но это как-то не очень.
>>2151231 (OP) Как создать ссылку для получения файлов в бесконечном цикле? При обращении к ссылке файлы должны автоматически сохраняться в указанную директорию.
Короче, делаю дз по джанго. В одном из заданий говорится, что нужно написать код во вьюшке, чтоб при заходе на /условность открывался список, просто текст. И я это сделал. Админка работает, на главной текст, на /условность тоже текст есть. Задание проверили и сказали, что ожидают предопределение списка, оборачивание его в теги нумерованного списка, формирование строки, которую опять нужно обернуть в теги и "подать" в HttpResponse. Я по правде сказать в прошлом универе писал чуть-чуть на си шарпе и то, плохо что помню. Вот допустим во вьюшке у меня представление
>>2157253 Ты нормальный? Речь о составе команды, при чем тут криворукость? Даже если лично я навелосипежу эту обработку на крестах-жабах, никто в здравом уме не будет это принимать, т.к. понадобится нанимать отдельного спеца на какой-нибудь кривой непостоянный график для поддержки этого решения, когда весь проект и, соответственно, команда для него - змеевеки.
>>2157328 Дык я не знаю, чо вы там изучить успели уже. По нормальному если делать - надо создать context и туда передать свой список значений, а потом во темплейте уже подставлять через тэги типо <ol> {% for item in items %} <li>{{ item}}</li> {% endfor %} </ol>
>>2157272 Передавать retry_count в kwargs пока тот не дойдёт до библиотечной функции, которая этот параметр поддерживает. Если нет возможности, то пиши свой велосипед с удобным тебе логгингом, проверкой результата и хэндлинга эксепшенов
>>2157320 В этом году ЕГЭ сделали полностью компьютерным, так что можно было абсолютно все задания решать с помощью компьютера, но некоторые всё же быстрее на листочке решить. Из тех, что решаются с помощью программы, были задания на решение уравнения с несколькими неизвестными и параметрам, задания на написание программы с рекурсией, программы для перевода в другие системы исчисления, обработка массивов с числами, обработка текстовых файлов, нахождение промежуточного значения переменной, две задачи прикладного содержания. Если интересно, можешь в Гугле набрать "решу ЕГЭ информатика" и посмотреть типовой тест
>>2157730 >Если интересно, можешь в Гугле набрать "решу ЕГЭ информатика" и посмотреть типовой тест Загуглил, чуть иначе. Вот такой вариант нашёл, пробный онлайн-тест: https://inf-ege.sdamgia.ru/test?id=9195205 Что-то там такой конкретный литкод, я не ожидал.
Попробую ради интереса чуть порежать, пока не надоест.
>>2151231 (OP) О боже блять, ну что за еб твою мать. Запустил фастапи, попытался создать соединение через вебсокет, постоянно высирается ошибка 403: ('127.0.0.1', 49434) - "WebSocket /ws" 403
Делаю как в примерах, все равно та же хуйня. Думал распространенная рпоблема, но нихера подобного. Что это блять?
Объясните ньюфагу. Вот допустим у меня есть функция_1 которая return список. Есть функция_2 которая что-то делает с этим списком. Я должен передавать список в папрметрах функции_2 или можно обращаться к списку как к аргументу функции_2? Есть какие-то рекомендации или это фломастеры на вкус и цвет?
>>2151231 (OP) Вопрос по фласку ip выводится через request.remote_addr, а как дату вывести? Причем желательно именно дату без времени в часах и минутах.
Как элегантно раскидать вложенные условия? Допустим, нужный результат зависит от функции, вызов которой зависит от: x > 0 или y > 0 или z > 0,. То есть на выходе получается 8 вариантов. Если писать через IF-ы, выйдет жесть, пока что вижу такой подход — преобразовать три условия в три бита и в зависимости от преобразования двоичного числа в десятичное вызывать нужную функцию. Но хз, как-то не по питонячьи звучит, так можно и на плюсах написать, может у питона есть свое решение для такого рода задач.
Как в wxPython'е сделать кнопку с прозрачным изображением (скруглённые углы), чтобы фон продолжал отображаться?
Я могу просто в главном Panel'е через dc.DrawBitmap() нарисовать, но тогда у меня не будет никакого объекта с координатами и размером, чтобы клик хендлер повесить. Если же я пытаюсь использовать хоть StaticBitmap, хоть Panel — сразу же чёрные углы появляются. Неужели это такой охуительно продвинутый дизайн, что не сделали нормальным методом? Я с ткинтера-то ушёл, потому что на стаке сказали, что в wxpython'е прозрачности имплементированы нормально. А в итоге соврали, падлы, та же хуйня без примитивных фич.
Я даже не против иметь два "объекта": один для отрисовки и второй для нажатия. Но как мне тогда сделать полностью прозрачный объект, который будет лишь для захвата клика мыши?
>>2158308 Ну как обычно, часами бьёшься, а как спросишь — тут же решение нашёл. Хотя, вроде вот разобрался — нужно унаследовать от StaticBitmap'а и в EVT_PAINT хендлере не делать dc.Clear(), и там же dc.DrawBitmap().
Пасаны памахите. Пилю джанго проект. Внезапно одна приложуха начала выплевывать страницу как текст html Ни ошибок ничего. Код самой приложухи не менялся. Что делать? куда смотреть? Гугл не помог.
>>2158341 С заголовками все норм. Но дело было действительно в контейнт тайпе. Кто то передал словарь контекст в рендер дважды, как раз на позицию контент тайпа. Убрал лишний словарь все заработало.
>>2151231 (OP) Ебаный рот этого fasapi блять... Сука битый час уже ебусь с ошибкой рендеринга темплейта jinja. Когда юзаю там url_for то эта мразь высираетм не NoMatchFound то есть не находит файла который я там ему указала. Абсолютно не ясно блять, хули ему не так, отладить - тоже
Двач, нужна помощь в запуске diff с помощью питона. Надо сравнить 2 дерева именно diff'ом.
subprocess.call('diff -qr ' + folder1 + ' ' + folder2 + '> file.txt', shell=True) не создает файл. Возможно проебал listdir или что-то еще. Лучше в телегу, @nevershi, за помощь могу чуть отблагодарить.
>>2158019 Алгоритмический язык - язык, который используется для Кумира (программка для изучения программирования в средней школе). А про Бейсик не знаю, не думаю, что ещё в принципе в каких-либо школах изучают
>>2158296 4 раза перечитал пока понял. Python way в данном случае сделать кортеж args и словарь kwargs аргументов функции, заполнить их в произвольном порядке, произвольным способом, и в конце вызвать один раз функцию с этим словарем в качестве аргумента используя операции распаковки func (args, *kwargs). https://realpython.com/python-kwargs-and-args/
>>2151231 (OP) Как правильно хранить все инстансы конкретного класса? У меня есть набор объектов моего класса Session. У каждой Session есть свой уникальный id, хочу метод типо get_session(id) который по этому уникальному айдишнику достанет конкретную сессию
Смотрите, какая хуйня. https://ideone.com/WWNNVv Выдает один объект на неиспользуемые вызовы, а потом его же дает на первом следующем используемом, лол. Это оптимизация конкретно вм cpython? Есть где почитать про такие штуки?
>>2158827 Это не один объект, это разные объекты размещенные в одной и той же части памяти, просто у тебя при отсутствии присваивания lst тут же уничтожается и при следующих вызовах питом переиспользует эту память
>>2158913 Хмм, похоже на то. https://ideone.com/atK3oC На как он так постоянно попадает в тот же адрес, если даже последовательно созданные могут очень отличатся?
>>2158919 Считай что у питона в этот момент есть набор ячеек с выделенной памятью, которую еще не освободили и размера которой хватает, что бы закинуть туда твой lst
>>2151231 (OP) Как открыть видос используя фласк в новой вкладке браузера? Файл хранится у меня, при переходе по ссылке должен воспроизводится, вроде как надо юзать return send_file(тут чета написать надо), но хз что.
>>2159093 Я честно сам не знаю что за переменная это, это в примере так, и мне нужно в advertisement_spec вернуть HttpResponse со строкой, состоящей из элементов списка, обёрнутых (элементов) в теги, препод еще говорит что у меня просто строка и в реальном проекте пользователь будет попунктно вводить строки,я не понимаю о чем речь идет, а моя вьюшка вот from django.shortcuts import render from django.http import HttpResponse
>>2159133 >Там первый для главной страницы и второй для /блабла. Это неправильно? Вроде работает Я не знаю, что для тебя "правильно". Если тебе просто html отобразить без проброса данных, то сойдёт
>Что вообще делают темплейт теги и чем отличаются от html ? Ну смари. Вот видишь этот словарик "{'tasks': tasks}" загадочный? Це есть context. В этом контексте ты передаёшь данные, которые прокидываются в твой файл, указанный на один параметр раньше. То есть в данном случае в "advertisement/advertisement_list.html". Внутри html-ки ты можешь брать данные из контекста при помощи языка шаблонов Джанги. Как что там работает расписывать не буду - доки в помощь, там нет ничего сложного.
Мужичье, подсобите нубу. Сделал пару проектов: легенький чат на сокетах, типичный бложек с админкой. Так вот, хочется намутить что-то интересное и полезное, чтобы не пылилось в репозитории, а использовалось кем-либо. В голову ничего кроме скучных ботов с погодой не приходит, но лесом их. По части веба знаю только фласк и некоторые расширения. Есть идеи?
Появляется вот такая штука при попытке запушить в гит, помогите пожалуйста, git pull уже пробовал, не помогает, пишет refusing to merge unrelated histories. До этого проект с гит удалял и вот пробую опять залить.
21:47:45.123: [project] git -c credential.helper= -c core.quotepath=false -c log.showSignature=false push --progress --porcelain 123 refs/heads/master:master error: failed to push some refs to 'https://адрес.гит hint: Updates were rejected because the remote contains work that you do To https://адрес.гит ! refs/heads/master:refs/heads/master [rejected] (fetch first) Done hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
>>2159469 Подозревал что дело в CORS. Все так и оказалось. Он блять localhost и 127.0.0.1 считает разными хостами блять Ну вот че это захуйня? Что за еб вашу мать? убил 4 часа на эту хуйню
Попытался прикола ради заделать синглтон как советовали в инетах. В результате мне в ебало кидают ошибку. Втф? "object.__new__() takes exactly one argument" но ведь блин в примере было именно так...
Как реализовать подобное поведение с помощью Пистона: У меня есть некий объект-словарь, я посылаю запрос на получение некого элемента из этого словаря, значение которого превышает 100. Если мы смотрим в словарь и на данный момент не видим такого элемента то "засыпаем" и ждем его появления, как только он появляется, отдаем его. Подозреваю тут асинхронку нужно ебошить, но вот как именно?
>>2159572 Я когда-то такую штуку делал, но тут элемент ты получишь не сразу, а когда эвент луп отпустит, может у тебя адаптировать получится под твои нужды
Как отправить сообщение через aiogram вне декораторных функций? Код вроде tg = Bot(token=token) tg.send_message(user_id, f'test') не работает т.к. обычно он вызывается через await а await неполучается указать вне декораторных оберток.
>>2159572 Можно добавить хук в методы изменяющие словарь, хук будет проверять появилось ли значение соответствующее условию. Если появилось, то хук вызывает коллбек.
>>2159692 Легко сказать, неочевидно реализовать Что значит "проверяет"? Оно в бесконечном цикле там сидит, проверяет, засыпает на секунду и снова проверяет?
>>2159670 Не владею aiogram, то если ты хочешь вызвать корутину из синхронного кода, то есть то, что надо через await запускать, тебе надо запустить эту корутину в виде задачи asyncio.create_task(tg.send_message(user_id, 'test'))
Так запустится, но результат корутины ты получить без await в любом случае не сможешь.
Хм, а как реализовать этот самый long-polling на питоне (не важно на каком фреймворке)? Вот у меня есть данные которые я с сервака хочу передать паре клиентов, что на нем сейчас сидят, как это сделать блин? Все работает в формате реквест-респонс, я не могу просто и без задней мысли с сервака послать реквест клиенту на сайте. Вроде как есть выход - long polling: клиент просто посылает запрос и ждет ответа скажем 30 секунд, если ничего не происходит то снова шлет запрос и ждет. Вроде неплохо звучит но как это бля делать? Что во фласке что в фастапи или еще где реквесты обрабатываются особыми функциями-хендлерами и как же мне блин заставить конкретный хендлер отправить данные конкретному клиенту?
>>2159584 Вообще говоря неплохая тема, как бы еще таймаут поставить чтобы в случае его превышения бросался эксепшн / возвращался None, а то иногла ждать до обсера - не лучшая идея
>>2159584 >Я когда-то такую штуку делал Очевидно недавно, код завязан на специфику версии 3.9, которой меньше года.
Как минимум явная ошибка в await_elem, там ты перезаписываешь future в словаре _await_task, не проверяя, есть ли там что-нибудь. При этом делаешь pop оттуда, когда достаёшь элемент. Очевидно может быть коллизия.
Честно говоря что-то странное, вообще ты какие-то именованные каналы или именованные события переизобретаешь.
>>2159572 Здесь надо тебе прописать ТЗ корректно, тест-кейсы.
Что должно происходить, если ты сначала положишь элемент больше 100, а потом уберёшь его? И после этого будешь слушать?
Насколько большой словарь? Тут просто вопросы оптимизации могут быть.
Вообще такая идея может быть. Ты создаёшь свой класс-словарь. В нём есть множество (set) ключей, значения словаря по которым больше 100. И делаем asyncio.Event(), событие, которое срабатывает, если есть элемент такой.
Вот, в __setitem__ ты смотришь, какое значение. Если значение больше 100, помещаешь ключ в множество. Если меньше, делаешь discart ключа из множества.
После этого смотришь на размер множества и меняешь статус Event() по необходимости.
>>2160381 >тест-кейсы Конкретно принципиален такой тесткейс
my_dict[] ... пока в нём нет больших значений, но в другой задаче кто-то уже что-то ждёт my_dict['key'] = 444 my_dict['key'] = 10 Вот тут синхронный код, без await. Ты записал большое значение, и тут же перезаписываешь его маленьким. Как должен вести себя словарь в этом случае?
>>2160632 В основном два телеграм бота (акция халявный бигмак в макдаке - авторег аккаунтов, парсер транспорта москвы по бортовым и гос номерам) и по мелочи парсеры, автоотправка форм (разработка типо бомбера обратных звонков с разных сайтов), раньше делал говно сайты на пыхапе и верстал хуевый дизайн. Хз насколько тут это считается норм для новичка, но тупо тестировал возможности питона и пытался крутиться, заработать пассивно пару соток в день (пока профита нет, кроме опыта)
>>2160030 Блять, это и есть long polling? Без рофлов? ебануться нахуй Даже если мы заменим эту ебень на асинхронки и asyncio.sleep все равно херня выходит
>>2161090 Реализация long polling будет очень сильно зависеть от фреймворка и от задачи.
Вот у тебя есть хендлер, обрабатывающий соединение. Оно должно запускаться или в виде asyncio-задачи, или в виде отдельного треда.
Хендлер не отвечает сразу, а подписывается на какую-то очередь или канал, из которого с таймаутом ждёт сообщение. Если пришло сообщение, отправляет его, если не пришло, отправляет сообщение "ничего пока нет, call again".
>>2159736 Основная идея вот такая -> https://ideone.com/NJKSxV >Оно в бесконечном цикле там сидит, проверяет, засыпает на секунду и снова проверяет? Нет. Чтобы изменить словарь, надо вызвать один из его методов изменяющих этот самый словарь. Вот в этих методах и прописывай дополнительное поведение. В остальное время там нечего проверять. >>2160007 >без задней мысли с сервака послать реквест клиенту Вебсокет >как же заставить конкретный хендлер отправить данные конкретному клиенту У клиента должен быть идентификатор. При получении запроса хендлер проверяет есть ли данные для клиента с этим идентификатором
Вопрос по Django. Обычно в модели юзера есть роли и каждая роль наделена комплексными типичными для роли правами. Но если есть потребность, как грамотно прописать для каждого юзера в отдельности какие-то права на конкретные view или действия? К примеру у нас есть роль модератора, который может удалять посты, редактировать посты, банить пользователей. Но одному пользователю я хочу дать возможно тоже банить людей, но при этом не давать другие права модератора. А еще одному позволю только удалять посты. И т.д. Я не хочу создавать тысячу ролей на все возможные сочетания прав, а просто хочу как-то 1-2 кликами давать права на конкретные действия в конкретных view. Как такое обычно осуществляется? Извиняюсь за косноязычность.
>>2162026 Создаёшь 2 модели: Role и Permission. Связь Many-to-Many По сути всё, что тебе надо будет сделать - создать роли, в которых будут прописаны права на действия. Потом уже эти роли раздавать нужным пользователям.
Но это будет работать в том случае, если у тебя в принципе права у пользователей похожи. Если же у тебя принцип такой, что один пользователь может чо-то добавить, другой чо-то удалить, а третий отредактировать, при этом второй может посмотреть записи таблицы, а первый нет, то лучше напрямую с Permission работать без создания ролей
>>2151231 (OP) Привет анонычи, реквестирую литературу или курсы по асинхронщине в питоне для веба , всякие aiohttp и тп, везде по чуть-чуть я и сам нашел. Но наверное же есть материал, где львиная часть посвящена именно этой теме?
>>2162193 Такой же есть реквест. Из советов бы выделил асинхронный фреймворк fastapi. Есть отдельный канал на youtube русскоязычный. В зарубежном сегменте тоже можно нагуглить отдельные плейлисты или скачать целые курсы с пиратской бухты. Еще есть такой проект вида написать чат в реальном времени на django channels и сокетах, тоже популярные и полезный вариант жоско познакомится с асинхронностью.
>>2162350 скорее всего нужно пройти какой-нибудь курс, который последовательно познакомит с основными концепциями и типами задач. На этой базе уже будет полегче решать. Но есть много людей, которым алгосы не даются. Лично знаю ебейшего парня, который зарабатывает 10к зеленых, но при этом не умеет в алгоритмы, он не прошел собес в uber с легкой задачкой на нахождение анаграмм.
>>2162358 Ну, вот я, например, решал задачу про maximum subarray problem. Долго мучился и в итоге высрал кривое решение O(n^2). Потом прочитал про Kadane's algorithm и понял, что это ужасно просто. Но неужели до него можно быстро дойти, никогда с ним до этого не сталкиваясь? Или эти задачки (даже простые) основаны на том, что ты просто задрочил все эти алгоритмы?
>>2162389 > решал задачу про maximum subarray problem Это задачи из класса "динамическое программирование". Они или методами ДП решаются, или схожими идеями для простых случаев.
На литкоде таких довольно много.
Про себя не скажу, что владею хорошо этими техниками, для меня это сложные задачи. Когда не easy и когда надо хорошее решение.
Но на самом деле там довольно небольшой набор приёмов, как решать, идей, как свести сложные задачи к простым, разных трюков. Если ими владеть, что-то придумать, что-то изучить в темах про ДП, то можно довольно легко научиться решать. Мне так кажется по опыту с другими темами.
Попробуй в литкоде выбирать по классам задач. Там есть и на другие темы.
>>2162430 Короче, нужно больше практики и учить алгоритмы. Спасибо! >>2162436 Да. Ну, в универе было немного проганья, но можно считать, что его не было.
Форумчане, простите за беспокойство, я к вам с такой ситуацией.
Ищу "Партнера по отчетности".
Вкатываюсь в питон, я в самом начале. И я пропащий прокрастинатор и хикка. Пытаюсь начинать не первый раз уже. Так вот на сайте ютуб прочитал такую тему, что де надо тренера найти, который будет тебя пинать. Это может быть друг или родственник или тренер за много бабок. Но тык как я хикка-нет-друзей, думаю найти себе собрата где-то тут.
Тоже кто сильно ленится, наверно в начале пути, чтоб пинать друг друга. Отчитываться о проделанной работе. Или ВДРУГ есть такой великодушный и терпеливый человек, который хочет попинать просто так.
Что-то вроде: Сколько часов сегодня занимался, а хули так мало, твои оправдания? А чё ты делаешь? Почему на двачах сидишь?!
- Контакты: тг @M10875 27 лвл если что то видео с ютуба youtube.com/watch?v=RkOJmw15nb4
Подкиньте идею для джанги, чтоб с целери+реббитом, кешированием, работой с внешними сервисами и всякой прочей штукой. Хочу освежить знания по джанге, а вот сижу и придумать не могу, все простое получается.
>>2162732 Сайт который показывает курс валют из нескольких источников с возможностью выгружать csv с историей изменения курса. Потом настрой locust и начинай гонять нагрузку
>>2162356 Да это жоска, я конечно могу ошибаться, но Django Channels это как бы вставки в джанговый код , мне б полностью асинхронщину делать, мне кажется, подход с DJ(Django Channels) сработает в проектах джанги, где требуется что-то ускорить или добавить такие вещи как чат, а если я хочу быструю рест или того лучше графовую апишку, то наверное надо писать что-то сразу на асинхронщие
>>2162389 Не, тут все нормально, я тоже не дошел самостоятельно до такого решения. Задачку ты выбрал хорошую, на собеседованиях может встретиться. Её еще можно решить используя частичные суммы. С помощью частичных сумм можно найти, например, все подмассивы с заданной суммой. Посмотри как-нибудь. Насчет литкода. Я бы не стал там решать задачи. Лично я смотрю в основном на geeksforgeeks, там можно удобно по темам искать. Также просто гуглю задачу и смотрю на разных сайтах решения + нахожу похожие. Еще на medium куча классных лонгридов на темы алгоритмов. Из последнего понравилось: Best Time To Buy & Sell Stocks On Leetcode — The Ultimate Guide. Отдельно советую решить все задачи на sliding window
Питонач, помоги разобраться с циклами над словарями. У меня есть список и словарь. Словарь содержит все элементы этого списка в качестве значений. Нужно получить ключи только для тех значений, которые есть в списке, и положить эти ключи в отдельный список.
>>2163214 Блин, у меня очень туго с list comprehension, никогда их не понимал. А как мне вывести, если в lst есть какой-то элемент, которого нет в dict? Например 7. Т.е.:
В джанге, если базовое приложение. И дополнительно в нем создаются другие приложения. Я вот не понимаю логику создания дополнительных приложений. Что это? Сгруппированные по функциональности наборы страниц и логики или что? Вот поясните.
>>2163278 >Сгруппированные по функциональности наборы страниц и логики или что? Да, вот есть у тебя форум на сайте, делаешь из него отдельное приложение, есть профиль пользователя - еще одно приложение, каталог товаров - так же
Я нюфаг, нихера не понял, почему как-то через жопу работает, когда я хочу импортировать модуль из пакета, который лежит на том же уровне, что и пакет, в который импортируется? Ну вот у меня папка, в ней пакет1 и пакет2, в модуле из пакета1 я пишу фром ..пакет2 импорт модуль2. И какая-то говнина случается. Но при этом когда я это устанавливаю как бы при помощи Поэтри (не очень понял, че я делаю если честно, делаю поэтри билд, а потом этот дистрибутив устанвливаю типа) и оно работает. Просто я курсик прохожу и типа я все сделал, оно работает, но тесты на этом сайте курсиков не проходят, наверное потому что они сам код проверяют и как-то там на этих импортах обсираются.
Гуглил, там вообще какая-то ебля пиздос. Это реально надо че-то там пыхтеть? Или как-то просто можно решить вопрос? Или мб просто сделать чтоб модуль2 был внутри модуля1 и типа норм?
Здравствуйте няши. Пытаюсь вкатится в эту вашу джангу, но получается плохо. Есть задача сделать форму с multiplechoicefield что бы чойсы брались из базы. Но по какой то причине форма не меняется при повторных вызовах. Т.е. один раз в дебаге в конструктор заходит, а при последующих уже не заходит. Похоже кешируется. Как бы мне побороть такое ее поведение? Кто знает?
Сап, питоны. Я тут недавно жаловался на отсутствие источников о продвинутых темах в питоне. Пока сам нашёл популярные сложные вопросы на собесах. Это mro, метаклассы, итераторы/генераторы/корутины, async/await и mutable defaults. Знает кто-нибудь книгу, где это всё подробно объясняется? Или где ещё тем почерпнуть?
>>2163570 Большинство из этого нихуя не сложные вопросы, а самая что ни на есть база. > mro, итераторы/генераторы и mutable defaults Есть в любой не не совсем нубской книге. > корутины, async/await Есть книга от орайлей про asyncio, я пока не читал, но вроде годная. Метаклассы есть у того же лутца и ещё в некоторых книгах видел, сам пока не вникал.
>>2163572 >asyncio Это же либа для имплементации корутин на генераторах, которая до async/await появилась. А async/await как раз её заменила.
Да база, но не для новичков. Фундамент из самых кишок питона. Как раз то что надо чтобы подняться с элементарного уровня до продвинутого. Мне скорее не объяснение надо, а список топиков, которые я ещё сам не нашёл. В какой-нибудь книге может в списке глав эти темы есть и тогда хочется взглянуть на соседние главы.
>>2163634 >Как раз то что надо чтобы подняться с элементарного уровня до продвинутого. Тут я конечно загнул, но смысл надеюсь передал.
Вот видел задачку написать функцию декоратор на подобии lru_cache, но можно упрощённую. И тут у новичка, который знает и про mutable defaults и про monkey patching и декораторы без проблем пишет всё равно случается тупик от непонимания как в декораторе хранить состояние кэша между вызовами функции. Очевидное решение сделать класс-декоратор, но требуется функция и чтобы её сделать нужно как раз вспомнить mutable defaults или monkey patching и догадаться применить один из этих методов. Поверхностное изучение этих тем на уровне простой осведомлённости о существовании таких вещей в питоне не достаточно чтобы решить задачу даже с учётом того, что вещи эти базовые.
>>2163634 > Это же либа для имплементации корутин на генераторах, которая до async/await появилась Нет, это именно базовая либа для асинхронщины, просто async/await позже внесли в синтаксис языка, это считай обвязка для них. https://docs.python.org/3/library/asyncio.html
Как правильно определить интерфейс в Питоне? Понимаю что малость нетипичный для питона процесс но все же - я в тайпингах использую интерфейсы а не сам класс, потому что так меньше связность и меньше возможностей наткнуться на циклический импорт
Как в таком случае правильно наследоваться от базового класса? Есть вот у меня BaseModel, класс User надо пронаследовать от него а также и от IUser чтобы обозначить интерфейс.
Как это - "покрыть свой код тестами"? Я вроде что-то слыхал про ytest всякие но не совсем понятно как покрывать тестами django или flask-приложение
Косяк вот в чем: на предыдущем месте работы у нас не было никаких юнит-тестов) Вот вообще, я был фуллстек макакой и тестил попросту проверяя функционал, запустив локальный сервер. Сейчас меняю работку и в новой конторе мног овнимания уделено покрытию код тестами, а мне стремно признаться в моих пробелах тут, меня ж обоссут. Что это такое и с чем едят?
>>2164082 И как с запросами быть? Отправлять фейковый запрос? А что если в нем обязательны куки? Что если таких запросов несколько от нескольких разных клиентов но все должны быть проверены вместе?
>>2164495 >full_name = f"{user_info['first']} {user_info['last']}" >почему нельзя просто >full_name = {user_info['first']} {user_info['last']} В первом случае у тебя по итогу строка, во втором случае словарь. Точнее в этом случае вообще ошибка синтаксиса, но мог бы быть словарь.
>>2164495 Ну, потому что это не валидное синтаксическое выражение? Ты забыл кстати скобочки убрть, они относятся к форматированию строки. А так у тебя просто два раза индексация словарей. Это как две переменные подряд написать: x x. Бессмыслица. А форматирование у тебя вставляет переменные (значения ключей словаря) в строку и тогда их можно отобразить так, чтобы они рядом находились.
>>2164100 Фейковых запросов не надо. Для начала покрой ту часть логики, которая работает без веба. Пиши данные в таблицки и смотри что они записываются и нужные связи проставляются. Дергай функции, которые должны инициировать запись в бд и проверяй что она такая какая и предполагалась. У джанги есть тестовый клиент и тестовая бд. Можно даже запросы посылать вида TestClient.get('localhost:8000/huy/pizda?page=1') А вообще можешь в репозиториях гитхаба посомтреть. Там много проектов с примерами.
Опытные аноны, подскажите, стало интересно, я стронг джун, реализовал 2 настоящих проекта самостоятельно за последние 8 месяцев, в последнем все прям серьезно и докер и си ай, всякие редисы, селери и прочее, в общем опыт со всеми базовыми технологиями есть + в резюме указан опыт 4 месяцев всяких учебных и мелких фриланс проектов. На какую зп я могу претендовать с этими знаниями?
Кто-нибудь в курсе, можно ли в aiogram показать кнопки без text? Сейчас отображаю вот так: await message.answer('Text', reply_markup=keyboard_start) Но вот текст вообще не нужен
Прилетел оффер на 150к. Я мидолл с 1.5 годами опытами. Косяк в том что я сам не уверен что данная вакансия мне подходит. Псец, сижу думаю и возможно придется ее отклонять
>>2164995 Не ссы. Почитай о языке, о инструментах что они юзают. Сходи, послушай что спрашивают. Может и пройдешь. Не знаешь - да и хуй с ними. Не думай, что тебя там обоссут и засмеют. Если так и будет, вставай и уходи.