Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Парни, кто в веб что-то шарит: Пилил приложуху на Джанго, добавил для интерактивности js (ajax). В конце удачного post-запроса мой View возвращает фронту вот это:
И я соответственно вижу на экране вот такую херню с пикрила. Вопрос: с хрена ли? Юзер не хочет смотреть на мой json-объект, он хочет чтобы его обработали и показали ему адекватный html. Как фиксить?
>>1690530 Я не могу разобраться как его использовать. К чему этот метод .get_chatters относится? В документации есть только упоминание get_chatters и все.
С .timeout я разобрался что он работает с ctx.channel как ctx.channel.timeout.
>>1690639 Неа, вот ajax-запрос: https://ideone.com/ydNrMV Страница не рефрешится и данные сохраняются в БД на беке как и надо. Проблемы видны на фронте
Создал модель A и B переходя по ссылке в модель A на сайте выводится информация различная и ссылки на переход в модель B 127.0..../A/B - адрес path(r"^(?P<slug:slug>/<slug:url>)/$", views.ChapterDetailView.as_view()) и при переходе по адресу 127.0..../A/B получаю ошибку 404. что не так?
>>1691020 Регулярка неправильная. Судя по документации, надо (?P<first>\w+) Т.е. ?P<name>pattern. Не знаю, зачем там :, может и надо Т.е. тебе надо примерно так ^(?P<slug:slug>.+?)/(?P<slug:url>.+?)/$
>>1691028 еще вот такое пишется WARNINGS: ?: (2_0.W001) Your URL pattern '^(?P<slug:slug>.+?)/(?P<slug:url>.+?)/$' has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an oversight when migrating to django.urls.path().
>>1691050 чет хуйня какая-то, стак овер говорит, что так и должно быть. А я одни ошибки в ебало получаю. Весь день эту хуиту решаю, этот ебучий /2ch/1/
Здарова, постоянно слышу про какие-то скрипты на питоне, про автоматизацию. Вот у меня есть программка конвертации видео. Она должна предоставлять какое-то API или питон ее взломает и сам заберет себе все нужные методы? Не спал 24 часа поэтому пишу хуйню, но ответ нужен срочно
>>1691225 Хотя можно с помощью библиотеки по иметации кликов все заебенить, но заебешься и программа должна быть всегда в координатах нужных, да мышкой не подвигаешь сам, когда она работает
>>1691225 А что за программа? Если программа работает через консоль, каковых большинство (ffmpeg, mencoder), то можно сделать обвязку на питоне и спокойно работать. Если чисто графическая прога, то скорее никак, или очень сложно.
Что он куда "перевел"? Логично было бы если б я давал ему словарь по типу {"a": "X", "b": "Y"} и он замещал бы ключи в оригинальной строке новыми значениями. Но эта срань работает максимально нелогично
Это из-за ебучего умлаута, да? Почему так и что с этим делать, кроме как специально реплейсить его в названии? Ubuntu 20.14, если что. Сурс кидать не буду, потому что в нём кроме этого всё нормально.
>>1691013 Читаю про классы, разбираю пример. Поясните пару вопросов.
1. В чем смысл конструкции self.name = name? Почему нельзя сразу использовать name внутри класса? 2. В чем смысл данной строчки SchoolMember.__init__(self, name, age) в подклассе?
>>1691615 >Почему нельзя сразу использовать name внутри класса Потому что ты используешь name не "внутри класса" а как локальную переменную внутри одного из методов класса
self это ссылка на сам объект, всегда передается как 1й аргумент в методе (если это не classmethod или staticmethod канешн - там другие плюшки). Поэтому написав del self внутри одного из методов ты просто удалишь эту ссылку, но не сам объект
>>1691688 А как гарантированно удалить объект?.. Вот есть у меня функция
def f(obj): ____del obj
Хочу чтобы она 100% удаляла этот переданный объект (все ссылки на него). Как такое сделать? чую что надо для этого написать свой класс и каким-то образом автоматически сохранять все ссылки на экземпляр внутри приватной переменной в этом экземпляре
>>1691702 Идея такая. Создай вторую структуру, лучше через set, в которой ты будешь хранить имена в нижнем регистре. Сначала её надо инициализировать lowered_names = set(x.lower for x in current_names)
потом в цикле делаешь проверку: if x.lower() in lowered_names: ____lowered_names.add(x.lower) ____current_names.append(x)
Вот представь, что где-то этот объект хранится в словаре d['obj'] = obj
Что должно происходить со словарём? А если он хранится как элемент списка?
В объекте можно предусмотреть что-то вроде деструктора. Ты его вызываешь, и объект переходит в блокированное состояние, все его методы переписываются, например. Но это немного извращение.
Дайте инфу по CPython. Какой функционал он предоставляет и какова его сфера влияния. Насколько он урезанный, стоит ли прежде прочитать хотя бы 1 книгу по С чи не? Ну и наконец - стоит ли вкатывать в него в 2020?
Как сделать перевод транслита? Одиночные буквы переводить легко, но как переводить в букву, которая состоит из 2 букв? ( например ja > я или ch - ч).
Получается надо из исходного сообщения надо брать по 2 символа за раз и если эти 2 буквы одна из комбинаций - переводить ее согласно комбинации, иначе переводить по 1 букве, так?
Для начала - как брать из строки по 2 символа за раз?
>>1691866 > Дайте инфу по CPython. Какой функционал он предоставляет и какова его сфера влияния. когда говорят про пайтон имеют в виду cpython в 99% случаев, это дефолтная реализация языка. Или ты про Cython хотел спросить?
>>1691987 Ты бы код расшарил. Попробуй слово "podzhopnik", по-моему твоё решение свалится, если на нечётной позиции будет двойная буква находиться. И вообще, перегружено очень...
>>1692002 На словах с четным количеством букв фейлилось все. Поменял условие на while i < end: вместо while i <= end: b заработало. Твое слово перевело как: podzhopnik = ['п', 'о', 'д', 'з', 'х', 'о', 'п', 'н', 'и', 'к']
>>1692015 Вот такой подход может быть. Тоже говнокод, на самом деле, чисто демонстрация идеи.
Задачка интересная, особенно если её проработь глубже. Например, идеально было бы, чтобы замены работали так: "Chto eto ne zhopa, a bolshaja ZHOPA" "Что ето не жопа, а болшая ЖОПА"
Вот как минимум эта история с корректной заменой по регистрам. Совсем класс, если дополнительно словари для слов с "э" прикрутить. В общем тут есть, где развернуться.
Доброго дня, аноны. Занимаюсь поиском лиц на фото, встал такой вопрос. Суть такова: имеем фото с искомым лицом и много неизвестных фото с лицами, где и нужно найти цель. Создаю базу хешей лиц. Собственно вопрос: так как одно и то же лицо может давать различный хеш некоторым допустимым расстоянием (допустим 5), то как быстро найти наиболее ближайший к искомому? По сути это уже не хеш таблица, а поиск какой-то. Попрошу не нападать, я еще не волшебник, а только учусь. Каким, в принципе, способом лучше хранить эти хеши и как находить нужный?
>>1690482 (OP) Вот есть у меня список url, надо периодически к каждому из них отправить get-запрос а потом собрать полученные данные. Очевидно же, что стоит использовать асинхронки (так как "заспамить" запросами и получить бан не выйдет, все url обращаются к разным ресурсам) Только вот я не шарю в asyncio, как это мутить?
>>1692271 И как это сделать для множества url? Через цикл for? (сдается мне что эта хрень блокирующая) Через треды можно было б делать через ThreadPoolExecutor, но мультитрединг - зашквар
>>1692104 Если твоя хеш-функция ведет себя как embedding, т. е. похожие лица выдают похожие хеши, то, например, бинарный поиск. Можно написать версию алгоритма, который при отсутствии искомого элемента приведет к ближайшему слева или справа. Модуль bisect может помочь.
>>1692625 >ну опять это говно? Это очень хороший ролик, он демонстрирует сами идеи, лежащие в основе, и сразу с набором кода налету, можно самому попробовать. Причём и треды, и идеи асинхронности одновременно.
Книжки не заменяют таких роликов. В книжках много магии, тебе описывают, как с чем-то работать, но не поясняют, как это работает внутри.
Но книжку может тоже стоит добавить, надо глянуть её.
вообще вопрос к тристакасекам и к тем кто самостоятельно вкатывался и таки смог вкатиться: мб шапку как-то получше оформить? мб спиздим идеи в соседних тредах? где годные?
>>1692652 >мб шапку как-то получше оформить? мб спиздим идеи в соседних тредах? где годные? Например, где годные? У большинства почти пустые шапки, у некоторых, как PHP, какой-то лес ссылок без пояснения. Лес ссылок можно и самому нагуглить.
Надо какие-то пункты обновить. Про Джанго, уже третья джанга есть, а про это ни слова, никаких комментариев, для чего брать, для чего не брать. ХЗ, я сам третью версию не пробовал.
>>1692643 Это полностью старперский ролик, в котором пояснятся как деды страдали все эти годы, пока не позаимствовали async из С#
Вот предисловие из приличной книги по дотнету:
>Однако если обратиться к сегодняшним книгам и другим ресурсам для изучения конкурентности, почти все они начинаются с изложения большинства низкоуровневых концепций. Обычно приводится превосходное описание потоков и примитивов синхронизации, а высокоуровневые методы откладываются на потом, если вообще рассматриваются. Полагаю, это происходит по двум причинам. Во-первых, многие разработчики конкурентных программ (включая меня) начинали с изучения низкоуровневых концепций и подолгу корпели над описаниями старых методов. Во-вторых, многие книги были написаны давно и содержат устаревшие сведения; с появлением более новых средств книги обновлялись, но, к сожалению, новая информация размещалась в конце. Считаю, что такой подход неверен. В этой книге рассматриваются только современные подходы к реализации конкурентности. Это вовсе не значит, что понимание всех низкоуровневых концепций не принесет вам пользы. Когда я изучал программирование в колледже, на одном из курсов мне пришлось строить виртуальный процессор из набора элементарных логических вентилей, а на другом — изучать программирование на языке ассемблера. За всю профессиональную карьеру я не спроектировал ни одного процессора и написал всего пару десятков строк ассемблерного кода, но понимание основ приносит пользу ежедневно. И все же лучше начинать с высокоуровневых абстракций; на моем первом курсе программирования рассматривался вовсе не язык ассемблера.
>>1692643 Блин, мне кажется вы просто не писали программы с помощью этих всех этих state-machine и select, поэтому вам кажется что круто бы повысить свою значимость среди молодежи и запудрить им мозги. НЕТ БЛЯДЬ.
>>1692663 >но понимание основ приносит пользу ежедневно Сам свою цитату читал?
В твоей книжке и многих подобных бахают кучу абстракций, про которые не понятно, как они работают и что за ними вообще стоит. Ты должен тупо как макака пилить код, копируя все эти await, event_loop, future, task и пр., не понимая, что это вообще такое.
Это не старпёрский ролик, это называется "системное обучение". Тебе показывают принципы. Зная их, ты будешь хорошо понимать высокоуровневый код. Причём там даже не про асинк, там про треды в том числе.
>>1692670 >Ты должен тупо как макака пилить код, копируя все эти await, event_loop, future, task и пр., не понимая, что это вообще такое. но ведь это есть хорошо! Зато он никогда не смешает потоки и async-и.
>>1692691 Больше половины проблем в коде из-за того, что люди просто не понимают, как оно работает. Причём в питоне слабая асинхронность, прикрученная со стороны, всё усугубляется из-за этого.
Большинство багов и чудовищно неоптимального кода из-за этого. И освоение медленно идёт из-за этого.
Вот ты думаешь, что определил функцию как async, написал await и получил асинхронность. А хуй. Код как был синхронным, так и остался, это тебе не JS, где в этом случае уже будет асинхронность. В JS правда своя магия есть.
>>1690482 (OP) Добрый день, подскажите пожалуйста по связке жанга и вью. При разработке у меня 2 сервера 8000 и 8080 так ведь? А при деплое как это работает? Не понимаю как организовать авторизацию через allouth потому что оно на сервере жанги, а на фронте нужно токен держать. Че то я запутался =(
>>1692563 Как я понял выдает ошибку потому что идёт обращение к словарю по ключу, которого нет?
> в том безумной цикле while Я на работе накидал на телефоне новый цикл, ещё более охуенный. Работает теперь как надо и жрет даже символы что не в словаре.
>>1690482 (OP) ОП Хуй, сразу ОЧЕНЬвидно что автор вообще не в теме пайтона. язык называется пайтон, пайтон, сука! а не питон блять! потому что назвали в честь цирка Монти Пайтона, а не в честь змеи дебил блять!
сап, двач, сори за тупой вопрос суть в чем: браузер отправляет пост запрос, я нашел его во вкладке network и увидел раздел form data, так вот, как мне отправить этот form data через requests?
Почему у меня запускается не то приложение Джанги на тестовом сервере? Перехожу в папку с моим чат ботом, включаю венв, запускаю mamage.py runserver При переходе на 127.0.0.1 он подсказывает урлы из другого проекта. Что я делаю не так?
>>1692916 Вот вывод консоли когда запускаю приложение с чат-ботом и скрин urls для этого проекта. На 3м скрине Джанго предлагает мне урлы admin/ и polls/ вообще из другого проекта
>>1692921 Не так все просто. Да еще декларацию переменных уровня double, int, complex убрать. Но там есть и выражения например for (int k = 0; k <= 31; k++), которые в питоне не так задаются. k++ я хз что такое. Если что я с C# не знаком от слова совсем.
>>1692918 По хабро ссылке тоже поделка какая-то: > Корутины содержат операторы yield, с помощью которых мы определяем места, где можно переключиться на другие ожидающие выполнения задачи. > За переключение контекста в asyncio отвечает yield, который передаёт управление обратно в event loop, а тот в свою очередь — к другой корутине. Ну и зачем это нужно? Там дальше пример в синтаксисе 3.5, без yield, но вот нахуй нужен непонятный отсыл к yield, когда вообще не понятно, при чём он тут?
Дальше невнятный поток текста, по которому ничего не поймёшь, если не понимаешь. Очередной бесполезный графоманский текст, совершенно непригодный для обучения. В топку.
Лучше самим родить текст небольшой, но только в шапке места для него нет.
аноны, очень нужна ваша помощь ибо гугл не помог...
Суть - надо в Windows автоматизировать взаимодействие с java swing/AWT на python 3.x элементы этих окон через puwinauto не достать, примеров нет нигде пытался через java access bridge - установил все, загрузил dll WindowsAccessBridge.dll, дергаю isjavawindow с нужным хендлером - и 0, нихуя, нет коннекта кто то сталкивался? как получить доступ к работающей jwm и взаимодействовать с внутренними gui элементами?
>>1692968 В 3.7 довольно много правок относительно 3.6, об этом речь. Большинство материалов по asyncio довольно старые, в стиле 3.5, где активно таскали loop всюду, не говоря уже об адовых yield from из 3.4.
Короче книжка современная, не legacy. На надо внимательнее глянуть, насколько она для обучения пригодна. В начале как-то воды очень много. Мне кажется, что для совсем новичков в конкурентном программировании она не очень.
>>1693023 Нет, не всегда нормально. В системе может не стоять 3.8, не всегда хорошо навязывать самую последнюю версию питона.
В ubuntu 18.04 базовая версия 3.6, чтобы поставить 3.8 нужно телодвижения делать, добавлять репозеторий специальный и т.п., и тогда будет два питона в системе. А это довольно частный дистрибутив. PyPy вроде только под 3.6, может частично можно библиотеки от 3.7 прикрутить.
В общем можно, но не очень хорошо. Зависит от того, что и для кого ты делаешь.
>>1693028 Ну вот ты сам подумай, насколько просто понять логику твоего кода и логику этого >>1692070 варианта. Реально ведь надо ломать мозг над всеми его сложными состояниями. И зачем?
>>1693036 >Как-то очень громоздко и прямолинейно. Нахуярил на одних условных операторах, хули. Зато понятно и работает как надо.
>Скинь код текстом, я покурю. Куда, например?
Кстати, у меня проблема с транслитом. Буква y отвечает как за й, так и за ы. Точно также как и е отвечает за е и за э. Как с этим быть?
>>1693040 >Реально ведь надо ломать мозг над всеми его сложными состояниями. И зачем? Я наоборот тот код нихуя не понял. Поэтому свой вариант и сделал.
>>1693045 Почему ты не пользуешься срезами? Ты как-то побуквенно собираешь, это совсем не питон-стиль, среды очень мощная фича питона.
> Буква y отвечает как за й, так и за ы Обычно поэтому j отвечает за й. Вот "ю" можно кодировать как "ju" и "yu", но с этим нет больших проблем, после ы редко гласные встречаются.
Делай просто замену по приоритетам. Сначала варианты "yu" проверяй, а потом уже 'y' как 'ы'
>Я наоборот тот код нихуя не понял. могу пояснить, если интересно
>>1693093 Может и интересно, может проверю другой анон
Но не факт, что просядет, re довольно быстро работают. Если строка большая и у тебя много посимвольной магии, это плохо работает. И посимвольное добавление к строке тоже плохо работает, строка ведь каждый раз заново создаётся.
Ищу кодера питонщика для разработки стартового билда моей визуальной новеллы на ренпае >>665838 Нужен тот, кому эта параша будет интересна...ну хотя бы как хоби
>>1693055 >Почему ты не пользуешься срезами? не знаю что такое, учу с неделю >Ты как-то побуквенно собираешь, это совсем не питон-стиль >я до этого в чистом C немного для себя программировал, там также строки собирал из файла. >среды очень мощная фича питона. Что за среды? >Делай просто замену по приоритетам. Сначала варианты "yu" проверяй, а потом уже 'y' как 'ы' а как например быть когда e означает и е и э сразу? В словаре нельзя же 2 одинаковых ключа сделать. >могу пояснить, если интересно поясни, интересно что за что отвечает. >>1693075 тут какие-то ванлайнеры, даже не интересно. Что делает .items и .replace конкретно?
Можно ли с помощью регэкспа за одну операцию из строки вида `1,0-1,2 10,20 30,40.2-50,60-70.9,-80.1 90,-100 -110, -120` получить строку `1 0 -1 2 10 20 30 40.2 -50 60 -70.9 -80.1 90 -100 -110 -120` В конечном итоге нужно из начальной строки получить массив чисел за наименьшее кол-во проходов строки. Пока что делаю так (3 прохода): `re.sub(r'(\d)(?=-\d)', r'\1 ', s).replace(',', ' ').split()`
Магия-1. Создание словаря, это вполне обычный паттерн. Можно и может даже лучше именно явно создать, без этих хаков, так проще просто. Идея, создаём строки "a b c d e f" и "1 2 3 4 5 6" с помощью split() разбиваем их в списки ['a', 'b', .. 'f'], ['1', ...'6'] assert просто для проверки, что у нас одинаковое число элементов в массиве, что лажи нет, легко при таком подходе промазать zip() сшивает два списка в словарь, это стандартная функция питона, полезно знать, глянь в доках.
К началу цикла имеем словарь translation, translation['sh'] --> 'ш'
Его можно было описать явно.
Дальше уже совсем просто. s3, s2, s1 - это подстроки длины 3, 2, 1 соответственно. Или меньшей длины, если мы в конце строки.
Сравниваем подряд, если эти строки, начиная с длинной, в словаре замен, делаем замену и увеличиваем счётчик на длину подстроки.
Здесь не очень хорошо сделано, в случае s3 явно прибавляется 3, а ведь длина её может быть меньше. Некрасиво, но ничего не ломает, поскольку такая история только в конце строки происходит. Корректно увеличивать на len(s3), но душа байтоёба-оптимизатора возмущается.
В общем всё просто и читается легко, если на питоне пишешь. Если на питоне пишешь, магия по генерации словаря уже не магия.
Анон, поясни пожалуйста ньюфагу про толстые модели и токние вьюхи в Джанго. Сейчас пытаюсь учиться по одному курсу, увидел там комментарий, мол автор допускает плохую практику.
Где css-файлы для Джанговских форм?.. Вот например у меня после удаления из CharField текста форма подсвечивается красным (а это смотрится так себе). Как мне поменять? П.С. Я подгрузил Bootstrap в <link rel="stylesheet">, может там что найдется, чтобы перекрыть эту ебень?
>>1693121 уж не пиздишь ли ты? Как можно прочитать большие книги и ничего не написать? неужели совсем нечего автоматизировать?
Гляди, я сегодня слепил десктопный обработчик фото. На неделе попытаюсь "продать" руководству на ЗАВОД в качестве рацпредложения. Неужели у кого-то возникают эти вопросы? Вагон же несделанных дел должен быть!
>>1693404 requests - обертка над urllib и не более того. Когда был urllib первой версии, то сделать запрос было очень трудно пистонисту больше 3 строчек писать уже трудно, появилась удобная обертка. В urllib3 уже не так все хуево и можно вполне брать на замену.
>>1693442 два месяца. Я, конечно, не показатель и у меня есть опыт программирования на различных языках. Но с другой стороны, в этих долгих годах мало самого программирования было. Я просто Админ. И реально не понимаю, как можно прочитать толстенные книжки и не придумать как эти знания применять. Ну с друзьями-кабанчиками поговори! Узнай какие сайты им нужны. Они, возможно, больше мечтают о гуй-программах, но сайт тоже пойдет.
В данной ситуации я вынужден писать гуй на питоне, потому что из гуевых программистов у нас только пара 1с-ников и они вряд ли справятся с обработкой изображений.
При этом у нас есть еще и php-программисты . Поскольку они дешевы, вся автоматизация сделана в виде веб-интерфейса. Десктоп они тоже не умеют.
Хотет автоматизировать некоторые повторяющиеся операции, когда лезу в шелл джанги на удаленной машине. Команда ниже работает, но ipython запускается без подсветки синтаксиса и автокомплита. Как зделоть, чтобы был цветной и интерактивный?
>>1690482 (OP) Привет! Посоветуйте популярный IDE для Python. Я совсем новичок, установил PyCharm, но мне оказалось сложно в нём разобраться. Например, я не могу сменить дефолтную директорию Scratch-файлов, в которой у меня кириллица, и из-за этого есть проблемы при запуске батников. Я не прошу совсем примитивного инструмента - просто более дружелюбного.
Привет, Антон! Подскажи за структуру проектов/приложений в джанго. Порядком подзаебался разбирать каждый отдельный "ДАВАЙТЕ РАССМОТРИМ НА ПРИМЕРЕ" пример. Можно как то формальное описание получить?
>>1693642 Зачем тебе иде? Отупеешь ведь. Юзай vs code. Не сильно сложно, не пишет код за тебя. Как освоишься и не будешь совсем новичком, то тогда решай: pycharm или vim.
>>1693683 Но ведь это всё равно будут разные инстансы, лол. Если ты хуяришь напрямую через урллиб, то делай урллиб, если через реквестс, то через реквестс.
>>1693896 Какую капчу решать собрался? От этого зависит часть подводных камней. Для себя решил делать или сервис какой? Для автоматического решения капчи-зображения есть сервис, качество не очень.
>>1693945 Да в целом где я сижу только рекапча и заёбывает. Для начала конечно для себя потом если всё пахать будет продавать начну для спамеров хех. Юзал и сервисы и расширения в браузерах, но они действительно не очень.
>>1693871 Это Legacy из второй версии питона. Забудь, зумер, а то кошмары по ночам сниться будут. За тебя деды воевали, живи счастливо без этого ужаса.
Третья рекапча весьма злоебуча, там и действия пользователя на странице проверяются, и айпи и т.д. А тут нуб взялся её забороть, ага. Самый верный метод это решение обезьянками за копейки.
>>1693982 Через эту либу работает аддон для браузера о котором я говорил. И последние месяцы работает он архихуёво, где-то 1 раз из 10. Потому и хочу запилить что-то надёжное.
>>1693983 Все так, не он первый, не он последний, просто так ее не взять и она того не стоит. >>1693984 Зря только время потратишь, бери сервисы, их апи и либы для них, и юзай. Для быстрого решения есть разогрев капчи.
Мне надо где-то хранить список между запусками программы. Программа может и будет просто выключаться без всякого завершения.
Так вот - как в таких условиях лучше хранить список? Использовать pickle или просто хранить содержимое списка в файле и дописывать в него по необходимости?
>>1694001 Это примерно эквивалентные вещи. В одном случае риск не успеть записать файл, в другом риск не успеть записать обновления.
Чтобы избежать риска, когда ты удалил старый файл, а новые данные записать не успел, можно простой паттерн использовать: старый файл имеет имя, условно, dump.pickle.123 сохраняешь новый файл в dump.pickle.124 если успешно, старый удаляешь. Причём так можно хранить, очевидно, несколько последних версий.
>>1693494 Итак, день прошел зря, но я пытался узнать как это все делается. Получается мне нужно реализовывать аутентификацию в социалочку непосредственно на vue, потом получив токен от социалочки, отдать этот токен в жангу, чтобы она там работала с логикой и че ей там еще надо, потом отправить на фронт собственный токен самой жанги, которую сохранить во фронт сторже. На сколько я понял. Жаль что под мою социалочку незапилен модуль на vue вот под всякие инстаграммы есть и под вк есть.... Но встает другой вопрос. Если я делаю на фронте авторизацию, то мне надо указать свои id и secret key от апи авторизации в социалочке, разве это безопасно?
>>1694047 ты просто хуяришь баззворды и мы не понимаем о чем речь что такое токен в социалочку? какая разница вью/невью? ты оауф делаешь и хочешь авторизацию прогнать без бека?
Сап питонач, есть один файл, который представляет собой таблицу в два столбца, левый - заголовок к тексту, правый - сам текст. Планирую вытаскивать из файла определённый текст по номеру строки, по заголовку из левого столбца этой строки или по ключевым словам из самого текста. В какой формат его будет лучше всего сконвертировать для лёгкого доступа из кода? Csv, xml?
>>1694079 >>1694081 >>1694087 Спасибо, аноны. Я правда довен и вообще никогда не имел дела с форматами кроме стандартных пдф/докх/хлсх, буду пытаться разобраться, что к чему с жсоном
забыл один момент: Если русские буквы интерфейсе уплыли, надо ставить python 3.7+ и настраивать переменную среды PYTHONUTF8=1 . Так вот в этой винде. Когда-нибудь эта хуйня закончится...
Здравствуйте, господа! Хочу научиться работать с библиотекой vk_api, вернее у меня есть идея, которую хочу реализовать для бота в сообществе. Но, начинать надо с чего-то простого, что у меня не получилось. Объясните плз, как можно элементарно с помощью бота отправить, например сообщение самому себе? А то просмотрел несколько источников, на одном источнике была подобная информация, но данную функцию тупо выпилили с какой-то там версией vk_api. Будьте добры, напишите код, (я знаю, что там строчки 3-4 должно быть, пролема в знании методов), ии подкиньте доков читабельных
>>1694130 Делается так же как и отправка обычного сообщения, просто жестко задай ИД человека которому писать хочешь. + На сколько я знаю, у вк_апи есть чат в телеге с активными юзерами, можешь залететь туда.
Есть ли способ ограничить в django rest частоту обращений к апи? Что конкретный юзер или конкретный айпишник не мог делать эт очаще чем N раз в минуту?
data = [{'Value': 'test0'}, {'Value': 'test1'}, {'Value': 'test2'}, {'Value': 'test3'}, {'Value': 'test4'}, {'Value': 'test5'}] exceptions = ['test4', 'test5'] items = chain(*map(dict.values, data)) result = [item for item in items if item not in exceptions]
Могу запилить django-templates внутри js-файлов? Внутри html - как нехер, в том числе и внутри js-кода, вот так например:
<script type="text/javascript"> var a = "{{someDjangoVariable}}"; </script>
А внутри js-файла есть возможность это сделать? Потому что они у меня длинные и я прикрепляю их как белый человек в <script src="static/main.js"></script> ?
"зона" - это зона разделяемой памяти между процессами nginx, про них надо знать, что зон может быть несколько и у них должны быть уникальные имена. В том смысле, что зоны могут и для других целей использоваться, для кешей и т.п.
Я этим не пользовался правда, лепил когда-то свои велосипедные решения, правда не на питоне.
В nginx, судя по описанию, для разного типа url можно задать разные настройки, гибкость есть.
При желании ты можешь сам что-нибудь накрутить на уровне джанго, но думаю, этим стоит заниматься только если у тебя логика сложная.
>>1694001 Еще один вариант - sqlite. Есть в стандартной библиотеке, все хранится в одном файле, встроенная защита от выключения программы или вылетевших пробок. Из неудобств - понадобится отдельный слой с SQL.
Аноны, сталкивался мб кто? С какого хуя django-cors-headers просто наебнулось без причины? Работало нормально, а потом хуяк - ваши корс-хедеры не корс-хедеры, идите нахуй.
>>1694047 Слишком сложно. У фронта не будет оставаться никакой важной информации, доступной скриптам, работающим с твоего домена. Никаких хранений в local storage и т. д. - это слишком легко украсть. У твоей социалочки есть документация, как к ней подключаться?
>>1694392 Вроде и так нормально, есть либа django-cors-headers, настроена как указано у них в репе (приложение, миддвер, origin_allow_all = True). В какой-то момент она просто сама наебнулась
>>1694405 Идет запрос, сервер отвечает списком сайтов, которым разрешен доступ, но у меня блядь всем разрешен доступ с помощью CORS_ORIGIN_ALLOW_ALL = True
>>1694408 Идет запрос options к серверу, а в ответ я получаю нихуя, а в браузера висит "Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.14:8000/api/users/. (Reason: CORS request did not succeed)." Но проблема в том, что эта хуйня работала какое-то время назад
>>1694432 >>1694434 спасибо, аноны. В итоге я просто сделал хуйню на фронте из-за чего оно не работало, а именно вместо локалхоста обращался к локальной сети, хотя джанго в отличие от вью разворачивается только на локалхосте, а я как даун про это забыл
>>1694528 А, не, можно, но непонятно как выудить переменные из post или элементы json. Вот зачем тут нужен lua. Так что во многих случаях порезать скорость в nginx - отличная идея
>>1694528 Ну так ты можешь поставить лимит на количество запросов какого-то url для разных ip. И получаешь дешёвую защиту о ботов, которые высасывают информацию с твоего сайта в много потоков.
Если какую-то сложную логику реализовывать, то проще уже сразу на уровне джанги. Может ты там хочешь, чтобы разные виды запросов на один url имели разный вес, и у разных групп пользователей были разные лимиты? И ещё попутно статистика какая собиралась?
>>1694613 блядь, как бесит эта пизданина. lua то много лет,а они ради говноедов js тащат. в Самом Большом в Мире Китайском Интернете вообще только на lua и пишут.
>>1690482 (OP) Прочитал от корки до корки Dive into Python 3, всё написанное полностью понял. Что делать дальше - не пойму. Цель - фриланс на США. Или хотя бы работа самая простая, тоже в США. Понимаю, что хоть и разбираюсь в многом уже и в принципе смогу нужные библиотеки быстро выучить, всё равно в данном состоянии нигде работать не смогу. Куда копать чтобы хотя бы какую-то копеечку получилось поднять? Нужен хоть какой-то самый простой проект, по типу парсинга блять фанфиков. Хочу развиваться не в вакууме, а на реальных заданиях которые будут востребованы, с которых я смогу получать деньги. Есть идеи куда смотреть и что делать? Большое спасибо, анон. Английский нейтив. Могу и ирл, но предпочтительнее конечно же хоть за сильно меньше, но фриланс. Плюс с рынком работы США не знаком нихуя.
>>1694858 Смотри вакансии и то, какие там технологии используются. Чистый питон никому не нужен вообще. Нужны технологии. Нужно уметь работать со сторонними сервисами вроде DB, MQ и др.
Ты в самом питоне хорошо умеешь тестирование, модуль logging, asyncio? И не только это.
Веб фреймворки? БД? MQ?
Представть проект, который мог бы быть полезен и попробуй сам сделать.
> — Уже существует готовый сторонний проект OpenResty. Если не вдаваться в подробности, то это, по сути, nginx + Lua, но он имеет архитектуру, которая идет вразрез с nginx. Мы хотели избежать пересечений с этой экосистемой.
Они хотели продолжать стричь бабос с nginx plus и дать возможность нанимать яваскриптомакак.
Но в lua нет ничего сложного и он фантастически быстр.
>>1694865 >Представть проект, который мог бы быть полезен и попробуй сам сделать. Займусь В самом питоне почти ничего не знаю, так как кроме книги и попыток что-то годное написать не делал с ним ничего. Опять же, трудно писать что-то, когда понимаешь, что оно не пригодится в работе.
От требований на сайтах становится не очень. Даже не беру в расчёт опыт работы, просто дохуя там. То в веб уклон сильный с Джанго, то в дата аналитику. Но там по 5 лет опыт просят, поэтому и ищу чтобы начать где проще порог входа. Мне бы начать с чего-то. Вот как в тестинг мануальный можно вообще вкатиться за неделю, дальше переходить на автоматический и т.д. Вот мне бы что-то похожее в питоне, а не тестинге. С чего-то начать, что уже сейчас было бы хоть кому-то нужно, и дальше улучшаться.
Хм, есть у меня несколько моделей Джанги. В одной из них есть поле ref=URLField, прикол в том, что в зависимости от значения этого поля (ссылки) надо по-разному обрабатывать данные. Как это блин реализовать?
>>1694983 Для каждой комбинации (ref+description) требуется свой обработчик. Всего их на данный момент 8 (скоро могут появятся новые или наоборот что-то будет удалено). На первый взгляд стоит в отдельном модуле типо utils их написать, но как быть дальше? Как "привязать" каждого обработчика к своему instance из модели? Сидеть и вручную в shell это делать? Просто вопрос времени, когда я таки совершу ошибку и буду не понимать, хрен ли оно не работает как надо
>>1695028 Первое что пришло в голову: при сохранении экземпляра переопределять метод в котором обрабатываются данные, как-то так https://pastebin.com/T5DkSnpq
>>1695077 >>1695061 Что мне также недавно пришло в голову: назвать обработчики определенным образом. Затем внутри модели определить метод handle, который на основании значений self.ref и self.descr найдет нужный мне обработчик (бизнес-логику намучу, это не проблема)
Вопрос на данный момент лишь таков: как блэт этот обработчик мне импортировать в мой метод handle? Есть 2 варианта: использовать import module_name vars(module_name) и перебрать ключи, либо использовать что-то типа: mod = importlib.import_module(module_string_name) handler = getattr(mod, name)
>>1695097 Не помню как точно, но просто переопределяешь метод на выборку, внутри можешь вызвать каждый из менеджеров, а потом склеить все полученные данные в 1 список и вернуть
Вот у меня есть бесплатный pycharm, который сразу создаёт виртуальную среду для проекта и я могу через настройки проекта найти необходимые библиотеки и скачать в проект, а затем использовать
А могу вводить всю эту поеботу черед командую строку вручную.
Есть какая-то принципиальная разница между двумя способами? И почему везде в офф документации или туториалах (например Джанго) пишут через командую строку?
>>1695439 > И почему везде в офф документации или туториалах (например Джанго) пишут через командую строку? Потому что это стандартный способ. Пичарм просто автоматизирует его.
>>1695552 >Зачем асинк для этого? Если у тебя только 1 задача в скрипте - незачем, если есть что-то еще - то обычный слип будет блочить выполнение всего кода
>>1695552 Всё зависит от того, что делает твоя программа в перерывах между тайм-эвентами.
Один вариант - когда ты делаешь небольшую задачу, таскает данные с сайта, сохраняешь статистику в файл и т.п., а в промежутке ничего. Тогда проще всего sleep.
Если у тебя скрипт всё время работает, но раз в сколько-то ты что-то делаешь, что тогда или async, или что-нибудь ещё, варианты могут быть.
Ещё зависит от того, насколько точно тебе надо интервалы выверять.
Всё это стандартные задачи и для каждого типа есть стандартные решения. Но разные.
Слышал, что реальные пацаны в django хранят бизнес-логику не в моделях (как пишут в оф. документации), а в отдельном файле services или utils. Есть примеры как это правильно делать и вообще зачем?
>>1695929 Это, ведать, для лентяев. Автор API предоставляет услугу, которую бесплатно ты должен был предоставить себе сам. Так же как ремонт автомобиля - бесплатно могут дать совет ремонтироваться в их мастерской. На этом перечень бесплатных услуг исчерпывается.
Но почему бы не сделать переводчика, НЕ использующего интерфейс API, а чистый HTTP ?
>>1696039 Ты знаешь, я сейчас проверил, а мой клиент Гугл-переводчик не работает. Я бросился смотреть на страницу переводчика - она уже совершенно другая. Открыл в IE, а Гугл требует войти в аккаунт - чё за хрень, через Хром захожу на переводчик без никакого акаунта ? Так что у меня теперь нет переводчика и значит программы, которые его использовали, накрылись тоже.
>>1696167 Это палка двух концов: Если платный сервис - его функциональность будет гарантироваться. Если, как бы украл (мой клиент не использовал никаких АПей), то это бесплатно, но... в любой момент они могут изменить что-то и программа накрылась.
Покупать, если тебе клиент-переводчик нужен раз в год - смысла нету. Поэтому, стоит внести изменения, согласно всем ихним новшествам и прежним курсом пока опять не поменяют. У меня клиент работал на технологиях COM и DOM, но для этого необходим IE. С ним последнее время проблемы - то старая версия облаком не поддерживается, клиент облака делал, пуд говна съел, прежде чем победить. То в кабинет телефонного провайдера не могу войти - новый сертификат сайта не поддерживается.
На свою старую систему новый IE не ставится, поэтому перенёс клиент кабинета провайдера на планшет с 10 системою - сертиыикаты https есть, клиент работает. Теперь переводчик накрылся, надо переносить тоже на планшет, а на 10 системе IE не установлен. И вообще 10 система - сволочная штука. Целая эпопея борьбы. И она только началась - её предстоит обкарнать по самые яйца. И от предателя-системы безопасности, и от изменника родины планировщика заданий. Надо будет выявить где эти файлы, пользующиеся преступной неприкосновенностью и зайдя с внешнего диска - ампутировать их в пизду.
Запомните товарищи наизусть - как бы хорошо ни было приложение, но если оно насильственно навязано - это обрекает его нести метку говна. И всяк его будет стрематься и поносить. Ибо насильно мил никто, пока что не стал и НИ - КО - ГДА НЕ СТА - НЕТ !
>>1693388 Советую вместо принтов юзать logging. А так код нормальный. У новичков неосиляторов основная проблема, то что они не знают с чего начать и как построить архитектуру проекта. По твоему коду же видно, что опыт есть.
Я не могу просто взять и вставить элемент словаря в ф-стринг?
slovar = { 'kluch': 'znachenie', }
print(slovar['kluch']) - вот так все норм
print(f'bla bla {slovar['kluch']}') - а вот так уже ошибка.
Мне обязательно нужно сперва упаковать элемент в переменную, а в стринге обращаться уже к ней? Это ж очень нудно, нах мне тогда вообще писать этот словарь, если все равно для каждого ключа нужно отдельно писать переменную, я это могу и без словаря сделать. Может еще какой способ есть?
>>1690482 (OP) Програмач ай нид хелп. Укус питона прочёл, Hello World написал. Написал говнопрогу, которая приветствует тебя, просит ввода имени и возраста и в зависимости от этого оскорбляет тебя. Какую книгу читать дальше? желательно с примерами т.к. хочется практики.
>>1696663 Можно подробней? Не понимаю в каких именно скобках ошибка и как я могу их изменить, я думал для каждого элемента вполне конкретные скобки используются.
>>1696666 Есть дохуя видов скобок, все они взаимозаменяемы. Одинарные 'str' и "str" и тройные '''str''' и """str""". Если какие-то используются у тебя в строке, то оформить можно другими. В твоем случае можно сделать print(f'bla bla {slovar["kluch"]}') или наоборот.
Парни, тут кто-то писал насчет таймеров, на чем-то годном по итогу сошлись?
Я подумал на досуге и нахуярил вот такую реализацию "сигнальной" функции, которая раз в n секунд вызывается и совершает некую небольшую операцию. А основная функция, которая потребляет много ресурсов CPU, идет фоном, пока не выполнится: https://ideone.com/tpaOTQ
Реализовано на тредах. Какой-то ощутимой просадки по производительности не заметил. Но уверен, что есть способы и лучше. На асинхронках можно что-то подобное намутить? А с помощью какой-нибудь левой либы?..
Решил попробовать этот хваленый jupyter lab. Ну и нихуя! Не открывает мои экселевские файлы. File Load Error for testme.xlsx testme.xlsx is not UTF-8 encoded И так все файлы. Что я их экселем создаю, что через pandas.to_excel.
Хорошо что хоть csv открывает.
Нагуглить ничего толкового не смог. Неужели придется anaconda ставить чтобы совсем уж по-ихнему было?
>>1696716 >Какой-то ощутимой просадки по производительности не заметил. Но уверен, что есть способы и лучше.
так ее и не будет, лол. Оверхед на потоки слишком низкий. Многие программы на тредах и всем норм.
Сначала нужно определиться, что для тебя лучше. В твоем коде нихрена не происходит кроме print. Никакого совместного доступа. Соответственно, ты не занимаешься никакой синхронизацией и проблем ты успешно избежал.
Вот, допустим, мой пример : >>1694094 Он работает потому что там "волшебная" синхронизация от kivy через декоратор @mainthread В серьезных случаях были бы проблемы. (кстати, на самом деле киви работает из без этого. не понятно почему, но я на всякий случай пишу. как у них в документации это написано лет 5)
>>1696370 да харош. смысл этой программы был показать, что kivy - довольно просто и пора бы новичкам переходить от заманавших всех телеграм-ботов к полезным программам.
У меня на производстве продукцию фоткают перед тем как отправить клиентам зеркальным фотиком и получается плохо. Я как буду рабочих-дуболомов обучать в консоли что-ли работать? Поэтому сделал гуй.
На самом деле там еще (будет) сжатие фото до веб-разрешения и загрузка на сайт к конкретному заказу.
Есть один список (list). Структура такова: A= [array([100, 200, многа чисел]), array([300, 400, многа чисел])]. array это numpy.ndarray. Как мне получить вывод последних чисел из каждого array. Просто A[:][-1] выводит array([100, 200, многа чисел]). По сути индексация не идет внутрь списка. Я предполагаю это из-за того что внутри numpy.ndarray, а не простой список. Не могу догадаться как вводить индексы.
>>1693388 > неужели совсем нечего автоматизировать?
Если только написать программу, которая наримана током от компа коротнет, лол.
В конце концов, не все же такие кабанчики занятые. Мне вот обработчик фото нахуй не нужно, тебе наоборот. Время такое, для моих потребностей например уже все написано.
>>1697164 > Тебе обязательно использовать ndarray ? Не то чтобы очень, но формат задает чужая функция. Перебирать её во много раз сложнее чем пердолиться с индексами.
>>1695094 Нет, я и имел в виду работу для кого-то. Мануальное тестирование - для вката достаточно полной недели и можно зарабатывать деньги - я тому пример. Только деньги всё же не такие огромные, и заниматься этим постоянно не импонирует. Развития там так же не много, да и куда развиваться. А питон, это другое. Но здесь порог входа на любую работу мне кажется намного ввше, поэтому и растерян.
Такой вопрос. Пробую переводить чат для твича. Так проблема со смайлами возникла. Гугл апи за каким-то хуем переводит некоторые смайлы вроде Kappa, смайлы из нескольких слов вроде NotLikeThis и другие.
Как исключить все смайлы из перевода, если они в контексте чата состоят из простых слов?
Самый очевидный и тупой способ - добавить все смайлы в исключение не проканает. Их не фиксированный набор, у каждого стримера есть свой уникальный пак.
Часть смайлов я отсек проверяя слово на количество заглавных букв - если их больше 2 в слове - оно игнорируется. Но это отсекает только смайлы, состоящие из двух слов. Та же Kappa будет проходить
Ещё часть отсек проверкой на наличие цифры в слове.
>>1697293 Ты его копипастом переводишь что ли, как сообщения получаешь? Получаются сообщения через вебсокет, в каждом сообщении отражается не только его содержание, но и доп. информация в т. ч. и используемые смайлы. Проблема только в том, что есть еще и расширение bttv которое добавляет свои смайлы, поэтому тебе их отдельно парсить нужно будет в зависимости от канала. Может у них api есть.
>>1697298 > Ты его копипастом переводишь что ли, как сообщения получаешь? За основу своего бота я взял twitchio. Он сообщения получает в виде простого текста вида "какой-то текст Kappa" и смайлы никакими служебными знаками не отображаются. > Проблема только в том, что есть еще и расширение bttv Эта хуйня только новые смайлы добавляет в твич?
>>1697310 И зачем? Для практики как рах полезным будет не использовать сторонние библиотеки, которые напрямую решают задачу. Это тоже самое, что написать калькулятор в виде вызова системного калькулятора. Ну а хули, "у меня обертка". Ничего сложного в твоей задаче нет. Подключаешься к нужному вебсокет каналу, парсишь оттуда сообщения, переводишь и выводишь результат. Bttv эмоуты установленные для конкретного канала можно посмотреть на сайте, т. е. перед обработкой сообщений канала тебе нужно будеи спарсить названия смайдов с этой страницы.
Первый вопрос в том, ради чего ты прерываешь исполнение.
Вот в твоём примере, у тебя есть содержательный и важный код: def do_shit() -> None: ____'''Эту функцию будет вызывать другая - "сигнальная" функция''' ____print(f'Shit called at {time.perf_counter()-START}') ____print(f'Shit got: {random.randint(1,1000)}') # имитируем какую-то херню
Насколько пользователям программы важно, чтобы эти строчки напечалались друг за другом? Ты ведь понимаешь, что у тебя переключение потоков может произойти в любой момент, эта функция не атомарна, и в момент МЕЖДУ принтами может что-то произойти? Исполнение переключится куда-то ещё, другая функция что-нибудь напечатает. Оно точно устраивает?
Как говорится, добро пожаловать в мир многопоточного программирования.
В случае async-await такой проблемы нет. Переключение в предсказуемый момент. Правда если у тебя тяжёлая фукнция, то тебе надо явно разрешать переключение в какие-то моменты.
Вариант: ты просто раз в сколько-то итераций тяжёлого цикла запускаешь await asyncio.sleep(0) что разрешает переключение задачи на другую.
>>1697342 Ну не скажи, элементарного бота сделать думаю не сложно. Но один хуй будешь по гайдам делать и мало чему научишься. А так я по тихоньку ковыряю твичио, дописываю и обучаюсь питону.
>>1697342 >ну и чего, используешь свои фреймверки, так ничему не научишься, надо самому писать всю обработку, и орм самому пилить. Атак лютая копипакста получается просто
>>1697421 Речь идёт именно о практике и обучении, да для практики и обучения полезно писать всё самому. И глубина начала зависит от того уровня знаний который ты хочешь получить. >>1697399 В том то и дело, что гайдов никаких не нужно. Достаточно проанализировать запросы и повторить их из своей программы. Ковыряя чужой софт ты обучаешься не питону, а работе с API этого софта.
Антоши, как в VS code убрать один отступ перед кучей выделенных строк? Ну короче как выделяешь строки, жмешь таб, они улетают на уровень глубже. А как наоборот?
>>1697388 Если кстати реализовать тот пример через async и делать await asyncio.sleep(0) после каждого числа num в цикле for, то время выполнения увеличивается в 3 раза... решение которое помогло: сделать в том месте строчку
if num % 10000 == 0: ____await asyncio.sleep(0)
но вопрос, фиг ли переключение контекста настолько сильно ебет остается открытым
>>1697567 Ты просто сам подумай, сколько работы должно совершиться для переключения контекста. Там надо идти в event loop, ставить задачу в планировщик и т.п.
Естественно думать надо. В конкурентном программировании в любом случае думать надо. А как ты хотел?
Для моего ноутбучного проца переключение требует на уровне 10 микросекунд. Если uvloop подключить, раза в 2 ускорение, pypy ещё сильнее, но даже pypy 2 микросекунды на простых примерах.
Что у тебя две задачи, что сто тысяч, примерно одинаковая история. Сто тысяч - это я когда-то тесты синтетические делал, столько задач тянет, но на практике это смысла не имеет.
Зачем тебе переключаться 100 тысяч раз в секунду? Делай так, чтобы вычислительные задачи могли передать исполнения 10-100-1000 раз в секунду, в зависимости от твоего приложения.
В полноценных приложениях вычислительные задачи должны в отдельный процесс, не поток, а процесс выноситься.
>>1697559 Ты пишешь хуйню которая с легкостью отпугнет любого изучать. Если ты это делаешь намерено то пошел ты нахуй токсичная хуйня, если ты делаешь это для защиты своей самооценки, поищи другие способы сохранить свое чсв не через унижение попыток других. Применяя инструмент, попутно можно понять как он работает, ты же понимаешь что в шариковой ручке крутится шарик?, а вот твои "это все не то, надо писать все с нуля" уничижают стремления юнцов и вгоняют их в "я тупой юзаю готовое" состояние.
>>1697609 >Ты просто сам подумай, сколько работы должно совершиться для переключения контекста. Там надо идти в event loop, ставить задачу в планировщик и т.п
Блядь, надоели уже. Вы откуда лезете? Из Яндекса или Амазона?
Ребятки, достаем ручки и листочки, открываем Методичку:
>Preallocated virtual memory is a staggering ~80 GB (due to 8 MB stack space per thread!), but resident memory is only ~130 MB.
это реально имеет смысл если ты пишешь какой-то суперплотный сервер, но в действительности ты своим кривым sql положишь сервак намного раньше.
я хочу забабахать некую Аналитическую Платформу : на сервере крутить подготовленные мной jupyter notebooks чтобы конечные юзеры не могли их менять, не могли скачать реквизиты доступа к данным в sql или других api, не могли скачать элементы нотебуков распиханные в py-файлы. Но могли конструировать самостоятельно графики, что-то отфильтровывать, скачивать готовые отчеты себе в эксель и тд. То есть, как бы веб-интерфейс без джанги.
По сути это будет замена metabase, который себя не оправдывает. Это типичный корпоративный ебенейших размеров софт на яве, который, в общем, не делает главного. Непонятная хуйня какая-то. Создал там кое-как пару таблиц, поебался с mysql tengine=federated, но все равно неудобно. А с графиками вообще пиздец.
>>1697631 Ну да, вариант "сам был новичком и научился на своих ошибках" почему то даже и не рассматривается. Одни попытки унижения и детекты токсичности. Узнаю забитого омежку с двача. В любом случае, я просто высказал своё мнение, он может его послушать и сделать свои выводы. Какие - мне абсолютно похуй, для меня ничего не изменится всё равно.
>>1697215 У меня A= [array([100, 200, многа чисел]), array([300, 400, многа чисел])]. Твой код выдает array([300, 400, многа чисел]), то есть последний array из списка, но весь. У тебя работает, т.к. у тебя a = array([300, 400, многа чисел]). У меня же поверх этого обычный список. >>1697282 Вот тут работает. Как я понял за счет конвертации моего списка в np.array A= np.array(A).
Лол, аноны, почему-то VSC думает, что \a это управляющий символ (и я потом получаю ошибку при аутентификации). Как это вырубить? С "local\pidor" например нормально.
>>1690482 (OP) всем привет, хочу встроить один свой код на питоне в бота в телеге, поставил telebot, но у меня тут проблема в том, что в библиотеке Telebot, как в принципе и в api телеграма нет ни input, ни его нормальных аналогов, поэтому я просто ебанул нахуй вот так вот как на пикриле, присваивая переменной текст сообщения. И вот проблема в том, что после того как бот выводит сообщение, то сразу начинает выполнять код дальше, в итоге на практике это выглядит так: я пишу ему сообщение чтобы запустить, следом он пишет мне текст с вопросом на который нужно ответить цифрой, и тут же начинает прогонять код, не дожидаясь ответа. Берёт суёт в переменную моё сообщение которое я ему написал в начале, затем суёт его в integer и жидко пукнув выдаёт ошибку что не может преобразовать строку в целое число, по понятным причинам
Так вот вопрос: как мне сделать паузу в telebot чтобы как в стандартном инпут код продолжал работу после того как я напишу следующее сообщение?
Есть в питоне какое-нибудь обозначение для 0+? То есть число близко к 0, но чуть больше. В написанной формуле это выглядит y → 0+. Вручную задавать 0.000многанулей0001 некрасиво.
>>1697798 Нет. Ты сам подумай. inf имеет конкретное представление в процессорах, особое значение, "бесконечно малое" не имеет. Всегда у тебя конкретное число.
string ="some random text" new_string = string.split()
for word in new_string: ____for letter in word: ________if ... ________elif ... ________else ...
Как сделать чтобы цикл for word in new_string прекращался если в цикле for letter in word выполнялось бы хотя бы одно из условий? Т.е. если letter в любом слове равна r то выходило бы из цикла целиком и не проверяло остальные слова.
>>1697806 Если достаточно да или нет, то можно через any. Если нужно будет достать конкретное значение, то придется как-то выкручиваться, нет брейков для внешних циклов.
>>1697809 >нет брейков для внешних циклов. Я уже догадался. Брейк прерывает проверку буквы в слове, но не проверку остальных слов. >Если достаточно да или нет, то можно через any. не очень понял. Мне надо сделать так что если в слове одна из букв соответствует условию, то выходило бы из цикла целиком.
string ="some random text" new_string = string.split()
for word in new_string: ____for letter in word: ________if ...: ___________if найдена нужная буква: __________________break ________elif ... ________else ... ___break
прервётся внутренний цикл и после его окончания прервётся и внешний
>>1697803 math.isclose проверяет на близко ли мое вручную заданное число к 0, при этом точность тоже сам задаю. >>1697802 > inf имеет конкретное представление в процессорах, особое значение, "бесконечно малое" не имеет. Звучит убедительно. Придется просто задавать число самому.
Надеюсь здесь не кроют хуями начинающих, как на php борде. Начинаю только работать на питоне, хочу заебашить силениум. Вылезает вот такой шматок говна (пикрил)
Я понимаю что силениум находится не в деректории питона, но дальше наши полномочия все.
Аноны, объясните в чем проблема, очень хочу вкатиться
>>1697864 Странный вопрос, начать мог бы сам с поиска по вакансиям ХХ.
Такой альтернативы сейчас нет, сейчас альтернатива Django vs Aiohttp.
Aiohttp примерно как flask, только асинхронный.
Django большой тяжёлый энтерпрайз-фреймворк, с официальной документацией на 2000 страниц. Имеет самостоятельную ценность.
Aiohttp и устаревшие синхронные аналоги легковесный, подразумевает, что очень многое будет прикручено со стороны. Самостоятельной ценности поэтому почти не имеет. Прежде чем в него лезть, надо разобраться с asyncio.
Ниша Джанго - большие сайты CRUD-направленности, ниша aiohttp - сетевые сервисы, где в том числе используется веб-взаимодействие, но лишь как часть.
>>1698726 Посмотрел ХХ, ни на aiohttp, ни на flask практически нет чистых вакансий, в основном их только через запятую перечисляют, что неплохо бы. Пара штук только, где aiohttp основное, но не единственное, что надо.
>>1698730 Как aiohttp кстати соотносится с django (который де-факто синхронный даже в 3.0)? Есть примеры проектов, написанных на плотной связке этих двух?
for word in new_string: ____if any(letter in russian_letters for letter in word): ____print(f"-----> russian_letters detected!") ____break
russian_letters это список из русских букв. Оно работает, но иногда пропускает строки в которых есть русские буквы. Почему так? Я хуй знает как при таком условии можно пропустить строку хоть с 1 русской буквой.
>>1698754 >for word in new_string: >____if any(letter in russian_letters for letter in word): >________print(f"-----> russian_letters detected!") >________break Быстрофикс
>>1698748 Примерно никак, кусок асинхронщины добавили в 3 версии, но основные операции все еще синхронны, хотя можно на свой страх и риск убрать некоторые ограничители. А так жди 4 версии еще года полтора, в ней уже допилят асинхронность на базовом уровне.
>>1698675 Лабы по матану и линалу. Графики там строить, матрицы, производные, дифференциалы, поверхности второго порядка >>1698679 У этого препода в его каловых материалах код зачастую даже не запускается, дохуя ошибок. Да и я перепутал, нужно онлайн кр решить за час, а не лабу.
>>1698840 епта позвони и спроси, мы откуда ебем что за вакансия? может у них часть сервисов круды+админка и они на джанге, а часть хитрые запросы в базу может была джанга, а сейчас ебашат на аиохттп
>>1698860 >>1698770 То есть если я хочу периодически отсылать асинхронные запросы на сторонние ресурс, то с Джангой этого не сделать? В общем ситуация обстоит так: есть набор url (объявленный в settings либо в utils), каждые 5-10 минут необходимо совершать на них запрос, идеальным будет асинхронный вариант чтобы не ждать их последовательно, но... выходит что запихать asyncio + aiohttp внутрь Джанги не выйдет? Слыхал про Celery, вроде он так может (скоро собираюсь читать мануал) - это поможет?
>>1698887 "Запихать внутрь" не выйдет - поток, в котором исполняется код Django, не займется другими вещами, если ты создашь в нем цикл asyncio - он будет крутить этот цикл, пока в нем не закончатся задачи. То есть в идеале можно сократить время ожидания с 5-10 последовательных вызовов до одного самого медленного.
Проверь - может этого будет достаточно. В ином случае, Celery поможет.
А еще это может не быть частью приложения. Запросы может передавать и просто скрипт по расписанию, а результат складыать в ту же БД, которой пользуется твой сайт.