Прекрати писать код в ОДНОМ файле Python | ТОП 5 Ошибок и создание правильной архитектуры

  Рет қаралды 54,022

ZProger [ IT ]

ZProger [ IT ]

Күн бұрын

Пікірлер: 138
@Noname-y1z8t
@Noname-y1z8t 2 жыл бұрын
Привет Zproger. я всё это время создавал иллюзию того что вас смотрят много людей. Это все был я.
@zproger
@zproger 2 жыл бұрын
Мистера робота насмотрелись?))
@monkeyobserver5367
@monkeyobserver5367 2 жыл бұрын
@@zproger это фрагмент общения с папичем.
@kvrvgv
@kvrvgv 2 жыл бұрын
Твой проект по защите через запрос к серверу взломать ещё легче чем через распаковку .exe файла. Нужно просто через браузер отправить запрос на сервер (допустим через консоль JS отправить Fetch запрос) и получить ответ с исходным кодом функции. Так что лучше так не "защищать"))
@zproger
@zproger 2 жыл бұрын
Вы получите упакованную строку, и что это даст? Стоит учитывать что это ведь демка только, если туда накинуть шифрование и все моменты которые я хочу, то распаковать будет очень трудно
@bonjur96
@bonjur96 2 жыл бұрын
@@zproger могу сказать я уже реализовал сокет сервер еще год назад и делал метод шифрования и сделал куча проверок, например если клиент.py то отправляет на сервер 1,если клиент.exe, то 2. Это только одна проверкка их десятка
@zproger
@zproger 2 жыл бұрын
Да там можно столько проверок накинуть, что реверсер от старости умрет быстрее чем хотя бы поймет как это работает. Да и тут даже фишка в том, чтобы шанс реверса уменьшить, так как прямой код распаковать сможет 100% аудитории, а вот защищенный уже только 20% к примеру, это помогает продлить время жизни софта, в итоге пока эти 20% реверснут, уже выйдет обновление с улучшением защиты и новым функционалом)
@k3l3vr444
@k3l3vr444 2 жыл бұрын
@@zproger "ревёрсер не поймёт что это за список, ведь этой байтовый gzip" конечно, ведь он дурак. он же не может посмотреть клиентский экзешник, в котором ты распаковываешь gzip
@zproger
@zproger 2 жыл бұрын
Это уже сильно усложняет задачу, уже далеко не каждый это сделает, в этом и суть защиты. Да и gzip это ведь демка, тут не хватает много других моментов.
@simon-druchinin
@simon-druchinin 2 жыл бұрын
А если пришёл на php проект с легаси на 2000 строк кода +- 200 файлов? Суицид?
@zproger
@zproger 2 жыл бұрын
O_o
@danys4740
@danys4740 2 жыл бұрын
Если нет документации внутренней, то лучше бежать.
@darksniper407
@darksniper407 2 жыл бұрын
Гхм, жесть
@vanker_189
@vanker_189 2 жыл бұрын
А как называется игра на фоне?
@sutury5388
@sutury5388 2 жыл бұрын
Что за игра на видео?
@dreamer_ror
@dreamer_ror 2 жыл бұрын
не стоит в обучающее видео вставлять примеры с from import *, это так себе практика) импортируйте в файлы только то, что нужно, либо, в крайнем случае, используйте import as , так и путаницы меньше, и ошибок, и выглядит приятнее, и не приходится запоминать, какое имя каких функций/классов/переменных уже инициализировано в импортируемых пакетах
@xaea-1233
@xaea-1233 2 жыл бұрын
не стоит доверять обучающим видео на ютубе)) 95% процентов авторов не программисты а контент мейкеры, за автора не скажу, только недавно его видео стали попадаться, но вот среди популярных очень много погромистов
@A1ham
@A1ham 2 жыл бұрын
Самое страшное, что я знал об этой фиче, но не сообразил, что её можно использовать таким образом. Я так з@#&@*$я переименовывать имена во всём файле каждый раз. Большое спасибо.
@СергейГК-н5и
@СергейГК-н5и 2 жыл бұрын
@@A1ham просто пользуйтесь нормальным редактором кода - в котором любое многократно встречающееся имя можно изменить сразу для ВСЕХ мест, где оно используется.
@YT24238
@YT24238 2 жыл бұрын
что за игра на фоне в начале
@riventarakoss1546
@riventarakoss1546 2 жыл бұрын
Хотел похожий проект написать на днях. Добавить только ещё получение хекса файла по какому-нибудь своему алгоритму, чтобы если сервер увидит что юзер запустил код, а не уже запакованный .ехе - аннулировать лицензию и закрыть дальнейшее соединени. По твоему коду с ходу увидел проблемы с ОЗУ. Сервер бесконечно спавнит потоки, но они у тебя никак не контролируются. По итогу если сервер будет долго работать/будет много клиентов - память перегрузится и программа упадет. Нужно создавать класс, передавать его кластер в функцию, и уже через эту функцию вызывать поток, добавляю handler потока в память класса, который спавнит эти потоки. В самом классе просто сделать демона, который в случае "not isAlive()" чистит поток методом del и удаляет его из списка запущенных.
@EdvardKenua
@EdvardKenua 2 жыл бұрын
Всё очень круто объяснено. Но хотел бы спросить, для чего используются файлы __init__.py . ?
@shelb1x
@shelb1x 2 жыл бұрын
Для создания директорий правило и удобнее
@mikenerashid1200
@mikenerashid1200 Жыл бұрын
Связующие файлы, обычно просто пустые, без них ничего импортироваться не будет.
@wordpreslabs
@wordpreslabs 2 жыл бұрын
Как же давно я жду видео по подтягиваю кода с сервера по токену например. Готов проспонсировать канал, добавь пожалуйста такую функцию ♥ Закинул через данэйшен
@zproger
@zproger 2 жыл бұрын
Это сильно помогает в развитии, спасибо за поддержку. Этот проект со временем буду улучшать и думаю релизнем его на гитхаб.
@kevinflynn4867
@kevinflynn4867 2 жыл бұрын
Спасибо Прогер ,полезная инфа)
@zproger
@zproger 2 жыл бұрын
Благодарю
@lapppse2764
@lapppse2764 2 жыл бұрын
Спасибо, подобные видео очень помогают
@zproger
@zproger 2 жыл бұрын
Рад что принес пользу
@dimk7983
@dimk7983 2 жыл бұрын
Спасибо, интересно было посмотреть.
@nat_YouTube
@nat_YouTube 2 жыл бұрын
Что за игра на 0:23?
@zluka7951
@zluka7951 2 жыл бұрын
Спасибо за видео!
@zproger
@zproger 2 жыл бұрын
Рад что понравилось =)
@Илья-м4н9т
@Илья-м4н9т 2 жыл бұрын
Наконец то я понял как это делать! Спасибо большое
@Илья-м4н9т
@Илья-м4н9т 2 жыл бұрын
Хотел ещё добавить, у тебя очень крутые превьюшки)) видно что человек старался
@zproger
@zproger 2 жыл бұрын
Благодарю! Рад что видео помогло
@shakapaker
@shakapaker 2 жыл бұрын
Можно защитить код просто скомпилив все модули в pyd с помощью cython и еще можно важные функции выполнять на серваке и через запросы получать результат выполнения
@SaiviaS
@SaiviaS 2 жыл бұрын
Заебок обзор на твой проект, а как всё-таки разбить код по файлам?
@zproger
@zproger 2 жыл бұрын
Также как я это сделал в проекте
@oleg_kishinskii
@oleg_kishinskii 2 жыл бұрын
ох напомнило мне это как на одном проекте мне досталась программа в 1000 строк в одном файле, пришлось полностью все переписать
@zproger
@zproger 2 жыл бұрын
Это печально =(
@foxprog1379
@foxprog1379 Жыл бұрын
я когда разделяю на файлы то все перестаёт работать
@MrSunchezz
@MrSunchezz 2 жыл бұрын
Зашёл в Python на релизе 3.7. Зашёл на фокусе асинхронности, которой не хватало в предыдущем инструменте. Поскольку серверные приложения это по большей части I/O-bound, то вместо многопоточности, в 2022 году, когда уже скоро 3.11 выйдет, гораздо эффективнее, да и логичнее использовать именно asyncio, но какие бы видосы по Python не встречал, в подавляющем большинстве это поведение, как наиболее ожидаемое - не встречается. Парадокс. Можете объяснить свою точку зрения, почему не переходите на новый уровень?
@alexandergrigorev4518
@alexandergrigorev4518 2 жыл бұрын
Как это «модуль из трёх файлов»? Может пакет?
@zproger
@zproger 2 жыл бұрын
да, оговорился
@unqp52
@unqp52 2 жыл бұрын
А как все эти python файлы собрать в 1 exe ?
@zproger
@zproger 2 жыл бұрын
через pyinstaller, указывая на main.py файл, все импорты он подтянет сам
@AliF0Uen
@AliF0Uen 2 жыл бұрын
Да уж, сколько было проблем когда программа писалась в одном файле. Но дело в том что как бы я в интернете не искал, я никак не смог найти какой-то шаблон по которому можно правильно писать программу в разных файлах, где использовать пакеты python и т.д. Вот я пишу сейчас программу, изучаю питон, максимум что я смог разделить по файлам так это виджеты в одном файле, а в другом файле менеджер страниц, что просто отображает виджеты.
@pepesugar-og
@pepesugar-og 2 жыл бұрын
Я использую рекомендации Microsoft для языка C#: писать каждый класс или интерфейс в отдельном файле. В Python я делаю так же (но приходится импортировать зависимости как модули)
@alexandergrigorev4518
@alexandergrigorev4518 2 жыл бұрын
@@pepesugar-og именно так и надо. Это же SOLID
@develper2
@develper2 2 жыл бұрын
Почему мне легко копаться и отлаживать код в одном файле? Все забыли про ctrl F?
@hin200
@hin200 2 жыл бұрын
все проясняется как только проект начинает уже расширяться и в итоге пока ты найдешь их потребуется час или даже два.
@dertfin1
@dertfin1 Жыл бұрын
Я писал принт, который вызывает принт, но делал это для многострочных меню, когда можно передать в аргумент массив, который будет выведен построчно
@ivan_dernov
@ivan_dernov 8 ай бұрын
Дружище, респект ! Дай обниму ! Сделай ролик о структуре проекта и импортах, где центральной темой будет Абсолютный путь в ПРЕДЕЛАХ ЗОНЫ ВИДИМОСТИ. То есть не смотря на то, IDE подчеркивает как ошибку такой обрубленный абсолютный путь в контейнере всё работает ! и нет ошибки ModuleNotFoundError: В этом ролике это по таймингу в самом конце ( найти не просто, но в других источниках этой инфы просто нет) 15:30. Закрепи комментарий - это важная информация !
@Vladimir-ol5my
@Vladimir-ol5my 2 жыл бұрын
Привет скажи пожалуйста,а реально ли найти бекендеру работу на удалёнке без опыта?
@ze1dris949
@ze1dris949 2 жыл бұрын
Конечно, главное навыки
@sergeysergey421
@sergeysergey421 2 жыл бұрын
Популярный модуль peewee для бд если не ошибаюсь в одном файле написан....удивлялся всегда, ведь явно опытный чувак делал
@mikenerashid1200
@mikenerashid1200 Жыл бұрын
Опытный Джун)))
@lintervil
@lintervil 10 ай бұрын
что за игра в начале видео
@DolceG222
@DolceG222 2 жыл бұрын
А для чего скобки в имени класса class clientHendler():
@zproger
@zproger 2 жыл бұрын
Их там быть не должно, сам не понял как они там оказались
@satipoff-itsolution578
@satipoff-itsolution578 2 жыл бұрын
Мне нравится 👍
@zproger
@zproger 2 жыл бұрын
Благодарю!
@ДжашауМаршанкулов
@ДжашауМаршанкулов Жыл бұрын
Из вашего видео я понял, что вам надо серьезно учиться писать и рассказывать!
@zproger
@zproger Жыл бұрын
Спасибо за конструктивную критику. Но лучше подумайте что Вам нужно, а не что нужно мне.
@mikenerashid1200
@mikenerashid1200 Жыл бұрын
@@zproger возьми уроки у дедушки, как писать и рассказывать)
@Coincollect27
@Coincollect27 2 жыл бұрын
1. Оформление кода 2. Сделать функцию 3. Можно согласится 4. Возможно...
@DzenChannel
@DzenChannel Жыл бұрын
А что это за игра на фоне?)
@ivanc86179
@ivanc86179 Жыл бұрын
Я не знаю пайтон, но эти приколы с байтами при передаче данных по сети очень похожи на плюсовую сериализацию. Похожим образом структуры или контейнеры в UE передаются по сети. А вообще код выглядит аккуратным, опять же, я в этом ничего не смыслю, но читается хорошо. Да и рекомендации в видео реально толковые
@khnykaq8823
@khnykaq8823 2 жыл бұрын
Читал, кто-то из советских чемпионов мира по шахматам при подготовке требовал, чтобы в помещении шумели, курили в то время, когда он концентрировался на игре. Походу, автор готовит из зрителей чемпионов мира, слабые зрители отсеются и перестанут смотреть контент, для понимания которого нужно приложить дополнительные усилия. Все б ниче, но чемпион мира-то один...
@zproger
@zproger 2 жыл бұрын
ахаха) Вы это про игру на фоне?
@khnykaq8823
@khnykaq8823 2 жыл бұрын
@@zproger да, очень отвлекает(((( я в курсе, это-тренд такой ща, но тренд в никуда
@zh4kk
@zh4kk Жыл бұрын
А мне понравилось)
@irwe3514
@irwe3514 2 жыл бұрын
Довольно трудно будет изменять ошибки со временем)
@zproger
@zproger 2 жыл бұрын
=)
@master8920
@master8920 Жыл бұрын
​@Shuthefkup 😂 Ты по ходу не писал больших проектов .
@master8920
@master8920 Жыл бұрын
​@Shuthefkup 😂 Ты по ходу не писал больших проектов .
@ИльяТвердов-н3е
@ИльяТвердов-н3е 2 жыл бұрын
Где ж ты был год назад? Я начинал свой первый проект Беда в том, что я уже написал его, и написал через как всегда, и блин, он работает Работает глобально А переписывать… ну, время тратить
@zproger
@zproger 2 жыл бұрын
=)
@EdvardKenua
@EdvardKenua 2 жыл бұрын
4:45 , это называется ИНКАПСУЛЯЦИЯЯЯЯЯ)
@Deniska228_01
@Deniska228_01 2 жыл бұрын
Круто топ канал
@zproger
@zproger 2 жыл бұрын
Благодарю
@KazakovNik
@KazakovNik 2 жыл бұрын
Куча модулей с кодом под 10к строк. Все легко и просто поддерживается никаких ошибок. Но так делать конечно не стоит.
@userTeams
@userTeams 2 жыл бұрын
0:20 что это за игра?
@userTeams
@userTeams 2 жыл бұрын
tails of iron
@constantinjiaoshi4569
@constantinjiaoshi4569 Жыл бұрын
Ну, кому как. Мне нравиться один фаил. Всё под рукой. Очень удобно. Комментарии для посказок использую. Правда, я пишу сам для себя и на ноде.
@DIMFLIX
@DIMFLIX Жыл бұрын
Но ведь всё равно код не получится защитить. Хоть кучу шифровок сделать. В любом случае мы отдаем код интерпретатору питона. Если он его понимает и выполняет на стороне клиента, соответственно так-же может сделать и человек. Просто распаковать exe, убрать всякие конструкции мешающие получить норм код и всё
@waaagh1769
@waaagh1769 Жыл бұрын
Нет, если ты скомпилируешь через nuitka
@drevnii7341
@drevnii7341 8 ай бұрын
У меня всего 2000 строк кода в main файле, 1500 стоок в самописной библиотеке, и еще 2 файла со всеми переменными и с иницилиализацией всех функций. (С++) единственное что спасает что у меня очень много комминтариев с описанием каждой функции
@voyageurvoyageur
@voyageurvoyageur 2 жыл бұрын
А зачем видео геймплея на фоне?
@zproger
@zproger 2 жыл бұрын
Я думаю всем уже надоели эти нарезки с хакерами и т.д
@voyageurvoyageur
@voyageurvoyageur 2 жыл бұрын
И вместо хакеров вы предпочли этот мусор (извините)? И нарезки с хакерами тоже есть Может имеет смысл накидать презентацию со скринами по теме?
@zproger
@zproger 2 жыл бұрын
Пробовал делать презентацию, у людей плохое удержание и им не нравится такое, а когда ставишь игру на фон оно возрастает в 5 раз и смотреть становится интересней. Я эту информацию беру из своей статистики
@Азвей
@Азвей 2 жыл бұрын
@@zproger Хакеры это где на 1:02 внизу бар ютуба у чела вылез? он чтоль хакер?)))))
@zproger
@zproger 2 жыл бұрын
Да xDD
@ithelper9
@ithelper9 2 жыл бұрын
Ты же вроде об этом говорил в другом видео..
@zproger
@zproger 2 жыл бұрын
Может быть, правда не так подробно, и видео было вообще не на эту тему
@ZA_CCCP
@ZA_CCCP 2 жыл бұрын
Пили ролик про библиотеку. Всем понравится.
@zproger
@zproger 2 жыл бұрын
Учту, спасибо
@ТимонЯблоков
@ТимонЯблоков 2 жыл бұрын
Что за прикольная игра на фоне?
@nedoff8231
@nedoff8231 2 жыл бұрын
Tails of Iron
@sir_damnkrat
@sir_damnkrat 2 жыл бұрын
Да было дело с кодом в 1 файл, вот бы мне сказали раньше
@zproger
@zproger 2 жыл бұрын
зато опыт =)
@victorvictorov699
@victorvictorov699 Жыл бұрын
Более бессмысленной подачи материала как порхание экранов по живому коду программы приличной сложности придумать трудно. Но более забавны здесь одобряющие комики в каментах, делающие вид что полностью влёт въехали.
@agimgal
@agimgal 2 жыл бұрын
Ох, у питонистов действительно есть такая проблема?)
@zproger
@zproger 2 жыл бұрын
Да =)
@tdtftgeffe
@tdtftgeffe 2 жыл бұрын
годно
@zproger
@zproger 2 жыл бұрын
Благодарю!
@sir_damnkrat
@sir_damnkrat 2 жыл бұрын
Какие 5 страниц, ты в word пишешь код?)
@zproger
@zproger 2 жыл бұрын
ахаха, ну да, а где же ещё)
@mikenerashid1200
@mikenerashid1200 Жыл бұрын
@@zproger а надо в блокноте
@YUY12305
@YUY12305 2 жыл бұрын
пфф, написал прогу на 22 файла в каждом по 1-3к строк:)))
@forixsins
@forixsins Жыл бұрын
Такая же тема, как и с чистым кодом - субъективщина. Но многофайловые проекты в первую очередь придумали для работы в команде
@marcb5832
@marcb5832 2 жыл бұрын
Аргумент типа "вам будет проще искать что-то в разных файлах" вообще не работает. Кому-то проще, а кому-то совсем наоборот. И при чем тут "повторное использование функций" -- это вообще никак не связано. Это базовые вещи, которые реализуемы хоть в одном файле, хоть в нескольких файлах.
@gnidos
@gnidos Жыл бұрын
"создание правильной архитектуры" и чел показывает код состоящий анти-паттернов
@gaben_aTan
@gaben_aTan Жыл бұрын
Я столкнулся с такой проблемой. Код на 1500 строк. Надо разбивать. 😊
@DeadLazy34
@DeadLazy34 Жыл бұрын
Все в одном не работает , будет работать один блок кода)
@ivanl7786
@ivanl7786 2 жыл бұрын
Если у вас в обучающем видео аналогичный стиль объяснения, то он как минимум не может быть платным. Говорить и при этом показывать не схемы и примеры, а мультик…. Когда начали показывать своё решение, было ощущение, что видео записываете для себя. Туда-сюда скролом прыгаете. Кто так делает? Тема не раскрыта, досматривать невозможно. Дизлайк.
@zproger
@zproger 2 жыл бұрын
Я думаю вы лучше меня знаете как делать контент. Сделайте свои видео и покажите как правильно, я буду у вас учиться.
@ivanl7786
@ivanl7786 2 жыл бұрын
@@zproger, если я что-то делаю для кого-то, то вкладываюсь в мельчайшие детали. Если я решу заняться обучением - обязательно пришлю пример. На текущий момент обратная связь такова: 1. Выписать на бумагу уровень знаний потребителя вашего контента. 2. Выписать на бумагу кто готов реально заплатить и за какой контент (я лично готов и плачу за качественный контент и обучение). На мой взгляд, платить готовы начинающие, мидл платят за другой контент (но Вам виднее). 3. Один слайд со схемой = 60 сек текста голосом. Если больше, то потребитель должен сам представлять то, что Вы говорите. Если я должен структурировать сам - то платить я не буду. Если автор говорит от себя минутами и ничего не показывает или показывает документацию - материал не проработан. 4. Если в 1-м пункте Вы описали не мидл спеца, то в качестве примера лучше приводить код, который не нужно скролить и желательно объяснить каждый пункт кода. Тема простая, а Вы про какие-то сервера рассказываете. На KZbin не так просто найти проработанные материалы и не только по Python. Когда я нашел то, что мне понравилось - стал спонсором на несколько месяцев. Я даже не смотрел особо, но я хотел поддержать автора.
@PyCoder-pg5em
@PyCoder-pg5em 11 ай бұрын
​@@ivanl7786, согласен.
@PyCoder-pg5em
@PyCoder-pg5em 11 ай бұрын
​@@ivanl7786, мощно ты его победил)))
@dtyurbeev2354
@dtyurbeev2354 2 жыл бұрын
Я уже писал весь код в одном файле. Жуть несусветная , особенно когда пытаешься найти нужные блоки)
@КириллЧе-я5ы
@КириллЧе-я5ы Жыл бұрын
Плодить сущности по поведению - такое себе имхо… не проще сразу систему декомпозить более менее вменяемо, чтоб потом проблем меньше было?.. или это из меня Си-подобные языки вылазят🥴?..
@ShadowStormlq5mwdasd
@ShadowStormlq5mwdasd Жыл бұрын
Важный момент 14:42
@chypatan592
@chypatan592 2 жыл бұрын
Прогер, инфа из твоих видео очень полезна и интересна. Последнее время подсел на твои видосы. НО! Можно, пожалуйста, не включать на заднем фоне вот эти вот все нарезки из игр? Они реально сильно отвлекают (и раздражают, меня по крайней мере). Такие "качели": игра - кодинг - игра - кодинг и т.д. не способствуют лучшему восприятию информации. Лучше поставь статичную картинку с кодом какой-нибудь программы, или ещё лучше, фото рабочего места с кодом на экране, чем эти нарезки геймплея.
@AdamantGames
@AdamantGames 2 жыл бұрын
🙃
@zproger
@zproger 2 жыл бұрын
=)
@hinomuratomisaburo4901
@hinomuratomisaburo4901 2 жыл бұрын
Да лучше создать файл со всеми функциями, зачем такой гемор... У тебя будет 20 функций логик и столько же файлов, смысл 🥴 создай единый файл со всеми функциями с подразбитыми по классам и все... Плодить десятки файлов тож нет смысла, из одной крайности в другую
@hin200
@hin200 2 жыл бұрын
Весь интерес в том что когда у вас большой проект то если у ваа все намазано огромным слоем всяких функций то расширять его станет довольно сложно по-крайней мере искать их
@zombich
@zombich Жыл бұрын
Я один почти ничего не понимаю?
@NotNoobGG
@NotNoobGG 2 жыл бұрын
т
@Eseky
@Eseky Жыл бұрын
Посмотрел видео, понял что тупой и не разобраться)
@zproger
@zproger Жыл бұрын
Стоит посмотреть еще раз, но чуть позже
@ВадимШимон
@ВадимШимон Жыл бұрын
Если будете смотреть, то с 6й минуты - там вода, далее не смотрел - устал
Логирование: оставь print позади
38:01
Python Russian
Рет қаралды 26 М.
Don’t Choose The Wrong Box 😱
00:41
Topper Guild
Рет қаралды 62 МЛН
Хочу стать Junior Python
16:29
Y_LAB University
Рет қаралды 12 М.
Пакеты в Python. Файл __init__, переменная __all__
11:48
Основы Asyncio
53:25
Python Russian
Рет қаралды 28 М.
Как защитить свой код на Python от ВЗЛОМА
9:59
Изучаем мир ИТ / Олег Шпагин / Программирование
Рет қаралды 21 М.