Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: 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/cAaW2nPySYyy
Здравствуйте. Как лучше определить тип введенных данных. Я принимаю str в консоли, это может быть любой тип данных. Я так понимаю только через вложенный try..except можно это сделать? Или лучше изначально запросить у человека, какой тип данных он вводит и не ебаться?
Продублирую из прошлого треда. Посоветуйте чат-бота для твича. Пробовал twitchio - нихуя не получилось его запустить. Данные все верные указываю, на них не ругается, но ругается на тайм-аут соединения и что к каналу подключиться не может.
Сойдут и боты с самым базовым функционалом.
Алсо, что лучше использовать из виртуального окружения - virtual env или pip env? Последний не понял как настраивать в PyCharm, в консольке вроде настраивается, pip файлы создаёт.
Есть апи поинт и сериализаторы DRF. Как описать поинт который принимает пост запрос по одному сериализатору, а возвращает по другому сериализатору? Не получилось загуглить, может пример какой есть?
>>1666049 если средствами стандартной библиотеки, то да try: x = int(input()) except ValueError и тд если модные хуйни хочешь, то глянь https://typer.tiangolo.com
>>1666207 Результат input это всегда строка. Тут решение это или валидировать и конвертировать типы ручками, или прогонять через какой-то eval. Я не смотрел ещё, как второе в питоне сделано.
>>1666377 Не могу представить задачи, при которой в одном запросе от пользователя может потребоваться ввод ответа в таком диапазоне значений. Что блядь твой код вообще должен делать?
>>1666377 Такое автоматическое определение типов - всегда дурной тон и грязь. Откуда ты знаешь, может там пользователь хотел строку "[]" ввести, а не пустой список?
Как ты будешь обрабатывать списки вида [aaa, 'bbb', 123, 123aaa, [], "[]"] будешь реализовывать рекурсивный парсер?
Умеренно приемлемый вариант: смотрим первый символ введённой строки, предварительно сделав strip() если это цифра, пытаемся интерпретировать как цифру, в противном случае выдаём ошибку если это '[' или '{', пытаемся интерпретировать как корректно сформированные списки-словари, упакованные по стандарту JSON, и парсим через json.loads() Если это кавычки или любой другой символ, интерпретируем как строку. Но в случае, если кавычки, эти кавычки обрезаем.
Такой умеренно строгий ввод, user-friendly. Иначе надо парсер делать. Не очень сложно, но не нужно.
Посоны, а где почитать об офускации и шифровании кода? Я просто не представляю что можно сделать с кодом, если переменные все с динамическими именами и от них НЕобфускации зависит результат работы программы.
Кроме того, я пару лет назад пытался понять как сделан один коммерческий зашифрованный продукт серверный продукт, чето запустил, открыл и был удивлен, что там вполне читаемо все.
>>1666377 >Не спрашивай нахуя мне это, по учебе просто надо реализовать тогда ясно. хуйня, конечно и конечно никто не получит удовлетворения помогая тебе.
По какой причине тесты в Джанго могут не проигрываться? Вроде запилил свои django.test.TestCase но по команде manage.py test он мне сообщает что воспроизвел 0 тестов (и выдает флаг ОК лол)
>>1666512 Когда вызываю файл напрямую: manage.py test restapi.tests.test_models все работает Почему я сразу не могу запустить все тесты? Почему он их не видит?
>>1666463 Понял >>1666465 Смысл в обобщенности, что один класс, реализующий структуру данных, может принимать разные типы данных >>1666509 Это не я, если что писал. Не знаю, что по-твоему практическая программа, так что отвечу, что это упражнение.
>>1666520 >Смысл в обобщенности, что один класс, реализующий структуру данных, может принимать разные типы данных Строка — самый обобщённый тип данных, который может ввести пользователь. Любые данные можно предствить как строку и делать с ними >Хранить, удалять, искать. следовательно твои данные должны храниться в виде строки. Не вижу тут никакой загадки.
>>1666499 Можно поставлять софт без исходников, в pyc-файлах, но из них как раз специальными утилитами всё хорошо восстанавливается, так что защита не работает, но создаёт массу проблем.
Обфусицировать можно в каких-то пределах, как можно рефакторить код в IDE, вот на уровне имён внутренних и глобальных переменных, имён функций и классов, в некоторых случаях имён методов (здесь, очевидно, уже легко споткнуться). Очень умеренная защита, сработает, только если какой-то очень сложный код, который в принципе необходимо хорошо документировать, чтобы в него въехать.
Если проблема актуальна и постоянна, наверное надо другие платформы выбирать, вроде Go.
Но сама бизнес-модель защищённого софта со спрятанным кодом немного устаревшая. Эти методы защиты плохо работают. Защита работает или на административном уровне (читай можно заяву накатать), или когда софт сильно от сервера зависит, и ты сервис предоставляешь, а не просто софт.
Обычный закрытый софт тоже распространяли направо и налево. А сейчас это только проще, благодаря разным технологиям виртуализации.
>>1666659 Так-то можно нахуевертить с байткодом и добавлять в поставку бинарный модуль, который будет расшифровывать на ходу. Так сделно в всяких похапешных ионкубе и вроде последние версии довольно успешны в своей работе.
Сап джангач! Есть модель movie, у нее есть поля тайтл, юрл итд. Я вывожу на индексе.хтмл все татлы модели и приделываю ссылки для перехода на сам тайтл. При переходе по ссылке ошибки 405, метод не разрешен. Что делать, куда блядть копать?
>>1666776 This response code (405) can come from any number of issues, but it generally ends up that either you are using the wrong URL (as in this case), or you are using the wrong request method. Sometimes it's both!
Quite often I see people getting this issue when they are trying to update an individual resource (/api/res/1), but they are using the list url (/api/res) which doesn't allow the request to be made. This can also happen in the reverse, where someone is trying to create a new instance, but they are sending a POST request to the individual object.
In some cases, the wrong url is being used, so users are requesting a standard non-API view and thinking it is an API view (/res instead of /api/res). So make sure to always check your urls!
>>1666776 У тебя вьюхи как-то по-крестьянски оформлены Перепиши их функциями либо примени более высокий уровень абстракции чем наследование от простого View. Если перепишешь вьюху, а ошибка исчезнет, будет повод задуматься (и че это бля за метод manga_web?)
Писал я на днях маленький скрипт, который просто парсит меню с сайта пиццерии с помощью bs4 и requests. И вот вчера хотел продолжить, на всякий случай проверил, а код уже не работает. Теперь он код страницы возвращает без этого меню, только начало и конец страницы. Хотя когда сам на сайт захожу, там всё отображается как обычно. Я так понимаю, теперь меню с пиццой и всем остальным появляется через js и ajax всякие. Во вкладке network нашёл эти скрипты, что дальше с ними делать я не понимаю. Пытался как-то запросы get потыкать на них, но я кривой и не могу понять как их типа все активировать, а потом хоп и получить нормальный код страницы как раньше было. Помогите пожалуйста, с меня как всегда.
>>1667020 Да, json я брал, у меня для этого отдельный скрипт написан. Я просто хочу написать одну прогу с json, а другую с помощью selenium. Мне bs4 во втором случае нужен был для того, чтобы у меня селектор не состоял тупо из хардкода до нужной кнопки "в корзину", а как-то более независимо от названий классов.
>>1667026 Там есть условия, чтобы ждать появления элементов. https://selenium-python.readthedocs.io/waits.html Т.е. в инспекторе смотришь, что тебе там надо, и засылаешь урлы и условия, чтобы всё прогрузилось, а потом забираешь готовый исходник.
>>1667027 Я вроде пробовал и что-то не помогло. МОжет ещё раз стоит попробовать. Там ещё дело в том, что даже если самому полный код страницы смотреть, то меню там не будет, хотя очевидно, что всё прогрузилось.
>>1667043 Знаю, тем же json всё гораздо проще, но я просто хотел потренироваться с селениумом и ксс-селекторами + супом нужное вычленять. Надо будет подумать как сделать так, чтобы вообще ни один этот ебучий класс в проге не прописывать, только оставить всякие теги типа ul или h3.
>>1667373 Это какое-то PDO? Если по смыслу, то id автоинкрементное, оно само где-то как-то в каких-то геттерах генерируется. А если по тексту, то первоначально id и nickname это статические свойства класса. Их можно читать в методах экземпляров как self.id и self.nickname, но когда ты в методе или конструкторе пишешь self.nickname = ... , ты маскируешь статическое свойство.
Блин, что-то не врубаюсь как Джанга мой запрос обрабатывает
Кратко: есть вьюха, наследующаяся от View, там происходит обработка формы. Я хочу, чтобы когда юзер ввел неправильные данные в форме (проверяется моим кастомным валидатором custom_validator), ему выбрасывалось сообщение по типу "Лох! Пидр!" и он оставался на той же странице, вместо этого какого-то хрена форма срабатывает и сохраняет введенные данные. На втором скрине виден результат могучего дебага с помощью print. После вызова метода form_invalid и вызова get вьюха продолжает снова свою работу на следующей строчке после вызова form_invalid(self.form). С хрена ли? Почему она не останавливается?
>>1667443 Ведь строчка render(request, 'sh/index.html', context) в методе get должна вернуть отрендеренный темплейт и на этом все нахуй, конец фильма. Почему он блин продолжает выполнение метода post после всего этого?.. это максимально у меня не вяжется в голове
Анонче, помоги. Я знаю какой я глупенький, плохой, не хороший, но почему когда я ввожу команду: from colorama import init from colorama import Fore, Back, Style init() print(Back.BLACK) допустим, IDLE мне выдает: [40m
>>1667464 Вполне, nickname чем угодно может быть, динамическая типизация же. А PDO кто как хочет, так и ворочает. По идее удобно при удалении объекта посмотреть, какие у него свойства не являются линками переменных с такими же именами у его класса (или суперкласса), и в базу их заэскьюэлить.
>>1667682 >[40m Это разметка в терминале линупса вроде. Жирненькое там, мигающее, зелененькое, красненькое.
Насколько принято использовать дополнительные искаробчные штуки вроде functools, itertools, collections? Нужно насыпать побольше, если надо, или лучше обходиться, если можно?
>>1667921 Вполне распространено. Лучше пользоваться такими встроенными инструментами, которые тебе даёт язык из коробки, чем городить свои велосипеды. Главное как и везде, соблюдать баланс, не городить их там, где этого не требуется.
>>1667921 Не знаю, мне кажется всё очень специфично и индивидуально. Иногда лучше самому написать, иногда из модулей взять.
Нужно думать и о читаемости-стройности кода, и об эффективности.
Лишние строчки своего кода принуждают его читать, внимание на него обращать, отвлекают. Но если ты из заменяешь на строчку из модуля, и надо лезть в доки, чтобы смотреть, что этот метод делает - то это не лучший вариант, имхо, читаемость только страдает.
Здесь такой подход может быть, что если у тебя какой-то паттерн используется много раз, то лучше подключить модуль и брать оттуда метод. Это значит, что это тебе актуально. Если один раз, то спорно, проще прочитать две-три строчки кода, чем лезть в доки, что там чего делает.
Но случаи разные. Вот, например, паттерн: i = 0 while True: ____i += 1 ____if something: ________break
его можно и скорее всего почти всегда нужно заменять на код for i in itertools.count(): ____if something: ________break
Так обычно повышается читаемость довольно сильно. Кроме того, count работает быстрее. Хотя может ради одного раза и не всегда оправдано.
Есть в стандартных либах решения, которые очень спорные. Например, DefaultDict или как-то так. Вместо того, чтобы прописать значение по-умолчанию, но ради этого использовать левую структуру данных с оверхедом и лепить менее очевидный код, проще и нагляднее пользоваться традиционным val = some_dict.get('val', default) У тебя так получается самодокументированный код. Но, когда как. Если у тебя совершенно штатная ситуация, когда в словаре элемента нет, а его получить надо, то можно и DefaultDict использовать, чтобы код компактнее был.
Конструкции с генераторами списком, одномерные, мне кажутся более читаемыми, чем многие модульные функции.
Мне кажется, что нужно просто хорошо знать, что вот такие модули есть, и что вот там такие функции есть. А уж использовать их, или нет - по своему личному решению и усмотрению. Плохо, когда ты городишь свой код, просто не зная, что за тебя это уже написано.
>>1667921 Продолжу, бывает, что применять надо, но часто практика такая, что не применяют.
Вот в asyncio, если мы делаем что-то библиотечного уровня, то в соответствующие функции там часто надо подавать класс-фабрику. class MyProtocol(): ____def __init__(self, value): ________pass
loop.create_server(protocol_factory, .....)
Эти фабрики должны работать без параметров, но чаще они нужны.
Документация по asyncio настоятельно рекомендует использовать functools.partial для этого, но реально очень часто это игнорируют и передают параметры через лямбды, так удобнее и понятнее loop.create_server(lambda: MyProtocol(some_value), ....)
Это реально более читаемо. И так в большинстве серьёзного кода делают. Но когда количество параметров больше, чем один-два-три, то уже другая история. Правда я сам с этим не сталкивался. Вот мне кажется, что использовать partial для передачи одного параметра - просто дурной стиль.
>>1665888 (OP) Двач в чём проблема? В sublime text 3 решил поставить по дефолту замену табов на пробелы и ограничение до 80 символов в строке. Сохраняю и получаю ошибку
Всё ещё до конца не понимаю классы и их правильное использование в питоне и вообще. Анон, что почитать, где попрактиковаться именно с классами? Материалы желательно для чайников. Спасибо.
Хочу сделать систему комментирования в виде дерева в Django. Куда копать, что курить? Хотелось бы не готовое решение "подключил и работает", а чтобы нужно было немного самому поковыряться.
>>1668190 Глянул доки, defaultdict всё-таки для другого, не только чтобы значение по-умолчанию получить, если элемента нет, то и чтобы при этом добавить элемент в словарь, причём вызвав для этого фабрику, что указывается при создании объекта.
d = defaultdict(func) value = d[key]
эквивалентно d = {} if key not in d: ____d[key] = func(key) value = d[key]
и не эквивалентно value = d.get(key, func(key)) и даже не value = d.setdefault(key, func(key))
>>1668470 Я другой анон, но посоветую нахуй пойти vs, если человек только-только решил вкатиться. Слишком уж он плохо действует на неокрепшие умы юных кодерастов. Пусть для начала в саблайме посидит
>>1668451 >но последний, как мне кажется, избыточен для новичков По-моему лучше сразу начать пользоваться IDE. Это умение не менее важное, чем знание языка, и использование IDE сильно облегчит процесс обучения. Тебе не нужно сразу учить все функции - поначалу можешь пользоваться как обычным текстовым редактором.
Лол, сейчас в Джанге вылезла какая-то хуйня, ранее не встречавшаяся. Походу она не может приконнектиться к Postgres БД:
could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?
Вот это вылезло в консоли при команде python manage.py runserver. А на скрине моя попытка входа в БД через pgAdmin, ввожу пароль, но он меня посылает нах, буквально 2 дня назад же все работало, че с ним не так? В инете толком инфы нет
Имеет ли смысл лезть в асинхронщину при реализации обыкновенного веб-скраппера? По сути, он не делает ничего, кроме парсинга текста через регексы, некоторого его видоизменения и записи изменённого текста в файл (либо просто его вывод как опция). Куда бы здесь вообще можно было засунуть асинк, если бы очень захотелось?
>>1668548 Если только начинаешь с питоном, то не забивай пока мозги асинком. Он местами довольно нетривиальный и могут быть проблемы с пониманием того, как это работает. Для начала попрактикуйся на синхронном коде чтобы руку набить.
>>1668532 Постгрес поддерживает триллиарды способов коннекта к своей базе. Скорее всего, дело в его конфиге, а не в джанге.
>>1668548 >Имеет ли смысл лезть в асинхронщину Асинхронщина - для большого количества одновременных коннектов. Если твой говносервер собирается их все принимать - велкам, если твой говнобот собирается их создавать - тоже велкам.
>>1668557 > Если твой говносервер собирается их все принимать - велкам Кстати, разве работа со множеством соединений не обеспечивается непосредственно Django? Если лежит у меня на сервере, грубо говоря, main.py и к серверу приходят два коннекта, то джанго этот main.py будет запускать для каждого из коннектов отдельно, нет (в рамках каких-то пределов, конечно)? Или будет его последовательно для каждого коннекта выполнять?
>>1668577 Если у тебя прокси-сервер, то все упирается в коннекты, async. Если у тебя сервер приложений, то одно приложение по ресурсам весит намного больше, чем поток OS. Если клиент может приостановить приложение где-то в середине - опять async.
>>1668451 Если только начал изучать, то без разницы, бери всё что угодно, хоть блокнот. PyCharm действительно на этапе хелловордов избыточен и даже вреден: многие без кнопки run даже скрипт на питоне не смогут запустить. Но вообще PyCharm мастхев для серьёзной разработки, VSCode и другие редакторы не предоставляют таких возможностей работы с гитом, рефакторингом, статистический анализ и автокомлит а идшках от IDE тоже лучший на рынке. Если небольшой скриптик нужно написать - то VSCode. А если нужно что-нибудь поправить на удаленном серваке, то vim мастхев
>>1668562 Не обеспечивается, джанга обрабатывает запросы последовательно. Эта проблема решается WSGI-серверами (gunicorn и uwsgi например), которые в свою очередь поднимают несколько процессов джанго-приложения (можешь представить себе насколько это "оптимально") и складывают все входящие запросы в очередь, которую процессы джанги читают
>>1668514 Удивительно, но вскод не так уж и прост, как может показаться на первый взгляд Чтобы его адекватно настроить под разработку чего-то сложнее, чем laba1.py, нужно обмазаться кучей плагинов и уметь в настройки этого всего, да и терминалом придется постоянно пользоваться а там и линупсом обмажешься Ну сублим понятно простой быстрый блокнотик, хорошо заходит, когда нужно просто открыть и посмотреть какой-то чужой листинг А пичарм хоть и считается тяжеловесным, но это все же лучший выбор прям для совсем новичка-аутиста, т.к многие вещи делает сразу же из коробки И проект правильно скомпонует, и виртуал очку сам накатит, удобный дебаггер, гит, автопеп8, редактор бд многое другое
Я сейчас только начинаю учить питон и лажу по куче сайтов с задачками. К сожалению, не смог найти того, что нужно. У меня такой реквест: есть задачи, разделённые по темам (буквально: списки, стринги, числа, кортежи, циклы фор, циклы вайл и т.д.), тебе по каждой теме даются задания (например разрежь строку пополам и отзеркаль половинки), а ниже приводится код, как это сделать. Большинство сайтов, что я находил, не предполагают ответов.
>>1668620 checkio, codewars. Но там юзеры шлют свои решения, что не идеально, хотя дает пищу для размышлений. А где специально задачи под конкретные фичи и вылизанные авторские решения я бы и сам посмотрел.
>>1665888 (OP) >Можно ли на питоне делать мобильные приложения? >Да, смотри на фреймворк Kivy
Почему эта хуйня до сих пор в шапке? Очевидно же, что это нерабочая хуйня и наебалово. Хочешь пилить мобилки, учи другие языки, не питон.
Ваш питон нужен датаебам и маняматикам ну и еще всяким биологам по мелочи, вкатывальщиков основам погромача учить. Джанга хуянга тормознутое говно и не нужно, одумайтесь
>>1668695 > жаваскриптовая параша > открывает проект на жсе
> запускается на полсекунды дольше Лол, плюс полсекнды на запуск редактора это ничтожные затраты по сравнению с преимуществами VSCode, хотя фронтенд-петуху, наверное, не понять, у вас ведь действительно скорость разработки ограничивается лишь запуском редактора и скоростью печати. Обычно редактор запускают один раз в начале рабочего дня и дальше он остается открытым, если ты, конечно, не на калькуляторе с 256 МБ оперативы программируешь, где для того чтобы запустить другую программу нужно выгрузить из памяти все запущенные.
>>1668637 >Джанга хуянга тормознутое говно и не нужно, одумайтесь ооо, пхпшника порвало ну что, аноны, не следил особо последние пару тредов и вот к вам вопрос: по вашим ощущением увеличилось количество вкатышей или так же? просто после видоса у дудя думаю щас будет резкий бум и хайп на войти в айти. а что у нас щас самое модное и хайповое сейчас? конечно же нейроночки и машоб. а на чем их пишут? конечно же на питончике. поэтому собсно и спрашиваю тут
>>1666710 >Так-то можно нахуевертить с байткодом и добавлять в поставку бинарный модуль, который будет расшифровывать на ходу. слишком теоретично что конкретно надо делать?
>>1668073 А их невозможно прочувствовать, если ты не в большом проекте. Представь что каждый класс пишешь не ты, а какой-то пидор параллельно и ты его лично ненавидишь за то, что с ним невозможно договориться. Тогда, инкапсуляция естественным образом позволяет тебе поменьше общаться с этими пидорами и их кривые руки не способны сломать твой код.
Мне кажется, просто нет хороших книг об этой концепции ООП-ненависти.
Как посчитать число символов в тексте, без учета пробелов? Пока на данный момент 2 быдлоспособа: последовательный проход по всем чарам и инкрементирование счетчика в случае, если чар == " ", а также замена всех пробелов на пустые строки (в этом случае придется копировать весь текст) и после - подсчет символов. Есть какой-то небыдлокодерский способ для этого?
народ, делаю проект по нейронке, кто подскажет хорошие материалы для изучения? штука должна анализировать много текста и на основе его выдавать сгенерированный текст (как студент пишущий диплом)
>>1668830 > последовательный проход по всем чарам и инкрементирование счетчика в случае, если чар == " " Ты же так просто число пробелов посчитаешь. > а также замена всех пробелов на пустые строки (в этом случае придется копировать весь текст) и после - подсчет символов Этот способ вообще ебанутый.
Хули тебе не нравится способ :
count =0 for i in range(len(string)): temp = string If temp != " ": count = count +1
>>1668998 Суть та же, итерирование по стоке и проверка каждого символа. Ошибся в формулировке, очевидно.
Теперь почему твой вариант уёбищный: for i in range(len(string)): temp = string-i Нахуй не нужно, заменяется for temp in string, потому что строку можно прямо итерировать. count нахуй не нужно, заменяется sum в том варианте.
Использую pyav, чтоб получить кадр с видео и сделать предпросмотр. Видео может быть любым по длине до 2 часов, ага. Т.к. у 95% видюх первый кадр - черный экран, то хотелось бы взять кадр из середины. Как сделать это? Первый кадр беру так, container = av.open(video_filename) frame = next(container.decode(video=0)) А как быстро получить кадр с середины генератора? Чтоб юзер не сидел по 10 минут и не ждал.
>>1668532 Так, братва, новости по вчерашней проблеме: сегодня после введение команды python manage.py runserver всё просто взяло и запустилось. Я не фиксил нихуя, поэтому о причинах проблемы по-прежнему в душе не ебу
>>1669529 На винде как правило не надо ничего запускать. Там Джанго сам коннектится к базе, юзая параметры из settings.py (кстати я не в курсах, работает ли daemon для Postgres или обходятся без него? может в этом дело)
>>1669495 Си. Там есть количество кадров в параметре можно глянуть, но все равно, сидеть и ждать, пока генератор пробежит несколько десятков тысяч кадров даже в холостом режиме - муть какая-то. Попробую ffmpeg запустить, должно быстро отработать, надеюсь. >>1669503 На генерацию превьюх, а точнее, на выбор кадра и тратится все время. Если юзер загрузит 2 видюхи, то не хочется заставлять его ждать столько же, сколько он ждет как в вк пока там высрет все варианты пересжатого видео.
>>1669563 Начал изучать - больше года назад. Быдоскрипты писал для упрощения работы на говнозаводе и решения лаб в универе, решил попробовать вкатиться в бэк месяца 2 назад и начал с Фласка лол вовремя забив на него хуй
>>1669658 Не верю, что пиздюку понравится возиться с бэкендом Они во фронт чаще пиздуют либо (в запущенных случаях) в геймдев, где их жарко любят лиды во все щели
вопрос от нуба: как заставить ms vs code в терминале не выходить в консоль после удачного или не удачного завершения скрипта, а аналогично стандартному python IDLE остаться в REPL ? и оставить весь результат выполнения Python 3.8.2 ms vs code 1.44.2, вообщем имено то что хотят здесь: https://stackoverflow.com/questions/54609806/how-to-prevent-vscode-from-exiting-python-environment-after-running-code но там ответа так и нет, разницы от запуска через F5 или F5+Ctrl нет
>>1669658 Бывают увлечённые пиздюки, в моём детстве такие были, кто с ZX-spectrum возился, на бейсике и асме кодил. У меня правда позже комп появился.
По нему видно, что он просто там по книжке набирает, смутно понимая, что делает. Но я кстати верю, что научится, из таких потом к 30 годам настоящие сеньёры и вырастают.
>>1669678 Чего? Там не репл, а запуск скрипта, аналогично python main.py Что ты ожидаешь после того, как цикл событий отработает? Потыкать переменные если хочешь, то ставь точки и вперед дебаггером.
>>1669692 ну в IDLE как завершился скриптик, IDLE не спешит закрыться, все результаты остались пока Restart Shell на Ctrl+F6 не сделаешь и можно и дальше вручную потыкать переменные, функции, ну вот это вот всё
Такая проблема. Почему не удается импортировать файл из той же папки что и основная программа? Пишу import file_name, а pycharm эту строку в серую превращает и нихуя не импортируется. Что за нахуй?
>>1669815 > Серым будет, пока ты не использовал его в коде. Понятно, ни разу ещё ничего не импортировал. > И как так не импортируется? Ну я думал раз серым стало, то не импортировались.
Здарова питонасты. Я уже полтора года работаю фуллстэк обезъяной Django + Vue.
Решил вкатиться в go, и очень быстро понял, что без знания SQL дальше я пройти не смогу. Я решил задать вопрос ИТТ потому что вам вероятно знакома моя проблема и вы как питорасты сможете мне подсказать.
Я пользовался только Django ORM и мне не приходилось писать SQL код вручную, не приходилось поддерживать консистентность БД вне системы автоматических миграций джанги, и когда я пришел в другой язык, начал решать другие задачи немного охуел от того, что я тупа тупо ничего не знаю.
Вопрос. Есть ли классический/правильный/хороший подход к организации SQL кода в проекте? Куда ложить файлики, как организовывать и реализовывать схему в БД, как её поддерживать без системы вроде миграций Django? Очень надеюсь на подсказку, хотя бы какую-нибудь ссылку или тэг как искать, куда копать. Спасибо.
>>1669888 Я предполагал такое, но после автомиграций джанги для меня это немного дико. Типа, джанга как-то делает изменение схемы БД каким-то формальным, задокументированным, что ли, а тут получается просто SQL файлы с созданием БД. От этого немного легче, уже можно формулировать новые вопросы. >>1669885 Это наверное немного не то. Я больше спрашивал об организации кода в проекте и возможно об архитектурных паттернах. Типа, "как обычно строят бэкенд приложения без Django ORM".
>>1669881 >Есть ли классический/правильный/хороший подход к организации SQL кода в проекте? Куда ложить файлики, как организовывать и реализовывать схему в БД, как её поддерживать без системы вроде миграций Django?
Есть, пиздуешь на девопс и бьешь DBAшнику челом оземь.
>>1668523 Двачую этого. Начал вкатываться где-то года два назад, и так как я до этого был членуксоидом продолжительное время, за каким-то хуем решил осваивать вим. Мало того, что я потратил на это кучу времени, так ви байнды для меня теперь как проклятие, я не могу без них ни в одном редакторе.
Ну хуй с ним с вимом, как только я пришел на новую работу я вим сразу нахуй послал, потому что нормальная IDE за тебя делает очень большой пласт работ. Минус конечно в том, что из-за ide ты не всегда будешь понимать что происходит под капотом, но а всегда ли тебе это надо?
Я короче как посидел на Jetbrains IDE теперь считаю что после первых шагов, как только они дошли до фреймворков и прошли задачи helloworld1, echo2, сразу учиться пользоваться IDE. Все эти ваши редакторы кода полная хуйня по возможностям. Да, бесплатный и свободный, и это весомые аргументы которыми можно руководствоваться при выборе инструмента, но сравнивать функционал редактора и полноценной IDE и говорить о том, что редактор может заменить вторую это притворство.
>>1669911 У меня наоборот - долгое время писал скрипты в минимальном редакторе и заебись, а с освонием бидона решил заодно погонять пичарм. Пока очень бесит, что он везде лезет со своей хуйней и советами, лол и вообще слишком всё переусложнено на ровном месте. И это я ещё не пишу живой код, а балуюсь во время изучения. Интересно, через сколько это пройдет.
>>1669921 Над многими большими проектами работают в виме, это совершенно нормально. Наверное всё сильно зависит от особенностей проекта, языка кода.
Если ты работаешь над кусками сложного кода и понимаешь проект, то там нафиг не нужны все эти сложные IDE. Возможностей вима как IDE вполне достаточно. Он тоже подсвечивает синтаксис, поиск умеет делать, diff-ы и много чего ещё. При желании можно и сложнее настроить.
Когда логика кода размазана по десяткам файлов, как это в Java принято, с их диким использованием наследования, то там уже тяжелее в виме и чаще идёт в сторону IDE.
>>1669881 если у тебя монолит = бекенд + бд, то обычно миграции хранят вместе с проектом (аналогично django orm) и используют что-то вроде alembic или flyway или liquibase
если бд одна на несколько проектов, тот тут либо делают отдельный сервис для нее, который работает как бы как адаптер json-sql и аналогично тому что сверху, либо держат отдельную репу с миграциями
еще есть вариант когда в компании есть отдел эксплуатации хранилищ и там им просто кидается заявочка и они сами ебутся как-то
>>1669940 Не очень хочется развязывать срач, так что я на этом сообщении остановлюсь. Вот что мне не нравится в vim, emacs и отчасти в тех же самых новомодных и удобных vscode:
- хуже автокомплит: неважно какой у тебя редактор, language server'a у всех одинаковые. В идее автокомплит работает в разы лучше - искаробочное решение, которое работает сразу: помимо освоения вима и имакса их надо люто пердолить, даже если учитывать что ты возьмешь какой-нибудь популярный конфиг, допиливать его придётся до вменяемого ide-like environment. В vscode всё встаёт само; - отсутствие вменяемых инструментов рефакторинга по всему проекту; - интегрированные и очень удобные инструменты гита, мержи, история, и всё это наглядно и очень удобно. Наверняка в остальных редакторах есть инструменты для гита, но я уверен на 99% что они и близко не стоят по удобству с инструментами Jetbrains IDE, и для мержей скорее всего придется ставить стороннюю утилиту; - интегрированные возможности управления деплоем, докер, возможность настройки пресетов конфигураций для них, UI для управления/подключения к контейнерам. Минус в том, что как я и сказал, не знаю как это работает под капотом. Но вопрос в том надо ли это мне? (нет). Скорее всего для решения этих задач также потребовалась бы какая-нибудь утилита - охуительнейший дебаггер
Собственно одна IDE заменяет кучу инструментов, без пердолинга, искаробки. Но вот как раз минус в том, что код писать удобнее именно в редакторе, но программирование это лишь хз, для меня, где-то 15-20% написание кода, остальное время проработка задачи, дебаг и прочее говно
>>1669983 Срач какой-то особо безсмысленен, зависит от задачи. На англоязычных сайтах не видел чтобы срались из-за инструментов каких-то так фанатично) Есть инструмент, со своими плюсами/минусами, каждый выбирает что нравится.
>>1670020 > На англоязычных сайтах не видел чтобы срались из-за инструментов каких-то так фанатично Ага, именно поэтому вим вс эмакс это один из самых легендарных срачей эвер.
>>1669962 Спасибо большое, дружище. С отделом я конечно пока повременю, просто для начала хочу hello world в виде бота написать на go, но бд там и логика относительно объемные получаются, будет над чем поработать.
Поясните какого хуя не работает импорт. В одной и той же папке 2 файла name.py в котором только my_name = "Anon" и основная, в которой импорт делаю и делаю print("имя: ", my_name). Но при запуске выдает эту залупу. Какого хуя?
Анон, есть у кого Лутц изцучаем пистон 5е издание второй том, и програмирование на пистоне 5е издание 1, 2 том? на рассово неверном русском. С меня няши, лучи добра, и тонны нефти(хоть она нихуя и не стоит сейчас)
>>1670377 да я уже 7ой месяц ебусь со змеюкой. просто решил прочитать вдруг что полезное найду. Спасибо за наводку. Твоя мать порядочная женщина, а отец благородный мужчина.
>>1670420 Ну да воды много но что то полезное нахожу один хуй. На английском тяжело читать, хотя первую книгу на инглище я прочитал про питон. посоветуй чего-нибудь, пабрацки, а? интересно про классы почитать, и про то как эффективно ими пользоваться. Ебошу парсеры буккмекерских контор с блекджеком и шлюхами. было бы круто если бы было как то чтиво в эту сторону повернуто.
>>1670553 я сейчас на 500й первого тома. Тяжело читать, и он часто повторяется. Годнота конечно в том что у него основательный подход но блять какой слог ебанутый. Может проблема в переводе
>>1670525 пару хелловордов, синтаксис подучить, задачи на алгоритмы, туториал на джанге, и все, боец готов) остальное на ходу осваиваешь, так даже лучше запоминается когда на практике что-то применяешь сразу.
>>1670717 Уже упомянутое intermediate-python.epub как концентрацию питонического.
Ну а дальше я ничего не читал уже. Чистый питон по сути заканчивается. Книги формата "Сборник Рецептов" держу и листаю для решения моих практических задач.
я даже до нулевой страницы не дочитал. просто знаю, что есть какая-то там книжка, и что какой-то мудак умудрился скучным и сухим языком разосраться на сотни страниц про язык, который легко объяснять и легко подавать на полезных живых примерах и учебных проектах
>>1670735 > туториал на джанге А какой конкретно? Официальный что-ли? К слову прикольно, что некоторые книги по фреймворку порой растягиваются на 500 страниц. Вот уж действительно проще некуда.
Читаю про итераторы и не совсем понял один момент. Вот есть объекты, которые могут итерировать сами себя, т.е. имеют __iter__, возвращающий себя, и реализованный __next__.
В коде с примером счетчики итератора инициализируются в конструкторе, т.е. его можно будет проитерировать только один раз для объекта (как тот же файл, например). Это какой-то принципиальный момент, или при желании можно счетчики сбрасывать в __iter__ для многоразового использования?
>>1671268 Охуенно конечно говорить о каком-то коде из примера, но при этом сам код не выкладывать. >при желании можно счетчики сбрасывать в __iter__ для многоразового использования?
Да, можно.
А вообще лучше сразу на yeild и генераторы переходи.
>>1671268 В норме итерируемый объект должен не себя возвращать, а создавать новый объект-итератор.
То есть в своём MyObject ты при __iter__ создаёшь некий другой объект, MyObjectIter, в нём хранишь переменные, с которыми работаешь, ссылку на MyObject при необходимости.
А вот в MyObjectIter итератор уже self возвращает.
>>1671052 >А какой конкретно? Официальный что-ли? django girls, там хорошо что код самому набирать, хоть и немного, лучше запоминается. Официальный тоже неплохой.
То что доки много страниц это ничего не значит, на любом языке/фреймворке девелопер сначала изучает базовые приемы работы на языке/фреймворке, далее уже по потребности смотрит доки или гуглит решение.
>>1671067 Это там со всеми доками и туториалом 2000 страниц. А так туториал 7 parts, или 64 страницы если в pdf.
Здравия аноны. Читаю вводу доку питона и назрел вопрос. На самом деле он у меня еще с того времени как я узнал что существуют языки с динамической типезаций.
В целом можно описать этот вопрос как: зачем вообще нужна динамическая типезация? Мне, как человеку, который вообще никогда не работал с такими языками, кажется это очень не удобно. Основная проблема это возможность отправления в функцию непредполагаемого типа. Попробовал в консоли отправить в функцию sum строку. Получил ошибку типа ожидалось int, а получено str. Значит функция как-то проверяет тип, я так понимаю это можно делать отловом исключений (до этого еще не дочитал). А так как я не знаю фишек динамической типзацией, то для меня это кажется чистым костылём.
Так вот, анон, в чем плюсы динамической типезации над статической.
>>1671902 А тебе удобно в статических языках, когда тебе надо делать работать с темплейтами-дженериками потому, что вроде бы функционал одинаковый у функции-метода, но типы разные?
А удобно работать с форматами вроде json/xml? Удобно, когда ты не можешь в словаре хранить разные типы данных, а только одного типа или с одним определённым интерфейсом?
Собственно самая засада начинается с работой со сложными структурами данных, зачастую заранее не определёнными. Вот как такие, что приходят тебе по JSON.
Начала учить Файтон, всё шло хорошо, но появилось задание написать калькулятор. Окей. Присваиваю переменной операции (сложение, деление и т.д.). Мне нужно с числом, которое пользователь вводит, произвести операцию, которую он выбирает, со вторым числом, которое он напишет. Как это написать, именно сам итог счёта? Я так поняла, что нужно каждый раз проверять, что ввёл пользователь в "операции" и через if каждый раз прописывать этот счёт, как на втором пикчерз. Нет ли штуки, которая кратко заставит написать в одной строчке, мол (a "чё там пользователь ввёл в операции" b) и чтоб оно посчиталось? делаю в вижуал студио Дико извиняюсь, если пишу не по-программистски.......
>>1672060 Просто просишь ввести необходимую операцию: s = input("Введите матиматическое выражение: ") Например пользователь ввел "2+6×3" result = eval(s) И дальше ответ: print("Результат матиматического выражения: %.2f" % result)
Аноны, дайте короткий чеклист того, что нужно знать для вката на фриланс выхода на прибыль хотя бы в $1к. До питона 3 года прогал на яве, есть опыт работы с бд, линуксом, html+css, ангельский B2. Синтаксис знаю, SL продрочил, сейчас читаю Лутца по программированию.
>>1672203 Питон это бекенд, мл, боты и куча вариативных скриптов спрос на которые был и есть. Ладно, не суть. Сколько примерно займёт вкат в твой набор?
>>1672207 >это бекенд Это пхп. Либо джава, но никак не питон. >мл Много ты работ во фрилансе, связанных с мл, видел? >боты На node.js пишутся быстрее и легче, спасибо божественному puppeteer. К тому же можно их писать в виде расширений для браузеров, что тоже весьма популярно и пользуется спросом. >Сколько примерно займёт вкат в твой набор? Если перечисленный тобой опыт реален, то не больше 3-х месяцев точно.
Нужна небольшая утилита, смысол такой. Открываешь аудиофайл. Сверху появляется проигрыватель с бегунком-громкостью, все дела. Внизу под ним один в один наложенные графики с уровнем, спектрльным центроидом ну всякой другой кепстральной математикой, она у меня есть. Пользователь может этот графики туда сюда-зумить, запускать файл с разных мест отмечать на графике или бегунке контрольные точки, которые потом будут экспортироваться. По сути надо продублировать интерфейс mp3splt-gtk, но без его заёбов. PyQt сможет? Если да, то от каких виджетов плясать?
>>1672344 uuid или можно шифровать/дешифровать id мол crypted_id = encrypt(id, key) /items/{crypted_id} а потом обратно decrypt(crypted_id, key) можно еще случайность добавить но лучше забей это реально нужно лишь в 0.00001% случаев
Аноны, а кто работал с PyQt? Есть QTableWidget, который выводит определенную информацию из SQLite. Там не просто из таблицы, а с джоинами, плюс сделал первый столбец в каждой строке как QtCore.Qt.ItemIsUserCheckable, чтобы можно было выделять галочками. И хотелось бы прикрутить фильтрацию столбцов к этому делу. В идеале - чтобы как в DB Browser'е (см. пик). Но можно и сверху, а не в самом виджете. Собственно, вопрос: как это лучше реализовать? А то тут нагуглил вообще про какие-то модели данных, но я не программист, и мало что понял. Да и не знаю, работают ли они с джоинами и посторонними элементами в виджете. Короче, посоветуйте что-нибудь, пожалуйста.
>>1672699 Можно и без рекурсии. Иногда даже нужно. Но в этом случае тебе придётся её самому имитировать через стек, что лишний геморой. Если хочешь - делай так.
>>1672531 Иногда рекурсией код записать гораздо проще, при этом он еще и сразу понятен. Например для той же функции Аккермана - переписал уравнения в код и всё, даже мозг включать не надо.
>>1665888 (OP) Нужно написать микросервис, который принимает набор данных и возвращает результат, смоделировав его через ML модель. Правильно ли я понимаб, что тут вполне будет фласка достаточно?
>>1672860 А как у тебя протокол получения задачи и отправки результата будет устроен? Обычный запрос по url-post и ожидание ответа без разрыва соединения?
Спрошу и тут. Подскажите, каким образом лучше всего изучить Django? Есть базовые знания HTML, CSS и Python. Знания английского среднее. Пробовал по оф.документацие, но там все сухо подано, да и объяснения какие-то туманные для новичка. Вот тебе код, вот при наборе этого кода ты получишь следующее. Хотелось бы более углубленное изучения, где бы объяснялась причинно-следственная связь. Есть ли на русском какой-нибудь годный вводный курс для новичков? Чтобы раскладывали все по полочкам, без копи/пасты и т.д.
>>1672939 Спасибо конечно же, но 1 час это очень мало, да и к тому же, хотелось бы на примере какому-нибудь. Например: создаем эдакий сайт на Django, в ходе которого бы рассказывались азы, причинно-следственная связь и т.д. У Хоуди очень поверхностная информация, просто быстро пробежался, да и к тому же, под конец там вообще сплошной "не обращайте внимание, просто пишите то же, что и я".
>>1672948 Спасибо. Да, о чем-то таком я и говорил. Нашел еще днем отличный курс Олега Молчанова, только там все было очень хорошо разжевано где-то до 5-6 урока, потом он троить что-то сильно начал, забив на разъяснение и просто перейди к копи/пастингу. Нужно будет Медведя посмотреть, надеюсь, у него вышеописанное не начнется. Еще раз спасибо тебе. >>1672950 На самом деле, чем больше, тем лучше, карантин же, свободного времени уйма, да и к тому же, чем больше информации о фреймворке, тем лучше. Поверхностное знание и копи/паста совсем не то.
Собрал питон из исходников: ./configure --prefix=/home/`whoami`/local --disable-shared make install
Потом собираю свой экзекьютабл. Там в main(...) надо вызвать Py_Initialize() по тьюториалу. Если убрать папку ~/local/lib/python3.8, то получается ошибка. Но в этой папке ~2000 файлов. Питону правда, чтобы просто запуститься, нужно выполнить столько скриптов?
>>1673015 Уже попробовал. Для запуска с Tkinter (за копипастингом пропустил момент, на котором эта либа попросила новые скрипты) все еще требуется ~200 файлов оставить. Но в принципе уже норм. Вопрос можно снять.
народ, активно учу пайтон - синтаксис, что нужно чтобы стать уже джуном и со спокойной душой откликаться на вакансии? только без шуток, плез - я прям на грани отчаяния сейчас
>>1673262 потому что не понимаю, как учить дальше и что делать с теми знаниями, что уже получил - плюс переехал в другую страну и в связи с гребанным вирусом все планы полетели в пизду
>>1673272 24 скоро - закончил ргунг, поработал в сибири - переехал в израиль, сначала по программе, тепреь уже гражданин, учу на курсах си и потом буду JS, самостоятельно пытаюсь учить питон, учу иврит, в итоге иврит курсы его накрылись пиздой - сколько программирование еще учить не знаю, хочу как-то ускориться =, но не знаю как
>>1673271 Это всегда очень индивидуально. Зависит от тебя, какие у тебя вводные, по образованию-возрасту-статусу-складу ума-подготовки, от того, в какой стране ты находишься, в каком городе и какой там рынок IT, какой у тебя юридический и визовый статус.
Нельзя так посоветовать. Даже примерно. Ну реально, тебе самому надо изучить немного рынок труда, какие есть вакансии, что спросом пользуется. Пусть там для мидлов-сеньёров, но это направление подскажет.
Если совсем сейчас надо и очень обязательно, то связываться с конторами надо. Может попробовать с там работающими переговорить. И тоже, всё много от чего зависит.
>>1673274 Вот для развития себя как специалиста, много языков учить не надо. На голом языке мало чего делают. То, что делают на голом языке, обычно требует серьёзных специальных знаний и это нишевые вещи.
Любому спецу надо знать индустриальные технологии по направлению, в котором ты собираешься развиваться.
Для питона, есть большое направление ML, OpenCV и вот туда, в котором я не ориентируюсь вообще. Ничего не могу сказать.
Есть сетевые направления, сервисы разные, тут проще: 1) для всего полезно разобраться с git 2) полезно разобраться с контейнерами, с docker 3) полезно разобраться с параллельным, многопоточным и асинхронным программированием. Особенно с асинхронным, если на питоне 4) полезно разобраться с веб-фреймворками, актуальные django и aiohttp 5) полезно разобраться с БД и хранилищами, Postgres, Mongo, Redis и подобными. 6) полезно очереди сообщений, RabbitMQ, всякие Celery может быть. 7) полезно разобраться с облачными технологиями, все эти AWS, Azure и т.п., но я всё до них никак не дойду, но они в тренде.
Огромная масса всего есть, просто страшно, сколько всего надо бы уметь. Я делаю упор больше на сетевые вещи, это мне ближе. Что-то ещё забыл наверняка.
>>1673280 >Огромная масса всего есть, просто страшно, сколько всего надо бы уметь. Что-то ещё забыл наверняка. 8) RESTful API's 9) тесты 10) фронтенд немного Да не так уж и много. Можно глянуть вакансии, у каждой своя специфика чаще всего, но если есть опыт python/django, разобраться с чем-либо не составит много труда и времени.
И на следующем шаге в ответ на python manage.py migrate получаю can't open file 'manage.py': [Errno 2] No such file or directory
То есть во первых почему-то не находится django, а во-вторых файл manage.py.
Долго гуглил и везде пишут что нужно просто находиться в той директории, где находится manage. py чтобы он нашелся.
Пытался выполнить запрос python manage.py migrate из всех директорий всех файлов manage.py, которые нашел на компьютере (они на пикриле), это не сработало.
Например перехожу в директорию одного из этих файлов:
cd /usr/lib/python3/dist-packages/plainbox/impl/providers/categories Пытаюсь выполнить: python manage.py migrate Результат: No module named 'plainbox'
Я читал книгу Пола Берри "Программирование на Python", по ней я его и выучил. Наикрутейший учебник, все на пальцах объясняют. И да, там версия Python 3.x.
>>1672905 Да, именно так. Собственно вчера уже запилил. Сейчас хотел начать делать фронт, а он мне такой ModuleNotFoundError: No module named 'numpy', хотя вчера всё работало. Скиньте годных статей про управление версиями питона и вот это всё, а то после фронта, где ставишь всё в проект и кайфуешь, как-то непривычно.
>>1673490 А ты как вообще с проектом в питонухе работаешь? Через виртуальную среду? Если пишет No module named 'numpy' значит так оно и есть
п.с. где годные туториалы по построению фулл веб-приложения: бэк на питоне, а фронт на жс? пока что все что я делал это заливал ванильный жс-говнокодкод в темплейты джанги, хочется освоить фронт (на уровне "троешника" хотя бы) и бэк в связке
>>1673491 Зашёл говорю flask run, ёпт, а он морду воротит. Вчера норм робило, как я понял потому что использовал ту версию питона, которая с юпитером работает, а вот ща какую-то другую начал. Вот и хочу разобраться что к чему
>>1673497 Вот чтобы не было такой ебли с версиями, ебошь virtualenv или conda venv и ставь все пакеты туда, надо будет - сменишь среду, а не будешь кустарно менять глобальные интерпретаторы для проекта
>>1673490 В питоне принято работать через виртуальные среды, он их очень хорошо и удобно поддерживает, даже проще, чем кажется при взгляде на инструкции.
Фактически тот же принцип, что и в npm. Там у тебя есть "виртуальная среда", он определяется соответствующим каталогом node_modules, в который и записываются npm-модули при установке.
В питоне тоже создаются такие каталоги и в них ставятся модули. Обычно в пособиях рассматривают работу с виртуальными средами через source bin/activate, это если в консоли работать, но это не очень прозрачно и не всегда удобно. Проще работать другим способом, просто по глобальному пути вызывать интерпретатор-инсталлятор.
Сначала просто создаёшь виртуальную среду, а потом пользуешься ей без активации: ~/virtualenvs/venv_py38/bin/pip install some_module ~/virtualenvs/venv_py38/bin/python my_prog.py условно как-то так. Универсальный подход, можно использовать в системных скриптах и т.п. Питон сам будет брать всё, что нужно, из соответствующего окружения.
Переносимость "на дискете" правда сильно хуже, чем у npm.
Для ноды ты просто тупо копируешь каталог, и если у тебя линукс с 8 версией, а на целевой машине винда с 12-й версией, то скорее всего заработает без проблем. Большинство модулей переносимые.
В питоне сложнее, перенести так можно, но только в рамках системы одного семейства и одной версии питона. И надо ключи правильные при создании venv не забыть.
> Для переносимости лучше docker'ы ебошить Но для этого надо, чтобы докер на машине стоял, а для этого надо его ставить, а это гемор. Его потом ещё надо запускать. Сам докер в системе - это дыра в безопасности, с ним надо аккуратным быть. На Win 10 Home докер не поставишь. Больше гемороя, чем кажется.
>>1673280 спасибо друг, а то тут все так надменно отмечают, как будто родились и уже на мамкиной пизде прогать стали. Правда спасибо) вопрос есть, просто я вот умею уже частично что-то делать, но до сих пор не понимаю практичесокго применения этого всего дела
>>1673846 Да, можно в файлик просто писать json. С БД удобнее и быстрее, она для этого и предназначена, хотя если и напишешь как написал, потом уже не составит труда на бд переключить, т.к. логика готовая будет.
Аноны, во время выполнения функции надо запустить другую и продолжить выполнение текущей, не дожидаясь пока вторая завершится. Это все тредами надо делать?
Запуск в другом процессе Запуск в другом треде (зашкварно, не только из-за GIL но и из-за ебли с локами и гонками) Асинхронный запуск функции, если это связь с сетью и одна из функций не блокирует основной поток нон-стоп
IIFE как в жс в Питоне пишутся? Это функция, которая исполняется сразу после объявления. Или так не делают? (lambda x: file.write(x*10))("string argument")
>>1673873 Во время обработки запроса надо сделать запрос на другой сайт, результаты которого нужны только серверу. Клиент в это время уже спокойно может идти дальше, получив ответ со статусом 200 >>1673877 Понятно, спасибо, анон. Вторая функция и так асинхронная, но просто хотелось бы, чтобы ответ на клиент ушел быстрее
>>1673877 >>1673897 А что в итоге профитнее будет, например при 100+ запросах к этой функции? Запуск в другом процессе выглядит привлекательно, но ведь такая хуйня запустит по процессу на каждый вызов функции и рано или поздно наебнет сервер. Или т.к. особо CPU-затратных операций в этом нет - забить на GIL и делать тредами?
>>1673880 Просто делаешь очередь на обработку запроса на сайт. К тебе приходит клиент, ты формируешь запрос на другой сайт и кладёшь это в специальную задачу в очередь. Клиенту выдаёшь ответ.
В это время другая задача сидит на очереди, как только там что-то появляется, обрабатывает независимо уже этот запрос. Так можно и через asyncio делать, и через потоки. Можно отправлять в другой процесс или на другой сервер уже через MQ какой-нибудь.
>>1673982 У тебя самая классическая задача на очередь сообщений. Но тебе не обязательно для этого поднимать очередь между несколькими процессами, ты можешь и в одном это делать. Схему я описал >>1673982
>>1673983 >и через asyncio делать Но ведь asyncio просто запустит вторую функцию асинхронно, а сама функция остановит выполнение, пока запрос не завершится.
>>1673993 Нет, в первой функции ты делаешь request = {'some_url': 'xxxxxxx'} queue.put_nowait(request)
другая функция где-то в фоне крутится, запущена как самостоятельная задача async def downloader(queue): ____while True: # or something ________request = await queue.get() ________await do_request(request)
Совершенно типовой паттерн. Операции сетевых запросов в asyncio не блокирующие. Твоя цель - развести функционал по разным задачам, по разным потокам исполнения, и крутить их параллельно.
Асинкио или треды даже не важно, паттерн общий. С тредами тоже надо через очереди работать, это самое правильное, а не через мютексы.
>>1674008 Понял, спасибо, анон. > Операции сетевых запросов в asyncio не блокирующие. Я просто не так понял, подумал речь просто о вызове второй функции через await в теле первой
queryfunc1() - это функция запроса и она точно возвращает список вида ['A', 'B', 'C'] Но программа крашится, когда я запускаю окно с этим комбобоксом. Что за хуйня?
>>1674018 Если сокет докера доступен по-умолчанию, а так часто делают (добавляют пользователя в группу docker), то любая программа может к нему подключиться и делать что угодно в твоей системе с правами рута и доступом ко всей файловой системе.
Если ты не включаешь пользователя в docker, то тогда должен дать ему право запускать через sudo, что тоже опасно.
Это в первую очередь про линукс. В винде, возможно, докер запувскается сам внутри виртуальной машины и поэтому более безопасен. ХЗ, я работаю с линуксами.
Пишу бота в одной игрушке для саморазвития. Пока научился через opencv детектить кнопки и тыкать по ним. Теперь более сложная задача - уворачиваться в бою от всякого говна (типа тохи - весь экран в говне, надо уворачиваться). Антоши, накидайте статей/ключевых слов по решению задачи - анализ изображения в реальном времени, определение скорости и направления объекта (только 2D). В память лезть не интересно, хочу именно по картинке. Ну и у меня всякой математикой-геометрией плохо, буду благодарен если поделитесь полезными материалами для решения такой задачки.
>>1674025 >к нему подключиться и делать что угодно в твоей системе с правами рута Доступ к сокету позволяет использовать api docker, как с помощью него писать, например, в /usr? Я тебе больше скажу, если ты используешь sudo, то любая программа можеть написать в твой bashrc alias и дальше делать что угодно.
>>1674219 С помощью апи докера можно запустить контейнер, который делает любые нужные тебе вещи docker run -v /:/hostroot:rw -u root:root --priveleged some_container
Внутри контейнера ты уже можешь делать всё, что угодно. Базовыми средствами докера ты как-то блокировать такое поведение не можешь.
Вы когда из под виртуалки работаете каждый раз прописываете . venv/bin/activate export FLASK_APP=hello.py? а только потом flask run? Это же три команды против одной на моем любимом фронтенде. Можно как-то исправить?
Где можно начать подрабатывать на питоне? Я знаю питон, вроде даже не так уж и плохо. Разрабатывал свои сайтики, писал для себя граберы. Ну, вот и думаю, а где можно начать писать граберы, но уже за деньги? Мне не нужны огромные деньги, но нужна работа. Где можно начать? И как надо начать? Как сложно начать?
>>1674479 Проблема в том, что таких как ты слишком дохуя. Все они пасутся на такой простой хуйне, демпингуют и работают за копейки, чтобы вырвать говнопроектик себе.
>>1674494 Была бы возможность... Я живу в полной дыре, к сожалению. Был бы я в миллионике, хотя бы, то явно бы такие вопросы не задавал. Я понимаю, что в офисе лучше, но возможности нет.
>>1674492 Я бы сказал регаться на апворке, но там для начинающих много напрягов. Плюс недавно в рашке отключили пионер, который самый удобный способ вывода, так что хуй знает. Можешь попробовать fiverr. Это такой сервис для мелкоработ, но там вроде надо и продвигаться как-то, чтобы у тебя заказывали.
>>1674505 Я его уже 1.5 года знаю. Да и он не единственный мой язык. >>1674504 Так я и спросил, а что делать то? А то темный лес, какой-то. >>1674503 Хорошо, спасибо. Именно тот ответ, который я ждал. Попробую fiverr.
>>1674479 >Я знаю питон, вроде даже не так уж и плохо. Хуле толку питона с сайтиками, смысл во всяких библиотеках вроде панд, матплотлиб и прочих тензерфлоах
>>1674775 Конкретную ширину на экране (или иногда высоту) обычно устанавливает менеджер разметки - pack, grid или place. Если тебе нужна конретная ширина или высота после компоновки, вешай на виджет событие Configure с лямбдой и замыканием с другими виджетами, если с ними надо что-то сделать в записимости от этой ширины или высоты.
ERROR: This cross-compiler package contains no program /Users/name/opt/anaconda3/bin/x86_64-apple-darwin13.4.0-clang ERROR: activate_clang_osx-64.sh failed, see above for details ERROR: This cross-compiler package contains no program /Users/name/opt/anaconda3/bin/x86_64-apple-darwin13.4.0-clang++ ERROR: activate_clangxx_osx-64.sh failed, see above for details Кто сталкивался с такой проблемой? как решать?
Ну что же, методом проб и ошибок пришел к выводу, что пока лучший бесплатный видеокурс по джанге записан Олегом Молчановым. Есть еще очень простой для восприятия курс за авторством Андрея Кудлая, правда он платный (для ознакомления залиты лишь 7 уроков). Пиздец как интересно на все уроки взглянуть, жаль что денег нема. https://youtu.be/c45cBujMQAs
>>1673844 А насколько много данных? А то можно просто словарь питоновский держать и хранить его в бинарном виде с помощью встроенного модуля picle, ну или в текстовом json
>>1675025 >пока лучший бесплатный видеокурс по джанге записан Олегом
>издец как интересно на все уроки взглянуть, жаль что денег нема. Там же ничего нового в принципе, только то что уроки записан в 2020 году и ты повелся на лендинг)
>>1675025 Из того что смотрел годный - "[tceh] Разработчик на Python" от Никиты Соболева. Правда там не только по Джанге, но и основы + фласк, но в целом довольно интересно, основное по фреймворку рассказывает, затрагивает DRF
Совместимы ли микросервисы и джанга? Мне сейчас нужно немного пофантазировать на счет эджайла.
Допустим, я пишу ИС на джанге. Сначала я разрабатываю API и основу своей ИС. Потом, каждый следующий спринт я пишу микросервисы, решающие конкретные задачи в моем проекте. Эти микросервисы взаимодействуют с помощью API. Я все правильно понимаю? Хотелось бы услышать ответ от анона с опытом в разработке.
Здаров бандиты, вкатился месяц назад в питон для анализа (До этого кодил максимум, чтобы лабу сдать в универе). Сначала структуру языка поизучал, потом к практике сразу, могу достаточно простые регрессии обучать уже. Куда дальше двигаться?
>>1675247 Я о том, что атом почти то же самое, что вскод, и то и то от микрософта а гитхаб сейчас микрософт и держит и я смысла менять шило на мыло не вижу
>>1675251 Слез с пичарма, как только закончил бегиннер курс. Слишком тяжеловестно и много лишнего. При желании, все плюхи пичарма можно заебенить и в vim или vscode
>>1675257 Особо таким не пользуюсь, а так там package autocomplete Python называется, чтобы полноценно для твоего проекта работало надо вот это добавлять:
>>1675235 если ты делаешь в соляново, то смысла в agile нет. Все эти штуки это для команд.
В основе agile лежит bdd + scrum, то есть разработка основанная на поведении + инкрементарная разработка. То есть ты не ебашишь сразу описание всего апи и потом делаешь по куску в две недели, а определяешь что нужно твоим пользователям прямо сейчас больше всего и делаешь это в течении спринта. В конце спринта релизишься, фиксируешь что было ок/неок, складываешь техдолг в беклог, определяешь задачи на новый спринт.
Вообще почитай красную книгу про scrum, на дваче одни долбоебы
>>1675284 Спасибо, анон. Я вообще курсач пишу, поэтому и написал пофантазировать про эджайл. Не хочется каскадную модель выбирать, поэтому и спросил, как джанга и эджайл дружат.
>>1675286 гх есть, но юзаю только для работы, пет-прожекты не пишу, впопенсорц не вкладываюсь, в рот ебал палить местным неадекватам
как научиться, я хз, прогал в школе на PascalABC.Net, потом поставил линукс и перекатился на python, писал всякое, чтобы проще было делать домашку по алгебре. В универе были C, C++, C#. Ничего прям спецом, как местные, по 8ч/день не учил. С 3-го курса пошел работать.
Из книг по ЯП мне понравился Лучано Ромально Fluent Python, но он в отличие от Лутца не объясняет такие сложности вещи, как то что программируем мы за компьютером, а у компьютера есть клавиатура.
>>1675331 занимался бекендом / бд / батч-процессинг. сейчас сменил работу, пока занимаюсь какой-то хуйней. работаю в офисе, js/вестка не умею, но думаю почитать чего в отпуске
>>1675336 >reactjs+drf или vuejs+drf Собственно дублирую вопрос: >>1673491 Где годные туториалы по построению фулл веб-приложения: бэк на питоне, а фронт на жс? пока что все что я делал это заливал ванильный жс-говнокодкод в темплейты джанги, хочется освоить фронт (на уровне "троешника" хотя бы) и бэк в связке
>>1675393 Тебе же написано, чему стоит уделить особое внимание. Алсо, вариант может быть только один, так что лучше завернуть в if-elif, а не отдельно.
вообще странный вопрос, если ты про SPA+backend. как бы вся суть такой связки в том, чтобы фронт и бек были независимы и связывались только через API. Как бы вся связка так работает: на бекенде пишут openapi.yml, показывают фронтам, фронты генерируют js-код и юзают его.
какие-то сложные особенности взаимодействия и тонкости совместного использования на курсах не рассказывают
только сейчас заметил что с оф.сайта питона скачивается 32 бит версия(работает всё идеально) у меня 64 винда, а с левых сайтов качать не хочется, да и так это не на что не влияет, правда ведь?
>>1675393 трабл в первом if. Где написано что нужно спать определённное кол-во часов? Следовательно h не равно а. a - это минимум, который можно спать, b - максимум. Я думаю она должна выглядеть так:
a = int(input()) #рекомендовано столько спать b = int(input()) #пересып h = int(input()) #столько часов спит
Аноны, поясните за OpenCV. Он основан на машобе или он по другому принципу работает? Насколько хорошо он развит в питоне и есть ли какой-нибудь яп который превосходит питон в этом плане? И самое вкусное - если вкатываться в opencv и машоб то сколько времени на это потребуется с знаниями матана и статистики на около базовом уровне?
Скачал учебник Лутца, а там питон 3.0.1 в примерах, а у меня 3.8.2. Мне продолжать учиться и потом читать чейнджлоги ко всему подряд, или выбрать другой учебник?
>>1675675 opencv - это библиотека, там много разных реализаций алгоритмов в основном связанных с обработкой изображений
> Он основан на машобе или он по другому принципу работает? какие-то алгоритмы "классические", какие-то с машобом да
> Насколько хорошо он развит в питоне и есть ли какой-нибудь яп который превосходит питон в этом плане? В питоне есть обертки к сишным функциям на опенцв. Соответственно нативно все в будет в родных C++, нормальные биндинги помимо питона есть в Java, Matlab может еще где. Превосходит ли хуй его знает.
> И самое вкусное - если вкатываться в opencv и машоб то сколько времени на это потребуется с знаниями матана и статистики на около базовом уровне? Опенсиви ебать какой большой, смотря какие задачи ты с ним хочешь решать. Судя по задаваемым тобой вопросам, тебе нужно будет года 2-3
>>1675681 Основная цель - фейс рекогнишн, и в малой доле привлечь обработку фото. Но и без машоба я тоже не обойдусь ибо надо нейроночку мутить для моей цели. Спасибо за ответ.
РЯЯЯ Я НАПУСАЛ ШО БЫ ОН СДЕЛАЛ print("nahui) А ОН МНЕ SyntaxError ВЫДАЕТ! ШО ТВОРИТСЯ-ТО! ЧЕСТНОЙ ЛЮД НАГИБАЮТ! ЫЫА ПАЧИМУ МОЙ do_shit(shit) НЕ ДЕЛАЕТ ШО Я ЕМУ СКОЗАЛ? ДВАЧ ПАМАХИ!
блять, просто изучи error log, если ты только учишься, то там как правило и есть ответ на твой вопрос, это не многоуровневая ошибка в той же Джанге, вызванная косяками в БД
аноны Нубский вопрос пиздец, но гуглится хуево Короче пишу свой package. Нормально ли функциональный код вставлять в его __init__.py? Вроде как импортируется в таком случае ахуено удобно. Но хз сомнения
>>1675982 Ориентированные на разработку и настроенные - норм, если ты в них свободно работаешь. Что Pycharm, что VS Code, что всякие атомы. Vim-emacs тоже норм.
Твой уровень как разработчика мало зависит от IDE. Особенно в случае питона.
https://youtu.be/7kn7NtlV6g0?t=921 >Ява и свифт - хорошие языки для профессионалов, которые учили программирование >Зато питону можно научить даже ребёнка, а также им могут пользоваться люди, которые вообще не умеют программировать
>>1676400 Да, есть такое. Идея такая, что большие языки слишком индустриальные, с очень большим входным уровнем. Кому-то это прикольно, что просто строится такой барьер от случайных людей, кому-то это противно, некоторым программистам в том числе.
Гвидо хотел создать язык программирования для не программистов. Он сам об этом говорит. Чтобы всё было максимально понятно и красиво.
Но, язык оценили и программисты в том числе, и пришли в него. Сначала Гвидо сопротивлялся каким-то новациям, однако потом его постепенно продавили и язык стал обрастать такими чисто инженерными вещами, с которыми уже не-программисту довольно сложно работать. Сам Гвидо уже отодвинут от разработки и особого влияния.
Местами язык немного подпорчен, поскольку многие конструкции уже потом прикручивали, как могли.
Но всё-таки большая разница, когда база языка сделана максимально стройно, когда это было основной целью, и когда база была тяп-ляп, а уже потом программисты пытались из этого как-то выкрутится. Пример последнего - JS и PHP. Они тоже начинались как языки не для программистов, но сделаны теми, у кого никакой культуры не было, тяп-ляп. И страдают от этого до сих пор.
Привет. Хочу попробовать что-то сделать с джанго. Пока знаю только синтаксис питона и основные моменты. В треде есть книжки, там одна по джанго 2009 года. Так же на ютубе есть типа курс по джанго 2017 года, но там в комментах пишут, что мол всё , уже неактуально. Я так понимаю и книга уже тоже неактуальна=> чтоб чему-то научится в подобном придётся искать только самую свежую инфу на англ?