Это копия, сохраненная 1 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1720203 (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
Как тогда? Через if\else ловить исключения?
Это не про питон скорее всего. И вообще сомнительная рекомендация - не пользоваться исключениями для возврата из вложенных функций.
Дурной стиль бросать и ловить исключения внутри одной функции, и дурной стиль использовать исключения для кодирования штатного поведения.
>Дурной стиль бросать и ловить исключения внутри одной функции
Почему? Бывают же случаи, когда это нужно, например для всяких HTTP реквестов.
Но это интересно и заставляет писать все слова вручную, а не пользоваться автоподстановкой, сам долбоеб
Ну. Ты же просил мотивации, чтобы приходя домой хотелось переписывать. Вот и будешь переписывать, чтобы проверять.
Господь с тобой.
— https://pastebin.com/DiiGRMSm
Объясните пж, как это работает, я вообще не втыкаю. Первые две решил за 5 минут каждую.
Сильно не бейте, первый раз зашёл на борду, треда с вопросами не нашёл
Не ну реально нет решения? Гугел советует в ехе завернуть, не думаю что без ошибок получится.
Минута работы в консоли. Без оптимизаций. Секунда вычислений максимум.
Можно поставить питон. Можно смотреть на pyinstaller. Можно посмотреть на nuitka.
А что в решении непонятного? Ты тупо раскладываешь на множители самым простым способом, перебором по всем потенциальным делителям подряд.
Я не он.
Отправляю запрос (доставка должна быть обязательно), ловлю Timeout на ответ от сервера, запрос уходит в очередь для следующей попытки доставки. Перед этим 3 попытки на доставку. В чем проблема?
Или например ошибка SSL, ошибка логируется для разбора.
Или API отвечает ошибкой отличной от 200 для указания того, что запрос по той или иной причине не был отработан.
При 200 в ответе JSON, при 400 надо просить response.text.
Ну и по поводу замедления это херня. Уж лучше отловить Exception, отработать его, а не смотреть как колом встаёт. Все приложение.
Pyinstaller собирает exe c интерпретатором внутри.
Вот о чём. Дурной стиль внутри функции сначала порождать исключение, а потом его же внутри этой же функции ловить.
Исключения нужны для обработки нештатного поведения вызываемых функций.
При этом ловить исключение в функции, а наружу кидать уже новое, своё, как раз нормально.
Заменять исключения на какой-нибудь "return err" конечно не нужно. В питоне исключения поддержаны хорошо. Это не ускорит код.
Рекомендуют отказываться от исключений в некоторых компилируемых языках в ряде случаев, потому что if-else и специальные коды ошибок могут работать заметно быстрее.
Питон же интерпретируемый и не про байтоёбство.
Да. runserver не предназначен для продакшена вообще. Ни для статики, ни для много чего ещё.
Сколько помню, от тупо работает в один поток синхронно. К тебе подключится тормозной клиент и весь твой сервер затормозится на нём.
Тебе в любом случае нужны дополнительные свистоперделки.
Смотри на nginx. Но его недостаточно, ещё uwsgi нужен, например.
Написал несколько утилит на питоне для работы с байтами.
Что дальше чтобы подрасти?
data science далеко для меня, веб и ml я уже рассматривал.
Не будут, тебе придется прописать url для статики, а в nginx'е прописать раздачу статики по этому адресу. Тот же момент с медиа-файлами, только ты их еще и загружать на отдельный сервер должен
При желании можно и джанго заставить статику отдавать в uwsgi-режиме, там есть специальные модули для этого, но только не нужно совсем.
nginx сделает это лучше, быстрее, надёжнее и на самом деле через nginx даже проще.
В питоне нет перегрузки методов в том смысле, в котором есть в C++ и некоторых других таких языках.
В языках с динамической типизацией вообще сложно перегрузку реализовать.
В C++, когда ты обращаешься к функциям foo(int x), foo(double x) и foo(int x, int y) компилятор подставит вызов разных функций, которые внутри специально закодированы (mangling). В питоне в любом случае будет вызов одной функции по имени foo.
> И когда бы он в форме логина вводил код команды А ему бы отображались только документ_1 и 2 и аналогично и для другого юзера который тоже состоит в этой команде.
В чем проблема отобразить не все документы пользователя, а только те, код комманды которых он ввел?
Да, только как это обработать. Типа добавить в модель юзера поле под код команды. И когда он логинится, то в это поле вводится значение кода, а когда логаут то это поле очистится?
Но у тебя ведь документ - это тоже какая-то модель?
Среди её ключей должен просто быть как пользователь-владелец, так и команда.
Примерно как файлы в юникс-системах, у них есть владелец и группа.
Аналогично и у логин-сессии есть свойство группы-команды. И ты отображаешь только документы, доступные для этой команды.
Это баг или фича?
Потому что захламлять сервер файлами, загружаемыми пользователями - хуевая идея, они должны храниться в отдельном от сервера хранилище и выдаваться оттуда же. Если пойти дальше до какого-нибудь докера - он тебя нахуй просто пошлет, когда ты будешь грузить файлы в контейнер.
Я бы добавил юзеру поле "active_team", устанавливал в нем нужное значение(при логине или когда тебя удобно) и по нему фильтровал. Там и кнопку "сменить команду" приделать не долго.
И что? Ты думаешь ты кому-то нахуй нужен, что за тобой следить будут?
ну тогда komodo ide . у этих додиков тупо ресурсов не хватит за тобой следить, а редактор с серьезной историей.
Ты можешь без анальных зондов и мокрописек с торрента ломануть лицензию сублим текста через хэш редактор, а можешь неограниченное долго пользоваться триал версией, максимальный срок её пользования нигде не оговорен.
>найс маняфантаззи
Возможность - это не означает, что каждый обрыган, который имеет два серта, устроится стопудово. А в оракле и прожженный мидл охуеет от подъебок 808 экзамена, так что не каждый василий способен сдать
Уже сделал. Просто интересно, почему терминал повис. Вероятнее всего потому что хоть я и прервал операцию через KeyboardInterrupt, она все равно продолжила выполняться фоном и блокировать main thread?
CSS и JS ты просто раздаешь как статиу, они у тебя изначально просто файлами лежат
>Каким редактором или IDE пользуетесь для Python?
PyCharm. Если параноик, то можешь заблокировать ему доступ к интернету.
def tester(start):
state = start
def nested(label):
print(label, state)
return nested
F = tester(0)
F('spam')
state - это ключевое слово что-ли? Найти не смог
Сорри, вот так лучше. Выводит spam 0
>state - это ключевое слово что-ли?
Нет, обычная переменная. Возможно тебе стоит почитать про замыкания.
единственное что заметно - начал обрастать программами \скриптами которыми сам регулярно пользуюсь.
база\органайзер\просмотрщик\аплоадеры на диски и тп, всякие игровые кликеры утилиты, перевожу кнопки на понадобившихся китайских прогах питончиком и тп.
приучился дрочить в терминале на винде, с ффмпегом и шлюхами.
потихоньку буду мамкин ноут ломать через смб на её пиратке.
но что дальше?
F = tester(0) -> возвращает тебе функцию nested, которая принимает первым и единственным параметром строку. Этот параметр и есть label. Вот упрощенный вариант происходящего https://ideone.com/3XDKJc
Понял, большое спасибо!
Потестировал на своей лагучей убунте, в итоге % ошибок с дедлоком вырос до 80, правда БД запустил в докере мб из-за этого. Но в общем добавлю try catch для дедлоков с повторным запросом к базе, в гайде Mysql по дедлокам они так даже советуют делать
>vim
Пердольская некропараша из 70х. Нужная только чтоб повыпендриваться "мама смотри я кулхацкер"
Кроме выпендрежа его просто незачем использовать, морально устарел. Есть полнофункциональные VS Code и Атом
я учу основы основ, даже могу выдумать простенький процессор и написать для него симулятор, а ты просто не шаришь.
>Есть полнофункциональные VS Code и Атом
Для быстрого редактирования отдельных файлов лучше использовать легкий Sublime, а для всего остального есть IDE.
Начнем с того, что в отличие от перечисленных редакторов, вим работает по ssh, а значит, покрывает потребности девопсов. А кроме ssh он отлично пролезает через последовательный терминал, например, покрывая потребности разработчиков встраиваемых систем.
Продолжим тем, что если ты осваиваешь вим, тебе больше не понадобится, в принципе, ничего. Плагинами отлично догоняется функциональность до плюс-минус полноценной IDE, а если ты владеешь базовыми хоткеями и командами вима, ты сможешь работать на любой системе, в любом контейнере и в любом окружении, потому что вим скорее всего будет доступен там или по дефолту, или будет устанавливаться из репы (или там будет нано, но это уже отдельная тема).
Вим, конечно, не золотая пуля, но это такая штука, что если ты прошил себе в подкорке один раз все команды, то вряд ли тебе понадобится что-то еще. Не стоит делать громких заявлений, мой юный джуниор.
>Плагинами отлично догоняется функциональность до плюс-минус полноценной IDE
Нет. Подсветку синтаксиса и дебаггинг напердолить можно, но огромного количества возможностей IDE в виме нет и никогда не будет. Если нужны исключительно хоткеи вима, то проще потратить пять минут и добавить их в IDE.
О, надо же, уже сообразили. Впрочем, выглядит как костыль. Насколько это ресурсоемко для серверной стороны?
>>34104
Именно поэтому я написал "плюс-минус". Если сравнивать с каким-нибудь Qt Creator`ом, то понятно, что многих визуальных вещей там не будет. С другой стороны, все зависит от области твоей деятельности. Я, скажем, работаю по бекендам и встраиваемым системам. Мне никогда не нужно было ничего от современных IDE.
VS Code вроде можно и в браузере запускать, но я пока не пробовал.
А почему для сервера это должно быть ресурсоёмко? Фактически ты просто пользуешься сетевой файловой системой, а редактор работает на клиенте, тогда как вим ты запускаешь именно на сервере.
>в любом контейнере и в любом окружении, потому что вим скорее всего будет доступен там или по дефолту,
Вот нет, и это тоже некоторая проблема. В большинстве контейнеров ВИМа не, его надо ставить дополнительно.
Я сам больше вимом пользуюсь, но это скорее в минус, чем в плюс.
Уметь пользоваться, конечно, очень полезно.
>найс маняфантаззи
Анон преувеличивает, но реально эти сертификаты действительно котируются. Циско точно, Оракл и от что-то от МС более-менее тоже.
Потому что они действительно гарантируют, что за тобой какие-то знания есть, в отличии от строчек в резюме.
По языкам программирования и открытым платформам, как Линукс, Постгрес, Докер и др. вроде ничего общепризнанного нет.
Собственно и не понятно что такое знать питон. Для какой-нибудь Джанги ещё можно было бы сертификацию придумать, но чисто для питона лишено смысла.
друх, твой лист компрехеншн не знает, что у класса тест есть проп var. поэтому у тебя падает.
а пропы класса ты подсасываешь в метод через селф. те можно через селф подсосать проп в скоуп метода и там уже мутить лист компрехеншон
Спасибо анончик, вкурил
Попахивает какой-то магической херней. А в данном случае, какой скоуп ближайший? Глобал?
ну видимо лист компрехеншон не знает как сосать из скоупа класса(хуй знает это как называется). типа в данном случае лист компрехеншон это функция в которую не передают селф.
Это все хуйня для даунов. Если программировать в телефоне, то ослепнешь и станешь овощем за неделю.
Если он хочет буковки сам вводить, без подсказок, то пусть в редакторе код пишет.
Сап. Не смог нагуглить решение.
Написал небольшой скрипт, который из папки загрузок сортирует файлы по дате и расширению. Скрипт работает без проблем. Когда закинул его в автозагрузку, вспомнил, что он будет открывать консоль при запуске(и видимо переставать работать, если консоль закрыть). Узнал, что для предотвращения открытия cmd нужно запускать в расширении .pyw.
Но скрипт перестаёт работать, если поменять его расширение .py -> .pyw
ЧЯДНТ?
Алсо платформа вин10, для py файлов установлен python.exe, для pyw файлов pythonw.exe
То есть оба должны запускаться даблкликом. Первым точно запускается и работает, а pyw работу не выполняет.
все эти ебаные деды прошедшие беспощадную школу андроида просто завидуют.
тут смотря в чем твои цели.
Если ты хочешь найти работу - не берись.
Если у тебе нужно писать простые приложения с минимум взаимодействием с платформенными фичами телефона, типовые приложения CRUD современной эпохи - берись.
Алсо, вместо рисовалки форм можешь пошукать программу KViewer.
И даже, кажется, в стандартной демке можно просто набирать KV и смотреть как он отрисовывается.
За Котлин, конечно. Но это займет годы и ты все еще не сможешь писать быстро
О, анон, ты - это я, только я дрочу питон на работе в нормальном мониторе, вместо работы
>>34246
Всем спасибо за ответы. Просто иногда хочется какой-нибудь гуец знать, что бы не дрочить консольку, как Нео. Да и тестовые задания на собесы присылали такие, что надо в гуе с кнопочками пилить.
Но что бы этот гуй не вымер со временем и не пришлось опять какой то новый учить. Чисто один раз какой то один инструмент познать и всё, понимаете? Просто, что бы, если понадобилось, то всегда смог и это набросать, не обязательно суперсвистопердельный
> тестовые задания на собесы присылали такие, что надо в гуе с кнопочками пилить.
Тогда QT, guizero.
Все-таки, kivy держится только на мобилках и энтузиастах. Интерфейс десктопной виндовой проги будет настолько непривычен, что им будет страшно пользоваться.
Помню, чуть не охуел от прожигателя linux на флешку. Там НЕТ КВАДРАТНОГО ОКНА.
Как это можно было придумать? Кто этот инопланетянен?
http://actually.pro/0248.html
>«Лоуи полагал, что эстетическая привлекательность - это, по сути, баланс между двумя переменными: привычностью и уникальностью или, говоря на языке современной психологии, типичностью и оригинальностью; найти оптимальный баланс между этими двумя переменными значит создать наиболее коммерчески привлекательный дизайн.
В сущности, это означает, что делать десктоп на kivy нельзя, но мобильные приложения можно и нужно. И делать мобильные поделухи на QT, Delpi и пр неадаптированных для мобилы фреймворках тоже не стоит. Получится не принимаемая юзером какаха.
Так я об этом и спрашиваю. У них на сайте написано, что они сами хуярят некий vs code server прямо на машину: https://code.visualstudio.com/docs/remote/ssh
Какие-то отдельные вещи работают через sshfs, но еще ставят свое апи. Ну хз, понятно, что без этого никак, но я не в восторге от засирания целевой системы всякой цугундерной шнягой.
>>34126
Если контейнеры собирал не джун с хлебушком в голове, то будут. Я с некоторых пор по дефолту во все контейнеры начал хуярить вим, нет-тулзы, стрейс и еще пару вещей по мелочи, и остальным говорю так же делать. Места занимает немного, а с учетом того, что у контейнера после деплоя может на быть доступа к репам, неплохо так спасает.
Я тоже помню такой исо врайтер. Стильно, модно, молодежно. Прямиком из 2000 года. Спасибо за QT, guizero. Покурю.
A Byte of Python норм? 150 страниц это совсем база для школьников хакеров? Или начинать и Лутца и его 1600 страниц? До этого имел опыт быдлокодинга на PHP в 16 лет, ООП не изучал, знаю примитив.
Тебе проблемно официальную документацию почитать? В Пистоне ООП прям ваще для дебилов.
>A Byte of Python
Нормас, если перекатываешься с чего то другого
мимо быдложабист
Пиздец конечно, в питоне дохуя чего по-другому. Массив - это значится по ихнему кортеж, фор используют в основном только как форич, нихуя не понятно, что за тип данных, ибо не подписано нихуя при объялении, но интересно
Для вката, чем тоньше книжка тем лучше.
Byte of Python - норм.
Есть ещё "Автоматизация рутинных задач.." Свейгарта, там Питон даётся попроще ("для школьников"), зато много практичных примеров.
Может? автозапуск из неправильной домашней папки виноват.
Попробуй в начале скрипта добавить:
import os
os.chdir(os.path.dirname(__file__))
если это не андрюха, конеш
знакомые на котлине ебашат бекенды, вроде конторы нормальные
Раньше где то читал( или мне кажется) что assert в продакшен коде не есть хорошо. Что лучше проверть через try и тд.
Но вот в продакшене Весьма не маленькой фирмы сейчас вижу assert это вообще как нориили неть?
Кратко о сути: я отсылаю на бэк json data с одним элементом posts:
data: {posts: [1,15,34]}
Внутри posts собственно лежит массив с нужными мне id. Только вот на бэке эта переменная почему-то доступна не по имени "posts" а как "posts[]". Че это за хня? Почему джанго добавил эти сраные скобки в конце имени? Ппц с толку сбивает
>data: {posts: [1,15,34]}
Где кавычки, если это json, мб из-за этого как раз и неправильно воспринимает
Неа, бро, это жс. Тут кавычки вроде бы нужны, а вроде и нет. То же самое и с точками с запятой: вроде нужны, а вроде и нихрена, попробуй в каждой 2й строчке в рандомном васяноскрипте их убрать, с вероятностью в 80% скрипт запустится
Похоже, что ты отправляешь не жсон. Посмотри запрос в девтулс.
[] обозначаются множественные параметры в хтмл формах.
Я заебался задрачивать джаву. Можно отдохнуть на питонехотя бы на лето? Прочитал зэ байт оф кодэ за пару дней, потыкал в клаву почти наугад, хуяк - запустилось и работает без говна. Написал пип инсталл pyodbc, просто первый попавшийся пример скопипастил - о чудо блять, вот оно, то, что я запрашивал из базы, работает сразу, карл, да я в жизни с жабой такого не видовал, что бы без запердоливания сразу работало всё! И главное - пиздец моментально всё ясно, как и чё куда работает.
Если нет анальных танцев, значит плохой язык, не энтерпрайз.
ids это список нужных айдишников, если что
Как так же эффективно проверить что каждый полученный элемент из posts - принадлежит кому надо, то есть проверить условие post.owner == request.user ?.. только через цикл for?
all(map(lambda x: x owner == request.user, posts)) это пока все, что у меня на уме, нет возможности сделать это на низком уровне (на уровне бд)?
Пиздец я обосрался, сори
>Как так же эффективно проверить что каждый полученный элемент из posts - принадлежит кому надо, то есть проверить условие post.owner == request.user ?.. только через цикл for?
Нахуя тебе еще раз итерироваться по выборке, если ты можешь просто отфильтровать сразу по владельцу еще?
Так запускал. Один и тот же скрипт, будучи сохранён как .py и запущен посредством python.exe работает, а будучи сохранён как .pyw и запущен посредством pythonw.exe- НЕ работает.
>>34364
Проблема вообще не с автозапуском. Она возникает при обычном вызове через даблклик вне зависимости от директории.
Допустим, я делаю онлайн-игру. Соответственно, мне нужно хранить параметры пользователей. Как сделать это самым правильным образом?
Как я рассуждал:
- при регистрации создаётся объект класса player, в таблице реляционной добавляется запись с идшником этого игрока.
Отсюда ещё вопросы:
- как возвращать пользователю параметры актуальными всегда? При любом действии игрока делать запрос к бд? Звучит не очень производительно.
На сервере держать всё в структурах с перидоическим сбрасыванием в базу.
Можешь пользоваться редисом, он ебово быстр. Вообще, большинство любых проблем решается редисом. Базарю, ещё захочешь.
Да за вечерок можно разобраться для практических задач.
>Вообще, большинство любых проблем решается редисом.
Пока не закончится память или он разок не ебнется и ты проебешь важные данные
Для кеширования используют, как элементарно навешиваемый вариант, как раньше был мемкешед, но он элементарно навешивается и на другие задачи.
Ты хотел сказать в постгре.
При чем здесь это, если при малейших проблемах с сервером из-за которых ебнется редис ты рискуешь проебать часть данных? Как хранилище какое-то промежуточное хранилище - отлично подходит, но не как полноценная БД
Которая или порежет тебе скорость, или все еще останется шанс, что между дампами базы что-то ебнет и ты проебешь данные
Везде может ебнуть в неподходящий момент, и везде это решается при необходимости железной надежности.
По-моему, это ты спизданул и приписал мне.
InMemory table для того кто присоединился к серверу.
Только выбери SQL подходящий, точно не MySQL.
Касательно Redis годная идея.
Игрок присоединился - сливаешь все в redis из SQL, а данные в SQL повременно сохраняешь в бэкграунде.
> эта переменная почему-то доступна
Потому что нехуй дергать Джангу. Посмотри на FastAPI и Pydantic. Там хоть понятно какой объект получишь из JSON.
>Ты ммо там мутишь, что ли?
И да, и нет. Но это так, пет-проект, в свободное время занимаюсь. Из-за отсутствия опыта и специфики проекта сталкиваюсь с тем, что вопросы почти не гуглятся, а основные проблемы возникают именно с построением архитектуры
У меня картинка практически слитно идет с последующими текстом, на пикриле видно. Как "отодвинуть" текст немного вправо? В html конструкция вроде этой:
<div class="my-shitty-class">
<img src="/images/1.png">
<p> {{post.title}} </p>
</div>
От нечего делать наваял мини-игру: надо на время угадывать числа, а машина говорит, больше или меньше число надо назвать. Игра идет параллельно с секундомером, который выводит в stderr текущий обратный отсчет. Проблема в том, что в консоли stdin и stderr перекликаются, отчего происходят ошибки. С чего бы это?..
(код надо скопировать и у себя запустить, в браузере работать в любом случае не будет)
https://ideone.com/t6RDmV
Вот рабочая версия. Там через очередь получаем это число и в stderr не выводится время, так что крашиться нечему, но все же: почему выводы "перемешиваются" в предыдущей версии?
Потому что стандартно stdout и stderr выводятся в терминал.
Можно перенаправить python script.py 2> error.txt
Как же я ебал ваш Postgres, сука... идите нахер, все кто заверяет, что это лучшая СУБД
Пытаюсь провести обычную миграцию: создал модель Pic и засунул на нее ForeignKey в уже существующую модель Relation. Каков результат? ОШИБКА: столбец news_relation.img_id не существует
Триггерится он именно на поле img = models.ForeignKey(to='Pic', on_delete=models.CASCADE) которое я создал внутри Relation, видите ли какого-то img_id ему не хватает. Пробовал ставить дефолтное значение - ему похеру. И такое уже блять не в первый раз. Просто ну его нахуй
Попробую угадать, создал модель Пик и добавил ключ одновременно без миграций между ними?
строки 27, 29
Допустим, кто кто установил с нами соединение и послал сообщение
Мы ответили ему хелоуворлдом
Но елды не обращаем внимания, будто нет
Мы вернулись в начало цикла - но клиент ничего нам не присылает
Мы ничего же не получаем, полему соединение не закрывается?
>Мы ничего же не получаем, полему соединение не закрывается?
А почему соединение должно закрыться, если ты его не закрываешь?
Соединение закрывается только в том случае, если был послан специальный tcp-пакет "закрыть соединение".
Отдельная магия есть с пакетами keep alieve и другими.
И ещё, не стоит особо ударяться в селекты в 2020, если ты только именно эту тему изучить не хочешь. Это такой откровенный low-level legacy, сейчас на практике так писать нельзя.
Тебе надо смотреть на asyncio. Глубоко в кишках там те же селекты плюс-минус, но тебе об этом знать не надо.
А asyncio три механизма работы есть, и какой-то аналог селектов, и так называемые протоколы, и совсем высокоуровниевые конструкции. Я бы советовал "протоколы" глянуть в первую очередь, вот для таких задач, как у тебя. Селекты-сокеты уже для самообразования, а не для практики, в том числе в asyncio.
>Тебе надо смотреть на asyncio
Да, к этому и иду, просто через генераторы к async\await а там и asyncio/aiohttp
>А почему соединение должно закрыться, если ты его не закрываешь?
Логично.Получается, 27 строка заблочит поток выполения, и будет ждать, пока что то не придет? Зачем тогда вообще проверка if not request?
Точнее, видимо, туда придет false если клиекнт пошлет пакет на закрытие?
В комнате, в которой заседал президентский совет, были стулья на 4 ножках и табуретки на 3 ножках. Когда все члены совета расселись, свободных мест не осталось, а всего ног у сидящих и у сидений оказалось 39. Сколько было стульев и сколько табуреток?
С меня как обычно
Пробовал и так и сяк. Все равно херня выходила. Почему? (а хуй его знает)
Помогла ручная правка файлов миграций, пришлось создать там поле явно, а в следующей миграции его изменить
Вот уравнение сделал:
Пусть в комнате было x стульев и y табуреток.
Составил уравнение для количества ног и ножек.
2 (x + y) + 4x + 3y = 39.
Раскрой скобки и приведи подобные.
2x + 2y + 4x + 3y = 39.
6x + 5y = 39.
Вырази x через y.
x = (39 - 5y) : 6.
Путём подстановки вместо y натуральных чисел, начиная с единицы, подбери такое значение, чтобы x тоже оказалось натуральным целым числом.
x = (39 – 5 1) : 6 – не подходит.
x = (39 – 5 2) : 6 – не подходит.
x = (39 – 5 3) : 6 = 24 : 6 = 4.
Выполни проверку
2 (3 + 4) + 4 4 + 3 * 3 = 14 + 16 + 9 = 39.
Ответ: в комнате было 3 табуретки и 4 стула.
На питоне если можно. Заранее благодарю.
пиши сам
m.extend([(i,i) for i in range(1,39+1)])
for x,y in m:
... (а догадайся блять)
Вообще проще. По условию, все стулья и табуреты заняты. Если предполагать, что у всех сидящих по две ноги, то ноги+ножки это либо 5, либо 6.
Итого, уравнение вида 5x+6y=39
Пишу слёту, не проверяю, могу налажать:
for x in range(39//5):
____if (39 - 5*y) % 6 == 0:
________print("Possible solution x = {}, y = {}".format(x, y))
А если я на локальной машине пилю, и у меня поделенные сектора мировой карты обрабатывают отдельные процессы, что лучше использовать для таких целей? Для взаимодействия и хранения карты с общим доступом? Queue или лучше какой апи отдельно? Я тут klepto нашел, и там есть hdf5 словарь-файл. Стоит ли сразу на хдф5 переводить карту мира, или в итоге передача данных через Queue будет быстрее?
> Но вот в продакшене Весьма не маленькой фирмы сейчас вижу assert это вообще как нориили неть?
Вангую, что у них нет код ревью либо же там сидят говножоры которые пишут на 20 языках, ни одного не зная толком, и хуярят как хотят.
У меня вот вторая ситуация была, когда у нас появился новый разраб, который знает ГО/ПХП/С++/Реакт/Юнити/Питон, и какой же сука адок он писал.
var
a, b, sum, n: longint;
begin
readln(n);
a := n mod 10; // последняя цифра
n := n div 10;
while n > 0 do begin
b := n mod 10;
n := n div 10;
end;
writeln(a+b);
readln;
end.
С меня как обычно с питоном вообще не знаком
>Раньше где то читал( или мне кажется) что assert в продакшен коде не есть хорошо. Что лучше проверть через try и тд.
>Но вот в продакшене Весьма не маленькой фирмы сейчас вижу assert это вообще как нориили неть?
Нормально. Не слушай талмутистов. Для них всё говно, что не соответствует трактовкам каких-то других талмутистов-самоучек.
>>35225
>там сидят говножоры которые пишут на 20 языках, ни одного не зная толком, и хуярят как хотят.
Например assert очень активно используют в основных библиотеках самого питона. Их пишут и ревьювят те, кто считается, что питон более-менее знает.
Для этого надо знать твой грёбаный паскаль. Если ты питон-3 используешь, то:
a := n mod 10
соответствует a = n % 10
n := n div 10
соответствует n = n // 10
цикл while примерно такой же в питоне, см доки
readln будет input()
writeln будет print()
От души, щас попробую
n = input()
a = n % 10
n /= 10
while n > 0:
----b = n % 10
----n /= 10
print(a+b)
input('Press any button')
Удаленка в России
Кстати, а пайтон транслирует хвостовую рекурсию как плоскую итерацию? Как всякие хаскелы, рэкеты
Это от автора канала Диджитализируй?
Он же это для начинающих советует, лол. Я далёк от знания рынка, но вполне очевидно, что у знания какой-то технологии есть уровень сложности. Понимать основы всего стека в списке и быть профи в этом - разные вещи.
> Например assert очень активно используют в основных библиотеках самого питона. Их пишут и ревьювят те, кто считается, что питон более-менее знает.
Использование асертов, глобалок, построение логики вокруг try/except - не лучший подход и тактика, в большинстве случаев можно очень удобно обойтись и без этого.
То что это юзается в основных либах питона, не говорит о том, что это лучшая практика.
Да, вебом. На прошлом месте работы занимался в основном созданием api для разных CRM'ок, микросервисов и т.д.
Нет, это непитонично
>асертов
А тесты ты как делаешь лол? открою секрет: под капотом unittest и ему побоных сидят те же ассерты
>глобалок
Даже ФП не запрещает глобалки. Оно запрещает изменяемые глобальные состояния
>try/except
Настолько же базовый прием как и цикл for, очнись
> >асертов
> А тесты ты как делаешь лол? открою секрет: под капотом unittest и ему побоных сидят те же ассерты
Речь не про тесты, в тестах понятно что на этом все построено.
> >глобалок
> Даже ФП не запрещает глобалки. Оно запрещает изменяемые глобальные состояния
А кто запретит юному еблану изменить глобальную переменную локально?
Глобальные переменные - зло.
В погромировании много что не запрещено, но есть методы которые не без оснований считаются не лучшим подходом и это один из них.
> >try/except
> Настолько же базовый прием как и цикл for, очнись
На столько же базовый, да, на столько же не рекомендуется он для построения логики вокруг него. Эта штука отлично используется по прямому назначению - отловить ошибку и сделать безопасное завершение куска логики.
Можно делать все что угодно, что не запретит компилятор, но адекватность, красота, удобочитаемость, поддерживаемость некоторый решений вызовет трудности. Вот и все, собственно.
Возможно ты создал первую одновременно, оно упало, т.к. пыталось сделать внешний ключ перед созданием модели. Потом ты попытался по другому, но файл миграции с прошлой попыткой остался и оно все время пыталось применить его перед следующими изменениями.
Ассерты полезны для того, чтобы проверить, например, корректность передаваемых типов данных в функции и сами значения, то есть ошибки уровня "компиляции". То есть когда функция используется некорректно. И некоторые схожие вещи.
Их плюс в том, что они просты и лаконичны. Ассерты можно отключить, это и плюс, и ограничение. В случае if-throw код нагроможенный будет, тебе надо ещё как-то определиться и задокументировать исключение, логика не понятна.
Заведомо плохая идея ассерты для ошибок рантайма использовать - хотя бы потому, что их можно отключить.
>А кто запретит юному еблану изменить глобальную переменную локально?
>Глобальные переменные - зло.
Это проблема еблана. Он может и методы в классе переписать, и много чего ещё. И проблема питона, в котором нет констант.
Переменная - это то, что меняется. Плохо глобальное состояние, которое может меняться из нескольких мест. Потому что сложно логику изменения состояния контролировать. Причём не важно, напрямую ты переменную меняешь или через какой-то метод, проблема общая. Хотя метод чуть проще контролировать при необходимости.
>Заведомо плохая идея ассерты для ошибок рантайма использовать - хотя бы потому, что их можно отключить.
Посмотрел, при этом и для типичных рантайм-ошибок активно используют ассерты в стандарной библиотеке.
Вообще, ассерт это лишь кратная форма проверки + выброс исключения. Но в одну строку и с понятным типом исключения. Ассерт не меняет логику кода.
Спич был о том, что талмутизм плох. Когда утверждают, что чем-то пользуются только неучи, это скорее плохо говорит о самом утверждающем.
Есть какие-то практики оформления кода, что хорошо, а что плохо. Повод задуматься почему, нужно ли в данном месте или нет, может лучше можно сделать. Но некоторые ударяются в религию и буквально следуют услышанной истине, и там п-ц обычно начинается.
Самая клиника - это фанатичные радетели за чистоту коду.
https://cp.sync.com/dl/52fd621c0/efu44czu-kkth5757-yjdh5vw2-rwzy963x
Причем тут жабамразь, ты просто тупой.
В первом случае ты в list comprehension передаешь аргумент функции, а в другом игноришь переменную от list comprehension и используешь несуществующий аргумент.
Так-то второе довольное нетривиальная хуйня, я так сходу и не понял, почему оно не работает, какие-то нюансы со скоупом в компрехеншенах. Тут разобрано, надо будет почитать потом https://stackoverflow.com/questions/13905741/accessing-class-variables-from-a-list-comprehension-in-the-class-definition
Достаточно просто [1] * 10
как же вы заебали спрашивать это каждый тред
Лутц
Ромальо
Саммерфелд
Байт оф пайтон
Пайтон хард вей
Выбирай
Выйди из треда нахуй
В теле класса не должно быть блоков кода, просто.
Вобще, не мучай питоновкие классы, это не жава.
Почему ж не мучать? Пусть попробует метаклассы: https://habr.com/ru/post/145835/ + https://gitjournal.tech/metaklassy-i-metaprogrammirovanie-v-python/
Вот где реално годный контент
В идеале вы должны уметь настроить механизм сессий без веб-фреймворков, просто чтобы понимать, как это всё работает под капотом вашего любимого фреймворка, того же Django. Чтобы у вас было настоящее понимание о том, что там никакой магии не происходит.
Эмм... и как же работает аутентификация или сессии под капотом? Для меня это магия
Работает очень просто.
Создаётся при авторизации ключ и его окончание времени жизни(записывается на сервере), этот ключ хранится у клиента в кукисах, при каждом запросе клиент должен передавать этот ключ для проверки на сервере. Сервер хранит инфу по этим ключам в памяти и при запросе от юзера проверяет наличие данного ключа и его актуальность(не сдох ли), если жив, то даёт доступ, если нет - 403 ошибка.
Вангую, что есть ещё какие-то периодические проверки этих ключей, шоб в памяти старое говно не хранить, во фреймворках всяких.
авторизация это просто проверка прав на конкретное действие, в rest-фреймворках вроде DRF в классах-контроллерах просто определяется permissions, каждый из который является кастомизируемым классом. В самом даунском варианте это проверка:
if object.owner != request.user:
raise 403Error
аутентификация - процесс "логина" в системе с помощью credentials, хуй знает что там именно происходит, но писать свою аналоговнетную аутентификацию как правило не имеет смысла
Я ж во время настройки указываю переменную окружения, засовывая в нее ссылку на файл settings моег опроекта:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
А что делать если проектов будет несколько? Переменная DJANGO_SETTINGS_MODULE перезапишется же
Подскажите, пожалуйста, вот можно писать бота для всяких социалочек на джанго, создается апп в нем папка managment/commands и запускается потом приложение по той команде которую определили ему в этих командах, на сколько я понял из информации в интернете. А как его поцепить рядом с сервером? чтобы файл бота исполнялся вместе со стандартной runserver?
> Лутц
Просил посоветовать, что-то кроме унылого Лутца и первым пунктом он же.
> Пайтон хард вей
Такое себе. На любителя.
> Байт оф пайтон
Редкостное говно. Никому не советую. Think Python много лучше.
> Ромальо
> Саммерфелд
Спасибо, анон, посмотрю. Хочется чего-то фундаментального, но не такого заунывного, как у Лутца.
Почему конструкция:
if os.listdir(dir) != []:
Валидна и мой скрипт работает, а коснтрукция:
if not os.listdir(dir):
Не работает?
У меня работает.
Если кратко - мне вот эта помогла когда-то https://www.aeracode.org/2018/02/19/python-async-simplified/
А то я сжал 7зипом 2 гб в 25 мб и слегка охуел.
В принципе, можно в какую-то key-value базу пихать гзипы, но это тоже не идеал.
У меня есть претрейнед модели для распознавания ретина и йоло и код спижженный из интернета.
Но оба файла моделей не распознают знак аварийной остановки. Треугольнык который ебаный.
Как доучить?
Забавно, надо знакомому сказать, а то тоже жалуется.
Ну вот типо есть aync def g(), в котором await f(). И пока f() выполняется, допустим секунд 10, то типо работает тот код, который вызвал g(). Но как он работает? В отдельном потоке? Но тогда, для какой функции создаётся отдельный поток, когда он создаётся, и вообще, в питоне же есть GIL, которая кладёт хуй на параллельность. Почему тогда код с await должен выполниться быстрее?
Ну и ещё, как я понимаю асинхронность пригодна только для выполнения запросов к серверу?
от 3 до 12 билет стоит $10; наконец, если возраст посетителя больше 12, билет стоит $15.
Напишите цикл, который предлагает пользователю ввести возраст и выводит цену билета.
Решил сделать так -
message = input("Print your age")
message = int(message)
if message < 3:
print("Price = 0$")
elif mes == [3, 12]:
print("Price = 10$")
else:
print("Price = 15$")
Но после второй строки терминал выводит ValueError: invalid literal for int() with base 10: ''
Чяднт?
И как можно иначе написать цикл?
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: ''
Мне-то вообще на неё посрать, но некоторые таки просто текут, когда выходит новый хуйнянейм фреймворк, на 5% быстрее, по которому нихуя документации нет, и сам он вчера вышел, и бегут всё на нём переписывать.
Но тут типо, используются потоки, то это равносильно обычному коду, и потоки по сути не нужны.
?
message = int(float(input("Print your age")))
if message < 3:
print("Price = 0$")
elif message == [3, 12]:
print("Price = 10$")
else:
print("Price = 15$")
Сомнительное развлечение для красноглазиков.
Нет, идея асинхронности в том, что есть специальный цикл выполнения заданий.
Для тебя, как для разработчика, логика в том, что твой код работает последовательно и в один поток, переключение исполнения возможно только в тот момент, когда у тебя в коде будет await (на самом деле чуть сложнее).
В тот момент, когда ты делаешь await (точнее await для future-task, но пока не существенно), в этом момент asyncio лезет в цикл заданий и смотрит, что там у него в очереди, и переключается на следующую задачу.
Соответственно, если в твоём коде сложная вычислительная логика, которая исполняется 10 секунд, и нет асинхронных вызовов, то эта задача так и будет исполняться 10 секунд, ничто её не прервёт, остальные будут ждать.
В этом ключевое отличие от обычной многопоточности. Там переключение происходит в случайный момент времени. Из-за чего возникают проблемы синхронизации, race conditions и т.п.
Как и многопоточность, асинхронность нужны для того, чтобы одновременно вести несколько потоков исполнения. Это не обязательно про производительность. Представь, что ты чат делаешь, где несколько клиентов к серверу подключены. Тебе их надо всех слушать и перекидывать сообщения от одного другому. Тут или многопоточность, или асинхронность.
Но ведь долгие вычисления и с async будут выполняться столько же. Они же в том же потоке, а соответственно используют один процессор.
Да. Асинхронность никак не увеличит производительность завязанных на процессор задач.
Асинхронность - это один из механизмов переключения потоков исполнения, когда твоей программе необходимо обслуживать несколько потоков сразу.
Везде они есть. В случае asyncio их немало.
А если допустим есть две async функции A и B. Как я понимаю, в функции A дойдёт до await, запустится функция B, в ней тоже дойдёт до await. А потом? Программа будет простаивать, пока не завершится один из await? Допустим, в функции B await завершился. Получается, после этого выполнится оставшийся код функции B, а затем основной код будет ждать, пока там доработает await в A, функция A, программа на этом завершится?
А можно ли самому написать функцию, которую можно будет вызвать с помощью await, или это работает только с asynctime и запросами к серверу?
Оператор await означает "ждать результата функции". Ты можешь, в принципе, запустить функцию и не ждать её результата, например как
asyncio.create_task(some_function())
Идейный смысл оператора await - это "здесь я жду результата функции, при этом разрешаю в это время запустить другие потоки исполнения".
А если в ней внутри будет что-то вроде "много много вычислений"?
Допустим, такую функцию эвэйтят из функции A. На месте await управление тоже переходит к функции B? В которой вызывается await для ещё одной функции со множеством вычислений. После этого начинает наконец-то выполняться кода для функции, вызванной из A? Потом для функции, вызванной из B? А потом завершается функция A, функция B?
Но ведь в то же время вся асинхронность работает в одном потоке?
Тогда сразу же за "ждать результата функции" должно начаться собственно само выполнение этой функции. И тогда получается что во всём этом нет смысла. Или вы это время выполняться начинает какая-то левая функция, а выполнение ожидаемой функции отложено на неопределённый срок?
Асинхронность работает в одном потоке процессора, но внутри программы может быть несколько логических потоков исполнения. Одновременно работает один. Но потоков несколько. Периодически какой-нибудь приостанавливается, и отдаётся управление другому потоку.
Особенность async-await в том, что переключение возможно только в момент await (не всегда, чуть хитрее, тут подводные камни есть). В то время как в случае обычного threading исполнение может в произвольный момент времени переключиться.
Оператор await нужен для того, чтобы логика твоего кода смотрелась синхронной. Чтобы не было того callback-ада, как это на JS бывает, если не пользоваться там async-await, которые появились далеко не с начала.
Вроде начинаю понимать. Просто до этого было впечатление, что у этого всего есть только два варианта использования. Либо await asyncio.sleep(10), либо await request.get(google.com) а остальное смысла не имеет.
Так получается, в точке, где стоит await, поток выполнения может перейти на любое другое место в коде?
Т.е
1) может начать выполняться другая async функция с самого начала
2) может начать выполняться код после await где-нибудь в другой асинхронной функции, которая собственно уже выполнилась до await, и то, что было внутри await, в ней тоже выполнилось
3) а может начать выполняться какая-нибудь функция, которая раньше не выполнилась, т.к. перед ней стояли await, и на этом месте поток выполнения переключился
А остальное ок?
А асинхронная библиотеке для реквестов содержит что-то системное, и на самом питоне такое написать нельзя? Там типо к функции запроса периодически возвращается поток выполнения, и проверяет, не завершился ли запрос?
Классы для этого API никто за историю доски не писал? Мне б одним глазком посмотреть.
Остальное ок.
Не ебу как именно устроено aiohttp (или другая библиотека для запросов) внутри, но почти все библиотеки питона синхронные и просто будут блокировать тебе исполнение асинхронного кода (пока ты не перейдешь на их асинхронные аналоги). Они и так на питоне, просто выполняются синхронно и блокируют выполнение.
Исполнение кода любой функции, вызовов других функций, запуска задач через asyncio.create_task и др. идёт синхронно, не прерываясь, до тех пор, пока не встретиться await.
Причём специфика питона, что await должен быть для future-объекта (функция возвращает объект такого типа). Как только это происходит, исполнение блокируется и передаётся в менеджер по обработке задач. Этот менеджер смотрит на другие задачи, которые стоят заблокированные, и решает, кому передать исполнение. После чего та, другая, задача разблокируется. Примерно так.
future - это специальный объект, который может находиться в состоянии "ожидание" и в состоянии "завершён". Это то, что там происходит под капотом.
То есть идея проста. Есть задачи. Есть менеджер, который переключает задачи. Переключение с задачи А на задачу Б может произойти только в тот момент, когда задача А разрешит. Для этого она блокируется в месте вызова с await, и исполнение переходит к Б. Потом через какой-то момент Б делает тоже какой-то await, и исполнение переходит к А опять, она продолжает работу из заблокированного места, если там, конечно, результат уже готов.
Пришел домой, скопировал файлы в папку с проектом, заменив предыдущие, только хотел сделать git push, как он мне говорит что push rejected. Походу ему что-то не понравилось из-за замены доков. Как быть-то? Как файлы проекта объединять?
Ну так архиваторы и эффективны там, нде очень много очень похожих данных. А вот если ты будешь сжимать фапапку, в которой джипеги, пнг, гиф, мп4, вебп и вебм, то вообще не выставляй сжатие, его не будет.
Что add? Я заменил исходные файлы на новые через Ctr+V, они уже были в Гите
В dom-документе например можно поставить событие onclick="myFunction()" на любую button и когда юзер нажмет на нее, то запустится установленный коллбэк. А есть события по типу onkeydown которые срабатывают (внезапно) при нажатии на клавишу down
Как перехватывать такие события в Питоне? Про gui я пока и не говорю, как в терминале перехватить событие по типу onkeydown? Единственное что я видел как перехватывается и обрабатывается это ctr+C но это стандартное клавиатурное прерывание для интерпретаторов
Устанавливал кто левые пакеты js внутрь своего веб-приложения? Как это работает?
У меня есть приложуха на Джанге, как и куда установить дополнительный жс-пакет, который мне нужен? Допустим я сделаю npm install, но как потом использовать его скажем из файла index.js, лежащего в /static?
Ты сам подумал, что написал?
У тебя server-side язык, как ты на нём будешь перехватывать события браузера? Ты и на node.js их перехватить не сможешь.
>Про gui я пока и не говорю, как в терминале перехватить событие по типу onkeydown?
А, если про это, то смотри на всякие curses и т.п. терминальные вещи. В принципе это возможно, но есть зависимость от ОС и терминала, и не очень красиво это.
Логика работы с терминалом сильно отличается от логики работы в браузере.
import matplotlib.pyplot as plt
from math import pi, atan
def arcctg(x):
arc = pi/2 - atan(x)
return(arc)
def population(t):
N = 172/45 arcctg((2000 - t) / 45)
return(N)
a = int(input())
b = int(input())
n = 100
h = (b - a) / (n - 1)
x_list = [a + h i for i in range(n)]
f_list = [population(x) for x in x_list]
line = plt.plot(x_list, f_list)
#Вот тут ничего не выводится
for x in x_list:
if round(population(x)) == 4.5:
print(x)
plt.setp(line, color = 'blue', linewidth = 2)
plt.gca().spines["left"].set_position("center")
plt.gca().spines["bottom"].set_position("center")
plt.gca().spines["top"].set_visible(False)
plt.gca().spines["right"].set_visible(False)
plt.show()
import matplotlib.pyplot as plt
from math import pi, atan
def arcctg(x):
arc = pi/2 - atan(x)
return(arc)
def population(t):
N = 172/45 arcctg((2000 - t) / 45)
return(N)
a = int(input())
b = int(input())
n = 100
h = (b - a) / (n - 1)
x_list = [a + h i for i in range(n)]
f_list = [population(x) for x in x_list]
line = plt.plot(x_list, f_list)
#Вот тут ничего не выводится
for x in x_list:
if round(population(x)) == 4.5:
print(x)
plt.setp(line, color = 'blue', linewidth = 2)
plt.gca().spines["left"].set_position("center")
plt.gca().spines["bottom"].set_position("center")
plt.gca().spines["top"].set_visible(False)
plt.gca().spines["right"].set_visible(False)
plt.show()
7z, насколько я помню, умеет строить словарь не для каждого файла отдельно, а общий. Благодаря этому заметно больше эффективность сжатия большого количества мелких однотипных файлов.
Но это и проблема, потому что для того, чтобы извлечь один файл, архиватору надо просканировать весь архив.
zip-архив - это в некотором роде файловая система, в котором лежат упакованные файлы
7z-архив - это скорее файловая система, упакованная в архив. То есть последовательность другая.
В принципе юниксовые tar + gz/bz дадут аналогичный эффект, как и 7z.
>>36154
>А то я сжал 7зипом 2 гб в 25 мб и слегка охуел.
А что будет, если сжать обычным зипом? Или gzip, если в линуксе работаешь? Возможно ты и так получишь очень хорошее сжатие, пусть и меньше, чем 7z. Если ты сожмёшь с 2 гб до 200 мб вместо 25, это всё равно имеет смысл, но ты сможешь упаковывать и распаковывать файлы прозрачно, налету.
Смотри на модули gzip и bz2 в питоне.
>if round(population(x)) == 4.5:
Ты округляешь до целого числа и пытаешься его сравнивать с дробным.
Как-минимум тебе надо делать round(population(x), 1) == 4.5 - это округление до 1 знака после точки
Но это очень багоёмко, опасно сравнивать явно нецелые числа.
Самое правильное сделать if population(x) >= 4.5. Если округлять, то брать модуль разности.
>population(x) >= 4.5. Если округлять, то брать модуль разности.
Точнее, в случае, если ты хочешь выделить специфичную зону, то самое правильное делать
if 4.5 <= population(x) < 4.6:
И читаемо, и лишний действий нет, и достаточно гибко.
Но тоже багоёмко, поскольку ты выделяешь зону, а не границу.
Условно, у тебя в один год может быть 4.43, а на следующий 4.66? и всё, зона утеряна. Поэтому тебе, скорее всего, надо именно искать больше, а потом сразу выставлять флаг, что зона найдена.
>npm install, но как потом использовать его скажем из файла index.js, лежащего в /static?
Сбилдишь и подключишь в индекс, по-идее так
Да это всё понятно, это т.н. солид архив с большим словарем, всё жмется как один большой файл, грубо говоря, так что все повторения, коих большая часть в хтмл, легко ужимаются.
Гзип же просто последовательно жмет скармливаемые ему данные.
Вот хотелось бы что-то среднее, лол.
Как то можно данные из стриминга выковыривать? Например цену входа и выхода сохранять в список?
Сначала распределенно выкачивается весь набор, потом уже разрабатывается и тестриуется парсинг.
спасибо, из головы совсем вылетело >=
давай сразу тимлидом, чо уж там...
В темплейте закинул <script src"/main.js"> а после запуска браузер мне пиздит что такого файла якобы нет. Че это такое?
если надо по быстрому, то лучше использовать то, что знаешь
а так скорее всего не указал серваку откуда брать main.js , мб надо указать путь к статике или типо того
Должна быть отдельная папка статик, эта папка должна быть указана в конфиге фласка, эту папку надо не забыать в хэдере подключить к ХТМЛу
>а после запуска браузер мне пиздит что такого файла якобы нет
Для начала проверь в консоли браузера, к чему он пытается обратиться. И проверь, что будет, если попробовать выкачать этот url.
Вопрос в настройке статики. Тут есть немного магии, своя в зависимости от фреймворка.
Нужно чтобы распознавало аварийный треугольник. Она не знает такой знак.
import subprocess
def ping_ip(ip):
result = subprocess.run('ping {}'.format(ip), shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
encoding='cp866')
if result.returncode == 0:
return True
else:
return False
print(ping_ip('172.88.1.253'))
<script type="module" src="{% static 'index2.js' %}"></script>
<script src="{% static 'js/test1.js' %}"></script>
Внутри модуля index2.js обычная конструкция:
import {Sortable} from './@shopify/draggable'
При подгрузки страницы браузер в консоли выдает мне ошибку: Loading module from “http://localhost:8000/static/@shopify/draggable” was blocked because of a disallowed MIME type (“text/html”). Кто-то сталкивался? Погуглил, но там все вокруг Ноды-жс вертится, а у меня Джанго... Че это за хрень?
На первый взгляд, MSDN никак не специфицирует возвращаемое значение: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ping (win server, но все же). Одинаковые названия программ еще ни о чем не говорят.
> Безопасность и изоляция данных во фронтенде
> гордому жс-боярину не пристало мараться о такое
))
Фиг с ней с джангой и ее middleware, но CORS - это достойная тема для изучения.
https://habr.com/ru/post/508674
На самом деле, технические вопросы примерно такие же. Свежие выпускники без опыта точно так же могут отвечать на сложные вопросы.
В случае middle-разработчика помимо технических знаний ищут человека, который может работать независимо, сам при необходимости выставлять приоритеты, создавать и брать ответственность за части продукта. Часто у тебя есть список тем, которые ты в продукте знаешь лучше всех, можешь ввести кого-нибудь в курс дела и обсудить с бизнесом расширение существующей функциональности.
В случае senior-разработчика ответственность, технический вклад и нововведения выходят за границы одного тебя. Ты начинаешь определять, что будут делать другие люди (если ты захочешь стать синьором, увеличивая масштабы деятельности), либо как другие люди будут работать (если ты захочешь прославиться сильными техническими решениями). К примеру, в портфолио у тебя может быть история о крупной работе, которую ты предложил (либо взялся за существующую нечеткую идею), спроектировал, координировал выполнение с другими людьми (возможно и делегировал) и несешь теперь за свое решение ответственность.
Соответственно, помимо технических вопросов, которые так или иначе проверяют аутентичность твоего опыта, стоит ожидать наводящие вопросы, которые помогут "той стороне" понять, обладаешь ли ты перечисленными качествами и как ты их применял. Существуют, конечно, ситуативные вопросы-маркеры, по которым можно судить о твоем опыте, однако ко всему не подготовишься. Самый простой способ - это пытаться соответствовать картинке, которую ищет работодатель. Влазить в новые темы, предлагать идеи, воплощать их, и т. д.
Ну и иногда под этими лычками можно ожидать просто вопросы про достаточное или экспертное знание какой-нибудь технологии. Тут уж зависит от того, зачем им разработчик и насколько все в огне.
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6
Принимаю реквесты на книги от анона.
P.s. Было бы неплохо заняться и структурировать все книги по папкам и подпапкам.
Антон, немного странный вопрос:
Есть ебо-продуктовая компания, на 20 человек, основной упор на мобилку и юнити, есть 1.5 бэкэндера(я среди них). Задачи простые, типа добавить модели в БД, подключиться к апи и выкачать данные для маркетинга, запилить новые простые сервисы. Я вроде как мидол и собсна вопрос: есть ли, в таком контексте, шанс вырасти или лучше бежать и искать что-то лучше? По ЗП все ок, но вот унылые таски..
Почему, когда в PyCharm я юзаю дебаггинг, то выскакивает ошибка "pydev debugger: process 30524 is connecting" (число может меняться). Как избавиться от неё, чтобы дебаг работал нормально? Пикрил.
Где пиратские сканы Лутца 5 издания?
Постоянно использую Седер_Н_Python_Экспресс_курс_3_е.pdf в качестве шпаргалки. Ничем особенным не выделяется, но маленькая и не перегружена подробностями.
Неплохо держать под рукой навигационный справочник рецептов : Бизли Д., Джонс Б. К. Python. Книга рецептов / пер. с анг. Б. В. Уварова. – М.: ДМК Пресс, 2019. – 648 с.: ил.
(не скан)
Так же был удивлен, что вместо кучи книг по pandas, лучшей оказалась самая древняя от самого создателя pandas Маккинни_У_Python_и_анализ_данных.pdf (скан, )
(вообще в pandas 1.0 кучу слегка поменяли интерфейсы и ряд примеров не заработает)
640x360, 0:16
>долбоеб не умеет в printscreen
Спасибо за вектор направления, но поясни поподробнее, гугл хуйню выдает по запросу python printscreen
У тебя твой "стриминг" печатает в терминал какой-то получаемый из апи объект, в виде справочника (dict). В чём проблема доставать из справочника нужные тебе цены?
out = {
\t'Цена открытия': dict,
\t'Цена закрытия': dict[c]
}
К сожалению ты слишком туп. Все просто было бы сделать через threading. Один тред слушает входящие данные, второй парсит, третий пишет в бд или файл для визуального разбора.
Я бы с таким набором mongo, redis, clickhouse использовал. SQL для истории, если потом строить графики поведения.
Я бы ещё и асинхроночки добавил, как у меня сейчас даже вебсервис на ней. Uvloop берешь и ебашишь.
Ну да, многопоточность мы еще не проходили и асинхронность тоже. Но можно же и в одном потоке это сделать пока что?
Куда прикрутить твоё \t'Цена открытия': dict? Или в одном потоке это прям ну вообще не прокатит?
Залезть в openapi_streaming, посмотреть какие ещё там есть функции, может там есть готовая функция экспорта данных куда-либо. Либо самому написать функцию, и вместо print_event вызывать.
Когда ты первый раз спросил, я вообще понял пикрил.
Ну нее, твой пикрил я и сам умею. Но вот странность, кроме указанных мной в исходнике, там больше нет функций. Можно добавить другую акию только (до 8 штук). Я и говорю, смотреть можно, а забрать нельзя
Это я бабуин, записывал для другого бабуина вообще, не для треда, а типа "пасатри, как я могу"
нюфани в питон треде просто охуевшие
>Принимаю реквесты на книги от анона.
>P.s. Было бы неплохо заняться и структурировать все книги по папкам и подпапкам.
Добавь эту книжку по asyncio
https://sharefiles.app/download/9103f94448be958d735836791a6f1bc6066cdc3c
Да нахуй она там нужна. Коммить только исходники
Ну как-то так, чтоб в прямом эфире это писалось пока не нагуглил.
Брат, спасибо, что заморочился, но мне не рандомные числа нужны, а конкретно из функции run_stream_consumer() из апишки openapi_client.openapi_streaming
Ты тупой? Я в качестве твоей функции run_stream_consumer() написал свою функцию, которая принтит рандомные котировки.
Вторая функция в другом процессе запускает первую функцию, перехватывая то, что она принтит. Сложить первое и второе надеюсь сможешь?
Я тупой, да. Сейчас попробую, спасибо
Ну нет Popen в моём run_stream_consumer (и на PIPE уверен, заругается)
СОЗДАЙ ОТДЕЛЬНЫЙ ПИТОНОВСКИЙ ФАЙЛ, ОЛЕНЬ, YADOLBOEB.PY НАПРИМЕР, В ТОЙ ЖЕ ДИРЕКТОРИИ, ГДЕ ЛЕЖИТ streaming.py
И В НЕГО ЗАСУНЬ КОД:
import subprocess
with subprocess.Popen("streaming.py", bufsize=1, stdout=subprocess.PIPE, universal_newlines=True) as p:
for line in p.stdout:
print(f"Ленивый алгодаун {line}", end="")
Сорян ,я в тот раз не ту пикчу прицепил
Звучит бессмысленно. Я бы понял ещё мультипроцесс.
Либо вместо Popen попробуй run, либо добавь в код:
import sys
params = dict()
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
params['startupinfo'] = startupinfo
и добавь в параметры:
with subprocess.Popen(..., params)
О, норм тема. А я могу так парсинг и запись в файл мутить для повышения производительности? Есть допустим основной скрипт streaming.py, который скачивает html файлы а затем subprocess.PIPE передает их второму скрипту parsing.py (который собственно и осуществляет вызов subprocess.Popen(["python", "streaming.py"],) и вот он уже парсит эти файлы и записывает нужные результаты в файл
Будет выигрыш в производительности?
(а если еще и написать 3й скрипт writing.py, который будет получать распарсенные данные от parsing.py и записывать их в файлы... так можно? Или смысла нет?)
чел научись сначала хоть как-то что-то делать а потом уже занимайся улучшением производительности
По теме, только что попробовал. Процесс, который должен был занять ровно 10 секунд занял 10.3 секунды, пройдя двойной пайп. Подводных пока не заметил
Поговори со своим менеджером. Какие планы у компании, планируется ли что-нибудь и можешь ли ты в этом поучаствовать. Скажи, что тебе скучно, и тебе кажется, что твой рост замедляется. Если ты готов к какому-нибудь вызову, сообщи это. Во-первых, ты можешь случайно многое узнать о происходящем и возможно получить интересную работу не уходя с работы. Если ебо-продуктовая компания таких размеров не имеет абсолютно никаких планов, то я думаю, что это плохой знак.
Во-вторых, если ничего такого нет, у тебя есть прекрасная история на следующие собеседования: ты не развиваешься, по этому поводу ты вел переговоры с менеджментом и они зашли в тупик. У тебя есть опыт запиливания интеграций с апи и написания простых сервисов, так что с т. з. опыта проблем стать миддлом быть не должно.
Проблема в том, что эти "номера приоритета" постоянно меняются, был у поста номер 3, а стал 7, остальные соответственно тоже сдвинулись: номера от 4 до 7 уменьшились на 1, то есть двух постов с одинаковым номером быть не может, это как индексы в python list. Когда обрабатываю данные на бэке такое часто получается что 2 номера "перекрываются" на небольшой промежуток времени и вылезет ошибка, если это поле order было создано с ограничением unique, поэтому сейчас я его убрал, но в будущем это чревато ошибками
Как сделать поле order с параметром unique но при этом безвылезающих ошибок во время обработки?
Пайпы же в разных процессах ебашат. В этом и профит. Причем самый первый процесс для закачки из сети может внутри ебошить асинхронку
Спасибо, антош.
С манагером разговаривал в анчале весны, тогда вообще все было тухло. По бэку крупных и долгосрочных планов нет, после небольших правок и роста клиентской базы надо будет заняться небольшой МЛ задачей и всьо, но там ебучий рандом форест, нихуя сложного. Мне предложили заняться мобильной разработкой на реакте, от чего я отказался.
Видимо, осенью придется все таки валить.
В buildozer.spec: source.dir = .
Собираю командой buildozer android debug
Что за нахуй, он ебанутый?
это не ты ли тот ебанутый, что недавно в чате искал исполнителя "Склеить две программы в одну" ?
> это не ты ли тот ебанутый, что недавно в чате искал исполнителя "Склеить две программы в одну" ?
Нет
> а каким образом ты умудрился собрать приложение без файла с которого начинается приложение main.py ?
Не знаю, создал отдельную папочку кинул туда main.py и второй модуль, в консолечке вмонтировал эту папочку, написал buildozer init, поправил buildozer.spec(название, заголовок, требования и версию API установил 26, ибо на 27, он у меня усиленно не хочет собираться), и после этого написал buildozer android debug, началась сборка apk, после чего он написал что сборка окончена, апекашечка в папке bin. Я сделал что-то не так?
> в консолечке вмонтировал эту папочку
Ты наверное хуйни натворил в питоне с модулями и дело не в киви.
Исправь сначала все на десктопе
Чтобы проконтролировать систему сборки, распакуй обратно apk, распакуй private.mp3 (так выглядит kivy на самом деле, лол) и пересчитай файлы.
> Ты наверное хуйни натворил в питоне с модулями и дело не в киви.
> Исправь сначала все на десктопе
Да я хрен знает, что там исправлять, я в этом не разбираюсь. Сам скрипт запускается и работает, что в линуксе, что в виндовсе.
В общем сейчас попробую установить убунту и прям по инструкции поставить buildozer и попробовать собрать apk.
>Да я хрен знает, что там исправлять, я в этом не разбираюсь
Ну ахуеть. А как вообще ты программы тогда пишешь?
Надо разбираться с ошибкой, а не танцевать меняя тулзы как папуас.
> А как вообще ты программы тогда пишешь?
Ну а кто его знает, как-то пишу, бывает даже работают.
> Надо разбираться с ошибкой, а не танцевать меняя тулзы как папуас.
Дак я в душе не чаю в чем проблема и куда копать.
Что там может быть с пакетами, если их билдозер сам ставит (покрайне мере как я понял)? Может быть каких-то пактов в самой системе не хватает, но я гуглил аналоги пакетов для арчеподобных систем из инструкции для убунту и установил их. Может я что-то не то поставил или что-то не установил, но как это теперь узнать?
Сейчас попробовал ещё раз собрать и увидел в консоли сообщение о отсутствии install_libs. С этим может быть связано и что вообще такое эти install_libs?
PIPE, Queue, socket, Kafka, RabbitMQ.
Если ты считаешь "мы не проходили" охуенным аргументом, то пиздуй-ка жарить картошку.
Я с нуля вливался во все. Увидел что одни и те же данные нужны многим сервисам и прикрутил rabbitmq, увидел что mysql не справляется с логированием - прикрутил clickhouse.
Если ты тупишь после того как тебе все разжевали учись собирать бигмак.
Ах да сервисы - модули. Работают и не знают друг о друге, но ожидают входных данных.
Пытался разгрузить уебищную MySQL 5.5, на два ядра два гига ведре, иначе каждый раз лезть приходилось туда, а вот 8.0 уже бодрее и то жалею, что решил MySQL оставить как СУБД. Говно полное.
Алгодебилу советую изучить Threading и не ебать мозг с PIPE..
Одна очередь на входящие данные вторая на исходящие.
Я бы запили так:
Parent - producer/consumer, но в виде процессов. Threading это упор в GIL. Когда лочится исполнение кода на какое то время, а играть семафорами уже ближе к байтоебству
Читал ещё советы про частичный парсинг через soupstrainer, есть польза от него?
Чем бы вы в питоне рисовали линии и буковки на экране?
Спасибо, милый человек :)
В DBA я не силен, explain запускал, индексы сделал, сделал даже партицию по weeknum, после первой выгрузки все снова поплыло.
мне пока все нравится, после каждой темы задания есть, на расслабончике по пару часиков в день заходит
>Срд 15:16:34 №1738972383
>>>1738925
>Нет. Питон проебал async и теперь не нужен нигде кроме нейросеток.
Какой же ты сука долбоеб, просто ссал тебе на ебало
Книги это слишком медленно, лучше посмотри видоси от хауди хо учим пайтон за час на скорости 1,5х будет больше пользы, а потом сразу приступай к практике
> я что-то неправильно делаю или на Ubuntu в комплекте с питоном не идёт Tkinter?
У меня в убунту с минимальной установкой даже pip3 не было, так что не удивлюсь
Дистрибутив для людей, говорили они... Легко использовать, утверждали они, никакой хуйни с поиском инфы в интернете, обещали они...
Тоже верно.
Xlrd/xlwrt для .xls и openpyxl для xlsx
Ты троллишь? Нужна готовая среда качай activepython или anaconda.
Pandas для визуализации больше, для датасаенс дебилов с jupyter вместо IDE. Ну и памяти потребляет в разы больше.
Я не вижу проблем выгружать данные как например умеет mysql-connector с атрибутом DictCursor() в виде словарей, где ключ это наименование столбцов. Априори не обосрешься.
Лучше pandas.
Потом в ячейках сделаешь вставку в буфер обмена винды и заебись интегрируешься.
А дебсов местных с ограниченным мышлением слушай поменьше. Pandas пригодится еще не раз.
На самом деле логи пытались мне сказать, что не хватает модулей. А неверные пути он скорей всего писал по причине того, что в апк копируются .pyc файлы, а созданы они были на пк.
В общем читайте логи внимательней. Всем добра
Цели - понять в целом принципы ЯП, разработки и анализа данных, чтобы мог хотя бы читать код и свободно общаться с разрабами и дата аналитиками.
Сейчас прохожу бесплатный курс на code academy, вроде годнота, но он супер поверхностный, рассчитан на 25 часов всего. Есть что-то пообъемнее и поглубже? Чтоб с задачами, практикой и возможностью свериться с эталонным кодом.
Блин, кто тут имел дело с Celery? Поставил себе в джанго эту ебень, а она отказывает отсылать e-mail. Причем я таки настроил cron на Celery: каждые 5 минут моя операция исправно запускается, так что утверждать что я где-то неверно настроил Celery не стоит, не работает именно отправка e-mail
Что именно происходит?При некоторых событиях во View вызывается мой таск send_celery_email.delay(), но вот вместо отправки email или хотя бы падения с ошибкой, джанго просто замирает блин и стоит на месте. С помощью могучего дебагачерез print я это и установил: джанго доходит до строчки с вызовом таска а дальше просто стоит, причем он даже не начинает исполнять тело таска (print на первой строчке не срабатывает). Че это такое? Может это с брокером redis что-то не так? Я хз
> читать код и свободно общаться с разрабами и дата аналитиками.
о зачем им с тобой общаться ? они уже законченная цепочка решения проблем.
По сатанизму нет курсов отвязанных от ML. Это как-то глупо крутить таблицы не имея цели их загрузки в модели. Этим прекрасно и на delphi занимались последние 25 лет.
Посмотри курсы по питону на stepik-е. Сделай там практические задачи
И курс по ML взять первую часть про вращение данным, а дальше не погружаться.
тебе это и пытались донеси.
Сначала смотришь в логи, а потом совершаешь какие-то (тупые ) действия.
Библа cfonts, там же написано всё в коде
Нет, самая обычная контора
Вчера создал новую модель Box, на которую кинул ForeignKey от уже существующей модели Customer. Эта срань падала с ошибкой ProgrammingError при попытке создать миграцию, причем даже если я вручную бы создал файл миграций и попытался сделать migrate, эта манда все равно бы мне показала эту ошибку. Почему? А само поле box = ForeignKey(to=Box, null=True) его вызывает! То есть его надо закомментить и только потом делать migrate, сука нахуя?
Также недавно работал с тестовым проектом из другого места, поэтому изменил в настройках основную БД с Postgres на sqlite (постгреса там не было), решил создать новое приложение через startapp, сын твари упал... Как думаете из-за чего? Из-за невалидного импорта ArrayField в models.py от другого приложения. С хуя ли? Я ему сказал новое приложение создать, его ебать не должно что да как импортируется в другом
>>33222 (OP)
Суп народ
Есть одно тз:
https://docs.google.com/spreadsheets/d/1LFknKlNyarjpAwb5jm-9ZOHyi3zaXt-cadAUo39MSnA/edit?usp=sharing
Тут очевидно про звук что то. Что означают числа в столбце F - я хз.
Подскажите, от чего отталкиваться, чтобы найти особенности в данных? На что обратить внимание, что сделать в первую очередь?
settings.py:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json',]
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
Запуск celery:
celery -A my_project worker -B -l INFO
распарси F столбец на несколько столбцов,построй pairplot / scatterplot всех признаков со всеми, построй распределения всех признаков (distplot), посмотри если ли выбросы в данных, нарисуй кореляционныую матрицу, посмотри что с чем сильнее всего кореллирует, дальше делай выводы на основе того что видишь
Сколько celery будет актуален? Джанго уже обоссан простейшими фреймворками c uvloop на борту. Где ещё нужен этот комбайн celery+rabbitmq/redis?
Вернее такой вопрос. Будет ли выигрыш в передаче таска (асинхронный реквест + запись в БД) в celery из основного потока?
Звучит нормес, пасиба
>>40111
Травлю кулстори: по какой-то причине таск фризит только когда я его объявляю через декоратор @shared_task
Когда в файле my_app.tasks я обозначил таск через:
from my_project.celery import app
@app.task(bind=True)
Все завелось и заработало. Естественно надо в таком случае передать аргумент self в функцию, т.к. он туда идет по дефолту
Я хер знает, может версии какие-то несовместимы?
redis-server 3.0.6
celery 4.4.5
Django 3.0.7
redis(python) 3.5.3
Ubuntu 16.04
В душе не ебу в чем конкретно проблема, мб ты автонахождение не включил, настроил не так, импортировал хуево. поэтому я уже раза 3 написал вызвать функцию без делэя, чтобы посмотреть в чем именно у тебя блять проблема
https://www.humblebundle.com/software/python-programming-software
(Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0xc85f1820>: Failed to establish a new connection: [Errno 7] No address associated with hostname'))"
И как бы да, мой хост был забанен любимым роскомпозором, но я перед запуском приложения подрубил впн на телефоне.
Причем самое смешное, что AsyncImage так же не может загрузить изображение, хотя я даже ради теста взял ссылку на изображение из поисковика. И всё это точно с этой же ошибкой. Такое чувство что моему приложение просто отключили интернет.
Кто-нибудь может подсказать почему такое происходит?
Добавлю что на ПК всё опять же работает
Он же тебе написал, что нет модуля с именем 'typing'. Херач pip install typing
Полгода Пичарма довольно дешево выходит - остальное хуйня
Можешь его выкинуть и почикать эти типы.
Дык у меня upper intermediate, вся хуйня, просто вечерами как то влом иногда бывает на английском читать - кто бы что ни говорил, но это так или иначе часть ресурсов хавает.
Дружище, я не против книг на английском, просто мне, сука, хочется вот эту вот конкретную книгу, понимаешь? В бумаге, возможно, куплю если не найду, но пока надежды не теряю.
Без делея все запускалось... С делеем он даже в тело таска не заходил. Пока буду через app.task сидеть (надеюсь я ничего не наебнул в долгосрочной перспективе)
Вообще говоря redis принимает и возвращает аргументы которые можно сериализовать в json, а как ему python object передать? Это вообще возможно или нинужно?
Тогда хуй знает, я помню у меня похожее было, но в итоге вроде оказалось что в самой функции проблемы были, хотя я точно уже и не помню. Попробуй полностью по документации пройтись, там для джанго фактически скопипастить все надо.
>python object передать? Это вообще возможно или нинужно?
Можешь сериализовать и закинуть, можешь взять сразу какую-нибудь django-redis, он сам за тебя будет сериализовать.
Да нет, самое то. Ты же не будешь писать какой-то выебистый фронт сразу на темплейтах джанго?
В чем проблема? У джанги куча модулей не связанных с фронтом, которые могут пригодится
Ну апиху спокойно можно накинуть на джанго, просто часть функционала не будешь использовать.
Ты же просто калбеки вешаешь на получение эвента, в чем проблема закбошить туда все что хочешь?
Забанили на SO? https://stackoverflow.com/questions/11091623/how-to-install-packages-offline несколько вариантов.
Нет, не одна.
Вот вторая версия автоматизации в отличном качестве, ибо куплена для анонов.
https://ln2.sync.com/dl/6018bb520/vha7gz3k-xxs9ask2-xrdiuqf6-dtirh597
а как надо?
>>40412
>>40560
Переименовывал файлы, извени
https://cp.sync.com/dl/c798e6910/pkzysasu-cwyg5sa5-mwztgwrm-ab8wqqdp
Разобрался. Необходимо в buildozer.init указать 'android.permissions = INTERNET'
Кто-нибудь использовал?
Вообще, идея "прошел курс - стал погромистом" это хуйня на палке, рассчитатная на лопухов.
Но в целом смотреть видяшки норм, мне легче удерживать внимание. В процессе можно догоняться документацией по поводу
деталей, потому что обычно очень всё поверхностно у них.
Ага, ага, иди портируй ещё пару либ на async.
идея норм, только не ведись на всякие яндексыхуяндексы, они вообще охуели со своими ценами
Иди англоязычные на udemy и на datacamp
пиздос, датакамп всего 1700р, по сравнению с хуяндексом
У яндекса есть наставник которого я могу ебать вопросами, плюс 3 проекта в портфолио, плюс в конце дипломный проект который я буду делать в группе с такими же макаками как и я. То есть навыки работы в группе, как минимум.
udemy и на datacamp - разве такое могут?
Я иду в первую очередь чтобы бороться с прокрастинацией. Когда у тебя на изучение тем и на определенный проект есть определенный дедлайн, мне кажется это должно мотивировать что-то делать. Но так же опасаюсь, что если вдруг смогу дойти до конца, катализатора в виде дедлайна не будет, и я опять начну волоебить. Тут либо срочно нужно будет искать работу джуном, либо все пропало. А таких как я андрюшей выпускают пачками, и для того, чтобы попасть джуном я хз что нужно будет сделать. Так что я блядь пока в раздумьях, но обычные онлайн курсы мне точно не подойдут.
>Я иду в первую очередь чтобы бороться с прокрастинацией
Ну хуй знает, так себе идея
>Когда у тебя на изучение тем и на определенный проект есть определенный дедлайн, мне кажется это должно мотивировать что-то делать
Не
Попробуй совмещать свою РАБоту|учебу с питончегом.
Тип надо обработать таблицу ->pandas + openxlxs+xlrd
Тип надо надо сделать презентацию -> python-pptx
Тип надо сделать, чтобы все охуели ->plotly, K3D Jupyter
Тогда точно пройдет, а это все хуйня, если тип просто заниматься "для себя"
>Попробуй совмещать свою РАБоту|учебу с питончегом.
Да в том то и дело, что я на изи могу совмещать свою работу с чем угодно. И не раз брался за обычные курсы без времени действия, только вот хватало меня на месяц блядь. Потом опять начинается "сейчас проверю каналы в телеге", потом "так ну теперь ютубчик", потом "ну чуть двач по скролю" - и все, конец блядь рабочего дня. Приходишь домой играешь в игры - а потом ложишься спать, чувствуя себя безвольной мразью.
>Попробуй совмещать свою РАБоту|учебу с питончегом.
>Тип надо обработать таблицу ->pandas + openxlxs+xlrd
>Тип надо надо сделать презентацию -> python-pptx
>Тип надо сделать, чтобы все охуели ->plotly, K3D Jupyter
И вот такой вопрос, а правильно ли самому начинать? Может если начинать под руководством наставника, меня научат сразу грамотно писать код, с правильными комментариями. Возможно ли такое, что после самообучения мне придется переучивать себя писать, так сказать - правильно?
как выбрать ПЕРВЫЙ <ol> ?
namelist = tree.xpath('//ol[@class="n8H08c BKnRcf"][1]/li')
- выбирает 607 значений, а должно быть около 500
Вот полный пример https://pastebin.com/YEBNGEu7
Всю работу с БД выношу в отдельный файл. В нем функции, каждая делает что-то свое - обновления, выборка etc.
Мне нужно в каждой функции создавать соединение заново, создавать курсор и закрывать соединение?
Бля, ну я как обычно.
стоит написать на форум - сразу гуглится решение и становится все понятно.
https://stackoverflow.com/questions/4117953/get-second-element-text-with-xpath
>This is a FAQ about the // abbreviation.
(//ol[@class="n8H08c BKnRcf"])[1]/li
делай что хочешь, но не удивляйся если все тормозит.
Прикидывай условия в которых будет работать твой код. Важно это или нет.
Конечно же, шаблон в том, что нужны постоянные соединения.
Важность пула соединений в mysql и примитивных бд сильно преувеличивают.
Создаешь один раз и передаешь параметром.
Ещё удобнее использовать класс для бд, в котором всё будет сидеть.
А дедлайны там есть для сдачи? Если нет, то я как обычно брошу через месяц, другой..
То есть я хочу обработать данные и перенаправить юзера на другую страницу, а он не желает перенаправлять. Данные принимаются и обрабатываются, но redirect не происходит
Это выполняется через хттп заголовки, как они у тебя сработают на ажахе?
Почему такая собачья хуйня, как FastAPI вообще существует, и почему на ней пишут?
В каждом сообщении читается - ну разрешите мне в Яндекс, скиллбокс и гикбрейнс, ну не отговаривайте. Иди если решил. Если адекватных советов не слушаешь и сам все знаешь. Вьебешь бабла, послушаешь всякую ересь и успокоишься
Навыки командной работы ты и с анонами можешь практиковать.
А курсы - хуйня без задач.
Если тебе надо и ты хочешь изучить что-то - читай книги/статьи, если же нет - иди нахуй.
Спасибо!
Обычный crud
Меня интересует есть ли дедлайны для сдачи той или иной задачи или нет. Я пробовал уже подобные ресурсы, по этому и такая реакция.
Я обычный веб разработчик, и вижу смысл вкатываться во что-то новое, только если это будет приноситься больше денег/работать нужно будет меньше/работа будет проще/таких специалистов мало, и работ найти легче.
Вот, скажем, если я вкачусь в BigData, выполняется ли какой-нибудь из этих пунктов, или это просто ещё один способ высушить себе мозги?
Ну вначале тебе надо разобраться что такое дата анализ. Потому что это очень много что включает, много разных направлений.
Вкатиться в дата сайенс звучит как вкатиться в айти.
>Если тебе надо и ты хочешь изучить что-то - читай книги/статьи, если же нет - иди нахуй.
Я пытаюсь найти истину, перебирая противоречивые мнения. Например мой друг никогда не кодил, и через 2 года самообучения сразу смог устроиться джуном на 70к в дефолт сити. Прошло уже года 3, сейчас его зп 250к+. Лично он говорит, что наоборот стоит пойти на курсы, потому что по его мнению там сразу направят куда надо, вместо того, чтобы терять 2 года своего времени. Аноны говорят наоборот - книги, обычные курсы и самообучение. С одной стороны у меня есть личный пример успешного вливания в карьеру, и куча противоположных мнений с другой, которые я тоже не могу игнорировать. Короче хуй знает.
Курсы нужны тем у кого с либо проблемы с усидчивостью либо лень искать инфу которой нет в инете.
Сам начинал с книги Златопольского.
Пытаюсь вкатиться на галеру (data science/development), что нужно знать джуну?
>Прошло уже года 3, сейчас его зп 250к+
Так ты тоже говори что у тебя зарплата 250к+. Так все делают.
в pickle засунь объект и в бинарном виде отправляй, на принимающей стороне читай байтики и разпикливай обратно
Вроде бы всё нормально, но выводится вот такая ошибка
UnboundLocalError: local variable 'layer_result' referenced before assignment
Почитал немного в сети, вижу что это частая ошибка у нубов, каковым я и являюсь. Но если честно, НЕ ВИЖУ где в коде эта переменная используется раньше своего определения. За пределами метода НИГДЕ данное имя не используется. Как это исправить и как не обсираться в будущем.
Кусочек моего кода
https://pastebin.com/kYFERuvq
Благородные доны, помогите новичку с проблемой, пожалуйста:
сайт: https://sudrf.ru/index.php?id=300#sp
Пытаюсь выбрать пункт верхнего дропдауна (Субъект РФ). Использую Selenium. Не выходит никак. В основном - element not interactable: Element is not currently visible and may not be manipulated.
Подскажите, пож, где я даун и в какую степь копать?
сделай вот так
for lay_num, lay_size in enumerate(layers):
_print (lay_num, lay_size)
и в следующий раз используй отладочную печать вместо подобных вопросов на дваче, так ты ничего не научишься
Точняк, списки-то изменяемый тип, забыл.
Спасибо за совет, буду знать, Точно!!! Надо всё построчно проверить!!!!
Выучи столько, чтобы было достаточно пройти собеседование на бесплатные курсы в какую-нибудь галеру. Дальше учишься там, работаешь, и через годик уходишь куда-нибудь на зарплату в 2 раза больше.
Да сами курсы месяца 4 длятся Чему там можно столько самообразовыватсья, чтобы в итоге через два года всё равно получать 70 000.
Проблема твое друга в том, что он ни у кого не мог спросить что ему надо учить и куда двигаться. Твоя ситуация отличается от его, у тебя есть целый тред анонов, и часть из них имеет неплохой опыт в пистоне. Тут с радостью отвечают на адекватные вопросы и реквесты.
Но окончательный выбор конечно за тобой.
def test(request):
----print('RECEIVED:', request.POST)
----return HttpResponseRedirect(redirect_to='/profiles/')
У меня постоянно выскакивает 403 Forbidden (CSRF token missing or incorrect.). Че ему блин не нравится? Точно так же этот токен нахожу и передаю. Внизу ссылка на код функции, которая делает прямой запрос, возможно я как-то не так передаю этот токен когда шлю свой post-запрос
https://ideone.com/KF9o9x
А каким методом он определил, что курсы помогут тебе лучше чем самообучение? В твоём сообщении нет инфы, что он проверил это на себе и это работает. Друг ещё тот советчик
может надо дождаться когда js всю страницу отрендерит
В общем: токен таки удалось явно передать:
xhr.open('POST', '/', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('X-CSRFToken', token);
Думал, что проблема в 403, однако ж редиректа по-прежнему не происходит. На бэк данные попадают и обрабатываются как надо, но HttpResponseRedirect(redirect_to='/profiles/') на фронт по какой-то причине не приходит (или не обрабатывается). Как форсировать этот редирект? Когда данные отправляются через <form> то редирект под капотом спокойным образом работает, здесь же - нихрена
Не гуглится. Скинь ссылку, пожплуйста
Это копия, сохраненная 1 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.