Это копия, сохраненная 6 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2213498 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
while True:
pass
очень плохо процессор грузит.
Мультипроцесинг или мультитрединг можно юзать? Если да, то в мультипроцесинг вызови то же самое, но вместо пасс напиши а+=1. А если нет, то в разных тредах вызывай hashlib бесконечно прося посчитать какой-то хэш. Из-за того, что подсчёт хэша освобождает gil это cpu bound операция позволит сразу нескольким посикс тредам занимать процессор одновременно.
Вычисляй определитель для огромной матрицы через матричные операции
>Держи в курсе плс, операции сложения почти не грузят проц. У чела забьется оперативка, а проц нагрузится на 10%
В мультипроцессинге даже создание процесса грузит
На сотую долю процента грузит проц и оперативку на пару десятков мегабайт. Угадай что закончится быстрее
Питон неспособен загрузить проц
мимо рубист
Естественно говорю за джангу, про мл вопросов нет.
а всякие игры и мобильные приложения на питоне никому не нужны
Да, настолько легче, что все больше наркоманов переезжает на Юнити для этих целей.
А в чём профит? Там же нет сложной логики или чего-то того, что нельзя уместить в конструктор.
Так не только джангой живем же, бизнес логику на питоне спокойно делают. У нас микросервисы сделаны. У райфайзенбанка тоже есть.
https://www.youtube.com/watch?v=4zjj1aHJoko
А хз. Люди просто хотят новеллы с характеристиками, картами города, внутренними интерфейсами вроде телефона и прочее.
Вообще люди некоторые пробуют в Унрил и уже там делают своего рода порно-гта. Так что но-код генераторы будут постоянно отставать пока нейросети не накроют вообще всех
while True:
____pass
грузин на 100%, но только одно ядро, конечно.
Если надо все ядра грузить, то надо на много процессов раскидывать.
То ли дело Руби...
Ты сам проверь. Это всё зависит от честности скедулера. Заспавнив кучу прецессов один из них наверняка займёт процессорное время. а там не важно что внутри гоняется. Главное чтобы cpu bound таска выполнялась. например икремент
Займет твердо и четко, у тебя контекст будет без остановки меняться, все будет пердеть и лагать, но при этом проц будет загружен на полпроцента.
Переключения контекста это и есть cpu bound задачА, но в режиме ядра. Да в таск менеджере не увидешь, что какой-то процесс занял проц, но проц будет занят т.к. иммено он тут будет изким местом. Иначе из-за чего у тебя система нагрузиться до придела при свободных проце и памяти как ты утверждаешь?
Давненько уже не делал чего-то в этом направлении, но тем не менее.
Skills: python, django, rest api, html, css, js(слегка), Linux, selenium
tg https://privnote.com/CibP6PFc#NqpMEH4JH
Это не кпу баунд задача, точнее, частично кпу, но буквально на пол шишечки. Я держу в курсе, но разные части процессора делают разные вещи. Ты нагрузишь действительно сильно один небольшой кусок проца и оперативную память.
Я думал range это генератор. Когда на генератор юзаем next он след значение отдает. А тут чтоб это работало его надо в iter обернуть, с хуяШо це таке?
Я думал range это генератор. Когда на генератор юзаем next он след значение отдает. А тут чтоб это работало его надо в iter обернуть, с хуя ли? ли?
теперь ты узнал что range - не итератор.
Ну и что с того? Незначительная хуйня.
Извини, не весь питон создан математиками и не обязан быть идеальным.
Да. И как ты себе иное представляешь, как один event loop будет чередовать переключение задач с другим, в рамках одного треда?
Вообще в норме в принципе должен быть только один event loop вообще. Если тебе надо несколько, свой в каждом треде, ты скорее всего что-то делаешь сильно не так.
Это объект, который реализует протокол итератора, поэтому его можно итерировать. Кроме того, у него есть другие фичи вроде слайсов или проверок на вхождение.
Работу не работу, но может какое-то collaboration или startup
# All done. Time taken 45.307 , Workers 1
# All done. Time taken 32.062 , Workers 2
# All done. Time taken 27.553 , Workers 3
# All done. Time taken 38.718 , Workers 4
# All done. Time taken 47.477 , Workers 5
# All done. Time taken 45.283 , Workers 9
# All done. Time taken 45.413 , Workers 12
# All done. Time taken 43.496 , Workers 12
# All done. Time taken 45.294 , Workers 12
# All done. Time taken 45.059 , Workers None
Хм, я делал как-то подобное с Cython - функции на Си импортировал в питон-скрипте, но никаких заглушок и py-файлов не повлялось, толь ко с-файлы и so-файл через который шла интеграция. Если надо то заглушку пишу я сам что ле? Оно конфликтовать не будет ни с чем?
Не знаю, я этим не занимался. Вероятно, оно сделано чтобы добавить докстринги и т.п.
А, ты тот самый чмошка, который начал сракой вилять и считать хеш корутины, высирая варнинги, ошибки памяти, носамостоятельно управлять работой корутины?
Есть строка
2021-10-28T15:32:06.289609+07:00
пытаюсь скормить ее datetime.strptime но меня шлет в нахуй. Если убрать +07:00 то парситься через
'%Y-%m-%dT%H:%M:%S.%f'
Что делать с таймзоной хз
Ставлю sentry 9.1.2 через pip в virtualenv - всё ок
Ставлю тот же sentry без virtualenv - падает при установке зависимости cryptography>=1.2 с SyntaxError: invalid syntax
File "/tmp/pip-build-6eVV_0/cryptography/setup.py", line 84
print(f" Python: {'.'.join(str(v) for v in sys.version_info[:3])}")
Питон второй. Если ставить третьим, то тоже херня получается, но другая.
Мне в принципе плевать на каком питоне оно будет, главное чтобы работало. На втором в virtualenv всё ок. Сервис удалось настроить и запустить.
Хочу избавиться от virtualenv, завести в системе отдельного юзера и поставить ему глобально. Что этому pip не хватает?
> Питон второй
Месье знает толк в некрофилии
> На втором в virtualenv всё ок
В виртуальном окружении где точно все ставится пишешь:
pip freeze > requirements.txt
Потом на окружении на котором хочешь воспроизвести пишешь:
pip install -r requirements.txt
Питон должен быть той же версии. Смотришь что пишет. Если опять хуйня, то с логом сюда.
> pip freeze
Ага, фриз, забыл про него. Немного помогло, по крайней мере cryptography прошел.
Теперь падает на таком
error in httplib2 setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers
$ python --version
Python 2.7.5
$ python -m pip --version
pip 9.0.1 from /home/sentry/.local/lib/python2.7/site-packages (python 2.7)
Полностью совпадает с тем, что в virtualenv
Ладно, хуй с ним, на сегодня с меня хватит.
>>26194
Мне просто sentry развернуть надо. Свежая версия у него через докер ставятся, но капец прожорливая. Решил вот покрасноглазить и сэкономить на оперативе.
У тебя max_workers один. Поставь больше. Плюс пул не гарантирует, что всегда столько процессов будет создано вызывай его через map с заданыым chunksize равным размеру твоего пула. хэшфункция простая и преобразование строк в памяти не грузит процессор. Используй hashlib.pbkdf2_hmac с большим количество итераций
> а всякие игры ... на питоне никому не нужны
Скажи это EA, у которых чуть не вся логика симсов на пистоне. Не графика, конечно, но логика -- да.
> мобильные приложения на питоне никому не нужны
Я про них слышал, но не видел пока ни разу. Дайте пример, что ли?
Впрочем, я планирую поизучать Swift как-нибудь, для пэт-проектов будет полезно.
Ты в курсе, что ThreadPoolExecutor создаёт треды, а не процессы? Уж не знаю, что там hashlib делает в плане отпускания гила, но у меня результаты такие (4c/8t):
ThreadPoolExecutor:
All done. Time taken 7.156 , Workers 1
All done. Time taken 6.141 , Workers 2
All done. Time taken 8.997 , Workers 4
All done. Time taken 8.771 , Workers 6
All done. Time taken 8.813 , Workers 7
All done. Time taken 9.821 , Workers 8
ProcessPoolExecutor:
All done. Time taken 7.327 , Workers 1
All done. Time taken 4.464 , Workers 2
All done. Time taken 3.099 , Workers 4
All done. Time taken 2.48 , Workers 6
All done. Time taken 2.573 , Workers 7
All done. Time taken 2.894 , Workers 8
А вообще есть профиты от какой-то асинхронности движков? И вообще что это значит по факту?
Ну то есть:
я могу взять какой-нибудь ${FRAMEWORK_NAME} и в его функциях в asynk/await, скажем, обращаться к БД. Это же возможно?
А, если возможно, то значит, что ${FRAMEWORK_NAME} может работать асинхронно, так? То есть ${FRAMEWORK_NAME} асинхронный?
Тогда чем отличиется то, что называют синхронными фреймворками от того, что называется асинхронными фреймворками?
В целом, как я понимаю, любой web-framework многопоточный (по крайней мере умеет отвечать на все входящие вопросы даже если они пришли одновременно, запуская обработчики параллельно). Но тут я, возможно, запутался в терминах или в том, кто что делает.
И внутри любого фреймворка исполняется обычный Python-код, который может быть асинхронным.
Ещё по-хорошему асинхронным может (и по-хорошему должен быть) web-сервер (apache/nginx/gunicorn), в том числе чтобы по канонам HTTP2 отдать пользователю все ресурсы одной пачкой, но к фреймворку это прямого отношения не имеет.
Но тогда где граница между синхронными и асинхронными движками?
Возможно (и даже крайне вероятно), я что-то недопонял и всё перепутал. Прошу анона пояснить тогда, в чём цимус, где и на каком этапе возникает асинхронность и как используется.
>${FRAMEWORK_NAME}
Ты тредом ошибся, пхп тред ниже
>Тогда чем отличиется то, что называют синхронными фреймворками от того, что называется асинхронными фреймворками?
Тем, что начинка переключает контекст при вызове.
>любой web-framework многопоточный
Ты долбаеб? Зачем тебе многопоточность в вебе?
>Ещё по-хорошему асинхронным может (и по-хорошему должен быть) web-сервер
Ты долбаеб? На пальцах расскажу что делает веб сервер. Принимает запрос, принимает параметры и передает твоему фреймворк. Какая асинхронщита даже в теории тут может быть?
>чтобы по канонам HTTP2 отдать пользователю все ресурсы одной пачкой
А юзер сидит и лоадер смотрит?
>Но тогда где граница между синхронными и асинхронными движками?
Иди нахуй, тупая макака.
>пхп тред ниже
Синтаксис из баша. Это один из моих "родных" языков, которыми я пользовался и пользуюсь всё время, сколько работаю
>начинка переключает контекст при вызове
А подробнее можно? Ты любую функцию в коде можешь вызвать асинхронно.
>Зачем тебе многопоточность в вебе?
Чтобы, например, не ждать, пока БД или API вернёт результаты, а заниматься полезным делом. Недавно ковырял баг, связанный с таким ожиданием.
А если она нахуй не не нужна, то хули даже в предыдущем треде рекомендовали вместо синхронного фласка асинхронный aiohttp?
>Какая асинхронщита даже в теории тут может быть?
М-м... Многопоточность тогда? Давай подробности.
>А юзер сидит и лоадер смотрит?
А юзер заходит на сайт и понимает, что он грузился либо 0,3с, либо 1,3с. И ему не суть важно, что index.html прилетел за 0,1с на самом деле.
>Иди нахуй, тупая макака.
Сам иди, если нихуя не знаешь.
>Ты долбаеб? На пальцах расскажу что делает веб сервер. Принимает запрос, принимает параметры и передает твоему фреймворк. Какая асинхронщита даже в теории тут может быть?
А ты сам не долбоёб, случайно?
>Иди нахуй, тупая макака.
Сам иди, быдло ёбаное!
мимо
> Тем, что начинка переключает контекст при вызове.
Ты не поверишь что происходит в многопоточности
> Ты долбаеб? Зачем тебе многопоточность в вебе?
Очередная макака, которая считает что RED ASYNC GOES FASTA. В зависимости от задач может быть быстрее и асинхронное, и многопоточное приложение
> Ты долбаеб? На пальцах расскажу что делает веб сервер. Принимает запрос, принимает параметры и передает твоему фреймворк. Какая асинхронщита даже в теории тут может быть?
Долбаеб тут только ты, загугли что такое ASGI и WSGI протоколы для веб-серверов
> Иди нахуй, тупая макака.
Макака тут только ты, тот чел хотя бы пытается разобраться
>>26237
> А вообще есть профиты от какой-то асинхронности движков? И вообще что это значит по факту?
Это значит, что у тебя есть бесконечный цикл, который переключается между выполнениями разных тасок. Переключение происходит в тех местах, где ты пишешь await. Советую глянуть вот этот плейлист, тут довольно подробно разобрано все
https://www.youtube.com/watch?v=ZGfv_yRLBiY&list=PLlWXhlUMyooawilqK4lPXRvxtbYiw34S8
> я могу взять какой-нибудь ${FRAMEWORK_NAME} и в его функциях в asynk/await, скажем, обращаться к БД. Это же возможно?
Да, возможно
> А, если возможно, то значит, что ${FRAMEWORK_NAME} может работать асинхронно, так?
Не совсем. Суть асинхронных фреймворков в том, что они на каждый запрос вместо потока создают таску в эвент лупе. Если фреймворк не асинхронный и не создает таску на подключение, то смысла что-то в луп закидывать нету, так как у тебя будет блокировка происходить в эти моменты
> Тогда чем отличиется то, что называют синхронными фреймворками от того, что называется асинхронными фреймворками?
Я выше написал уже, синхронный создает по потоку на клиента, асинхронный по таске
> любой web-framework многопоточный
Нет, асинхронный это асинхронный. Их только процессами(aka worker) множат
А агрессивную макаку не слушай, он курсы гикбрейнса по созданию ботов прошел и теперь считает, что стал дохуя экспертом. Пиздец, каждый день таких под десяток приходит с хуйней уровня пикрила
> Тем, что начинка переключает контекст при вызове.
Ты не поверишь что происходит в многопоточности
> Ты долбаеб? Зачем тебе многопоточность в вебе?
Очередная макака, которая считает что RED ASYNC GOES FASTA. В зависимости от задач может быть быстрее и асинхронное, и многопоточное приложение
> Ты долбаеб? На пальцах расскажу что делает веб сервер. Принимает запрос, принимает параметры и передает твоему фреймворк. Какая асинхронщита даже в теории тут может быть?
Долбаеб тут только ты, загугли что такое ASGI и WSGI протоколы для веб-серверов
> Иди нахуй, тупая макака.
Макака тут только ты, тот чел хотя бы пытается разобраться
>>26237
> А вообще есть профиты от какой-то асинхронности движков? И вообще что это значит по факту?
Это значит, что у тебя есть бесконечный цикл, который переключается между выполнениями разных тасок. Переключение происходит в тех местах, где ты пишешь await. Советую глянуть вот этот плейлист, тут довольно подробно разобрано все
https://www.youtube.com/watch?v=ZGfv_yRLBiY&list=PLlWXhlUMyooawilqK4lPXRvxtbYiw34S8
> я могу взять какой-нибудь ${FRAMEWORK_NAME} и в его функциях в asynk/await, скажем, обращаться к БД. Это же возможно?
Да, возможно
> А, если возможно, то значит, что ${FRAMEWORK_NAME} может работать асинхронно, так?
Не совсем. Суть асинхронных фреймворков в том, что они на каждый запрос вместо потока создают таску в эвент лупе. Если фреймворк не асинхронный и не создает таску на подключение, то смысла что-то в луп закидывать нету, так как у тебя будет блокировка происходить в эти моменты
> Тогда чем отличиется то, что называют синхронными фреймворками от того, что называется асинхронными фреймворками?
Я выше написал уже, синхронный создает по потоку на клиента, асинхронный по таске
> любой web-framework многопоточный
Нет, асинхронный это асинхронный. Их только процессами(aka worker) множат
А агрессивную макаку не слушай, он курсы гикбрейнса по созданию ботов прошел и теперь считает, что стал дохуя экспертом. Пиздец, каждый день таких под десяток приходит с хуйней уровня пикрила
> Чтобы, например, не ждать, пока БД или API вернёт результаты, а заниматься полезным делом.
Ну так и многопоток занимается полезным делом, пока ждет ответ
> А если она нахуй не не нужна, то хули даже в предыдущем треде рекомендовали вместо синхронного фласка асинхронный aiohttp?
Это долбаебы, которые считают необходимым повсюду пихать асинхронщину. Обычно, они даже представления не имеют как эта асинхронщина работает, просто что-то уровня религии
> Пиздец, каждый день таких под десяток приходит с хуйней уровня пикрила
а какие камни в пикриле? мимо-нуб
> Page not found
Действительно, что же пошло не так? кто-то обосрался с роутингом
>>26353
> а какие камни в пикриле? мимо-нуб
Начнём с того, что это абсолютно дебильный декоратор, который нихуя не делает и является магнитом для багов, крашей и не очевидного поведения. Во-вторых, банально синтаксис некорректный. Тайпинги через or не работают
Вот у меня есть список задач - под каждую я создаю свою ветку, что-то там делаю, тестирую на стейджовом стенде, и если все ок, то коммичусь, делаю пулл реквест и мержу изменения в мастер. Затем беру следующую задачу, выделяю ветку и т.д.
А если я начал делать одну задачу, сделал уже какие-то изменения, и мне внезапно надо переключиться на другую задачу - как мне в этом случае поступать с уже сделанными изменениями в текущей ветке? Я пока что придумал только так:
1. застешить изменения
2. выделить и чекаутнуться на новую ветку
3. сделать там срочную задачу
4. закоммитить изменения
5. открыть ПР и замержиться
6. затем вернуться на первую ветку
7. анстешнуть изменения
(7.1.) опционально фетчнуться и пулльнуть изменения с мастера если надо
8. продолжать делать изначальный таск
Насколько это правильно?
Странно что ты не вспомнил про EVE online где тоже вся логика на питоне.
А в чём проблема вместо стеша просто закоммитить изменения, вместо стеша? Можно потом либо commit --amend делать, когда дальше обновишь задачу, либо их потом просто слить в один перед пулл реквестом — https://stackoverflow.com/questions/35703556/what-does-it-mean-to-squash-commits-in-git
А ты в главной апе приложения(которое создаётся после startproject) настроил роутинг в свое приложение djpoligon? А роут дальше пробрасываешь?
>>26384
Все правильно, только я сразу коммит делаю и забиваю хуй, так как наканецта ввели сквеш коммитов и из можно нормально объединить. И если попросят потом передать задачу другому разрабу, то без задней мысли делаешь чекаут пуш ориджин, чекаут обратно и продолжаешь хуярить в другой ветке. Ну и я советую максимально часто пушить изменения, чтобы иметь возможность продолжить работу из другого места в случае чего. Несколько раз так обсирался уже и решил что ну его нахуй. Сквешить коммиты можно и в гитхабе
Так ^$ это же пустой путь, а ты по /index зайти пытаешься. Разве такой url не будут работать лишь для www.website.com/, т.е. без /index? Джангой ни разу не пользовался, могу ошибатся.
> А вообще есть профиты от какой-то асинхронности движков?
Каких таких движков? ты про игровые или про автомобильные?
> я могу взять какой-нибудь ${FRAMEWORK_NAME} и в его функциях в asynk/await, скажем, обращаться к БД. Это же возможно?
Да, это возможно.
> А, если возможно, то значит, что ${FRAMEWORK_NAME} может работать асинхронно, так?
То как это реализовано под капотом никто не знает. Может он там процессы плодит. Но ты можешь предположить. что он асинхронный.
> В целом, как я понимаю, любой web-framework многопоточный
Многопоточность ни есть асинхронность.
> Ещё по-хорошему асинхронным может (и по-хорошему должен быть) web-сервер (apache/nginx/gunicorn)
Apache многопоточный. он для каждого процесса создает отдельный процесс. 100 запросов значит удет крутиться 100 процессов. nginx как раз асинхронный. Один процесс обрабатывает множество соединений.
> числе чтобы по канонам HTTP2 отдать пользователю все ресурсы одной пачкой
Нет там таких канонов.
Тебе надо вырыть яму и наполнить ее водой из ведра. Веро наполняется из крана с определенной скоростью.
Ты нанимаешь для этого:
Однопоточный таджик - сначала выроет яму. потом будет носить ведра.
Многопоточный грузовик таджиков - будут по очереди носить единственное ведро туда сюда, несколько будут копать яму.
Асинхронный таджик - Поставит ведро под кран и пока оно наполняется копает яму. Как ведро наполнилось несет его и выливает в яму, ставит обратно под кран и продолжает копать поушы в воде
>>26398
А это норм история с коммитом сырых изменений? Я просто хз, впервые работаю над проектом с командой, до этого таких ситуаций не возникало. Я думал, что коммит - это условно говоря ты подписываешься, что вот эта порция кода удовлетворяет неким минимально требованиям и она принципиально работоспособна, а тут я по сути могу коммитнуть наполовину написанную функцию - насколько это хорошая/плохая практика?
> Чтобы, например, не ждать, пока БД или API вернёт результаты, а заниматься полезным делом.
Нюанс в том, что без данных из базы данных ты никаким делом дальше заниматься не можешь. Веб сервер максимум что может, так это обработать другой запрос. Если он есть. А если нет, то похуй.
> А если она нахуй не не нужна, то хули даже в предыдущем треде рекомендовали вместо синхронного фласка асинхронный aiohttp?
Ты забыл куда ты пришел? Я постоянно встречаю таких людей котоыре текут от асинхронщины, от программирования в VIM, от чистого кода и процей моднйо хуйни про которую говорят что оно тру. Но если распросить этих мамкиных сеньиоров, то окажется они не вполне понимают как работает питон принципе и компьютер в частности.
Запуск асинхронной таски в процессе реализован избыточным кодом. Если в работе твоего процесса нет длительных ожиданий, то этот дополнительный код наоборот замедлит работу. Если же ты ждешь из базы какой нибудь отчет по 5 минут, то асинхронность тебе даст заметный бкст, т.к. время выполнения избыточного кода меньше времени ожидания данных и вот эта разница и есть твой прирост. Но опять же, только если тебе есть чем это время занять.
> Ты документацию открывал вообще?
В документации черным по белому напсиано, что %Z это строковое представление таймзоны, а %z это +7000 без двоеточия.
Однако, если эту строку ввести в консоль браузера, то Date.parse ее прекрасно преобразует. Хочу такое же решение. email.utils не помогают.
> но отдельного треда вроде нет
Вот есть что то похожее.
https://2ch.hk/pr/res/2155312.html (М)
Алгоритм жизнеспособен. За исключением того, что вместо стеша лучше коммитить. Похуй что у тебя там рабочее или нет. Один хуй потом найдутся баги и придется делать правки. Да и шанс проебать код меньше.
> (7.1.) опционально фетчнуться и пулльнуть изменения с мастера если надо
Каждое утро начинай с ребейза на мастер. Если задача долгая, то к моменту ее завершения может обнаружить пару десятков конфликтов при мерже.
А вообще лить сразу в мастер это не особо норм. Если вас раблтает больше одного человека, то лучше всю неделю лейте в dev а в пятницу после тестов уже дев в мастер.
Я затестил
ValueError: time data '2021-10-28T15:32:06.289609+07:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Хуй знает почему у тебя работает.
А у тебя питон какой версии? И ты один-в-один код запускаешь? Если нет, то кидай сюда
Ебать, обновись хотя бы на 3.9, зачем на древнем говне сидеть? Там под 3.6 может быть документация другая, этой версии около 5 лет уже
>А это норм история с коммитом сырых изменений?
Тебе не обязательно этот коммит куда-то пушить вообще, у тебя целая ветка может быть локальной для твоего компьютера. Так что и те ветки, что ты создаёшь для своих задач, никто другой не видит даже. Что хочешь там, то и твори.
> а тут я по сути могу коммитнуть наполовину написанную функцию - насколько это хорошая/плохая практика?
В коммите ты хотя бы можешь что-то подписать (что сделано, а что ещё нет, например), и потом продолжить через неделю, когда всё забудешь. А сделав стеш, тебе потом ещё разгребать его, в поисках нужной тебе записи.
Ничего плохого в том, что во временном коммите есть недоделанный код, если этот коммит не мерджится никуда, разумеется, нет.
Это убунта 18,04 Там нельзя обновится до другйо версии. Если только саму убунту обновить или качать из неофициальных репозиториев. А код этот надо выполнять на сервере, где точно такая же убунта. И мне чет нихуя не хочется обновлять настроенный сервер. Ведь если что то идет по пизде, обычно виноват тот кто крайний на сервере что то делал.
К томуже это все лечится просто удалением двоеточия в таймзоне. Костыль конечно, но это более простое решение.
Попробуй открыть для себя venv, можешь там хоть 3.10 поставить. Именно для таких целей он и был сделан, а на бубунте стоит древнее говно мамонта, так как там все баги пофиксилиДА НИХУЯ, dealloc None В 3.10 ДО СИХ ПОР ХУЯЧИТ
А можешь поподробнее про ребейз на мастер рассказать? Мне старшие коллеги говорили, что просто после выделения ветки с мастера (на всякий случай) и перед коммитом делай фетч и пулл и все будет ок.
У нас еще есть такая бага - я доделываю какую-то фичу ветке TASK-1, коммичу и открываю пулл реквест, сеньор относительно быстро его ревьют и мержит. Далее я беру следующую таску, выделяю под нее ветку TASK-2 с удаленного мастера, и все мои изменения, сделанные в ветке TASK-1 пропадают вообще из пайчарма. Сеньор говорит, у них на прошлой работе такая же хуйня была, и однозначно починить они не смогли, то ли там у гита какая-то задержка в синхронизации, то ли кеш, то ли хуй его знает. Поэтому сразу после выделения ветки с мастера я делаю гит фетч & гит пулл с мастера - и изменения ветки TASK-1 появляются обратно. Хуй знает короче, магия.
Насчет литья сразу в мастер - я мб не так выразился. Я работаю в ветке, коммичу свои изменения и открываю пулл реквест - его аппрувят и только тогда мержат в мастер. Литье по пятницам у нас особо не сработает, т.к. мы работаем по канбану - приняли задачу, сделали, залили.
>>26437
>>26438
Выглядит сложно, у нас используется "Гитхаб флоу" (пикрил), никаких фича, девелоп и хотфиксов нет, только мастер, в который мержатся пулл-реквесты.
>>26467
Очень подробно объяснил, спасибо!
> А можешь поподробнее про ребейз на мастер рассказать?
Приходишь на работу, открываешь свою ветку, над которой вчера работал, и пишешь
git rebase master
Если кто то что то вливал в мастер, то эти изменения подтянуться. твоя ветка как бы отделилась от актуального мастера.
Могут возникнуть конфликты, если кто то правил файлы над которыми ты работаешь в своей ветке. Если часто ребейзиться на актуальынй мастер, то конфликты можно решать понемногу, а не все разом. Это актуально для больших проектов над которыми рабоатет хоят бы 3 человека.
> Далее я беру следующую таску, выделяю под нее ветку TASK-2 с удаленного мастера, и все мои изменения, сделанные в ветке TASK-1 пропадают вообще из пайчарма
PyCharm ничего от себя не добавляет. Он дерагает системный гит. Если нет изменений. Значит вы что то сделали не так.
По идее после того, как ты влил свою ветку и ее замерили, ты должен чекаутнуться на мастер и сделать пулл. Мастер станет такой же как в гите.
Фетч обычно нахуй ненужен. Он тянет просто список изменений, но не сами изменения. Что бы гит был в курсе, что там такие то ветки создались и такие то коммиты. Изменения накатывает именно пулл.
ХЗ что там за баг, что про него аж несколкьо человек знает. Может у вас на офис стоит кеширующая прокся и она то и не дает слить актуальные данные.
> git rebase master
А чем этот гит ребейз отличается от гит фетч + гит пулл мастер? Ну пускай даже без фетча, раз ты говоришь, что он не нужен.
Нахуй ты че-то высираешь? Ты ж даже на уровень джуна не тянешь
>Долбаеб тут только ты, загугли что такое ASGI и WSGI протоколы для веб-серверов
>> Иди нахуй, тупая макака.
>Макака тут только ты, тот чел хотя бы пытается разобраться
Вот двачую этого.
мимо
>>26413
А можно сначала проверить, быстро ли получится дать ответ или нет (например, проверить на 304/404 и отдать их, если что, ну может статические файлы короткие типа редиректов на "у вас кукисы не включены"), а если не получится, то вот только тогда создать отдельный асинхронный таск? Ну то есть сделать один или два процесса, скажем, только для быстрых запросов, которые обрабатываются моментально, а все остальные запросы обрабатывать в остальных процессах?
Или так не делают?
Не понял что ты хочешь сделать. Ты принял запрос, что-то там не так - отдаешь ошибку без всяких асинк тасок и дело с концом. Нету ошибок - делается какая-то работа, в которой может быть асинхронность (а может и не быть, зависит только от написанного тобой). Если ты про запросы в бд пытаешься определить какой быстрый, а какой достаточно медленный, чтоб его в эвейт пихнуть, то тут в целом два варика. Либо ты пишешь на асинк фрейме и тебе строго похуй быстрый он там или нет и ты всегда пихаешь такие вещи в эвейт (иначе будет блокировка лупа, пусть даже на мгновение с каким-то ультрабыстрым запросом, все равно это плохо в целом скажется), либо если ты в синхронном фрейме работаешь и:
1. тебе нехуй делать до завершения этого запроса - делаешь синхронно
2. тебе можно дохуища всего сделать до завершения запроса - стартуешь ивент луп и делаешь запрос асинхронно, пока он делается совершаешь какую-то грязь у себя.
но вообще последний варик это нечто ебнутое и редкое.
>Ну и я советую максимально часто пушить изменения, чтобы иметь возможность продолжить работу из другого места в случае чего. Несколько раз так обсирался уже и решил что ну его нахуй.
Вот здесь я не догоняю. Из какого другого места? В смысле с другого компьютера, что ли? А как это? В смысле, почему вдруг, зачем?
Или ты о том, что кто-то запушит, и в итоге мастер перестанет мержиться с твоей веткой, а если ты её первым запушишь, то конфликты мерджа придётся разргебать тому, кто не запушил свою?
>>26425
>Каждое утро начинай с ребейза на мастер. Если задача долгая, то к моменту ее завершения может обнаружить пару десятков конфликтов при мерже.
А почему не каждый час, скажем? Настроить ребейз по кулдауну?
А если в dev лить, то тоже rebase каждое утро делать?
>>26476
Тут как посмотреть... Может быть один раз проще разрешить конфликты, чем три раза их разрешать, и в итоге прийти к тому же самому. Зачем разрешать конфликты с версиями, которые как бы промежуточные?
>Фетч обычно нахуй ненужен. Он тянет просто список изменений, но не сами изменения. Что бы гит был в курсе, что там такие то ветки создались и такие то коммиты. Изменения накатывает именно пулл.
Если я правильно понимаю, фетч от пулла отличается только тем, что фетч только скачивает в локальный гит изменения, а пулл ещё и сразу же мержит их с локальной веткой. Поправьте, если это не так.
>>26478
Я так понимаю, что ничем. И ребейз по сути делает мердж, и пул-реквест по сути делает мердж.
Ребейз, как я понимаю, мерджит по одному коммиту, а пулл все разом. В итоге может быть отличается только порядок того, что с чем мерджится, но от перемены мест слагаемых... А фетч в связке с pull, вроде как, точно не нужен, так как pull это fetch+merge. Как бы.
>>26438
Объясните вот этот нижний треугольник состояний на картинке. Где из develop льётся на rel.branch и тут же то же самое состояние льётся обратно в develop. Что имеется в виду? Зачем? Зачем туда и сразу обратно, что это даст?
Не уверен, но по моему это какая-то внутренняя хрень IDEшки, которую ты используешь, необходимая для анализа кода. Никакого builtins.py в библиотеке питона нет, но какой-нибудь PyCharm при попытке перейти к имплементации встроенного объекта кидает примерно на такой же файл.
Реальная имплементация range выглядит вот так
https://github.com/python/cpython/blob/main/Objects/rangeobject.c
>Однопоточный таджик - сначала выроет яму
Что-то какой-то антиарийский нацизм развели. Почему как таджик, так сразу землекоп? Почему не еврей-отоларинголог?
Ну ладно. Допустим, вёдра, яма и ведро.
Яма - это же база данных, и её надо выкопать. Но тогда носить мы будем не в неё, а обратно. Соответственно, носить будем, скажем, добытые в этой яме алмазы.
Однопоточный работник - выроет яму до скального грунта, сложит все алмазы в кучку, потом насыпет в ведро и отдаст это ведро тебе.
Многопоточный грузовик работников - один будет рыть яму, другие будут ждать, не попросишь ли ты где-то выкопать ещё одну яму. И у каждого будет своё ведро. Но ведро у них будет только одно и отдавать они его будут только когда всю яму выкопают.
Асинхронный работник - копнул, увидел алмаз, положил его в ведро, отдал ведро тебе. Ещё раз копнул, там ещё алмаз, положил его во второе ведро, кинул второе ведро тебе вдогонку, поставил рядом третье ведро и продолжил копать.
Так?
>Асинхронный работник - копнул, увидел алмаз, положил его в ведро, отдал ведро тебе. Ещё раз копнул, там ещё алмаз, положил его во второе ведро, кинул второе ведро тебе вдогонку, поставил рядом третье ведро и продолжил копать.
Так?
Не, асинхронный работник прорабу без ведра выротые алмазы в ебло кидает. И так каждый. Но зато каждый из работников ждет сввоей очереди вырыть алмаз, а копает в сущности только один из них. (если это не внешняя для процесса операция)
Но ведь таких асинхронных работников может запущено сразу несколько, в разных процессах? Соответственно, копать смогут сразу несколько из них. При чём каждый, гипотетически, может ещё и асинхронно переключаться с одной ямы на другую, но в каждый момент времени каждый будет копать только одну яму. То есть даже если каждый из работников будет асинхронно копать по три отдельные ямы, то в каждый момент времени они будут копать лишь десять ям, а двадцать ям будут оставаться в ожидании.
Так?
Да, копание ям это CPU bound задача, асинхронность нужно для IO bound, а в вебе таких операций дохуя.
А сможешь объяснить на примере сосания хуев?
>синхронно переключаться с одной ямы на другую
Считай что нет.
>каждый из работников будет асинхронно копать по три отдельные ямы
В контексте работника это будет синхронно.
>Так?
Из-за прошлого комментария как бы получается, что не так.
Ваще асинхронность роляет только тогда, когда есть внешняя блокирующая кпу задача. Когда такие вещи случаются обычно жопа чует что вот оно момент настал.
>Фетч обычно нахуй ненужен. Изменения накатывает именно пулл.
Если быть точным, то изменения накатывает merge, а pull — это просто алиас для git fetch + git merge.
Поэтому-то фетч перед пуллом и не нужен — он сам его делает.
>>26478
>А чем этот гит ребейз отличается от гит фетч + гит пулл мастер?
Это разные вещи. git pull скачивает все изменения с удалённого репозитория в твой локальный. rebase же меняет "базовый" коммит ветки.
Ты выделил себе ветку под таск1, эта ветка базируется на коммите мастер1. Но пока ты работал над своей задачей, в мастер смержили ещё коммитов, в итоге твой бранч с таск1 базируется уже не на самам свежем коде мастера, и в дальнейшем при мерже твоего таска могут возникнуть конфликты, которые придётся исправлять. rebase позволить сделать так, будто бы ты отделился в ветку таск1 с коммита мастер2 и уже потом добавил свои изменения.
При мерже после пулл реквеста всё равно этот процесс ребейза будет происходить, и в случае конфликтов их надо будет решать, поэтому нет смысла не делать этого постепенно.
Вот в пеинте нарисовал примерно. То есть, приходя утром на работу исполняешь команды из пунктов 2 и 3 и продолжаешь свою работу (починив конфликты в пункте 3, если вдруг будут).
> Вот здесь я не догоняю. Из какого другого места? В смысле с другого компьютера, что ли?
Да, с другого компьютера
> А как это? В смысле, почему вдруг, зачем?
Ты заболел или стало хуево просто и решил поработать из дома -> тебе пизда, так как все изменения остались на работе
> Или ты о том, что кто-то запушит, и в итоге мастер перестанет мержиться с твоей веткой, а если ты её первым запушишь, то конфликты мерджа придётся разргебать тому, кто не запушил свою?
Конфликты мержа должен разгребать тот, чья таска более сложная и вероятность сломать которую выше. Если обе таски такие, то и разгребать будете вместе. Это вообще никак связано быть не должно с последовательностью пушей и мров
А как можно вместе разгребать конфликт слияния? Технически, применительно к git? Ну вот оба попробовали сделать merge, у обоих конфликт. У обоих одинаковые файлы с <<<<<<< ===== >>>>>> А дальше что? Они ведь пока не закончат слияние, ничего закоммитить не могут. Допустим, кто-то устранил конфликт в одной процедуре, а другой в этот момент устранил конфликт в другой процедуре. А как объединить?
>Объясните вот этот нижний треугольник состояний на картинке.
Объясняю.
Ветка master содержит текущий продуктовый код. В ветке develop лежит текущий актуальный код в разработке.
Макаки пилят и пилят код в фича-бранчах (по ветке на каждую фичу), потом сливают его в девелоп.
Тимлид говорит "готовим новый релиз" и переливает код из develop в release. Там гоняют тесты и прямо там фиксят косяки.
Каждый косяк, пофикшеный в release возвращается в develop, чтобы в develop была актуальная версия кода и можно было делать из него branch для новых веток или rebase для старых.
Но если очередная фича прилетит из одного из feature-бранчей в develop, то в release этот код не попадёт.
Когда код в release будет достаточно качественный, его переливают в мастер и тегают. Возможно, имело бы смысл bugfix'ы для release делать в ещё отдельной ветке (чтобы недоделанные фиксы случайно не попадали в develop), но это ещё сильнее усложнило бы и без того перегруженную схему.
Эта схема называется git flow и многие конторы от неё отказываются в пользу более лаконичных, например, gitlab flow.
Как такое реализовать?.. У меня есть свои наработки, но мы просто в бесконечном цикле в треде проверяем массив с ожидающими посетителями (превращая его в set и убирая из него самого же посетителя) и если он пустой то засыпаем на 0.1 секунды, если нет - вытаскиваем первого что попался. Что-то подсказываем мне использовать очередь но вот незадача - первый посетитель также окажется в этой очереди (в моем случае мы избавляемся от него при помощи множеств)
Ты думаеш с т.з. клиента, а надо сервера.
На сервере LIFO очередь, если она >= 2, то попишь пару и соединяешь, всё.
Рибейзит относительно чего? Вот у них два текста с содержимым AB и CD. Они не сливаются в EF. Оба попытались сделать из обоих текстов простым слиянием EF, но у них ничего не вышло. Вышло AC-BD. В итоге один из A и C сделал E, то есть сделал E-BD, другой сделал AC-F. Как из этого получить EF? Что куда рибейзить?
>>26908
Это я всё понял, но вон там ведь внизу в последний зелёный кружок стрелка из develop и входит, и сразу выходит обратно. То есть там нет никаких багфиксов (выше багфиксы были отдельными кружками показаны). А зачем тогда обратно в develop что-то копировать? Там же то же самое в данный момент. В этом какой-то особый смысл или нет никакого особого смысла?
Ошибка с подсчетом refcount у None. Из-за этого питон пытается удалить None и падает с Python Fatal error Очень редко возникает, но при этом если возникает, то никак не фиксится, только переписыванием исходников на сях
>>26901
> А как можно вместе разгребать конфликт слияния?
Созваниваетесь в зуме/телеге, один шарит экран, а второй говорит что писать. Самый надежный и быстрый вариант
> Технически, применительно к git?
Можно придумать какой-то изъебистый способ, но обычно один разруливает все, что смог, а что не смог, то выбирает accept their и коммитит. Другой пулит и фиксит хуйню. И так итеративно по очереди допиливают, чтобы работало
import ctypes
lib = ctypes.PyDLL("libpython3.8.so")
lib.Py_IncRef(ctypes.cast(id(None), ctypes.py_object))
:)
Что значит открыть? Если подключиться к консольке, то через ssh подключаешься и там attach к контейнеру делаешь
Я задеплоил проект с gunicorne, запустил его через docker-compose, вроде всё работает, по крайней мере никаких ошибок нет. Как мне его открыть в браузере теперь только?
>>27032
>Надо при docker run mydoker добавить -p 8000:8000
По идее это docker-compose.yml делает.
Вот мой docker-compose.yml https://pastebin.com/DykPTSZx
Вот докерфайл https://pastebin.com/08Q1SRiy
Вот баш энтрипоинт https://pastebin.com/bqMfZqji
Ну и нжинкс ещё до кучи https://pastebin.com/MEFfxqLM
Делаю docker-compose --build, вроде всё заебись, бдшка создается, миграции проводятся. Как только мне сайт-то сам открыть?
expose:
- 8000
expose открывает порты для других контейнеров, чтобы замапить с хостом нужно
ports:
-8000:8000
И да, ты БД в интернет открыл зачем-то
>ports:
-8000:8000
Спасибо.
>И да, ты БД в интернет открыл зачем-то
Да я использовал шаблон с пет проекта знакомого, а он пользуется ещё каким-то сервисом для мониторинга своих контейнеров через веб.
> Как мне его открыть в браузере теперь только?
А ну тебе вон выше написали, докер самой уебищной документацией эвер обладает. Буквально блять энциклопедия без гайдов и нормальных примеров. Советую гуглить готовые докер/докеркомпоуз файлы и их под себя адаптировать
>самостоятельно управлять работой корутины
Это поведение альфы. Самостоятельно берет дело в свои руки и вертит им как хочет. Все правильно ящитаю
>LIFO
Ты хотел сказать FIFO?..
В любом случае как именно быть когда мы вытащили из очереди человека (или его айдишник - не суть) а это оказался тот же самый чел? Соединить с самим же собой?
>>27142
Библиотека zstandart, при больших нагрузках начинает пытаться удалять None. Такие дела, недавно только эту хуйню починили, три недели ушло на фикс бтв
>>27191
А какого хуя у тебя тот же айдишник оказался в очереди? Это означает, что у тебя ОЧЕНЬ хуевый код. Энивэй это фиксится элементарной проверкой и я бы в таких случаях выпиздовывал пользователя из очереди и высирал критикал в логи
>>26234
Ладно, всем спасибо. Реальная задача в Питоне 3.8 стала явно быстрее, алсо Питон 3.6 глюкавый в плане мультипроцессинга. Знали б вы как я с ивентами и сигналами в Qt заебался...
Done: 124 results. Time 18.73 sec, Workers: 1 multiprocessing
Done: 124 results. Time 9.73 sec, Workers: 2 multiprocessing
Done: 124 results. Time 6.01 sec, Workers: 4 multiprocessing
Done: 124 results. Time 4.59 sec, Workers: 6 multiprocessing
Done: 124 results. Time 4.02 sec, Workers: 8 multiprocessing
Done: 124 results. Time 3.786 sec, Workers: 12 multiprocessing
> алсо Питон 3.6 глюкавый в плане мультипроцессинга
То есть, ты запускаешь не процессы, а треды, не по количеству ядер, а один, но виноват все равно глякавый питон?
Как в питоне поступают с глобальными переменными?
Вроде все документировано и довольно просто.
Но кажется так не делают?
Является ли зашкваром писать global в функции?
У меня необычные условия:
- должно работать в python2.7
- все должно быть одним файлов
- я пишу небольшую сисадминскую утилитку и можно отойти от трушной архитектуры, но совсем позориться не хочется.
пиши в глобальный словарь, к нему можно и без объявления global всё время обращаться. такой вот питон.
expose можешь смело убирать. В nginx открой 80 порт через ports
pycharm спокойно роняет комп, ставишь logger, и через while логгируешь от 1 до 100000, где-то на 15к все зависает и если убить процесс комп в себя приходит где-то минут через 10. Как-то проверял логгирование, сколько файл будет весить, так он файл не создал и просто в консоли выводить начал и завис.
Ещё ронял когда в django в orm сделал создание 2к объектов, почему завис, я до сих пор не понял, но через минут 5 отпустило, когда убил pycharm и все остальное. Комп был в режиме слайдшок.
Ryzen 7 2300 проц
АВ рибейзится относительно EF и мержится. Затем CD рибейзится относительно EF и также мержится. Как и говорили, кто именно первый должен решать конфликты и мержить в основную ветку свой пулл-реквест, должны решить сами разрабы, как правило это тот, чьи фичи важнее
>Является ли зашкваром писать global в функции?
Нахуя тебе это, ты скажи? Передавай в функцию/метод параметры явно
>Библиотека zstandart, при больших нагрузках начинает пытаться удалять None
Ну это, скорее всего, не проблема интерпретатора, а проблема библиотеки. Видимо, неправильная работа с указателями на динамически создаваемые переменные. Надо её просто отладить хорошенько, и перестанут константы удаляться почём зря.
Поддерживается. Мной.
Не все программисты в мире делают веб, знаешь ли.
>>27321
очень много промежуточных переменных, а объекты слишком удлинят код.
Дело в том, что код в принципе из без global нормально работает в силу особенностей variable scope питона.
Неужели это можно смело использовать? Зачем тогда ключевое слово global ? Не хочу выглядеть стилистически неместным.
>Зачем тогда ключевое слово global
Чтобы переприсваивать
Вообще даже без global можно мутировать глобальное состояние, что является херовым признаком. Если у тебя мутаций нет, можешь так и юзать свой сервис конекшна к БД (или че там у тебя), но вообще как правило в функцию передают объект курсора или объект конекшна, внутри функции с ним уже работают, в жопаскрипте подход тот же
>Не все программисты в мире делают веб
Просто блин обнови питон... Неужели у вас там 1 глобальный интерпретатор стоит без venv в котором все зависимости сразу нахуячены?
>Вообще даже без global можно мутировать глобальное состояние, что является херовым признаком
то есть, мне таки придется писать global как я и подозревал ? окей.
>Просто блин обнови питон...
Не нужно. Это особенная программа. Она должна работать на старье.
>Запуск асинхронной таски в процессе реализован избыточным кодом
>пук
Оверхед там не более 10% для нормальных фреймворков, 20% в крайнем случае, превышения уже как бэ намекают, что у вас получилось говно (как в случае с новым "асинхронным фласком"). Если пишешь сервак и не используешь асинхронный подход то юзай адекватный мультрединг/горутины, т.к. ни одного ни другого в питоне нет, то бля кроме асинхронки ничего не остается. Спорить с этим - значит жить в 2008
Нет, не 10% и даже не 20. Оверхэд там приличный, в два-три раза скорость работы асинхронщины может быть ниже. А ты просто малолетний долбаеб, который даже не понимает как работает асинхронность в питоне
Ебанько, uvloop уже давно оптимизирован по самые не могу
Вылезай из под камня, где ты просидел начиная с 2008
tcp-сокет открывай и слушай команды.
>стрелка из develop и входит, и сразу выходит обратно
Хм-м. Молодой человек (или юная леди?.. впрочем, какая в жопу разница?), а не рано ли вам вайти, если вы не особо понимаете что на схемах могут быть условности?
Это всё лишь призвано подчеркнуть, что все изменения в релиз-бранче должны отображаться на девелоп-бранч и это будет касаться всех будущих RB, сколько бы их ни было.
Мне лично на этой схеме куда больше не нравятся коммиты в develop вне бранчей. Лучше бы их запретить и оставить изменения в dev только мерджами: на каждое изменение -- таск и бранч, отладил -- мерджни. Потом по истории мерджей делаешь ченджлог и документацию.
GitLab Flow и GitHub Flow явно запрещают прямые коммиты.
Ты недавно только курс "Создай своего бота и стань хакером" закончили или совсем ебанутый?
https://youtu.be/z7WIm0iZcOU
Ну там конфиги пофиксить или поправить креды — может быть вполне себе уместно сразу в дев коммитить, чем создавать таску "изменить пароль" на 15 минут и потом ее закрывать
да, print(list(filter(lambda x: x != 'None', [i if x == "TMIN" else 'None' for i, x in enumerate(header)])))
понял, принял
Почему он там юзается тюнинг для синхронных фреймворков в виде гринлетов и picoev, где реализуется собственный эвент луп и работа со стеком, но для aiohttp он даже не добавил uvloop? При этом не учитывается производительность драйверов для базы, которую отдельно считать надо, мог бы взять asyncpg, вместо залупного aiopg.
К слову, meinheld жив на уровне vibora, его тоже можно было затестить, хули.
Во-первых, хорошо что ты хотя бы согласен, что оверхед есть.
Во-вторых, благодаря таким как ты и возникают эти дебичи. Понаслушаются о теме не вникнув. Потом пишут асинхронную функцию которая делает return a+b И искренне удивляются и даже обижаются, когда им поясняешь, что это какая то хуйня. Как же так? Как так замедлет? Она же асинхронная. В их понимании асинхронный код исполняется быстрее силой магии. Они бы асинхронную ОС написали и асинхронный компилятор. И вот тогда бы на древнем пентиуме можно было запускать крузис. А весь софт в мире тормозит от того. что не асинхронный. Наверное всякие архитекторы с многолетним стажем не знают как писать асинхронный код, потому и видео рендерится медленно и игры тормозят.
А тут еще ты заходишь с ноги и опять пиздишь, что асинхронность это мастхев. И никаких если.
Фу таким быть.
trow = header.index("TMIN") if "TMIN" in header else None
(Да, формально тут два прохода по списку будет, но не похуй ли?)
Хотя нет, строго говоря надо сделать len(header) - header[::-1].index("TMIN"), потому что код на скрине присвоит trow последний индекс, если TMIN больше одного раза встречается. Впрочем, не думаю, что ты задумывался о возможности TMIN быть в списке более одного раза.
> то есть, мне таки придется писать global как я и подозревал ?
Если собираешся переменную из функции модифицировать, то используй.
> Не нужно. Это особенная программа. Она должна работать на старье.
Третий питон тоже может работать на старье. Ты вот сейчас траишь энергию на поддержания второго питона, который скоро официально рип. Т.е. что то новое прикрутить к программе уже не получится. Потом кому то понадобится запилить новую фичу и окажется, что надо переписывать весь код с нуля.
Если есть возможность обновится до живой версии, не игнорируй ее.
Увы, но я видел, как даже самые невинные на первый взгляд коммиты чуть ли не уровня "поменять цвет кнопки" если и не ломали систему совсем, то по меньшей мере делали её использование некомфортным. Так что в develop с таким подходом может оказаться условно-нерабочий код. Конечно, тестирование найдёт косяк, но лучше тестить левый бранч, а не dev (мало ли кто успеет бранчнуться между ломающим и исправляющим коммитом, ребейзь потом вот это вот всё).
Это, конечно, IMNSHO и в реальной жизни всё не так гладко, но я за то чтобы потратить лишние пару минут, но получить более лучшую систему.
>Хм-м. Молодой человек (или юная леди?.. впрочем, какая в жопу разница?), а не рано ли вам вайти, если вы не особо понимаете что К чему это хамство? Ты так со всеми общаешься?
>на схемах могут быть условности?
Да я в некоторых случаях предпочёл бы точность условностям.
Я не уверен, что я точно понимаю, как работает гит, и предполагаю, что я что-то мог упустить, поэтому и уточнил, ничего ли я не упустил.
Потому что перед вводом этих команд тебе не надо заходить в интерпретатор. Они выполняются в консоли.
Найди какой-нибудь подробный гайд для старта с полного нуля.
расслабься. Я пишу программу помогающую обновиться.
давай расскажи мне, cколько нужно девопсов чтобы вкрутить лампочку?
>>27696
>Третий питон тоже может работать на старье.
Не всегда у тебя вообще есть контроль над этим старьём. Я как-то на работе один скрипт писал, всё протестировал на рабочем же сервере, предполагая, что и там плюс-минус та же среда будет, отдаю — ниработаит! Оказалось, у них там вообще 2.6 питон стоит и какой-то даже стандартной либы не было ещё.
Один. Только он не будет вкручивать лампочку, а спулит контейнер, который для этого предназначен.
Дропни базу, епта
Это мне получается нужно в представлении ради них сразу 3 функции: первая инициирующая и две обработывалка событий? Или как это, блять, пишется? Но можно все события одной функцией принимать и, в зависимости от события, запускать следующую операцию.
Никак. Потому что никто ничего молодежного не написал. Там слишком дохуя кода у них.
Но есть Kivy! У них все переписано.
Потому что питон для десктопа нахуй не нужен, там ничего живого кроме QT и киви нет.
В джанго какой-то свой мирок со своими инструментами, а так все эти фреймворки крайне похожие и можно сразу все изучить.
> Всем привет, что сейчас будет актуальнее
Что значит "актуальнее"? Актуальнее учить джуну, чтобы проще было вкатиться? Что перспективнее и в ближайшее время отожмет значительную часть рынка? Что использует самые современные практики питона? Ты можешь мысли яснее выражать?
> Django
Хтоническая залупа, которая тащит всю хуйню с собой. Все прибито гвоздями и если какой-то ополоумевший анальник решил, что уебищный старый синтаксис алхимии лучше, значит ты будешь жрать что дают. Но с другой стороны, не нужно ебаться и настраивать интеграции и разработка идет быстрее до первого нестандартного кейса. Так что на штанге дохуища вакансий есть
> Flask
Штанга без встроенных интеграций. Все минусы штанги превращаются в плюсы, все плюсы в минусы. Можешь сам выбирать что использовать, но придется ебаться с интеграциями. Мои симпатии на стороне фласка
> aiohttp
Это аналог фласка, только асинхронный. Все что справедливо для фласка, справедливо и для него
Еще есть фастапи. Это аналог штангиеще не совсем, но стремительно в него превращается Ставлю жопу, что через 3-4 года будет распространен не меньше, чем штанга
А что конкретно изучать для вката значения не имеет, главное чтобы не асинхронность. Чтобы потом не превратиться в сектанта, который уверен, что если написать асинк, то функция получает +10 к скорости выполнения
>>27897
> Как асинхронщину под десктоп писать?
Берешь и пишешь без задней мысли. В чем проблема?
> Нужно по действию пользователя вызвать последовательно 2 тяжелые функции
> последовательно
Ты долбаеб? Ты долбаеб.
> Это мне получается нужно в представлении ради них сразу 3 функции: первая инициирующая и две обработывалка событий? Или как это, блять, пишется? Но можно все события одной функцией принимать и, в зависимости от события, запускать следующую операцию.
Что ты нахуй несешь? Что ты блять собрался асинхронно последовательно запускать?
Если тебе тесты с видео не нравятся, то запили свои и выложи. Зачем рассуждать с дивана?
>то юзай адекватный мультрединг/горутины
Что ты подразумеваешь под адекватностью мультитрединга? Конкретно, чего именно недостаёт в питонских серверах, не использующих асинхронный подход?
Возможно туда как-то исключение бросить, что ли? Или это может всё поломать и вообще невозможно? Просто Event кинуть я могу, но ведь внутри треда его ещё нужно поймать, то есть в любом случае придётся ждать завершения длинной процедуры из сторонней библиотеки.
Скажите честно, я задумал дурное?
И как это сделать всё-таки, если возможно?
> чего именно недостаёт в питонских серверах
Там не достает номрльного сервера. Поэтому все ваши гуникорны работают за nginx и все у них норм.
А лебичи, котоыре топят за асинхронные запросы по 200мс просто не знают про кеш.
>кеш
Система кеша это по-твоему панацея?
обращения в кеш вроде Редиса тоже могут быть асинхронными, хоть там задержка и не 200 мс а 10 мкс то тем не менее блокировка происходит
Все обращения к стороннему АПИ тоже закешируешь?
>А лебичи, котоыре топят за асинхронные запросы по 200мс просто не знают про кеш.
А у тебя сервер только на чтение работает и все методы идемпотентны на протяжении всего рабочего цикла?
Самое угарное что БДшки, в том числе кеш могут располагаться где угодно, может на том же серваке а может и нихера. Все это вносит дополнительные задержки, без асинхронки тут никак
Динозавры конечно привыкли жить в мире монолитного джанго-говна, им ничего не пояснишь, они в своем мирке живут
Тут я сначала не понял, о чём ты.
>>28157
А вот теперь понял. Так что, длинный запрос к сторонней базе данных оставляет блокировку GIL?
А это точно? Что-то как-то с трудом верится. Оно же во время операций ввода-вывода вроде же ничего не блокирует. А разве запрос в сторонней базе данных по сети с точки зрения питона это не ввод-вывод?
А это прям точно-точно? А можно с пруфами?
Так что, так нельзя?
Ты все прекрасно понял, но специально водишь очком
Мультитрединг в питоне помогает только с IO, в отличие от той же Жавы или ГОвна, и в довесок к этому несет кучу проблем сам по себе, начиная с того что с увеличением числа реквестов создается все больше тредов, которые вынуждены между собой делить GIL, заканчивая потенциальными ништяками вроде дедлоков
В том же ЖСе асинхронность - основной подход, там нет никаких "тредов" бля, просто потому что они не нужны нахуй и просто вредны, там в Ноде есть Воркеры, аналог питоновских процессов, чтоб совать туда CPU-bound таски, но тредов там нет, потому что ЖС точно так же однопоточен и асинхронность - идеальное решение в данном случае для преодоления проблем с IO
Где "у нас"-то, блин? Ты не то себе представляешь.
Это был скрипт, который обычные саппорт инженеры должны были запускать для упрощения/ускорения анализа дампов логов. Это не какой-то проект большой, который на каких-то серверах централизированных крутится. Просто есть какой-то там виртуальный сервер в корпоративной сети на видимо тухлой centos, с которого есть доступ к железкам в лаборатории. Он вообще может быть "личным" для этого инженера, и хоть он там и может поставить себе новый питон, это же придётся каждому всё объяснять как сделать (но рута тебе никто не даст, а значит руками компилировать в какую-то локальную директорию, что сам понимаешь) — кому нужны эти проблемы? Проще сделать то, что изначально будет молча работать без дополнительных действий со стороны "пользователя". (Ну и немного договориться о минимальных требованиях можно, что использовать сдохшую более 10 лет назад версию как-то не предполагалось.)
Если один скриптик пишешь для некроговна, то нахуй вообще вопросы по стилю задаёшь? Пиши как во времена 2.7 писали, с глобалами, мутациями и прочими class Zalupa(object).
>Ты все прекрасно понял, но специально водишь очком
Что ты несёшь? Если ты не можешь по делу ответить, то просто иди на хуй, и всё. Другие ответят, если есть что сказать, а зачем мне слушать мнение долбоёба?
Ты что, считаешь, что ты лучше меня знаешь, что я понял, а чего не понял? Ты экстрасенсом себя возомнил?
Или ты понял, что обосрался, раньше, чем я это заметил, а теперь сам и "водишь очком", чтобы запутать следы, идущие прямиком из твоей жопы? К чему этот твой высер про очко, долбоёб?
С чего ты взял, что все тут способны читать твои мысли и каждую твою маняфантазию "понимают"?
При чём в следующем же посте ты, долбоёб, начнёшь кукарекать, что я, напротив, ничего не знаю и ничего не понимаю. Ты понимаешь, что ты аутист, который пытается в проецирование? Нахуя ты это делаешь? Ты вообще пробовал с реальными людьми говорить, чтобы при этом от них каждый день по морде не получать? Или тебе это не надо? С компьютером безопаснее?
>начиная с того что с увеличением числа реквестов создается все больше тредов, которые вынуждены между собой делить GIL
А какая разница? Ядро одно. Процесс один. Интерпретатор один. Запросов много. Но все они либо процессорозависимые, и тогда они не могут выполняться одновременно и GIL не мешает, либо среди них есть зависящие от работы удалённой базы данных, и тогда это операция ввода-вывода и GIL снова не мешает.
Я уточняю, в чём проблема. Конкретно, в чём? Без общих слов, что вот есть GIL и он мешает. Ты можешь ответить или нет? Если не можешь - это ещё не повод вести себя как истеричка и хамить незнакомым дядям.
>заканчивая потенциальными ништяками вроде дедлоков
Например? Картинку нарисовать можешь? (Кроме баивой.)
А ещё лучше кусок кода приведи, который вместо нужной и полезной работы внезапно делает этот дедлок, чтобы каждый мог убедиться, какое же пайтон говно. А пока ты нихуя не осилил - не выёбывайся. Тут не глупее тебя люди сидят, даже если мысли твои читать не умеют.
>В том же ЖСе асинхронность - основной подход, там нет никаких "тредов" бля, просто потому что они не нужны нахуй и просто вредны
Ага, зато километры промисов, очень интуитивно, понятно и читаемо. А чем тред хуже километра промисов?
>потому что ЖС точно так же однопоточен и асинхронность - идеальное решение в данном случае для преодоления проблем с IO
То есть, если подытожить этот твой пост, то асинхронность идеальное решение потому что ты скозал?
Ну охуенно. Спасибо тебе за консультацию, я от тебя узнал много нового (нет).
>Ты все прекрасно понял, но специально водишь очком
Что ты несёшь? Если ты не можешь по делу ответить, то просто иди на хуй, и всё. Другие ответят, если есть что сказать, а зачем мне слушать мнение долбоёба?
Ты что, считаешь, что ты лучше меня знаешь, что я понял, а чего не понял? Ты экстрасенсом себя возомнил?
Или ты понял, что обосрался, раньше, чем я это заметил, а теперь сам и "водишь очком", чтобы запутать следы, идущие прямиком из твоей жопы? К чему этот твой высер про очко, долбоёб?
С чего ты взял, что все тут способны читать твои мысли и каждую твою маняфантазию "понимают"?
При чём в следующем же посте ты, долбоёб, начнёшь кукарекать, что я, напротив, ничего не знаю и ничего не понимаю. Ты понимаешь, что ты аутист, который пытается в проецирование? Нахуя ты это делаешь? Ты вообще пробовал с реальными людьми говорить, чтобы при этом от них каждый день по морде не получать? Или тебе это не надо? С компьютером безопаснее?
>начиная с того что с увеличением числа реквестов создается все больше тредов, которые вынуждены между собой делить GIL
А какая разница? Ядро одно. Процесс один. Интерпретатор один. Запросов много. Но все они либо процессорозависимые, и тогда они не могут выполняться одновременно и GIL не мешает, либо среди них есть зависящие от работы удалённой базы данных, и тогда это операция ввода-вывода и GIL снова не мешает.
Я уточняю, в чём проблема. Конкретно, в чём? Без общих слов, что вот есть GIL и он мешает. Ты можешь ответить или нет? Если не можешь - это ещё не повод вести себя как истеричка и хамить незнакомым дядям.
>заканчивая потенциальными ништяками вроде дедлоков
Например? Картинку нарисовать можешь? (Кроме баивой.)
А ещё лучше кусок кода приведи, который вместо нужной и полезной работы внезапно делает этот дедлок, чтобы каждый мог убедиться, какое же пайтон говно. А пока ты нихуя не осилил - не выёбывайся. Тут не глупее тебя люди сидят, даже если мысли твои читать не умеют.
>В том же ЖСе асинхронность - основной подход, там нет никаких "тредов" бля, просто потому что они не нужны нахуй и просто вредны
Ага, зато километры промисов, очень интуитивно, понятно и читаемо. А чем тред хуже километра промисов?
>потому что ЖС точно так же однопоточен и асинхронность - идеальное решение в данном случае для преодоления проблем с IO
То есть, если подытожить этот твой пост, то асинхронность идеальное решение потому что ты скозал?
Ну охуенно. Спасибо тебе за консультацию, я от тебя узнал много нового (нет).
Я может в том своём посте что-то не так спросил? Может я тебя чем-то обидел? Может быть я случайно выеб твою жену? Или мамку твою выеб прямо у тебя на глазах? Я просто не понимаю, я вроде нормально общаюсь, а в ответ получаю брызги дерьма. Охота понять, это во мне проблема, или в действительности проблема лишь в том, что ты тупой долбоёб, который хочет кому-то что-то доказать, но не может, и потому срывается на визги и оскорбления?
>Ага, зато километры промисов, очень интуитивно, понятно и читаемо.
У питона и жса плюс/минус одинаковый синтаксис промисов на асинках/эвэйтах. А обычные промисы используются для написания обёрток для легасиговен на колбэках, чтобы их можно было тем же эвэйтом вызывать.
Для тяжёлых функций не асинк, а мультипроцессинг нужен. Просто последовательно запускай их в отдельном процессе.
Создаешь свой поток в отдельном классе, наследующемся от Thread, в нём переопределяешь метод join, чтобы когда ты его вызвал он правильно закончил выполнение.
> Система кеша это по-твоему панацея?
Вы опять сравниваете холодное с круглым, лишь бы картина манямирка не рушилась.
Да, кеш это панацея. Он решает проблему ожидания ответа.
Асинхронный запрос просто не блокирует выполнение. Это звучит круто, но что это значт? Что в базу одновременно может ломится больеш человек. Но один хуй ждать ответ они будут свои 500мс. Кеш же возвращает результат практически мгновенно.
> Все обращения к стороннему АПИ тоже закешируешь?
Да, закеширую. Реальный прмиер - отзывы на сайте с разных сервисов. Тянутся они долго, но обновляются редко. Можно хранить уже сформированный html в кеше и отдавать его мгновенно. А к апи обращаться раз в неделю в фоне. твоя асинхронность тут курит в сторонке.
> А у тебя сервер только на чтение работает и все методы идемпотентны на протяжении всего рабочего цикла?
Слово умное, но вопрос не верный. Если данные и меняются, то ничто не мешает обновить кеш именно в момент обновления данных, а не при первом их запросе. При перезапуске сервера просто запускаешь скрипт на разогрев кеша и получаешь отличную производительность.
Для особо умных напоминаю. Если синхронный запрос обрабатывается 5 секунд, то и асинхронный запрос будет отрабатывать те же 5 секунд. А скорее даже больше. т.к. в базу одновременно асигнхронно долбится большее число запросов. Какой то профит от асинхронных фреймвокров есть в очень малом количестве проектов. В 90% синхронный монолит лучшее решение.
ебать вы там долбоёбы все, конечно.
это нихуя не поможет.
>Если данные и меняются, то ничто не мешает обновить кеш именно в момент обновления данных, а не при первом их запросе
А можно еще всю базу в оперативку засунуть, хули, тогда вообще быстро будет.
Плюс к этому данные могут быть и не с твоей базы, а с другой апишки или сервиса, который неизвестно сколько работает и процессит данные, еще прослушивание стрима кролика или кафки добавь, вообще заебись будет все это по тредам разделывать.
>Для особо умных напоминаю. Если синхронный запрос обрабатывается 5 секунд, то и асинхронный запрос будет отрабатывать те же 5 секунд
Если у тебя долбление в одну базу между которым ничего не происходит, то заебись у тебя работа конечно.
Вот есть файл с тестом. Там хочу заменить на свой класс один сторонний.
Как сделать?
#test_file.py
import module
...
module.ThirdPartyClass = MyClass
#some_file.py
from module import ThirdPartyClass
...
ThirdPartyClass() # Тут не заменяется
Проекты лучше сразу начинать докера? Потому как переезд в контейнер когда всё отлажено немного неудобен.
У сервиса есть разные версии типа dev, prod и тд с разными приставками в домене. Я делаю скажем запрос на свой другой сервер который в деве, а при выкате на прод в коде приходится править адрес на другой домен. Как избежать этого? Они хостятся на разных адресах.
Как лучше организовать конфигурацию запросов на другие ресурсы? Я сначала делал что-то типа json, файла с указанием uri, headers, params и тд, вытаскивал его оттуда и regex-ом добавлял свои переменные. Потом решил просто оформить это в одном классе, типа, RequestsConfig. Какой способ правильнее? Я смотрел другие репы в гитхабах, но что-то единообразного так и не нашёл.
Как сделать чтоб метод, который находится в классе возвращал экземпляр класса как конструктор? Чтоб было не Class().create, а Class.create. Работаю с mongo, там поиск по базе очень всрат
Конечно не заменяется, в первом случае импортишь module и обращаешься через приставку module, а во втором импортишь сам класс, без этой приставки. Импорти его как модуль, если он с другим именем пиши так
import fuck as module
Я так и не понял прикола промисов в жсе и чем они отличаются от обычных методов с if response.ok Они позволяют не ждать ответа и крутить код дальше? Но зачем, если он практически всегда линейный и следующая реакция зависит от ответа и программа в любом случае должна ждать ответ, а не делать лишних телодвижений, еслм ответ пришёл не такой какой ожидался
> А можно еще всю базу в оперативку засунуть, хули, тогда вообще быстро будет.
Любая БД и так пытается держать все часто используемые данные в оперативке. Но основной профит все ровно от правильной архитектуры. select это быстрая операция.
> Плюс к этому данные могут быть и не
А могут и не быть. Опять начинается подведение ситуации под доказательствов духе - "А вот если бы у бабушки был хуй..."
И действительно, если бы не, то тогда бы ух! Но это как раз те редкие случаи.
> Если у тебя долбление в одну базу между которым ничего не происходит, то заебись у тебя работа конечно.
> Если у тебя долбление в одну базу между которым ничего не происходит, то заебись у тебя работа конечно.
Это 90% всех проектов. Реальные нагрузки только у яндексов и прочих хуяндексов. Если у твоей конторы еще нет офисов во всех регионах страны, то асинхронность тебе в хуй не вперлась. Обычный пользователь обычного сервиса хочет видеть результат запроса сразу, а не осознавать, что стоит в очереди с тысячами таких же счастливчиков.
>Любая БД и так пытается держать все часто используемые данные в оперативке. Но основной профит все ровно от правильной архитектуры. select это быстрая операция.
Нахуярить кэша это не архитектура
>А могут и не быть. Опять начинается подведение ситуации под доказательствов духе - "А вот если бы у бабушки был хуй..."
>И действительно, если бы не, то тогда бы ух! Но это как раз те редкие случаи.
Так может быть, только если у тебя монолитное приложение на питоне, а такие все чаще распиливаются на микросервисы по понятным причинам. А там нормально делать запросы на 3-4 сервиса одновременно.
>Это 90% всех проектов.
Ну так ты работаешь с говном и жалуешься на говно. У меня на первой работе жирнючий монолит на фласке переписывали, так как эта залупа отжирала слишком много ресурсов при скалировании. Это уже нормальная практика.
Начинать надо в Windows Substem for Linux или прям в линуксе каком-то. Dockerfile и docker-compose.yml напишешь в конце, разве что можешь себе контейнером поднять базу данных, монгу эту самую или что-то такое.
По структуре смотри сюда https://12factor.net/ там и пишет, что разделять на dev, prod и т.д. плохая идея
Отличия должно быть разве что в конфигурационных файлах вроде .env или даже просто те самые сущности, но в виде переменных окружения
Не понимаю. Так ведь join просто заблокирует выполнение основного треда до завершения отдельного потока? А поток-то досрочно прервать возможно?
>select это быстрая операция.
И, что немаловажно, насколько я понимаю, через всё тот же селект (в смысле сокетов) работают и те самые запросы к сторонним базам данных. Вот эти вот: >>28157
Ну и объясните мне, что хотел сказать тот сударь, когда написал про неадекватный мультитрединг питона, и в итоге привёл в пример стороннюю БД, которая "вносит дополнительные задержки и поэтому без асинхронки там никак". Да, я согласен, нельзя закэшировать всё, включая небо. Придётся и асинхронные запросы выполнять. А в чём проблема их выполнить? Он же идут через тот же селект, что и все остальные данные, передаваемые с сервера и на сервер. И при чём тут GIL, если распараллеливанием этого вообще операционная система занимается?
Делаю на виртуалке через ssh, там же контейнеры валяются. Мне в принципе удобно и сразу в докере, vscode умеет удобно отображать это вот всё, просто хотелось бы уточнить как надо.
Обычно запускал через nginx pm2 с подтягиванием certbota, поскольку общаюсь со сторонними апи и надо всё проверять прямо в процессе. Вот и подумал почему бы сразу через докер не собирать и не париться с деплоем впоследствии.
Про env да, звучит довольно удобно, но не знаю как это скажется на скорости. Мои сервисы это прокладки между нашим основным сервисом и другими, там всё шаблонно с минимальными правками потому и появилась мысль просто делать шаблоны запросов в json Хотя казалось бы, но у многих тот же oauth отличается и есть индивидумы которые передают секретки в боди, а не хедере. Вот думаю над структурой пока число таких проектов не разлослось до пары десятков.
Я в вебе буквально пару месяцев. Всё такое новое тут.
nc localhost 878
ответ сервера: Hello, enter phrase
Тут я типа отправляю ему байты
Он мне снова отвечает
и так далее
Так вот, проблема такова, что я не могу получить его второй ответ, чтобы не делал, удается получить "Hello, enter phrase", я отправляю байты, пытаюсь получить ответ, который при обычном подключении через неткат есть, а у меня его нету
В чем может быть дело?
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8787))
print(client_socket.recv(512).decode())
client_socket.send("LOGIN 1234".encode())
# Вот тут уже я не получаю ответ, а в netcat получил его
print(client_socket.recv(512).decode())
>И при чём тут GIL, если распараллеливанием этого вообще операционная система занимается?
Так не занимается же, в один момент активен только один тред питонячьего процесса, остальные спят. Да и само количество тредов ограниченно операционной системой, а их переключение в среднем более дорогая операция, чем обслуживание эвент лупа.
Вангую что ты гавно отправляешь, а не авторизацю. Посмотри на стороне джавы что отправляешь или если это не твой личный сервер,то лови пакеты
> Нахуярить кэша это не архитектура
Потому что ты так сказал?
К БД были конкретные требования - выполнять поиск и выдачу максимально быстро. Поэтому архитекторы нахуярили кеш всюду куда могли. Кешируются часто запрашиваемые данные, кешируются частые запросы, кешируются планы выполнения этих запросов. Другого пути решения просто нет.
> Так может быть, только если у тебя монолитное приложение на питоне, а такие все чаще распиливаются на микросервисы по понятным причинам.
Вот нихуя непонятны причины. Если вам нужно захуярить проект и сделать это быстро, то микросервисы идут лесом. Потмо когда заказчик скажет, что проект ок и продолжаем банкет уже можно его пилить на что угодно. Если есть смысл. Порой смысла нет. Не всем нужно стучать в 4 апи одновременно для 500 пользователей.
> Ну так ты работаешь с говном и жалуешься на говно.
Поправка. Я залуюсь на ваше говно, которое вы пихаете всюду просто чтоб было.
> У меня на первой работе жирнючий монолит на фласке переписывали, так как эта залупа отжирала слишком много ресурсов при скалировании.
У меня на работе переписывали асинхронный сервер на фласк чтоб повысить его производительность. Охуеть да?
>>И при чём тут GIL, если распараллеливанием этого вообще операционная система занимается?
>Так не занимается же, в один момент активен только один тред питонячьего процесса, остальные спят.
Я имел в виду само получение данных. А для их обработки больше одного треда-то и не надо. Зачем больше тредов, если у тебя процесс один и тот же? Треды нужны чтобы переключаться между задачами. Когда один тред работает над одной задачей, но не может выполнить её прямо сейчас, потому что некий ресурс ещё не готов отдать данные, чтобы он не блокировал работу над другими задачами, треды переключаются.
А в случае с запросами к удалённым базам данных через селект, зачем переключаться? Тебе операционная система сказала "вот эти, вот эти и вот эти данные получены, прими их". И дальше ты их в любом порядке обрабатываешь. Но не все одновременно, так как у тебя процесс-то всего один. Зачем их параллельно на одном и том же ядре процессора обрабатывать? Какой в этом смысл?
Я вот пытаюсь ответ на этот вопрос получить. Какой-то конкретный пример можете привести, что это вообще надо? Кроме того что "мне вот так захотелось потому что я привык так писать, чтобы одной лопатой копались десять ям одновременно и мне пофиг, что их вполне уместно было бы копать последовательно, а не параллельно".
>Да и само количество тредов ограниченно операционной системой, а их переключение в среднем более дорогая операция, чем обслуживание эвент лупа.
Я имею в виду получение данных в разных сокетах идёт параллельно. Хотя в итоге всё равно последовательно, скорее всего. Но в любом случае этим занимается операционная система, а не сам сервер. Складывает там пакетик к пакетику, проверяет у них заголовочки и всё такое. А сервер получает управление от селекта в одном единственном потоке, и это настолько же эффективно, насколько и эвент луп. Это по сути он и есть. Пришли данные - это событие. Обработали, проверили, что новых данных нет - прекратили работу. Всё это в одном потоке. И больше не надо, как мне кажется.
Для дополнительных ядер - да, есть смысл по потоку создать. Но и тут у питона никакие GIL не проявляются. Так в чём проблема с GIL а Питоне?
>>И при чём тут GIL, если распараллеливанием этого вообще операционная система занимается?
>Так не занимается же, в один момент активен только один тред питонячьего процесса, остальные спят.
Я имел в виду само получение данных. А для их обработки больше одного треда-то и не надо. Зачем больше тредов, если у тебя процесс один и тот же? Треды нужны чтобы переключаться между задачами. Когда один тред работает над одной задачей, но не может выполнить её прямо сейчас, потому что некий ресурс ещё не готов отдать данные, чтобы он не блокировал работу над другими задачами, треды переключаются.
А в случае с запросами к удалённым базам данных через селект, зачем переключаться? Тебе операционная система сказала "вот эти, вот эти и вот эти данные получены, прими их". И дальше ты их в любом порядке обрабатываешь. Но не все одновременно, так как у тебя процесс-то всего один. Зачем их параллельно на одном и том же ядре процессора обрабатывать? Какой в этом смысл?
Я вот пытаюсь ответ на этот вопрос получить. Какой-то конкретный пример можете привести, что это вообще надо? Кроме того что "мне вот так захотелось потому что я привык так писать, чтобы одной лопатой копались десять ям одновременно и мне пофиг, что их вполне уместно было бы копать последовательно, а не параллельно".
>Да и само количество тредов ограниченно операционной системой, а их переключение в среднем более дорогая операция, чем обслуживание эвент лупа.
Я имею в виду получение данных в разных сокетах идёт параллельно. Хотя в итоге всё равно последовательно, скорее всего. Но в любом случае этим занимается операционная система, а не сам сервер. Складывает там пакетик к пакетику, проверяет у них заголовочки и всё такое. А сервер получает управление от селекта в одном единственном потоке, и это настолько же эффективно, насколько и эвент луп. Это по сути он и есть. Пришли данные - это событие. Обработали, проверили, что новых данных нет - прекратили работу. Всё это в одном потоке. И больше не надо, как мне кажется.
Для дополнительных ядер - да, есть смысл по потоку создать. Но и тут у питона никакие GIL не проявляются. Так в чём проблема с GIL а Питоне?
>Я так и не понял прикола промисов в жсе и чем они отличаются от обычных методов с if response.ok
От каких методов? До промисов были колбэки, а с ними охуеешь комплексные цепочки строить. Сравни создание запроса с XMLHttpRequest и c фетчем, например.
>Они позволяют не ждать ответа и крутить код дальше?
Они позволяют не блочить основной покпок в однопоточной среде. Однохуйственно для севера, но на фронтенде обычно сидит конечный пользователь с непредсказуемым состоянием, но с предсказуемой реакцией на отсутствие фидбэка о действии. И сидит он скорее всего не на одной странице.
>Но зачем, если он практически всегда линейный и следующая реакция зависит от ответа и программа в любом случае должна ждать ответ
У тебя хттп головного мозга, не все програмные взаимодействия сводятся к запрос-ответ.
>а не делать лишних телодвижений, еслм ответ пришёл не такой какой ожидался
Так промисы и не делают лишних движений в контексте промиса. Пока процессор ждёт завершения запроса, но может обработать другой.
Нет, говно не отправляю, там нет механизма авторизации, работает через неткат нормально, через питоны хуево, делаю тоже самое
>Вот нихуя непонятны причины. Если вам нужно захуярить проект и сделать это быстро, то микросервисы идут лесом.
Дед, хватит работать в говне, даже mvp делают на микросервисах потому что схема отработана, есть уже готовые фреймворки для всего этого. Поставил реббит
или настроил gRPC для обмена сообщениями и ебош.
>У меня на работе переписывали асинхронный сервер на фласк чтоб повысить его производительность. Охуеть да?
Потому что у тебя там базодолбильни c селектами
Всегда было интересно это стремление распилить проект на атомы, которые вроде как должны работать независимо, но в действительности они все зависят друг от друга. Насколько оно интенсивно? Каждая строчка монолита - микросервис?
Я не сторонник монолита, просто вы в микросервисах видите какую-то панацею. Просто распили и будет заебись. Просто вот как часы. Нет, увы, так оно не работает, где всё взаимосвязано. Никакие ассинки тут не помогут.
Например, есть последовательность из 3-4 запросов, при этом каждый запрос использует ответ из предыдущего. Такое встречается чаще всего и тут ничего не поделать.
Да это очередной тренд.
Как раньше были потоки статей вроде "как мы перекатили всё на носкл и как стало охуенно".
А через некоторое время "как мы перекатили носкл на скл и как стало охуенно".
>>28970
Потому что питономонолиты очень жирно скалировать. В языках, где нагрузку можно разделить на треды с этим проблем нет, как в жабе. Можно вспомнить руби, где часто жаловались на дороговизну увеличения инстансов. Так же следует учитывать неравномерность нагрузки на разные компоненты, у нас матаносервис написан на плюсах, а достаточно тяжёлый препроцессинг данных от корпоративных клиентов на скале и во время прайм-тайма можно достаточно дёшево увеличить бутылочное горлышко.
Ничто не мешает разделить монолит на составляющие без парадигмы микросервисов. Даже в том же джанго проект делится на app-сы, которые по сути должны юыть независимыми друг от друга.
Или это просто попытка наебать ос, когда она и так должна распределять нагрузку, в итоге получается просто перекидывание педаль вкдосипеда с задних колёс на передние. Конструктивно выглядит иначе, но суть такая же.
>Ничто не мешает разделить монолит на составляющие без парадигмы микросервисов
А что бы составляющие могли масштабироваться независимо от друг друга, то без них не обойтись
>Даже в том же джанго проект делится на app-сы, которые по сути должны юыть независимыми друг от друга.
Причем тут аппы, если их нельзя запустить отдельно друг от друга в разном количестве экземпляров?
>Или это просто попытка наебать ос, когда она и так должна распределять нагрузку, в итоге получается просто перекидывание педаль вкдосипеда с задних колёс на передние.
Запуская инстанс монолита, ты разварачиваешь вообще весь проект, при этом часть компонентов, тебе масштабировать вообще не нужно, так как они могут нормально работать и без этого.
Про ОС я вообще ничего не понял что ты имеешь ввиду. По тредам ты масштабировать не сможешь, так как там могут быть CPU bound задачи и даже если там идет обычное ожидание, то смена тредов GIL'ом убьет всю производительность, так как каждому треду выделяется 5 мс перед сменой, даже если там ничего не происходит и производительность нужна в другом месте.
> Дед, хватит работать в говне, даже mvp делают на микросервисах потому что схема отработана
Раз назвал меня дедом, занчит все же осознаешь, что тут старший. Так вот послушай, что старший тебе скажет.
Была у нас микросервисная архитектура. Былов се модно и молодежно. И проект пилился год. Потому что каждый серваис пилили разыне люди. А потом все это пытались вместе собрать. Люди были разные с разным уровнем образования, разным уровнем iq и каждый со свои богатым внутренним миром. К каждому надсмотрщика не поставишь. В итоге у одного сервиса не было логов вообще, у другого логировался каждый чих, что за миллионом INFO не найти ERROR. Третий вообще сделал не убиваемое приложение, которое в цикле бесконечно ретраило. А когда это стали собирать в docker выяснилось что 90% переменных у всех сервисов одинаковые. И если нужно поменять одну настройку, то меняй ее у каждого контейнера. Если хоть один забыл, то все работает. но совершенно непредсказуемо. Тесты конечно же были и покрытие было 90%+ на каждый сервис. Тока все вместе это собрать был тот еще квест.
Сейчас уже у многих руки чешутся написать про хуевую организацию. Ну да. Но как только начали mvp пилить на монолитах эти же люди стали делать работу быстрее и лучше. Т.к. можно было видеть весь код в одном месте и тут же его ревьюить меньшим числом людей. Не меняя организацию изменился результат. И деплой стал проще. И даже стало сразу видно, что из этого реально можно выделить в микросервис, а что и так норм работает.
> Потому что у тебя там базодолбильни c селектами
Нет. там были АПИ долбильни. Которые своими асинхронными запросами плодили инстансы на удаленном сервисе и увеличивали время его ответа.
Вы вечно пиздите, что кеш не панацея, селект не панацея, хуйнянейм не панацея. Но что то про свою асинхронность так не говорите. А ведь эти ваши новомодные изыски как стеклянный хуй. Вы его всем дуракам даете, а потом кто руки поцарапает, кто жопу поранит. Это создает негативный фон для, в общем то нормальной, но ситуативной технологии.
> Дед, хватит работать в говне, даже mvp делают на микросервисах потому что схема отработана
Раз назвал меня дедом, занчит все же осознаешь, что тут старший. Так вот послушай, что старший тебе скажет.
Была у нас микросервисная архитектура. Былов се модно и молодежно. И проект пилился год. Потому что каждый серваис пилили разыне люди. А потом все это пытались вместе собрать. Люди были разные с разным уровнем образования, разным уровнем iq и каждый со свои богатым внутренним миром. К каждому надсмотрщика не поставишь. В итоге у одного сервиса не было логов вообще, у другого логировался каждый чих, что за миллионом INFO не найти ERROR. Третий вообще сделал не убиваемое приложение, которое в цикле бесконечно ретраило. А когда это стали собирать в docker выяснилось что 90% переменных у всех сервисов одинаковые. И если нужно поменять одну настройку, то меняй ее у каждого контейнера. Если хоть один забыл, то все работает. но совершенно непредсказуемо. Тесты конечно же были и покрытие было 90%+ на каждый сервис. Тока все вместе это собрать был тот еще квест.
Сейчас уже у многих руки чешутся написать про хуевую организацию. Ну да. Но как только начали mvp пилить на монолитах эти же люди стали делать работу быстрее и лучше. Т.к. можно было видеть весь код в одном месте и тут же его ревьюить меньшим числом людей. Не меняя организацию изменился результат. И деплой стал проще. И даже стало сразу видно, что из этого реально можно выделить в микросервис, а что и так норм работает.
> Потому что у тебя там базодолбильни c селектами
Нет. там были АПИ долбильни. Которые своими асинхронными запросами плодили инстансы на удаленном сервисе и увеличивали время его ответа.
Вы вечно пиздите, что кеш не панацея, селект не панацея, хуйнянейм не панацея. Но что то про свою асинхронность так не говорите. А ведь эти ваши новомодные изыски как стеклянный хуй. Вы его всем дуракам даете, а потом кто руки поцарапает, кто жопу поранит. Это создает негативный фон для, в общем то нормальной, но ситуативной технологии.
Подвинь кнопку ближе к тексту и буде норм. Да слово Авторизация звучит как то двусмысленно, надо написать Получение пользователем прав на чтение и редактирование контента. Тогда пользователям будет понятно зачем им нужно заполнять поля.
мимо кабан
>Была у нас микросервисная архитектура. Былов се модно и молодежно. И проект пилился год. Потому что каждый серваис пилили разыне люди. А потом все это пытались вместе собрать. Люди были разные с разным уровнем образования, разным уровнем iq и каждый со свои богатым внутренним миром. К каждому надсмотрщика не поставишь. В итоге у одного сервиса не было логов вообще, у другого логировался каждый чих, что за миллионом INFO не найти ERROR. Третий вообще сделал не убиваемое приложение, которое в цикле бесконечно ретраило. А когда это стали собирать в docker выяснилось что 90% переменных у всех сервисов одинаковые. И если нужно поменять одну настройку, то меняй ее у каждого контейнера. Если хоть один забыл, то все работает. но совершенно непредсказуемо. Тесты конечно же были и покрытие было 90%+ на каждый сервис. Тока все вместе это собрать был тот еще квест.
Ебала этих говноедов без нормально ревью и стандартизации микросервисов представили? Охуеть просто, когда понадобилось все месте собрать, то ВНЕЗАПНО окалось, что каждый написал говно. Да у вас же шарашкина контора без налаженных процессов.
>И если нужно поменять одну настройку, то меняй ее у каждого контейнера. Если хоть один забыл, то все работает. но совершенно непредсказуемо.
Вы что ли экстеншены не освоили?
Тег <div>
> Была у нас микросервисная архитектура. Былов се модно и молодежно. И проект пилился год. Потому что каждый серваис пилили разыне люди. А потом все это пытались вместе собрать. Люди были разные с разным уровнем образования, разным уровнем iq и каждый со свои богатым внутренним миром. К каждому надсмотрщика не поставишь.
А у монолит, стало быть, пилят поголовно чеды с умным волевым лицами, которые с детства на производство просились?
> В итоге у одного сервиса не было логов вообще, у другого логировался каждый чих, что за миллионом INFO не найти ERROR.
А в монолите логирование подключается автоматически с правильными уровнями логов?
> А когда это стали собирать в docker
Ебала челов, которые все сервисы в одном докер компоузе хранят представили?
> выяснилось что 90% переменных у всех сервисов одинаковые
Я даже боюсь представить что вы там нахуевертили. 5 сервисов, каждый из которых в бд ходит?
> И если нужно поменять одну настройку, то меняй ее у каждого контейнера. Если хоть один забыл, то все работает. но совершенно непредсказуемо.
Предлагаю следующий раз сначала думать, а потом колбасить код
> И даже стало сразу видно, что из этого реально можно выделить в микросервис, а что и так норм работает.
То есть, вы реально сначала начали пилить микросервисы, а потом думать что вы хотите написать?
> Нет. там были АПИ долбильни. Которые своими асинхронными запросами плодили инстансы на удаленном сервисе и увеличивали время его ответа.
Пиздос...
> Вы вечно пиздите, что кеш не панацея, селект не панацея, хуйнянейм не панацея. Но что то про свою асинхронность так не говорите. А ведь эти ваши новомодные изыски как стеклянный хуй. Вы его всем дуракам даете, а потом кто руки поцарапает, кто жопу поранит. Это создает негативный фон для, в общем то нормальной, но ситуативной технологии.
Красота микросервисов заключается в том, что каждый из них должен быть независимым, кроме круда под бд, и так же независимо масштабироваться. А еще это дополнительный уровень абстракции, который упрощает разработку. Все твои претензии можно так же и к ООП отнести. АРЯЯЯ КОНФИГИ ПО ВСЕМУ КОДУ РАСКИДАНЫ АРЯЯЯЯ КЛАССЫ ПО РАЗНОМУ РАБОТАЮТ И НИХУЯ НЕ ПОНЯТНО только это говорит о том, что ты не умеешь технологией пользоваться
> Была у нас микросервисная архитектура. Былов се модно и молодежно. И проект пилился год. Потому что каждый серваис пилили разыне люди. А потом все это пытались вместе собрать. Люди были разные с разным уровнем образования, разным уровнем iq и каждый со свои богатым внутренним миром. К каждому надсмотрщика не поставишь.
А у монолит, стало быть, пилят поголовно чеды с умным волевым лицами, которые с детства на производство просились?
> В итоге у одного сервиса не было логов вообще, у другого логировался каждый чих, что за миллионом INFO не найти ERROR.
А в монолите логирование подключается автоматически с правильными уровнями логов?
> А когда это стали собирать в docker
Ебала челов, которые все сервисы в одном докер компоузе хранят представили?
> выяснилось что 90% переменных у всех сервисов одинаковые
Я даже боюсь представить что вы там нахуевертили. 5 сервисов, каждый из которых в бд ходит?
> И если нужно поменять одну настройку, то меняй ее у каждого контейнера. Если хоть один забыл, то все работает. но совершенно непредсказуемо.
Предлагаю следующий раз сначала думать, а потом колбасить код
> И даже стало сразу видно, что из этого реально можно выделить в микросервис, а что и так норм работает.
То есть, вы реально сначала начали пилить микросервисы, а потом думать что вы хотите написать?
> Нет. там были АПИ долбильни. Которые своими асинхронными запросами плодили инстансы на удаленном сервисе и увеличивали время его ответа.
Пиздос...
> Вы вечно пиздите, что кеш не панацея, селект не панацея, хуйнянейм не панацея. Но что то про свою асинхронность так не говорите. А ведь эти ваши новомодные изыски как стеклянный хуй. Вы его всем дуракам даете, а потом кто руки поцарапает, кто жопу поранит. Это создает негативный фон для, в общем то нормальной, но ситуативной технологии.
Красота микросервисов заключается в том, что каждый из них должен быть независимым, кроме круда под бд, и так же независимо масштабироваться. А еще это дополнительный уровень абстракции, который упрощает разработку. Все твои претензии можно так же и к ООП отнести. АРЯЯЯ КОНФИГИ ПО ВСЕМУ КОДУ РАСКИДАНЫ АРЯЯЯЯ КЛАССЫ ПО РАЗНОМУ РАБОТАЮТ И НИХУЯ НЕ ПОНЯТНО только это говорит о том, что ты не умеешь технологией пользоваться
> Да у вас же шарашкина контора без налаженных процессов.
Спасибо кэп.
Зато у нас очень толерантное руководство. Поощряет инициативы. И если джуны предложат написать новый проект на микросервисах, то флаг всем в руки. А менеджмент еще поддакивает, давайте попробуем.
В итоге 8 контейнеров без необходимости масштабирвоания на одном хосте.
>>29314
> Вы что ли экстеншены не освоили?
Мы там дохуя чего осваивали. Если ты про синтаксис yaml позволяющий неиспользование части env то тут тоже удалось соснуть. Значения переменных одинаковые, но имена разные. Не спрашивай как так вышло.
>>29422
> А у монолит, стало быть, пилят поголовно чеды с умным волевым лицами, которые с детства на производство просились?
Монолит проверяют такие целы. Одну кодовую базу тупо проще проверять.
> А в монолите логирование подключается автоматически с правильными уровнями логов?
В монолите это может делать один человек в едином стиле.
> Я даже боюсь представить что вы там нахуевертили. 5 сервисов, каждый из которых в бд ходит?
8 и часть из них ходят друг в друга.
> То есть, вы реально сначала начали пилить микросервисы, а потом думать что вы хотите написать?
Что писать было понятно с самого начала. Просто нименее опытные оказались наиболее инициативными и убедили что микросервисы тут вот прям то что надо. По сути за гос счет удовлетворили свои амбиции.
> Пиздос...
Что не так? Там все было полностью асинхронное. 100500 запросов в приложуху которая производит вычисления нес вязанные с БД, просто сложные расчеты. Хотели ее так ускорить.
> только это говорит о том, что ты не умеешь технологией пользоваться
Я то как раз умею. И я бы делал монолит. Потому что не было смысла ни один из этих сервисов делать сервисом. Их не надо было мастабировать. Некоторые все что делали, это отдавали результат работы АПИ по запросу. Тоже самое могла сделать и основная приложуха. парочка делали запросы постоянно и отдавали последний результат. Не помню уже нахуя так, но опять же можно было заменить на celery По факту проебали время за которое можно было пару проектов запилить такого же уровня. Но нет. Джуны начитались ереси и начали творить какую то дичь. вышла сложно поддерживаемая хуита.
> Да у вас же шарашкина контора без налаженных процессов.
Спасибо кэп.
Зато у нас очень толерантное руководство. Поощряет инициативы. И если джуны предложат написать новый проект на микросервисах, то флаг всем в руки. А менеджмент еще поддакивает, давайте попробуем.
В итоге 8 контейнеров без необходимости масштабирвоания на одном хосте.
>>29314
> Вы что ли экстеншены не освоили?
Мы там дохуя чего осваивали. Если ты про синтаксис yaml позволяющий неиспользование части env то тут тоже удалось соснуть. Значения переменных одинаковые, но имена разные. Не спрашивай как так вышло.
>>29422
> А у монолит, стало быть, пилят поголовно чеды с умным волевым лицами, которые с детства на производство просились?
Монолит проверяют такие целы. Одну кодовую базу тупо проще проверять.
> А в монолите логирование подключается автоматически с правильными уровнями логов?
В монолите это может делать один человек в едином стиле.
> Я даже боюсь представить что вы там нахуевертили. 5 сервисов, каждый из которых в бд ходит?
8 и часть из них ходят друг в друга.
> То есть, вы реально сначала начали пилить микросервисы, а потом думать что вы хотите написать?
Что писать было понятно с самого начала. Просто нименее опытные оказались наиболее инициативными и убедили что микросервисы тут вот прям то что надо. По сути за гос счет удовлетворили свои амбиции.
> Пиздос...
Что не так? Там все было полностью асинхронное. 100500 запросов в приложуху которая производит вычисления нес вязанные с БД, просто сложные расчеты. Хотели ее так ускорить.
> только это говорит о том, что ты не умеешь технологией пользоваться
Я то как раз умею. И я бы делал монолит. Потому что не было смысла ни один из этих сервисов делать сервисом. Их не надо было мастабировать. Некоторые все что делали, это отдавали результат работы АПИ по запросу. Тоже самое могла сделать и основная приложуха. парочка делали запросы постоянно и отдавали последний результат. Не помню уже нахуя так, но опять же можно было заменить на celery По факту проебали время за которое можно было пару проектов запилить такого же уровня. Но нет. Джуны начитались ереси и начали творить какую то дичь. вышла сложно поддерживаемая хуита.
>Значения переменных одинаковые, но имена разные.
>Мы написали говно - виноваты микросервисы[x1]
>100500 запросов в приложуху которая производит вычисления нес вязанные с БД, просто сложные расчеты. Хотели ее так ускорить.
И что мешало в этой приложухе ограничить количество инстансов или сначала по профилировать ее?
>Мы написали говно - виноваты микросервисы[x2]
>В монолите это может делать один человек в едином стиле.
Ну охуеть, а договорится перед этим нельзя было?
>Мы написали говно - виноваты микросервисы[x3]
>Монолит проверяют такие целы. Одну кодовую базу тупо проще проверять.
А в монорепе не судьба все держать? Или вы не разделяете компоненты в ваших монолитах?
>Я то как раз умею
Охуенно умеешь, коммуникации никакой, даже о общих ресурсах и логах никто не договорился, никто не ревьюил чужой код что бы не было говна, а потом получается говно, вот удивительно.
> И что мешало в этой приложухе ограничить количество инстансов или сначала по профилировать ее?
Не предусмотрено конструкцией. Там просто по сути был ее запуск. Сколько раз вызвали - столько ось ее запустила.
> Ну охуеть, а договорится перед этим нельзя было?
Нет. Проект делал новая команда недавно набраная но очень талантливая
> А в монорепе не судьба все держать? Или вы не разделяете компоненты в ваших монолитах?
От случая к случаю. Есть и монорепы. Этот писали "по всем правилам"
> Охуенно умеешь, коммуникации никакой, даже о общих ресурсах и логах никто не договорился
Вот ты такой умный. Делаешь свой асинхронный проект, как ты любишь. Сдаешь его. А на следующий день тебя ставят перед фактом что надо быстро допилить хуйню, которую уже пол года пилят и не допилят. Там хуйня вопрос. Вот тогда я посмотрю как ты будешь своей комуникацией переписывать весь преокт правильно. Ах да. Времени на переписывание тебе никто не даст.
> никто не ревьюил чужой код
Людские ресурсы ограничены. Что успевали, то ревьюили. Как только начали все пилить в монолитах резко повысилось качество кода.
> Мы написали говно - виноваты микросервисы
Виноват ты лично и тебе подобные.
Все что было вынесено в сервисы не предполагало дальнейшего масштабирования.
Просто авторы идеи видимо читали этот тред и нахуячили их потому что им сказали то так все делают.
> Монолит проверяют такие целы. Одну кодовую базу тупо проще проверять.
Да ты что? А мне вот кажется, что проще проверять API и корректность жсонов, чем ебаться с кодом. Потому что люди сначала проектируют API и контракты, а потом колбасят код. Точно так же, как и с ООП в монолите -- сначала описываются контракты классов, а потом пишется код. Причем на время разработки связи, которые описываются контрактом банально мокаются
> В монолите это может делать один человек в едином стиле.
Нет, не может. Ну или с таким же успехом логи прикрутить один человек может ко всем сервисам. Не неси совсем уж хуйни, логи нужно не просто прикрутить, а выстроить пайплайн логирования, а для этого надо разобраться в коде
> 8 и часть из них ходят друг в друга.
А что там блять может на 90% совпадать? То есть, у вас либо все сервисы ходят друг в друга по кругу, что означает, что вы долбаебы, которые не смогли на микросервисы распилить, либо 90% совпадающих энвов это LOG_LEVEL, LOGFILE_NAME, IS_DEBUG и подобное, но такие энвы иметь нормально
> Что писать было понятно с самого начала. Просто нименее опытные оказались наиболее инициативными и убедили что микросервисы тут вот прям то что надо. По сути за гос счет удовлетворили свои амбиции.
Я скорее склоняюсь к мысли, что у вас команда дедов заросла тиной и покрылась пылью на одном стеке и подходе. А попытавшись сделать что-то новое произошел обсер. И теперь начинаются маневры про то, что это микросервисы говна в шаровары залили
> Что не так? Там все было полностью асинхронное. 100500 запросов в приложуху которая производит вычисления нес вязанные с БД, просто сложные расчеты. Хотели ее так ускорить.
Ну так, а в чем проблема? Так это и должно работать тащемта
> Я то как раз умею
Я заметил лол
> И я бы делал монолит.
Монолит уместен в двух случаях:
1. У вас вообще нет работы с сетью. Например, все что вы делаете это закидываете числа в свою числодробилку локально и получаете какой-то ответ. Эти числа никуда дальше не идут и на этом вся работа закончена.
2. Это легасиговно, которое когда-то написали монолитом и переделывать концепцию не просто дорого, а ОЧЕНЬ дорого.
Во всех остальных случаях микросервисы ВСЕГДА лучше.
>>29527
> Не предусмотрено конструкцией. Там просто по сути был ее запуск. Сколько раз вызвали - столько ось ее запустила.
Пиздец, я тебе тут целую стену текста накатал, а ты блять вообще не понимаешь даже что такое концепция микросервисов, просто охуеть
> Монолит проверяют такие целы. Одну кодовую базу тупо проще проверять.
Да ты что? А мне вот кажется, что проще проверять API и корректность жсонов, чем ебаться с кодом. Потому что люди сначала проектируют API и контракты, а потом колбасят код. Точно так же, как и с ООП в монолите -- сначала описываются контракты классов, а потом пишется код. Причем на время разработки связи, которые описываются контрактом банально мокаются
> В монолите это может делать один человек в едином стиле.
Нет, не может. Ну или с таким же успехом логи прикрутить один человек может ко всем сервисам. Не неси совсем уж хуйни, логи нужно не просто прикрутить, а выстроить пайплайн логирования, а для этого надо разобраться в коде
> 8 и часть из них ходят друг в друга.
А что там блять может на 90% совпадать? То есть, у вас либо все сервисы ходят друг в друга по кругу, что означает, что вы долбаебы, которые не смогли на микросервисы распилить, либо 90% совпадающих энвов это LOG_LEVEL, LOGFILE_NAME, IS_DEBUG и подобное, но такие энвы иметь нормально
> Что писать было понятно с самого начала. Просто нименее опытные оказались наиболее инициативными и убедили что микросервисы тут вот прям то что надо. По сути за гос счет удовлетворили свои амбиции.
Я скорее склоняюсь к мысли, что у вас команда дедов заросла тиной и покрылась пылью на одном стеке и подходе. А попытавшись сделать что-то новое произошел обсер. И теперь начинаются маневры про то, что это микросервисы говна в шаровары залили
> Что не так? Там все было полностью асинхронное. 100500 запросов в приложуху которая производит вычисления нес вязанные с БД, просто сложные расчеты. Хотели ее так ускорить.
Ну так, а в чем проблема? Так это и должно работать тащемта
> Я то как раз умею
Я заметил лол
> И я бы делал монолит.
Монолит уместен в двух случаях:
1. У вас вообще нет работы с сетью. Например, все что вы делаете это закидываете числа в свою числодробилку локально и получаете какой-то ответ. Эти числа никуда дальше не идут и на этом вся работа закончена.
2. Это легасиговно, которое когда-то написали монолитом и переделывать концепцию не просто дорого, а ОЧЕНЬ дорого.
Во всех остальных случаях микросервисы ВСЕГДА лучше.
>>29527
> Не предусмотрено конструкцией. Там просто по сути был ее запуск. Сколько раз вызвали - столько ось ее запустила.
Пиздец, я тебе тут целую стену текста накатал, а ты блять вообще не понимаешь даже что такое концепция микросервисов, просто охуеть
Или тут все гуру постигают бесплатно?
https://www.online-python.com/80MayWLEeG
Напишите программу, которая выводит часть последовательности 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 ... (число повторяется столько раз, чему равно). На вход программе передаётся неотрицательное целое число n — столько элементов последовательности должна отобразить программа. На выходе ожидается последовательность чисел, записанных через пробел в одну строку.
Например, если n = 7, то программа должна вывести 1 2 2 3 3 3 4.
Видимо пайчарм этого не понимает, потому что качал то я именно 3.10, если сайт не врёт.
Потому что условие в while проверяется на итерациях while, а не вложенного for. Удали у принта один отступ и увидишь на какие значения попадает проверка условия while - и там всегда условие выполняется, отсюда и бесконечный цикл.
>>29679
Все он понимает, криво поставил или одно, или другое. Смотри вывод
python -V
в консоли.
>Ты можешь мысли яснее выражать?
Да, я имел ввиду, что актуальнее учить джуну, чтобы устроиться через год например. Сейчас знаю джангу на начальном уровне хочу двигаться дальше, а куда - непонятно
Мне похуй, код вполне читаемый и работает. Если такое легкое выражение не могут прочесть, то пусть идёт доучиваться на курсах или откуда он там пришёл.
>Зато у нас очень толерантное руководство
И очень хороший заказчик, который за всё это платит, да?
Спасибо
Селениум может исполнять жс, так как юзает движок браузера.
pandas
pandas для работы с данными, он умеет кушоть всякие простые форматированные таблички, но не более.
А другие либы разве не могут? А еще, если мне нужно, чтобы на основе собранных данных был сформирован excel'евский документ, мне поможет в этом какая нибудь из этих библиотек?
Это разный подход. Он это делает автоматически, но возможности ограничены. Примерно как в эксель ты можешь скопипастить табличные данные или извлечь из страницы.
В других ты можешь что угодно заскриптовать.
Экспортировать можно где угодно.
Что тогда будет самым универсальным и сбалансированным в плане возможностей? Selenium?
Погугли там что-нибудь вроде HBox, добавь его вместо нижней метки, а уже туда добавь метку и кнопку. В Gtk так, а больше я уже давно ничего не видел.
А вообще-то такие вещи лучше делать чем-нибудь вроде Glade, чтобы как в делфи накидать кнопок на формочку, сериализовать, а потом уже в работающей программе просто загрузить всю форму из файла. Ну или по крайней мере посмотреть в design-time, что у тебя получится на формочке накидать, чтобы потом накидать всё это поэлементно у себя в программе.
> "Сильное заявление. Доказывать его я, конечно, не буду..."
Хули там доказывать, самая дешевая масштабируемость и возможность использовать по 500 раз одни и те же сервисы вообще не заморачиваясь по поводу интеграций => самая дешевая разработка => микросервисы всегда лучше для вебсервисов
> Ну я вот тоже не понимаю, объясни нам.
google.com
>>>Монолит уместен в двух случаях:
>>>1. У вас вообще нет работы с сетью. Например, все что вы делаете это закидываете числа в свою числодробилку локально и получаете какой-то ответ. Эти числа никуда дальше не идут и на этом вся работа закончена.
>>>2. Это легасиговно, которое когда-то написали монолитом и переделывать концепцию не просто дорого, а ОЧЕНЬ дорого.
>>>Во всех остальных случаях микросервисы ВСЕГДА лучше.
>>"Сильное заявление. Доказывать его я, конечно, не буду..."
>Хули там доказывать, самая дешевая масштабируемость
То есть если мы делаем хоть что-либо кроме закидывания чисел в числодробилку, то ВСЕГДА мы должны закладывать возможность значительного масштабирования?
Да и считать всю последовательность ненужно, надо только несколько
> То есть если мы делаем хоть что-либо кроме закидывания чисел в числодробилку, то ВСЕГДА мы должны закладывать возможность значительного масштабирования?
Пиздец ты уебок, понял что обосрался, но начал вилять жопой, чтобы на анонимном форуме не признать, что неправ. Просто охуеть. Но ладно, я натыкаю тебя носом
> возможность переиспользовать сервисы без проведения интеграции, что ужешевляет разработку
А про масштабируемость это к тому, что дешевле не только разработка, но и поддержка проекта
> Да ты что? А мне вот кажется
Пока тебе кажется я виду результаты.
> Нет, не может.
Но ведь смог же.
> А что там блять может на 90% совпадать?
Там есть внешние сервисы в которые сервисы стучат по разному. Единственный серсис единственной ответственностью.
> у вас либо все сервисы ходят друг в друга по кругу, что означает, что вы долбаебы
А я сразу тебе говорил.
> Я скорее склоняюсь к мысли, что у вас команда дедов заросла тиной и покрылась пылью на одном стеке и подходе. А попытавшись сделать что-то новое произошел обсер.
Ты пытаешься выдать желаемое за действительное не имея неопровержимых доказательств.
> Ну так, а в чем проблема? Так это и должно работать тащемта
Это так быть нихуя не должно. В итоге скорость ответа увеличивается по экспоненте. Просто дебичи разработчики не осознавали разницу между IO блокировкой и загрузкой CPU. А ты осознаешь?
> Монолит уместен в двух случаях
Это классика и она уместна всегда. В отличии от микросервисов и асинхронности.
> Это легасиговно
Охуенный аргумент. В психологии твоей состояние называют пиком глупости. Когда нихуя не знаешь, по вершкам тему прочитал, но уже мнишь себя гением познавшим дзен.
> Пиздец, я тебе тут целую стену текста накатал, а ты блять вообще не понимаешь даже что такое концепция микросервисов
А по моему это ты не понимаешь, что микросервисная архитектура это лишь один из вариантов архитектуры и использовать его надо там, где он уместен. раз ты такой умный, то назови конкретные примеры где эта архитектура уместна. А если сможешь, то и где неуместна.
Да. Там ебанутый заказчик был.
> А про масштабируемость это к тому, что дешевле не только разработка, но и поддержка проекта
А если, допустим, в дальнейшем эти микросеврисы нигде никогда не понадобятся?
Можешь писать нейронки.
Можешь научить ИИ отличать негров от обезьян. Гугл тебя с руками оторвёт за изобретение этого волшебного алгоритма, так как у них целая команда синьоров годами над этой проблемой работает.
> Пока тебе кажется я виду результаты
АУФ
> Но ведь смог же
Что мешало сделать тоже самое в микросервисах? В чем космическая разница?
> А я сразу тебе говорил
Оказывается, прежде чем использовать технологию, в ней нужно разобраться, вау
> Ты пытаешься выдать желаемое за действительное не имея неопровержимых доказательств
То что ты пишешь это и есть неопровержимые доказательства лол
> Это так быть нихуя не должно. В итоге скорость ответа увеличивается по экспоненте.
Схуяли?
> Просто дебичи разработчики не осознавали разницу между IO блокировкой и загрузкой CPU. А ты осознаешь?
Так у тебя должен был быть 1 инстанс апишки, которая получает реквесты и собирает жсоны и 100500 синхронных инстансов аппы, которая занимается расчетами. Апи в зависимости от времени ответа аппы или синхронное, или асинхронное. А вы какую-то хуйни наворотили
> Это классика и она уместна всегда. В отличии от микросервисов и асинхронности.
В вебе не использовать микросервисы = быть дауном
> Охуенный аргумент. В психологии твоей состояние называют пиком глупости. Когда нихуя не знаешь, по вершкам тему прочитал, но уже мнишь себя гением познавшим дзен
Пчел ты так и не понял что такое микросервисная архитектура, но продолжаешь спорить, пиздец
> А по моему это ты не понимаешь, что микросервисная архитектура это лишь один из вариантов архитектуры и использовать его надо там, где он уместен. раз ты такой умный, то назови конкретные примеры где эта архитектура уместна
Конечно, это архитектура онли для веба
> А если сможешь, то и где неуместна.
Неуместна вне веба, все просто
>>30562
Офк 95% сервисов никогда переиспользованы не будут, а всякие аутентификации, логи, метрики, кракены и тому подобное переиспользуются в каждом первом приложении. Что уже сокращает время на разработку на пару сотен часов.
>Пиздец ты уебок, понял что обосрался, но начал вилять жопой
Ебать ты конченный... Ты же животное! Ты понимаешь, что тебя в зоопарке надо держать, и не пускать в треды для людей? Да хотя хули ты понимать можешь, дерьмо тупое?
Я тебе просто задал простой вежливый вопрос. И в итоге ты набираешь полную глотку говна и начинаешь им плеваться во все стороны. Ты же ёбнутый! Ты понимаешь, что ты ёбнутый на всю голову?
>Но ладно, я натыкаю тебя носом
Кого ты там тыкать собралась, блядина ёбаная? Не можешь нормально разговаривать - на хер иди. Мнение дегенератов меня в принципе не интересует. Я лучше с нормальными людьми поговорю.
>возможность переиспользовать сервисы
Ага, блядь, всем нужно каждый сервис переиспользовать, в каждом проекте, блядь.
>>30595
>Офк 95% сервисов никогда переиспользованы не будут, а всякие аутентификации, логи,
Ага, а других способов переиспользовать код, кроме микросервисов, не существует. Модульность и ООП уже не работают, это же прошлый век, а в прошлом году их отключили, как устаревшие. Особенно, когда нужно строчки писать в лог, тут помогут только микросервисы. А заодно ещё и остальные 95 процентов надо обязательно на микросервисы переписать, потому что иначе те 5 процентов тоже не переиспользуются. Блядь, вот я вижу просто, что когда у тупорылого долбоёба заканчиваются аргументы, только тогда он срывается на визг рваножопой истерички и начинает всех подряд оскорблять.
> Кого ты там тыкать собралась, блядина ёбаная? Не можешь нормально разговаривать - на хер иди. Мнение дегенератов меня в принципе не интересует. Я лучше с нормальными людьми поговорю.
Не рвись, чмонь. Я понимаю, что тебе очень обидно, что твое виляние жопой было в грубой форме остановлено, но это только твои проблемы
> Ага, а других способов переиспользовать код, кроме микросервисов, не существует
Пиздец, печальный опыт предыдущего виляния жопой тебя ничему не научил? Окей, я натыкаю тебя еще разок, мне не трудно
> возможность использовать по 500 раз одни и те же сервисы вообще не заморачиваясь по поводу интеграций
Угомонись, додик. И перестань пытаться мои слова переврать или выдрать кусок без контекста и начать с ним спорить
> Блядь, вот я вижу просто, что когда у тупорылого долбоёба заканчиваются аргументы, только тогда он срывается на визг рваножопой истерички и начинает всех подряд оскорблять.
Ну так перестань визжать, в чем проблема?
Обсуждение архитектуры на двоще
Ублюдок, мать твою, а ну, иди сюда, говно собачье, а? Ну, решил ко мне лезть? Ты, засранец вонючий...
Обсуждение архитектуры на мите
Как вам будет угодно! Я всяко могу, как хотите! Пожалуйста, я к вашим услугам!
На проекте мы с руководителем обсуждаем. Он базис представляет, я дополняю, он корректирует. Но во время реализации бывает периодически проебы. Не такие, что подпорками забиваем или вообще переделываем из-за невозможности масштабиравания, но такие, что какую-нибудь таску переделать придется, чтоб выглядело хорошо, которая релиза 2 назад была сделана.
Таску прихоидтся переделывать из-за встратого ТЗ или проеба со стороны разработчика ?
>В отличии от микросервисов и асинхронности
Джанговская тредочушка, ты? Я уже давал тебе свежую порцию урины на лицо, тебе все мало?
Больше из-за тз, т.к. сначала все хорошо выглядит и подходит, но с новыми требованиями узко становится.
Не ссы, это называется рефакторинг и он неизбежен. Сразу хуй ты всё продумаешь, чтоб нигде не запнуться
Ну так это нормально, разрабов для того кабанчики и содержат, чтобы бесконечно меняющиеся требования реализовывали. Если тебя это беспокоит и анонам из пр не веришь, то можешь к Кабан Кабанычу подойти и рассказать про это. Он тебе пояснит, что реализовывать фичу с запасом, когда еще не понятно выстрелит она или нет -- слишком дорого. Дешевле написать минимально работающую версию и выкатить, а если стрельнет, то допилить+часто вообще не понятно что там расширять и улучшать нужно, пока фидбэк от юзеров не получен
Ну, поскольку это скриптовая параша, то можно всякие мат. расчёты делать по быстрому и прочие вместо матлаба. Ну или просто скриптики
По большей части, на нём писать кроме околовеба особо нечего
Ну напиши какой-нибудь видеоплеер. Нет, на нем писать можно почти всё, но юзается он практически только в вебе или нейронках, как сейчас можно.
наоборот вообщето
Окей, напиши видеоплеер, который хостит твои видюшки где-то на cdn, ты можешь задать веб адрес, а плеер спарсит страницу, найдет видюшки и сделает плейлист с отображением мета данных
У него есть конкретные услуги, телеграм тут вообще никаким боком.
Если у тебя нет востребованной услуги, то хоть обвешайся этими ботами.
Нужно получить значение без $. Почему на regex101 проходит, а в компиляторе нет?
Так дело не в боте, а в том, что чел дохуя внешних сервисов интегрировал в свою залупу. Хотя там на самом деле даже 50% от возможного функционала не реализована, особенно в контексте вк. Контакт вообще дырявая хуйня, в которой понятия приватности отсутствует
да, работает. Спасибо
match проверяет подходит ли строка под шаблон. Ты хуяришь шаблон "без символа $" и передаешь строку с $. Казалось бы, что могло пойти не так? Как тебе уже сказали, используй search
ну можно через итерации и словари, но нахуя?
Что за данные? Что за таблица? Ты блять можешь мысли свои формулировать нормально?
Ну опять ну началось, ебать.
Да, pandas наиболее оптимален для вкатуна-оналитика. А bs4 более оптимален для остальных случае.
Что-нибудь спиздить и продавать, очевидно же.
Так что кривенькая дорожка ведет тебя в даркнет.
Ну а там и тюрьмы недалеко.
Видите как трудно вкатунам.
В Fastapi есть способ через pydantic и задание пути к env-файлу, но как по мне тут какая-то "магия", не совсем ясно что делать если фреймворк другой и pydantic юзать не хочется
> видел интервью с создателем глаза бога и он говорил
Это тот которого в сауне приняли с трапом и негритянкой?
Это кстати популярная хуйня среди малолетних зумерков. Всякие мелкокриминальные делишки в интернете, чтобы сшибить себе копеечку на досуг. Там целые форумы, где полно всякой такой движухи. Я как-то натыкался, интересное зрелище.
dotenv
Ты можешь вручную его распарсить, это во-первых. Во-вторых, возьми любую либу, тот же dotenv и аналоги. Хотя судя по всему ты не понимаешь что такое переменные окружения лол
И причем тут таблица?
Как нахуя csv связан с таблицами? Ты долбаеб?
> Как раз я спрашиваю не "как файл прочитать" а "как переменные окружения подгрузить"
Ну так читаешь файл и подгружаешь переменные, в чем проблема? Или ты не знаешь что такое переменные окружения и как их устанавливать? Вот на скрине срываю покровы с этой вселенской тайны
> Это скрин из офф доков фастапи, чел, тут нет никаких косяков синтаксиса
Это я обосрался, показалось, что класс Settings является датаклассом, а там дефолт валуе нельзя указывать после поля без дефолтного значения. Но в любом случае, даже если это не ошибка, то просто не питоник вэй
двачую, как можно работать без pandas? это жи стандарт
Ну сделаешь ты свой менеджер таблиц, одна ошибка и ты сосешь, а потом еще и ищешь петуха который код писал, чтобы его накуканить
Есть у меня данные в Django ORM (SQLite) вида:
>1.12.2021 - Вова - 12
>1.12.2021 - Стёпа - 5
>2.12.2021 - Леша - 4
>2.12.2021 - Вова - 4
>3.12.2021 - Степа - 1
>3.12.2021 - Лёша - 9000
Хочу из них получить табличку:
Дата | Вова | Стёпа | Лёша
1.12 | ..12.. | ...5.. | ...-..
2.12 | ...4.. | ...-... | ...4..
3.12 | ...-... | ...1.. | ..9000
Как мне это сделать?
Дай угадать, теперь ты будешь бегать с простейшими вопросами про pandas по десять раз на день?
А почему бы ему и не бегать сюда?
Выкатываюсь из айти нахуй.
5 лет жизни потраченных в никуда и вот я ни где.
На связи Кун Кунович 31 лвл который в 27 лет решил вкотится в это ваше ебаное ойти.
Учи питон говорили они, будешь зарабатывать 100500$ говорили они.
Сейчас я зарабатываю 3400000 ржублей в месяц минус премия и ебашу по 4к строк в день как Лев Толстой обезьяна ебаная(Абу, милый это не про тебя).
Да, нам буквально платят за количество строк как Индусам. Я серьезно, перед начальством начальства нужно отчитаться чем ты занимался весь спринт и если кода мало то выглядит так что ты бездельник. Воды в проектах пиздец как много.
И эту работу я еще еле нашел по блату.
За 5 лет я научился ебашить на питоне бек енд для сайтиков и апи, верстать странички любой хитровыебаной красоты и сложности, мошинному зрению и мошинному обучению, работать с базами данных, даже ебаную онлайн игру делаю и всю залупу эту тут лень перечислять.
И я не могу найти ни какую другую работу.
На интервью говорят что я охуенно сделал техническое задание(они уже заебали этими тз, почти каждая шарага высылает тз), задают вопросы и я правильно отвечаю, все хорошо но потом спустя 5 дней, извините мы нашли кандидата который нам подходит чуть лучше вас.
У меня есть примеры кода на гите и свой сайт-резюме и пет проекты.
Я завалил уже больше 50 интервью.
На хедхантере можно делать по 200 откликов в сутки, у меня пальчик устает, так что я написал скрипт который делает отклики на подходящие вакансии. И знаете что? За 2 недели все вакансии на удаленную работу на Python кончились. Я откликнулся на все вакансии по удаленной работе и на все вакансии в моем городе и мне везде отказали.
Легенду о дефиците кадров и высоких зарплатах раздувают сами ИТ конторы что бы вкатыши задемпинговали рынок и сбили цены на рабов.
На деле же если и есть дефицит то это опытных, под опытом подразумевается стаж работы а не умение. В первую очередь смотрят на количество лет в коммерческой разработке и если у тебя нет 5 лет хотя бы, то тебя даже в ебаные стажеры не возьмут.
А джунов-вайтишников их дохуя по 200 штук на одну вакансию. И среди них выберут того кто мордочкой понравится, либо задрота, олимпиадника.
Даже мой коллега с 10 летнем стажем и высшим образованием уже год ищет куда свалить с нашей конторы и вариантов у него видимо нет, хотя платят ему 100к.
Но блин с 10 летнем стажем и высшем образованием даже у знакомой юристки 80к зп, а у экономистки 90к.
Сейчас я задумался на что еще можно было поратить 5 лет жизни? Мой друг 5 лет работал торговым представителем и у него сейчас зп 70к.
Почему этот тред здесь а не в пограмаче? Потому что там орудует лахта. Серьезно, это буквально госзаказ что бы все ломанулись в погромисты, это граммотность 21 века. Без дешевых погромистов людишек роботами не заменить. И дальше количество погромистов будет только увеличиваться. В школе будут экзамены по фулл стаку. И такая профессия как программист вообще исчезнет, как исчезла профессия писарь, когда всех обучили грамотности.
В условия кризиса погромисты вообще будут не нужны, так они не производят вообще ни чего полезного. Всю ойти можно отнести к индустрии развлечений, а когда кушать не чего не до развлечений.
Подумай анон на что ты еще можешь потратить годы своей жизни перед тем как вкатываться в ойти. Ойти плохо еще тем что оно затягивает. Когда не хер делать я пилю игры и это что то вроде развлечения. Сам сделал, сам поиграл, сам проиграл. но сейчас мне за 30 и нужно думать о деньгах а не о развлечениях.
Так и ты можешь попасть в эту ловушку анон.
Выкатываюсь из айти нахуй.
5 лет жизни потраченных в никуда и вот я ни где.
На связи Кун Кунович 31 лвл который в 27 лет решил вкотится в это ваше ебаное ойти.
Учи питон говорили они, будешь зарабатывать 100500$ говорили они.
Сейчас я зарабатываю 3400000 ржублей в месяц минус премия и ебашу по 4к строк в день как Лев Толстой обезьяна ебаная(Абу, милый это не про тебя).
Да, нам буквально платят за количество строк как Индусам. Я серьезно, перед начальством начальства нужно отчитаться чем ты занимался весь спринт и если кода мало то выглядит так что ты бездельник. Воды в проектах пиздец как много.
И эту работу я еще еле нашел по блату.
За 5 лет я научился ебашить на питоне бек енд для сайтиков и апи, верстать странички любой хитровыебаной красоты и сложности, мошинному зрению и мошинному обучению, работать с базами данных, даже ебаную онлайн игру делаю и всю залупу эту тут лень перечислять.
И я не могу найти ни какую другую работу.
На интервью говорят что я охуенно сделал техническое задание(они уже заебали этими тз, почти каждая шарага высылает тз), задают вопросы и я правильно отвечаю, все хорошо но потом спустя 5 дней, извините мы нашли кандидата который нам подходит чуть лучше вас.
У меня есть примеры кода на гите и свой сайт-резюме и пет проекты.
Я завалил уже больше 50 интервью.
На хедхантере можно делать по 200 откликов в сутки, у меня пальчик устает, так что я написал скрипт который делает отклики на подходящие вакансии. И знаете что? За 2 недели все вакансии на удаленную работу на Python кончились. Я откликнулся на все вакансии по удаленной работе и на все вакансии в моем городе и мне везде отказали.
Легенду о дефиците кадров и высоких зарплатах раздувают сами ИТ конторы что бы вкатыши задемпинговали рынок и сбили цены на рабов.
На деле же если и есть дефицит то это опытных, под опытом подразумевается стаж работы а не умение. В первую очередь смотрят на количество лет в коммерческой разработке и если у тебя нет 5 лет хотя бы, то тебя даже в ебаные стажеры не возьмут.
А джунов-вайтишников их дохуя по 200 штук на одну вакансию. И среди них выберут того кто мордочкой понравится, либо задрота, олимпиадника.
Даже мой коллега с 10 летнем стажем и высшим образованием уже год ищет куда свалить с нашей конторы и вариантов у него видимо нет, хотя платят ему 100к.
Но блин с 10 летнем стажем и высшем образованием даже у знакомой юристки 80к зп, а у экономистки 90к.
Сейчас я задумался на что еще можно было поратить 5 лет жизни? Мой друг 5 лет работал торговым представителем и у него сейчас зп 70к.
Почему этот тред здесь а не в пограмаче? Потому что там орудует лахта. Серьезно, это буквально госзаказ что бы все ломанулись в погромисты, это граммотность 21 века. Без дешевых погромистов людишек роботами не заменить. И дальше количество погромистов будет только увеличиваться. В школе будут экзамены по фулл стаку. И такая профессия как программист вообще исчезнет, как исчезла профессия писарь, когда всех обучили грамотности.
В условия кризиса погромисты вообще будут не нужны, так они не производят вообще ни чего полезного. Всю ойти можно отнести к индустрии развлечений, а когда кушать не чего не до развлечений.
Подумай анон на что ты еще можешь потратить годы своей жизни перед тем как вкатываться в ойти. Ойти плохо еще тем что оно затягивает. Когда не хер делать я пилю игры и это что то вроде развлечения. Сам сделал, сам поиграл, сам проиграл. но сейчас мне за 30 и нужно думать о деньгах а не о развлечениях.
Так и ты можешь попасть в эту ловушку анон.
Пруфай
Паста не плохая, но тейк про
> Сейчас я зарабатываю 3400000 ржублей в месяц
это пиздец. Как можно было так обосраться с нулями? Ебанулся совсем? Кто в здравом уме будет это читать и проникаться тем, что "айти пузырь уже все", если чел пишет, что получает 3.5 ляма в месяц?
Там в оригинале было 34к )
Долбоеб просто plain text перекопировал и вбросил сюда. Даже не читай потко сознания этого шизла
> Сейчас я зарабатываю 3400000 ржублей в месяц
Очередной сеньиор с жиру бесится.
> Я завалил уже больше 50 интервью.
Так все же завалил?
> За 2 недели все вакансии на удаленную работу на Python кончились.
Ну найди не удаленную. Потом договоритсь. Раз ты такой распрекрасный хуй, то тебе пойдут на встречу.
> Легенду о дефиците кадров и высоких зарплатах раздувают сами ИТ конторы что бы вкатыши задемпинговали рынок и сбили цены на рабов.
Легенде уже сколько лет то. Она из тех времен когда программисты должны били быть умными. К счастью эта проблема давно решена. Теперь постепенно решается и проблема высоких зарплат. На большую контору хватит человек 5 нормальных опытных спецов, которые будут погонять стадо макак. Вот им и будут плотить 100500$
> Всю ойти можно отнести к индустрии развлечений
Вспомнил старый рассказ - "Папа сидел за компьютером и работал в игру лайнс".
> Почему этот тред здесь а не в пограмаче?
Потому что ты вниманияблядь?
> Когда не хер делать я пилю игры и это что то вроде развлечения.
Начни их подорвать. Может даже работу искать не придется.
> Сейчас я зарабатываю 3400000 ржублей в месяц
Очередной сеньиор с жиру бесится.
> Я завалил уже больше 50 интервью.
Так все же завалил?
> За 2 недели все вакансии на удаленную работу на Python кончились.
Ну найди не удаленную. Потом договоритсь. Раз ты такой распрекрасный хуй, то тебе пойдут на встречу.
> Легенду о дефиците кадров и высоких зарплатах раздувают сами ИТ конторы что бы вкатыши задемпинговали рынок и сбили цены на рабов.
Легенде уже сколько лет то. Она из тех времен когда программисты должны били быть умными. К счастью эта проблема давно решена. Теперь постепенно решается и проблема высоких зарплат. На большую контору хватит человек 5 нормальных опытных спецов, которые будут погонять стадо макак. Вот им и будут плотить 100500$
> Всю ойти можно отнести к индустрии развлечений
Вспомнил старый рассказ - "Папа сидел за компьютером и работал в игру лайнс".
> Почему этот тред здесь а не в пограмаче?
Потому что ты вниманияблядь?
> Когда не хер делать я пилю игры и это что то вроде развлечения.
Начни их подорвать. Может даже работу искать не придется.
> Лучше делай это в докере, чтоб не засрать окружение.
А вот и эксперты подъехали. Ты в курсе, что переменные окружения бывают разного уровня? И по дефолту все переменные окружения устанавливаются для сессии и видны только внутри нее и с ее завершением исчезают. Попробуй запустить скрипт, который ставит переменную окружения и дождаться завершения его работы, а потом запустить скрипт, который читает эту переменную. Угадай что произойдет?второй скрипт нихуя прочитать не сможет
> Вообще, енв устарел, используй жсон
Какой нахуй жсон? Ты о чем вообще?
В голос
Да, будем и потом вы будете это поддерживать. И что ты сделаешь? Напишешь гневный пост на подтираче?
В смысле не может? Ты совсем дурачок? Ты хтмл код передаешь в суп, как там джаваскрипт с запросами в бэк может работать?
Ищи эти данные в контенте и забирай оттуда. Если нет, то они подгружаются. Повторяешь запрос у себя и забираешь готовое опять же.
это у вас ГазМясМейлру данные россиян по api выдают, а в остальном бизнесе их ДОБЫВАЮТ
> Ты в курсе, что переменные окружения бывают разного уровня?
Я конечно дико извиняюсь, но какое отношение ваш ответ имеет к
> Лучше делай это в докере, чтоб не засрать окружение.
К тому, что засерки переменными окружения не будет
Я написал один рекурсивный. На вход ему идёт лист примерно следующего содержания [True [items, data, active]] - перебирать вложенные структуры (листв, дикты) и оставить только те, где active = True. Работает он вполне себе без каких-то задержек. Реализация через реджексы невозможна, либо будет очень дорогим, я пытался.
Уже заебался парсить ответы вручную, хотелось бы что-то универсальное. Схожих библиотек не нашёл.
Весь говнокод
https://pastebin.com/cZNiqb9U
В конце результат фильтрации при первом и втором проходе по двум условиям
В самом конце выводит нужный параметр
Что за хуйню я читаю?
Какая к хуям фильтрация джейсона?
Тебе дали встроенный модуль json что бы преобразовывать json из текста в питонячий объект и вертеть его как угодно. А потом им же преобразовывать его обратно в json.
Твоя задача это просто цикл с условием.
Можно ли так генерировать список? Что то мне кажется, что за такое хуем по губам мне поводят.
Проще перечислить вещи за которые не поводят.
Пиздец, зачем это в языке, если какой-то хер в очках запретил им пользоваться
Лишний генератор вокруг обычного range, который сам как генератор работает? Да ты сам недалеко ушел, я посмотрю.
Изначальный вопрос - генерация именно списка. Так-то создавать из ничего список, понятное дело, не всралось почти никогда, если только менять как-то хитрожопо его надо будет, в середине там например.
Нахуя личную?
Ты описал проблему. Тебе дали решение. Если решение не подходит, это значит ты не правильно/не до конца описал проблему.
Шиз, ты чо рвёшься? Настолько задело то обсуждение, что везде уже "деды" мерещатся?
В одной галере ты можешь быть оценён на сеньора-помидора, а в другой твоих знаний хватит на уверенного мидла. Зачем тебе в грейдовку целиться? Просто познавай то, что тебе интересно и приносит денег
Ну а вообще в тырнетах куча всяких разных бесполезных роадмапов есть. Можешь их поизучать
Грейды это субъективная хуйня. да еще и дрочят их как хотят. Где то тебя запишут в мидлы, где в джун плюс.
Просто повышай свою квалификацию и навыки. Когда ты осознаешь, что умнее половины коллектива - проси прибавку к зп. ну или ищи новую работу. Так и происходит рост в айти.
Не вижу в этом ничего крамольного. У каждого человека есть определенный уровень знаний, в айти есть разделения на классы по уровню знаний, навыков и опыта. Вот я и хотел прочитать, узнать, есть ли какие-то "дефолтные" технологии, знания, специфика отдельно для каждого уровня, которые являются актуальными в 2021 году.
а раз ты уже с самого начала человеку отвечаешь в пассивно-агрессивной форме, то это тебе нужно в своих комплексах загонах разобраться
Нет никаких уровней знаний, оно всё вместе помаленьку растет, как и общий кругозор. А искать списки, вот выучу пункты с 1 по 10 и вот я мидол это полная хуйня, как по мне.
Опять же, что значит выучить? Раскурить до исходников и наработать практику или посмотреть видяшку на ютубе от Зумера Зумеркова и забыть на следующий день?
Это абстрактная бессмысленная хуита.
Это просто один из инструментов. Причем не все им пользуются, PyCharm объективно лучше пока что.
Максимум что могут спросить пользовался ли. если в конторе это обязательный инструмент, то один хуй возьмут просто скажут осваивай.
Если ты не понял мысль в посте, я объяснять ее не буду. Твой бред начинает надоедать.
Вообще, это правильно, надо завязывать с такой хуйней.
Это как долбоебы с брошурками млм - пояснить им ничего не пояснишь, только время тратить. Пусть идут к успеху.
Иерархия не сложилась. Кое-что вырисовывается, но мы тут не в армии. Нет званий.
Ты это хотел узнать?
спасиб, интересненько. Это получается моя программа должна работать внутри цикла while ?
Пока нет гос-стандартов к прогерам - нет и единых "дорожных карт" для обучения прогерским специальностям. Это ты в медицине или экономике можешь сказать "вот у нас опыт столетий, вот у нас научный консенсус, вот у нас бест практис от ведущих вузиков, и на основе всего этого мы можем сказать, что...". В программировании это не работает. Слишком много альтернативных инструментов под 1 задачу, слишком быстро все меняется.
В голос
>>31755
Хули ты там собрался осваивать? Ты при переезде с хрома на лису тоже бы стал писать "за сколько можно освоить лису? задают ли по ней вопросы на собесах?"
>>31776
> в айти есть разделения на классы по уровню знаний, навыков и опыта
Нету, это просто хуйня, чтобы показать насколько опытный чел им нужен. Я могу дать примерную расшифровку
джун => закрывает таски, в которых написано что, где и как нужно сделать
мидл => закрывает таски, в которых написано для чего их нужно сделать
сеньор => закрывает таски уровня "сделать заебись"
> Вот я и хотел прочитать, узнать, есть ли какие-то "дефолтные" технологии, знания, специфика отдельно для каждого уровня, которые являются актуальными в 2021 году.
Нету такого, тем более, что новые и актуальные технологии появляются слишком быстро, а половина кодовой базы все еще висит на какой-нибудь джанге 1.0 из 2010 года
>джун => закрывает таски, в которых написано что, где и как нужно сделать
>мидл => закрывает таски, в которых написано для чего их нужно сделать
>сеньор => закрывает таски уровня "сделать заебись"
Какая глупость
>закрывает таски уровня "сделать заебись"
Это я первые полгода так задачи делал, когда работал в битриксостудии
В похапе если не развалилось сразу, то уже заебись.
>Бля, ебать ты меня аргументами приложил
А на этот бред не может быть аргументов. Делать заебись бизнес фичи без нормального описания таски невозможно, в любом случае придется переписывать, также невозможно не наплодив багов и костылей вносить правки в легаси без общения с человеком который на этом проекте работает долгое время. На тех. скиллы это никак не влияет.
> А на этот бред не может быть аргументов
Не может быть настолько, что ты их дальше самостоятельно приводишь
> Делать заебись бизнес фичи без нормального описания таски невозможно
Возможно, все бизнес фичи, которые придумал не погромист делают именно так. Если тебе дали задание "сделать забеись", а ты понимаешь, что можно сделать"заебись" только за год и "почти заебись" за неделю и идешь обсуждать это с бизнесом, то ты сеньор и ты получаешь 300к/наносек. Если ты это не понимаешь, то ты просто не сеньор и для тебя действительно такие задачи невозможны еще
> также невозможно не наплодив багов и костылей вносить правки в легаси без общения с человеком который на этом проекте работает долгое время. На тех. скиллы это никак не влияет.
Да, поэтому тебе нужно понять что, куда и как прикрутить, потом найти человека, который в этом разбирается и узнать у него все подводные, а потом делать. Именно это и отличает сеньора от ждуна. Именно поэтому на одну таску ждунана полноценную таску, а не сдвинуть кнопку влево на 10 пикселей приходится тратить пару часов сеньора на разбирательства того как и что нужно сделать, с какими технологиями и каких подводных избежать.
>идешь обсуждать это с бизнесом, то ты сеньор и ты получаешь 300к/наносек
Какое это отношение это имеет к тех. скиллам? На многих проектах практически невозможно отличить джуна от сеньора если нет задач по архитектуре и сложным решениям.
>приходится тратить пару часов сеньора на разбирательства того как и что нужно сделать, с какими технологиями и каких подводных избежать.
Ты походу на легаси не работал, о подводных камнях там сеньор не может знать и нужен человек который на этом говне греб дольше всех, иначе пизданет на проде дай боже. Куа кстати тоже не будет, обычная практика для сбера и вк например.
> Какое это отношение это имеет к тех. скиллам? На многих проектах практически невозможно отличить джуна от сеньора если нет задач по архитектуре и сложным решениям.
Прямое, эти навыки так же являются техскиллами, зачастую даже более важными. Погромисту платят 6-значную зп в разы, а то и в десятки раз превосходящую медиану по России не за красивые глаза, а за бабло, которое он приносит бизнесу. И это бабло в 90% случаев экономится на этапе перевода бизнес требований в технические требования
> Ты походу на легаси не работал, о подводных камнях там сеньор не может знать и нужен человек который на этом говне греб дольше всех, иначе пизданет на проде дай боже. Куа кстати тоже не будет, обычная практика для сбера и вк например.
Да все так, я про это и говорю, что тебе сказали сделать заебись, а ты понимаешь, что сначала надо пойти узнать обо всех подводных у знающих людей. За сеньора не нужно думать и беспокоится, что он забудет спросить о таких вещах или начнет тратить миллионы впустую на реализацию одной лишней кнопки. А за ждуном нужен глаз да глаз
>PyCharm объективно лучше пока что
Почему он тогда почти не встречается в туториалах на ютубе?
Вот это крупный калибр аргументов пошел
Документация
Нет, while блокирует выполнение, пока не завершатся потоки. Твоя прога либо после него, в случае синхронного стиля, а если асинк, то там как хочешь крути, запихнув то, что я выше скинул в отдельную рутину.
Потому что это не зумерское говно, а инструмент для серьезной работы.
d[key] = (d[key] if key in d else 0) + 1
Как это нормально сделать? Почему defaultdict deprecated? suuuuka
Нахуя ты пишешь это на ткинтере? Бери pyqt и кайфуй. У ткинтеры беды со сложным функционалом
Я знаю, что на Qt проще пилить, но дело в том, что это типа курсач. А там хер знает, к кому он попадёт и додумаются ли там подготовить Qt.
Что тут не так?
Пиздец, а базовый синтаксис питона изучить предварительно не хочешь?
Но ладно, я так и быть помогу. В selectionSort на последнюю строчку посмотри внимательно. И блять сделай названия функций и переменных нормальные, а не камэлкейс ебаный
У тебя return в цикле.
Там малюсенький сервис, прикручивать celery видится как оверкилл
> Запускать задачу каждый час чтоб она подчищала таблицу в БД
Ну так и пишешь
def chistim_vilkoy(timeout):
----while True:
--------await asyncio.sleep(timeout)
--------await chistim_bd()
зачем это накостыливание какой-то безумной пародии на декоратор?
async def конечно же
У тебя все респонзы отличаются только полем reason. Запихни reason внутрь эксепшена, все 400 эксепшены отнаследуй от 1 класса там типа My400Exception и потом сделай так
except My400Exception as e:
----return JSONResponse(status_code=400, content={'reason': e.reason})
Помогите вкатуну! в ньюфаг-треде глушняк пока и постоянный вайп от зеленых пидоров
Вроде тут где-то ссыль была на сайт с уроками для ньюфагов, где буквально первым же заданием было что-то вроде "введите в окошке print 'hello world' и поздравляем с первым вашим кодом".
Подскажите как в редисе сделать сообщение статуса pending?
Я хочу написать обработчик зависших сообщений, но хз как повесить сообщение
> Вроде тут где-то ссыль была на сайт с уроками для ньюфагов, где буквально первым же заданием было что-то вроде "введите в окошке print 'hello world' и поздравляем с первым вашим кодом".
Ну это буквально любая ссыль на сайт с уроками по питону
Ну нет, анонче. То, что ищу, как будто в шапке треда какого было. Типа давайте учиться с нуля вместе, вот для начала мы подготовили вам уроки. Там не факт, кстати, что питон был, может просто программирование для вкатунов.
Почему не сохранил - думал потом воспользуюсь, "куда из шапки денется", ведь народом Двача создано и размещено.
а можно через вложение инициализировать, если ключи известны заранее, я с defaultdict так наебался, там если что-то со статистикой мутишь тебе в любом случае понадобится полностью все хранить в памяти, laziness нахуй идет
https://pastebin.com/SpEEEgui
Кстати, мб рил уроки из пхп треда. Но вообще нахуй оно нужно, любой гайд про основы синтаксиса это плюс-минус одно и тоже. Пока до работы с фреймворками не дойдешь, то изи будет в любом случае, а дальше в любом случае жопа
>>32729
А что за "таблица"? Так как я не ебу что конкретно ты имеешь ввиду, то могу порекомендовать строителемкоторый паттерн это реализовать
Хули там нет ничего?
Индусские хакеры блочат русским шлёпам возможность вкатиться?
Берешь алхимию, описываешь таблицы классами, потом пишешь функцию, которая запихивает список объектов в таблицу. Делаешь запрос в склайт => получаешь список объектов ОРМ => передаешь их в функцию, которая заполняет данными таблицу => ???
https://github.com/microsoft/pylance-release/issues/1069
Обновил VSCODE и плагин обновил как microsoft рекомендует и F2 (rename symbol) перестал работать. По ссылке пишут что пофиксили, но на самом деле нет.
Бери уроки опа (ток начальные) из пхп треда, да делай их на питоне. Основной синтаксис на паре простых задачек прогонишь, заодно гуглить научишься. Дальше только не ходи, на том что он про бек втирает многие пхпшники свернули не туда.
Ну то что в яндексе все на костылях я и так знал. Но ты все еще не ответил на вопрос нахуя ты так далаеш? Я конечно вижу что ты уже вступил в секту за асинхронность и против всего плохого, но это уже просто новый уровень.
Я понимаю, об этом не говорят в модных курсах от популярных земерков. Но когда то не так давно за такое били по рукам. Генерировать исключения там где можно обойтись обычным if это хуево для производительности. А судя по имени некоторых твоих исключений это именно твой случай.
>Генерировать исключения там где можно обойтись обычным if это хуево для производительности
Насколько? Если исключения вылетают не так часто то это лучше чем if
Ты не понял. Нахуя использовать исключения для отдачи валидного ответа? Это тупо не логично, апи при этом может быть как идемпотентным, так и нет, это просто по коду пиздец, давай их вместо ифов юзать вообще, можно же. Хочешь отдать исключение - делай исключение. Хочешь отдать саксес - делай саксес. Хз че тут доносить еще можно и идемпотентность совсем не причем.
Насколько?
В десятки/сотни/тысячи раз медленнее. В зависимости от генерируемого исключения.
> Если исключения вылетают не так часто то это лучше чем if
Они у тебя не вылетают. Судя по их названиям ты их сам генеришь. Т.е. вместо того, что бы просто проверить через if что id такой же, ты генерируешь объект исключения, который унаследован от базового и тянет за собой все говно для отладки ошибки. При том, что ошибки как таковой нет.
Книжки какие, статьи?
Спасибо.
Да не то чтобы.
{ % load static % }
<!DOCTYPE html>
HTML
<html lang="en">
<head>
<title>Первый шаблон</title>
</head>
<body>
<t1 >Вот что у нас тут: {{P}}</t1>
<p>
{{langs.5}}
</p>
<link href="{ % static 'css/styles.css'% }" rel="stylesheet">
<img src="{ % static 'images/image.jpg' % }">
</body>
</html>
SETTINGS
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
VIEVS
from django.http import HttpResponse
from firstapp import views
from django.contrib import admin
from django.shortcuts import render
from django.http import
from django.shortcuts import render_to_response
from django.template.context import RequestContext
def index(request):
return HttpResponse("Hello, world!")
def home(request):
langs=[ ii for i in range(100)]
P="В Бразилии много-много диких обезьян"
data={
"P":P
"langs":langs
}
return render(request,"firstapp/home.html", context=data)
Файлы лежат как надо. Предполагаю, что я не подключил что-то, либо в настройках что-то забыл.
Почему не работает? Что может быть не так?
{ % load static % }
<!DOCTYPE html>
HTML
<html lang="en">
<head>
<title>Первый шаблон</title>
</head>
<body>
<t1 >Вот что у нас тут: {{P}}</t1>
<p>
{{langs.5}}
</p>
<link href="{ % static 'css/styles.css'% }" rel="stylesheet">
<img src="{ % static 'images/image.jpg' % }">
</body>
</html>
SETTINGS
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
VIEVS
from django.http import HttpResponse
from firstapp import views
from django.contrib import admin
from django.shortcuts import render
from django.http import
from django.shortcuts import render_to_response
from django.template.context import RequestContext
def index(request):
return HttpResponse("Hello, world!")
def home(request):
langs=[ ii for i in range(100)]
P="В Бразилии много-много диких обезьян"
data={
"P":P
"langs":langs
}
return render(request,"firstapp/home.html", context=data)
Файлы лежат как надо. Предполагаю, что я не подключил что-то, либо в настройках что-то забыл.
Почему не работает? Что может быть не так?
> Django
В общем, мне там для одного задания нужно чтобы мой проект можно было типа установить как зависимость, чтоб его можно было импортировать from project import func ну как на картинке в общем. Читал, что для этого нужно что-то написать в инит, но энивей нихера не работает. Что там нужно написать? Как это вообще называется операция, нигде про это нагуглить не могу. Я вот писал в нем по-разному, типа пытался импортировать в инит эту функцию или просто модуль, но всё равно пишет, что нет такого модуля в итоге. Как правильно сделать?
Ну чтобы работало то что на пикче в двух словах.
Нужно чтоб я мог из любого модуля импортировать page_loader после его установки. Типа я делаю poetry build, устанавливаю дистрибутив и у меня теперь эта штука как бы установлена как зависимость и вот типа должно работать.
second,first,third, а не first,second,third?
class First(object):
def __init__(self):
super(First, self).__init__()
print("first")
class Second(object):
def __init__(self):
super(Second, self).__init__()
print("second")
class Third(First, Second):
def __init__(self):
super(Third, self).__init__()
print("third")
Написано много, часть даже по делу. Часть просто доебы.
Мог бы потратить энергию затраченную на описанеи проблем на разработку своего фреймворка убийцы джанги. Ну или хотя бы пушануть свои идеи в джангу и причастится к разработке.
По сути очередное нытье.
from django.conf.urls import url
from django.contrib import admin
from django.urls import path, include
from firstapp import views
app_name = 'djpoligon'
urlpatterns = [
path('', views.index),
path(r'home.html', views.home),
]
У тебя большой?
Присылай код либо в виде картинки, либо в виде ссылки на какой нибудь онлайн компилятор. Что бы можно было видеть структуру.
У тебя все верно выполняется. В соответствии с написанным.
Сперва дергается super(First, self).__init__() потом super(Second, self).__init__()
В коде приложения буду импортировать функцию get_db_connection и через контекстный менеджер async with буду дергать коннекшн к базе. Вроде ниче, но я 1 раз создаю engine для связи с БД, это норм? Или все же его надо создавать на каждый коннекшн а потом дропать?
Я на середине книги Byte of Python и дошел до модулей.
Столкнулся с проблемой при импортировании модуля:
1) написал маленький модуль, который вычисляет квадрат переменной "х".
2) Далее попробовал написать модуль, который вычислял бы сумму квадратов х и у, используя формулу квадрата из предыдущего модуля.
При попытке запустить второй модуль вылезает сообщение, что square не определена, хотя я ж её импортировал из предыдущего модуля вроде бы...
Другими словами, как в текущем модуле использовать функцию, определенную в предыдущем модуле?
Понимаю, что это наверное оч легко, но у меня опыт програмирования нулевой.
Ну у тебя ж регистр разный на 2м пике, ну ебана
Причем ставлю анус что у тебя вылезает не ImportError а NameError, что как бы намекает. Читай ошибки
from Squre import square
Юзай относительные импорты через точку в начале, почитай про них, там надо не усраться с parent package, внутри своего проекта импортить твои модули желательно только так
И пиши в пуйчарме что ли. Иде много где поможет, ворнинги подсветит и через ctrl+ЛКМ переведет к объявлению переменной
Ну чет я не увидел там про это. Но вроде заработало. Я импортировал функцию из модуля в ините.
Шёл бы ты мимо со воим копрокодом.
for x in raspisanie:
for y in x:
print(y,end = " ")
print()
Нужно вывести двумерный массив, то есть сейчас он мне выводит
Предмет о о о о о
Предмет1 о о о о о
А мне надо так:
Предмет Предмет1
о о
о о
о о
о о
о о
Как мне это сделать?
ну почти, мне надо чтобы в виде матрицы как раз, типо тут так:
русский
о
о
литра
о
о
и тп, мне надо чтобы на одном уровне
Ну ты пишешь конечно, с литры капчуешь? Один принт печатает на одну строку, то есть если ты хочешь чтоб у тебя что-то на одном уровне было, нужно это в один принт запихать. Как массив-то выглядит?
raspisanie создаётся и заполняется циклами, которые берут значения из других массивов
str="Математика" не играет роли никакой в коде, была использована для проверки работы циклов заполнения
Ой блин, нихера не всасываю. Ну ты хоть проверил, расписание норм составляется? Типа print(raspisanie) перед распечаткой выглядит норм?
ну больше похоже на правду, спасибо
Ну тут уж хз, можешь ещё одним циклом пройтись по каждому i и там напечатать каждый элемент с end = " " чтоб было без скобочек и запятых, но в общем хз как чтоб прям не криво было в консоли. Думаю это сложно обычными средствами сделать.
Бля. Ты как это запускаешь? У тебя там что? гуникорн или рунсервер?
Опиши все что сделал и как. 400 ошибка может говорить о том. что ты пытаешься в прод, но не установил разрешенные хосты.
Тебе скорее всего нужно использовать словарь типа {'Матеша': (0,0,0,0)} Так было бы удобнее
возможно
print(' '.join(map(str, arr)))
Ну сейчас у тебя в каждом i кортеж (массив) из строчки, которая должна быть напечатана, можно пройтись ещё по каждому элементу в i и напечатать его.
Ну или просто вместо print(i) написать print(" ".join(i)). Не очень понял зачем map у чела выше.
>>2234309 (OP)
>>2234309 (OP)
>>2234309 (OP)
>>2234309 (OP)
>>2234309 (OP)
Я купил хостинг и закинул все на него. Он огородил возможность запускать из консоли, по какой-то причине. Так что я хз. Как найти ответ на твой вопрос?
Это копия, сохраненная 6 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.