Это копия, сохраненная 8 сентября 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1665888 (OP)
Литература:
Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.
Ещё книжки: 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/aaNRDPe2xXh2
Возможно актуально
>>1674111 →
>Аноны, стоит ли объединить все наши репы с книгами в одну большую и живую?
В том числе kivy.
Ну нахуя столько хайпа? Какие проблемы синхронизации убирает async ?
рандомному двачеру не верите, так хоть Хабр почитайте
https://habr.com/ru/company/hh/blog/280892/
асинхронность - не панацея, если ты не знаешь зачем она конкретно тебе нужна, то она тебе не нужна
>Какие проблемы синхронизации убирает async ?
Нет такой проблемы как thread-unsafe, переключение потоков идёт в заранее известный момент времени.
Синхронный код далеко не обязательно пригоден для многопоточности, вот в этом проблема, например.
>рандомному двачеру не верите, так хоть Хабр почитайте
Автор путается в понятиях. Асинхронность в питоне ровным счётом не про callback-hell. И они переписывали на java, которая ориентирована на многопоточность. Там автор скорее рассуждает, что многопоточность там хорошая и можно от неё не отказываться.
Посыл статьи таков, что можно было бы переписать на питоне с тредами и стало бы заебись. Gil не считается заметной проблемой
асинхронность и многопоточность это не противоположные вещи, во-первых
https://discuss.python.org/t/what-are-the-advantages-of-asyncio-over-threads/2112/6 , во-вторых
Чел мне лень разбирать их говнопример, могу тебе сказать что там был торнадо и во вторых с помощью async await легко реализовать PubSub вебсокет например.
Нет так такого посыла, автор смотрел исключительно на треды в java, питон там вообще был не при деле. Просто на питоне был исходный код, который они портировали, чтобы весь код был на java.
На питоне треды вообще смысла не имеют, только в контексте, они выигрыша не дают. Но их можно использовать, чтобы портировать какой-то старый код в тот же асинкио.
stackoverflow.com/questions/61599310/pytelebot-schedule-send-msg-at-certain-time
у тебя твоя функция job принимает аргумент message, ты передаешь функцию job какой-то хуйне чтобы она эту функцию вызвала, но откуда взять message ты ей не сказал
питон тебе пишет
Бля, в метод job не был передан аргумент message
я хз что ты сделать хочешь, но крч проблема вот такая
Это я понял, спасибо
По специальности дата-сатанист стек соответсвующий, параллельно могу в автоматизиацию разных рутинных задачек (агрегация, рассылка, внедрение моделек в прод), парсинг разной сложности, синтаксический анализ. Веб пока как хобби (пилю интернет магазин для знакомых).
Ну а я прочитал именно так.
В конце концов, программисты десятилетиями использовали треды. Откуда эта мода на асинхронность во всех языках одновременно примерно в 2014-2017? Даже в 1с анонсированы асинки буквально на днях.
Все решили написать nginx? Так nginx давно написан.
Мне нужно практичное объяснение феномена
Насчёт удобства API я хуй знает, но писать сюда:
Бро, подскажи что учить и как вкатываться в дата-саенс?
Сам я интернет-маркетолог года 3 как, могу в PBI (dax и m), sql на норм уровне, основы статистики. Питон на уровне выгрузки данных из апишек систем веб-аналитики/веба.
Пытаюсь подступиться к глубокому анализу данных (решаю задачки с pandas) и машинному обучению, но не знаю с чего начать. Лин.алгебра? Или погрузиться нормально в питон? Или все параллельно изучать?
Заранее большое спасибо!
>Что делать?
Начни с получения вышки по математике.
Или ты думал, что можно просто написать:
from data_science import ML
ai = ML.train()
ai.enable_vision()
И тебя сразу возьмут на 300к в наносекунду?
Наивная буратина, иди в толока тред, там тебе всё подскажут.
>Или ты думал, что можно просто написать:
>from data_science import ML
>ai = ML.train()
>ai.enable_vision()
>И тебя сразу возьмут на 300к в наносекунду?
на 300к вряд ли, а на килобакс - вполне
мимо
Ничего я не думал и 300к мне не нужно. Изучать буду для себя ибо есть идея для стартапа и лучшей реализации кроме как на перечисленом мной я не нашёл.
>есть идея для стартапа
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Вот и поговорили.
>Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
Когда это говно из шапки уберете? просто ебалайка и потерянное время.
я ебал такие тренды.
однако и ООП и функциональщина обусловлены конкретными проблемами и, как минимум, после спадения хайпа, умеренно обогатили программирование нужными концепциями .
с асинком не очень понятно.
Может быть, ситуация когда вся программа представляет из себя набор "критических секций" разделенных await, проще воспринимается, чем треды, где нужна отдельная синхронизация и явный вход в критическую секцию ?
а как в дотнете? мне тут рассказывали что в дотнете есть пул тредов и таск не обязан создавать тред, но может и создать.
Годно, спасибо.
мы не понимаем, что ты хочешь спросить. в C# тоже есть async/await. Это нужно при большом количестве запросов на ожидание IO, тысяча таких ожиданий дешевле по памяти и проще в синхронизации чем несколько потоков.
Можно ли не юзать async/await а заебашить через TaskQueue? Да, можно, собственно async/await это обертка над такой очередью EventLoop.
Примером такой задачи может служить ручка, которая собирает ответы из разных сервисов параллельно, то есть делает три параллельных запроса к сервисам, потом собирает ответы в один.
Все это ответ на проблемы возникшие при возрастании нагрузок, обычные 4, 8, ... тредов блокировались и начиналась ебанина с таймаутами, изобретением собственных фреймворков и пр.
Если не понимаешь о чем речь, то постарайся ответить на вопрос: чем многопоточность отличается от асинхронности, чем многопоточность от параллельности, может ли быть асинхронность без многопоточности.
В конце концов, твой вопрос и все невразумительные ответы этот ответ тоже хуйня я понимаю довольно понятны. Даже среди прокаченных разрабов есть спор о том имеет ли вообще смысл такой подход, дает ли он реальных преимуществ? Четкого ответа как писать код - нет.
https://stackoverflow.com/questions/48020593/python-what-are-the-advantages-of-async-over-threads
https://medium.com/@jasongoldstein/im-to-stupid-for-asyncio-ff74809cc84d
https://hackernoon.com/threaded-asynchronous-magic-and-how-to-wield-it-bba9ed602c32
В своей работе встретил проблему, когда пришлось перейти на асинхронный фреймворк. Можно ли было решить задачу иначе? Да. Дало бы это профит? Хз.
>мы не понимаем, что ты хочешь спросить
1. в чем реальная выгода async/await помимо строчки резюме?
2. нет ли здесь грандиозного наебалова? Ведь тысячи одновременных запросов среднему бизнесу не достичь все равно. А библиотеки не такое большое число.
3. заменить видео с ретреспективой говнофреймворков и реализаций из шапки, на обучение async в современном стиле. Я такое виде просто не нашел. У всех ретроспектива ненужных подходов.
На доске есть тред по машобу, а вообще тебе анон все верно сказал - без хороших знаний в математике у тебя нихуя не выйдет
>1. в чем реальная выгода async/await помимо строчки резюме?
А ты хорошо умеешь в многопоточное программирование?
>>77607
> Ведь тысячи одновременных запросов среднему бизнесу не достичь все равно.
Для массовых веб-сервисов - реальное число.
>>77058
>Откуда эта мода на асинхронность во всех языках одновременно примерно в 2014-2017
Это проекция микросервисного похода проектирования на проектирование конкретного сервиса. Внутри задачи у тебя крутится много подзадач, взаимодействующих друг с другом.
async/await - наиболее читаемая и понятная форма. Хотя и есть споры, что может быть это не самый лучший подход, можно было лучше придумать.
Сам принцип хорош тем, что даёт тебе хорошую читаемость и предсказуемость того, что происходит. Намного проще проектировать, и ты можешь с теми же усилиями проектировать значительно более сложные приложения.
Минусы в том, что параллельно сложно так что-то делать. Есть более сложные подходы, что позволяют совместить потоки и асинхронность.
Мне кажется, что сама идея использовать потоки для обхода блокировки порочна, это костыль. Не для этого потоки нужны. Потоки нужны именно для распараллеливания.
1. не блокировать поток выполнения
2. нет, для того чтобы все встало раком достаточно N блокирующих запросов в N потоках, и это N обычно в районе 9 (число ядер на машине x 2 + 1)
3. если найдешь замени. тут тонкость в том, что те кто уже прогают обучалки не смотрят, а те кто смотрит не всегда выкупают что хорошо, что плохо
все так, анон, про параллельность вопрос в общем случае мы говорим или про питон. Так-то async/await как тренд пошло из интепретируемых языков с около GIL проблемами
##
other = asyncio.create_task(api.get('/other'))
another = asyncio.create_task(api.get('/another'))
# запросы выполняются параллельно и latency на получение result меньше
# + await деблокирует тред и мы можем принять другой запрос
result = (await other) + (await another)
##
вчера нюфаня, завтра сеньораня. Объясняя что-то ньюфагам ты:
1) прокачиваешь себя, объясняя базовые вещи, лишний раз повторяешь их и лучше начинаешь понимать
2) создаешь коммьюнити епта
но троллей кормить тоже не надо
> про параллельность вопрос в общем случае мы говорим или про питон
Сейчас тут началось со статьи на хабре, >>76720 , а там на самом деле не про питон, а про java.
Я никогда реально не пользовался многопоточностью на питоне, потому что она неполноценная, делал в несколько процессов, когда-то очень давно, когда надо было читать из нескольких сокетов, делал через селекты (там вообще в проекте второй питон был). Сейчас пользуюсь асинкио.
Для питона многопоточность заведомо неоправдана. Или процессы, или асинкио.
Но чисто архитектурно, потоки не такая плохая вещь и всё в итоге зависит от реализации машины. Машину МОЖНО реализовать довольно хорошо. На питоне этого не делали, но на некоторых других платформах делают.
Машина теоретически может переключать потоки оптимально. Всегда внутри есть планировщик (scheduler), который решает, на какой тред переключить исполнение. Если планировщик видит, что исполнение застопорилось на системном вызове, то он просто не будет переключать на эту задачу исполнение, пока вызов не разблокируется. Так и в asyncio, так можно делать и с тредами.
Никакой принципиальной разницы в этом. Треды возможно реализовать очень оптимально.
но ведь из-за тебя мы страдаем!
какие-то пидоры понаписали асинков, а HH потом за вами вынужден разгребать!
ничего не понял что ты сказал. Почему асинкио не оправдан в питоне? Предлагаешь как и раньше ебашить селекты?
Я же сказал, что когда-то ебашил селекты, сейчас пользуюсь асинкио.
Для питона асинкио оправдан. Треды не оправданы, потому что реализация говно в cython. Хотя есть альтернативы. В любом случае сейчас все библиотеки на асинкио перестраиваются.
Я говорю, что сама технология тредов не такая уж тупиковая.
асинхронность и многопоточность - это разные вещи, они не противоположны и не взаимоисключающие
>А ты хорошо умеешь в многопоточное программирование?
внезапно, многие умеют отлично. потому что django использует mysql, а тот вообще-то не теряет данные внутри транзакций и лишь легонько блокирует sql внутри.
>А ты хорошо умеешь в многопоточное программирование?
Пиздешь. Их нет. Единицы стартапов долетают до 50 запросов в секунду. А сколько из них не долетит до результата из-за переусложнения?
>Мне кажется, что сама идея использовать потоки для обхода блокировки порочна, это костыль. Не для этого потоки нужны. Потоки нужны именно для распараллеливания.
В дельфи же пример в каталоге examples лежит 25 лет! И нормально было.
(хотя я не проверял лежит ли)
Кроме того, пугает объем книги по асинхронному дотнету. она реально большая и автор заявляет, что наконец-то он опишет все как надо, а не через призму устаревших подходов.
>Для питона многопоточность заведомо неоправдана. Или процессы, или асинкио.
но ведь единственное, что нужно знать про GIL - просто забудь про GIL.
Очень близкие на самом деле. Конкурентное исполнение нескольких потоков исполнения в одном процессе.
> внезапно, многие умеют отлично. потому что django использует mysql, а тот вообще-то не теряет данные внутри транзакций и лишь легонько блокирует sql внутри.
ну блядь нет проблемы с многопоточностью у стандартного питониста. пиши себе на джанго и http в принципе обрабатывается без проблем.
>Кроме того, пугает объем книги по асинхронному дотнету
Для многопоточного будет ещё больше. Для разработчика async/await отличается только тем, что ты всегда знаешь, в какой момент может поток исполнения переключиться. А в тредах это может в случайный момент времени произойти, из-за чего и проблемы с ними.
Подходы к проектированию многопоточных приложений тоже меняются, в сторону, общую с async/await.
есть)))
Когда мы говорим про многопоточность, подразумеваем модуль threading
https://docs.python.org/3/library/threading.html
ну ладно.
вот задача из носа:
как архитектурно реализовать на питоне с помощью, например, aiohttp, серверное приложение загружающее все 16 ядер процессора ?
важно чтобы http был с защитой от ddos. Для защиты от ddos, предлагается использовать глобальный хеш ip клиентов с подсчетом запросов в секунду или любую другую глобальную структуру данных.
> всё это
Что именно?
Попробуй без asyncio или threading сделать скрипт, слушающих два сокета одновременно. Да, select ещё вариант, но он не проще.
Это самые обычные задачи, особенно с учётом, что веб сейчас активно вебсокеты использует.
а я просто даже в threading могу выбрать синхронизацию в mysql и отличненько сделать пресловутый говнопарсер.
16 или больше процессов aiohttp, плюс какой-нибудь редис.
никак, и асинх тут ни при чем
https://docs.python.org/3/library/multiprocessing.shared_memory.html
Отдельно все слова понял, их комбинацию совсем не понял.
погоди, ты предлагаешь байты из линейной памяти распаковывать-запаковывать? как мне натуральной с общим хешем или "текущим ведром" работать?
> этот чел
я вас не различаю вы все аноны если ты про
>>77792
то нет, я не понял что он имеет в виду. Видимо какую-то муть с тем что в таблице mysql менять поле и везде чекать. Каким боком тут async не понятно.
нет, не взял. кмк не так страшно если чувак чего-то не знает, пусть даже важного, намного хуже когда человек выучил какую-то хуйню и теперь ее всем форсит
https://stackoverflow.com/questions/6832554/multiprocessing-how-do-i-share-a-dict-among-multiple-processes
если ты спрашиваешь как в питоне это сделать чтобы все в одном месте то никак
если ты спрашиваешь как делают ирл, то сверху написали, отдельно 16 питонов и редис общий
>отдельно 16 питонов и редис общий
пиздос кокой.
так это, получается, threading с перекладыванием примитивов в mysql примерно такого же уровня
ути какой умный двачеренок
А то после python/django/flask/fastapi, жс выглядит не очень логично, понятно и читабельно. Имею ввиду не pure js, а фреймворк какой-нибудь вроде vue.
Какие рекомендации девелоперов с опытом?
google drive
Никто не боролся? В настройках Апи не нашел, мб плохо искал
я другой анон, но тоже хочу освоить какой-нибудь vue.js плюсом к бекенду. Основные причины две: во-первых, лучше понимать, что и как происходит на фронте; во-вторых, иногда нужно просто сделать какую-нибудь страничку с двумя кнопками и напрягать фронтов просто нерационально.
Я вон пока в Django пытаюсь, только вот тоже есть желание выучить азы JS, т.к. понимаю надобность этого. Перед Django выучил азы HTML и CSS, но там ничего сложно. Только вот с JS не знаю как быть, миллионы всяких VUE, Angular и т.д. Какой фреймворк JS актуален и желателен для Django бэкенда начинающего?
я смотрю vue потому что он мне больше нравится, на продакшене react вроде
правда бек не на django
Я вот думаю бэк на Django делать, только вот как ты подметил выше, хочется и фронт понимать, всяко лучше, нежели как макака смотреть на код почесывая голову. Если я правильно понял, последовательность должна быть такая: азы JS -> азы Vue, так?
В доках DRF авторизацию предлагают вообще поместить на 'api-token-auth/', но это чет вообще хуево выглядит.
Так а как в итоге правильно?
ну в принципе если уже на python пишешь, то достаточно просто почитать на хабре про странности js и по дороге гуглить. Я залетал по книге majesty of Vue.js 2 в принципе все понятно, но я где-то половину осилил, потом не было времени, а ща впадлу прост
как правильно в рест это отдельная дисциплина срачей. Обычно делают так
POST /login с телом {"name": ..., "password": ...} в ответ кука-хуюка ну разберешься
POST /logout сбрасывает куки-хуюки
Если делать POST /users то возникает вопрос, а что делать если ты уже залогинен? создавать нового пользователя? а если возвращать ошибку то какую? 403? 422?
Крч совет сделай как написано в туторе дрф
Понятно, спасибо, анон
Как с этим бороться?
Я бестолково ковыряю sys (modules и path), но ничего не получается. Можно импортить внутри методов, но '->' тогда не работает.
Дженерики.
Пара вопросов насчет графиков matplotlib:
У меня есть набор данных DATA, в котором несколько кортежей с данными, я хочу по ним построить набор графиков, по одному на каждый набор dataset:
x = some_function_to_populate_x()
for dataset in DATA:
____fig = plt.figure()
____ax1 = fig.add_subplot(111)
____for i, y in enumerate(dataset):
________ax1.plot(x, y, label=f"{i}")
plt.show()
То есть по итогу у меня должно получиться некоторое число (равное len(DATA)) отдельных графиков, на каждом из которых нарисованы кривые (в количестве len(dataset)) и каждая кривая подписана порядковым номером в легенде
НО: подписанным оказывается только самый последний график, он как бы "затирает" остальные. С хуя ли? (на пикриле пример с двумя графиками)
Устроил, жс лишним не будет.
ax1.plot(x, y, label=f"Термины раздела {i}")
Попробуй поменять
>ax1.plot(x, y, label=f"{i}")
на
>partial(ax1.plot, x, y, label=f"{i}")()
чтобы состояние запоминалось в цикле.
Встречал похожую проблему в PyQt
как вкатитьсяв интернет маркетолога хотяб? лохкун 40лвл из нижних нужников -заебался работать никем
А смысл ждать на торрентах?
Берешь у китайца крек, а потом качаешь с оффсайта нужный редактор и устанавливаешь.
https://zhile.io/2018/08/25/jetbrains-license-server-crack.html
Хм, запилил, но результат то же...
>>78246
И еще вот что: как "сгладить" (интерполировать) эти графики чтобы получились гладкие кривые? Microsoft Word блин в 2 щелчка это сделать может, а у меня с scipy.interpolate что-то не выходит нихрена (результат тот же, будто ничего и не было). Может это потому что данных по оси x мало? так ведь Word'у тоже много данных не нужно...
Это я только сейчас узнал накатывая 2020.1
Ты используешь какие сокеты, обычные, или вебсокеты? Я бы в любом случае на прикладном уровне советовал именно вебсокеты.
Есть отдельная проблема с тем, чтобы детектировать мёртвые соединения, как с обычными сокетами, так и с вебсокетами, там магия и масса граблей рассыпана.
В норме ты должен на все сокеты высылать текущее состояние, актуальное для клиента, или просто рвать этот сокет, если с него нет активности. Потом, когда клиент восстановит активность, просто высылаешь ему пакет данных, достаточный для восстановления состояния.
>Хм, запилил, но результат то же...
Тогда еще можешь попробовать вызывать plt.show() прямо внутри цикла
Можно типизировать строкой. (Не SomeType а 'SomeType')
И повесить условие на импорт
if TYPE_CHECKING
Это надо делать вместе.
Пичарм это норм понимает.
Орал, как пикрил, когда наступил на это говно в первый раз.
сделать кастомный валидатор?
А сделать typevar с bound?
Только начал вникать в могущество и красоту языка Python. Как ни странно, на начальных этапах могут возникнуть некоторые проблемы. Так вот, почему после except else не выполняется, а сразу начинается новая итерация? На сколько я знаю, else не должен выполниться, если в теле except было бы continue.
else выполняет только в случае если никаких исключений не было перехвачено
мб тебе нужно использовать try...finally
else не выполниться если будет ошибка в int(a) выполнится except и цикл перейдет на другой круг
ORM типа джанги.
В модели запросы делаю через QuryBuilder. QueryBuilder в конструкторе принимает класс модели.
PROFIT 1 (да можно локал импорт).
ForeignKey наследует от типа поля FieldType, для связи примает класс модели. В модели метод для обхода полей использует тайпчекинг по FieldType.
PROFIT 2 (тут разве что пересмотреть "архитектуру" с наследованием).
Далее MVC, представление содержит контроллер, контроллер реализует интерфейс нотификатора, нотификатор уведомляет модель через notify.
PROFIT 3.
И такого у меня сейчас дохуя.
Встал вопрос: как определить входное значение как любое из возможных? К примеру:
def process_number(num: str or int) -> int: ...
Вот эта функция должна принимать в качестве аргумента строку ЛИБО целое число. Я написал это через оператор or, код таки выполняется но в таком случае теряется весь смысл typing, т.к. or возвращает конкретный результат (то бишь синглтон True) и тот же Пайчарм не выбрасывает ворнинги, если я внезапно передам в функцию скажем список
typing.Union
Ну там же написано что именно not found.
Ты нахуя из исходников ставишь? там разве wheel нету?
num: [str, int]
Как хостинг относится к исходящему и входящему tor-трафику? Не могут ли меня забанить? Или же им пофиг совершенно? Нужно развернуть приложение которое делает запросы к сайту в доменной зоне onion + основной поток будет идти по сети tor. Использую aiohttp + aiohttp-socks, но это наверное неважно.
Пофиг, тем более если хостинг американцкий
ммм, брут или подобная хрень?
Есть path 'user/<int: uid>' просматривать который может только юзер с правами Admin, т.е. обычный юзер не может просматривать инфу о всех пользователях, в том числе и о себе.
Мне необходимо сделать так, чтобы юзер с id например 5 мог просматривать информацию по ссылке user/5, но по прежнему не мог просматривать других юзеров.
Задача элементарная, но либо я плохо гуглю, либо совсем тупой.
Подкиньте мб какой полезный материал, что нибудь, что попадает конкретно под мою задачу. Заранее благодарю
1. Запарсить целиком всякими домами и минидомами нельзя из-за размера
2. Всякие там изящные решения предлагаемые на StackO для very large XML files с обработкой дерева ветка за веткой и рекурсией тоже не помогают (скрипт работает вот уже 15 часов)
Короче, что я думаю - можно ли каким-то образом прочесть его построчно как текст и сохранить? Тогда бы я уже наколдовал бы что-нибудь, учитывая, что мне нужно только процентов 10% информации. А то сейчас я даже заглянуть в него не могу - вывести бы 10к строк хотя бы да посмотреть глазами что там и как.
Пока что при "for line in f: " (где f = open(файл, "r") ) скрипт считывает успешно первые строки, но потом обсерается с MemoryError - я так понимаю, в XML-файле он не так четко дробит на строки как в .txt и он натыкается на какой-то серьезный шмат.
Вроде простая задача, но уже второй день и я тупо зашел в тупик
именно это я уже пробовал
у файла как у объекта в метод read() можно передавать количество знаков. Т.е. я передал скажем 10000 f.read(10000) и читаю файл кусками по 10 тыс. знаков
while True:
____piece = f.read(10000)
____[обработка и загрузка]
которые уже можно обрабатывать на лету перед загрузкой в другой файл
Демон продьюсит данные в монгу,
Вебморда ее отображает.
Демон просто будет ранаться просто напрямую, а веб морда доступна будет через wsgi.
Общий модуль у них посути - доступ к данных и конфиги.
Как это красиво организовать с точки зрения гит реп и папок?
Посути каждая часть будет собираться в свой докер и возможно деплоиться отдельно, но надо как-то общий модуль коннекта к базе подтягивать...
Не помню как в Джанго делать премишены кастомные (мб Миксинами для class-based view), который будет будет проверять, чтобы пользователь имел админ.права или uid совпадало с его id
А то после python/django/flask/fastapi, жс выглядит не очень логично, очевидно и читабельно. Имею ввиду не pure js, а фреймворк какой-нибудь вроде vue.
Какие рекомендации девелоперов с опытом?
короче долго я ебся с этими пермишшенами, по итогу просто во вьюхе сравнил request.user.id с uid из url, если совпадают - идет респонс с необходимыми данными, если нет то выбиваю 403
>или uid совпадало с его id
внезапно берешь и проверяешь
Админ права "из коробки" можно проверять в DRF, въебав IsAuthenticated во вьюху (или сериализатор... хз не помню) и подрехтовав файл settings
DRF такой же как Django с админской стороны?
Он поверх джанги ставится лол
Один из вариантов, простых, сделать просто один репозиторий, с каталогами mongo, web, deamon, в корне docker-compose.yml, который за эти три сервиса отвечает. В каждом каталоге уже свой Dockerfile, который за сборку сервиса отвечает.
Nginx можно или в отдельный контейнер, или вместе с вебмордой упаковать.
Но я не специалист в этом.
в принципе так и сделал, только без mongo, монга через дефолтный имедж подымается
тебе нужен потоковый парсер. Вроде как питоничьи либины этого не умеют. Посмотри доклады с Pycon Russia 2019, там чел рассказывал как они взяли Раст для парсинга XML через serde и как у них теперь всё парсится за секунды. Может тебе тоже подойдёт.
Да на сях это закодируй. В таких больших говноиксемельках обычно просто очень много данных, а уровень вложенности низкий. Если тебе надо потом индексировать, то в реляционную базу с индексами перегоняй.
У DRF нет админки, это просто доп фреймворк. Админка короче будет стандартная, джанговская.
>>79196
Та все, аноны, спасибо, я уже напитонировал. На лету повставлял \n между строками данных, переливая файл в копию кусками по 10000 знаков, а потом перелил из копию во вторую копию уже построчно, выкидывая все ненужное, а значения интересных столбцов сохраняя просто с разделителем.
>В таких больших говноиксемельках обычно просто очень много данных
да, в данном случае - это и есть просто большая таблица
Решал аналогичную задачу на Node.js
Но подход одинаковый даже на C
Открыть поток чтения, следить за буффером, получать профит
вообще, это даже через sed решается однострочником:
sed -n -e '/DROP TABLE IF EXISTS `store`/,/UNLOCK TABLES/p' < bigdatabasedump.sql > one_table_dump.sql
надо конечно помучаться и подобрать метки
Dvachuyu sir
А чего вы такие злые?
Не ну, курсики на русском нужны!
Я же не на уроке английского языка, чтобы пендоский изучать! ря
просто это бывает удобно . вот в большом visual studio все есть https://devblogs.microsoft.com/visualstudio/break-when-value-changes-data-breakpoints-for-net-core-in-visual-studio-2019/
Ясно. Пойду посру.
Не могли за 15 лет скопировать.
https://stackoverflow.com/questions/21339489/how-can-i-watch-for-changes-to-an-expression-in-the-perl-debugger
У меня всегда было впечатление, что эти дебаггеры скриптовые делают, потому что так надо, а в реале все просто хуячат принты.
В этом мой секрет. Я всегда прихожу во всякое легаси, хуячу с размаху и добиваюсь результата!
Вы, конечно, можете поебстись, если времени дохуя.
какой стек? какой срок?
T = ('сс', 'аа', 'dd', 'bb')
tmp = list(T)
tmp.sort()
print(tmp)
Вывод 1: ['bb', 'dd', 'аа', 'сс']
T = tuple(tmp)
print(T)
Вывод 2: ('bb', 'dd', 'аа', 'сс')
a = ['cc', 'аа', 'dd', 'bb']
a.sort()
print(a)
Вывод 3: ['bb', 'cc', 'dd', 'аа']
a = ['cc', 'аа', 'dd', 'bb']
a.sort()
print(a)
Вывод: ['bb', 'cc', 'dd', 'аа']
b = ['cc', 'fasd', 'avbsd', 'aa', 'dd', 'bb', 'gsv', 'ccc']
b.sort()
print(b)
Вывод: ['aa', 'avbsd', 'bb', 'cc', 'ccc', 'dd', 'fasd', 'gsv']
l =['abc' , 'cd' , 'xy' , 'ba' , 'dc']
l.sort()
print(l)
Вывод: ['abc', 'ba', 'cd', 'dc', 'xy']
Я уже понял. Действительно текст скопировался в виде кириллицы.
я, кстати, вспомнил, что в перле отладчик просто ебово тормозил. так что, в принципе, брейкпоинтами можно как-нибудь перебиться.
Ладно, а как насчет Глубокой Инспекции в vs code ?
я просто хочу в local variables отфильтровать и поискать содержимое или название переменных, что тоже в некоторых случаях упрощает ковыряние в незнакомых фреймворках.
Есть такой аддон?
Писулька - это Abuse.
Но, я вижу что ты задумал конфигурацию которую они называют "сервис tor". У хостера нет простых методов даже понять что у тебя там сервис какой-то.
Наркошоп задумал, дружок? Тебя все равно подельник спалит.
Как с http.server получить url с якорем?
Он как-будто специально якорь режет.
что значит получить url с сервера?
Сервер не получает данные после якоря. Если нужно, высирай их через js специально
Что на нем писать собрался? Кроме системного программирования ничего на ум не приходит, но там нужно постоянно юзать С. Для веба раст оверхед.
Алсо недавно нужно было написать небольшой модуль для сервера который юзает функции ядра, думал написать на раст, но в итоге взял С, так как геморроя меньше.
Что за ошибка на пикрилейтед и как фиксить? Возникает в ответ на команду
pip3.6 install --user pythonanywhere
Вот что я делал:
>Чтобы опубликовать сайт на PythonAnywhere, нужно загрузить на PythonAnywhere твой код с Github и затем настроить PythonAnywhere так, чтобы он распознал твой код и запустил твоё веб-приложение. Существуют способы сделать это «вручную», но для PythonAnywhere есть программа-помощник, которая сделает это для тебя.
>pip3.6 install --user pythonanywhere
А чего не scala? Можешь перекатываться куда хочешь, только вакансий на питон в десятки раз больше чем на го/раст/и прочую узкоточенную хрень.
Смысл заниматься тем что не востребовано на рынке.
Го пытались делать как универсальный язык, но в итоге это язык для сетевых сервисов, та же ниша, что у node.js и асинхронного питона.
На Си такие вещи не понятно, как делать. В коробке для этого вообще ничего нет.
Го подкупает тем, что он компилируется, причём в один файл и легко под разные платформы собирать, быстрый. Но, статическая типизация добавляет массу проблем, обработка ошибок в стиле 90-х и т.п.
Ну го еще норм, там гц есть, но все равно мало кто может позволить тащить его в прод. Даже чтобы писать на асинхронном питоне многие конторы сначала пишут свой фреймворк, а потом сам проект на нем.
>На Си такие вещи не понятно, как делать. В коробке для этого вообще ничего нет.
Cython(some project on python)
>Мне нахуй не всрался ни апач, ни расширяемость.
apache/nginx - без этого никак, базовый набор.
nginx + gunicorn, изи же. ⭐
да прописывай сразу в path. хули там бороться с чужим кодом.
>>80272
Точнее вот для джанги конкретно
https://code.visualstudio.com/docs/python/tutorial-django
Как установить параллельно 3 разных интерпретатора Питона (глобально)? 2.7 , 3.7 и 3.8? Чтобы все были доступны?
И если я буду юзать команду pip3 install (не из виртуального окружения), то для какого именно интерпретатора она будет работать? 3.7 или 3.8?
>Как установить параллельно 3 разных интерпретатора Питона (глобально)? 2.7 , 3.7 и 3.8?
google: windows install multiple python versions
на линаксе проще.
>И если я буду юзать команду pip3 install (не из виртуального окружения), то для какого именно интерпретатора она будет работать? 3.7 или 3.8?
в линаксе должна быть выбрана 1 дефолтная версия питона.
соответственно для той версии и будет устанавливаться.
например:
python2.7 pip3 install django
python3.8 pip3 install django
Апач не нужен совсем, nginx прекрасно работает и без него. Какой функционал от апача ты собираешься использовать?
nginx даёт тебе работу со статикой, прокидывает трафик куда надо, умеет TSL, и всё другое.
Точную настройку не скажу, никогда flask не настраивал. По идее, достаточно просто flask + nginx. Возможно желательно ещё что-нибудь вроде supervisord иметь, чтобы контролировать количество инстарсов. Или, альтернативный вариант, поднимать через докер.
К фласку скорее всего ещё БД потребуется.
>Заебала реклама Яндекс.Практикума на курс Питон Аналиста
хуевый ты аналитик, если не понял, что это не тебя выбрала реклама, а ты выбрал контекстную рекламу.
> К фласку скорее всего ещё БД потребуется.
Потом потребуется брокер сообщений, мемкэшед, реплика для бд...
Ага. А ещё я выбрал какую-то сомнительную it франшизу с заработком по 400к в месяц.
Ладно, пошел страдать по этому гайду: https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04
И сразу же 2 вопроса:
1) Если не хочу использовать доменное имя, то вместо your_domain писать ip сервера или удалить всю строчку и оставить только listen 80?
2) Если не ставить ufw, то подключение к 5000 порту будет разрешено по дефолту?
>>80234
Там django, а мне нужен flask
https://repl.it/languages/python3
Может кому пригодится побаловаться.
Для этого надо доменное имя покупать, потому что с бесплатного могут пидорнуть в любой момент, пусть идут нахуй.
> потому что с бесплатного могут пидорнуть в любой момент
Берешь бесплатный в каком-нибудь гондурасе и всем похуй
Смысл в чем: надо было потестить и я сделал два одинаковых файла, но как будто в самой файловой системе лежит только один - а второй типа ссылка
Вопрос: это так и должно быть, что до первой модификации дубликата в системе это всего лишь ссылка? Система шинда, как несложно догадатца
Потыкался методами os.path.islink и isfile - все как в моей голове - это файлы.
Полагаю проебался где-то в другом месте, так что временно отбой.
Использовал бы нормальную IDE нормально было бы.
статика НИНУЖНА
Пожалуйста, подкиньте задачи на написание автотестов, курсы уже освоил, синтаксис знаю. Нужны именно тренировочные задания с либами типа Selenium, регрессионным тестированием и т.п
{
__"type": "object",
__"minProperties": 1,
__"maxProperties": 1,
__"properties": {
____???
__}
Как описать опциональный объект внутри?
Мне заранее известно, что это может быть
"a": null
"b": [1, 2],
"c": null
Т.е. что-то одно может из этого прийти, как это можно описать?
Учу где-то год
Работаю QA инженером, но пора бы питончиком пользоваться для автоматизации тестов
>from .models import Products
то в другом файле такая же хуйня вызывает
>ImportError: attempted relative import with no known parent package
>>ImportError: attempted relative import with no known parent package
Модуль или модель?
попробуй там вставить название своей папки перед точкой:
from dJaNgOpRoJeCt.models import Products
Без venv работаешь поди?
>Работаю QA инженером
Мануальый тестер?)) Подробности работы можешь поделиться немного, сколько з/п, как обстановка вообще, какая страна?
А по селениуму попробуй тестани то что сейчас тестируешь, и все.
Для того, чтобы влиться,так сказать, в вашу сферу, что нужно учить?
Идти в какой то язык(например, питон) и смотреть, что можно с ним делать, и так постепенно изучать новое и новое.
ИЛИ же большую часть времени уделить comp science (Алгоритмы, базы данных, структуры , типы данных и прочее), не привязываясь к языку (книжки там на каждую тему немаленькие)
С одной стороны, если валить все силы в язык и опыт там, то быстрее приду к тому, что смогу быть полезным где-то, но с другой стороны, если я прочитаю все эти книжки умные(мб даже пойму), по идеи, я должен быть более ценным программистом?
В общем, помогите структурировать своё обучение, поделитесь опытом.
>Модуль или модель?
Структура
products:
--models
--views
--tasks
Импортирую класс из модели, в этом же модуле. И в views это работает, а в tasks - нет. Правда вьюха дергается самой джангой, а таскс я пока так смотрю на работоспособность.
>from products.models import Products
В итоге получаю
>django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
>Без venv работаешь поди?
С ним
>Для того, чтобы влиться,так сказать, в вашу сферу, что нужно учить?
Основные понятия, легко и просто, с нескольких повторений запомнится:
https://www.w3schools.com/python/default.asp
> что смогу быть полезным где-то,
Ну ты сам не знаешь что хочешь.
>если я прочитаю все эти книжки умные(мб даже пойму), по идеи
От теории толку нет, забудется без практики.
А так если веб интересен, изучаешь основы, чтобы понимать что написано вообще, далее джанго то же самое, далее по нарастающей.
>>django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
https://stackoverflow.com/questions/34114427/django-upgrading-to-1-9-error-appregistrynotready-apps-arent-loaded-yet
Куча всего может быть, потыкай, тебе виднее обстановка.
Видел уже, после этого еще десяток ошибок от джанги сыпется. Решил в итоге тем, что просто добавил вьюху, в которой вызываю нужный метод из таскс, чтобы потестить. Так работает нормально, правда непонятно, почему были пробелмы с импортом, если __init__.py в модуле с интересующими меня файлами есть
семья - о молодец, будешь 300к в наносекунду делать
также - целый день сидишь за компом постигая границы недостижимого сквозь горение ануса и корпуса ноута
семья - ты че целыми днями за компухтером сидишь? нет бы нормальным делом занялся и на работу бы пошел
Бывает, что на сайте пустые файлы и мне выдает ошибку pd.read_csv. Я это исправил через try except. Но теперь мне выдает кучу пустых списков и Empty DataFrame.
Нужна выдача
[1000, 1775, 1775.1, 1000.1, 0, 90, 2019-01-17 00:00:00, 2019-01-17 23:59:59]
[325, 325.1, 325.2, 325.3, 0, 1, 2019-03-18 00:00:00, 2019-03-18 23:59:59] Жирным выделил, чтоб видно, что строки разные.
[325, 325.1, 325.2, 325.3, 0, 1, 2019-03-12 00:00:00, 2019-03-12 23:59:59]
Без слов Empty DataFrame; Columns:; Index: []. То есть только 3 строчки
Можно, конечно, просто заставить всех вызывать этот конструктор в подклассах, но это call super антипаттерн, а еще можно забыть его вызвать и ничего не будет работать.
Ныне я сделал как на пикче(https://pastebin.com/eKLn2sh6)(шаблонный метод __init__, который вызывает initialize, который переопределяют пользователи). Не надают ли мне за такое по лицу? даже PyCharm подсвечиват, что лучше инициализации перенести в __init__
Это стандартная либа, ничего устанавливать не нужно.
Есть конструктор у базового класса с действиями, которые нужно обязательно всегда делать для любого экземпляра классаподклассов, поскольку он абстрактный. В подклассах ОБЯЗАТЕЛЬНО требуется сделать то, что в конструкторе базового класса + инициализации для данного подкласса.
Мне тоже не понятен смысл. Пользователю необходимо реализовывать initialize, это надо документировать. При этом если пользователь переопределит __init__, всё сломается.
Обычно схема с отдельным инициализатором нужна, если тебе нужно часть функционала от __init__ сохранять в наследниках, либо когда инициализацию можно делать или позже, или несколько раз, то есть когда надо сбрасывать состояние уже существующего объекта.
В такой схеме надо подумать, может можно куда-нибудь в __new__ влезть или в метаклассы, и заставить класс принудительно вызывать такой метод, даже если __init__ переопределён.
Все эти извращения разумны, если ты фреймворк какой-нибудь делаешь. Если просто прикладной код, то ты что-то делаешь не так.
>В подклассах ОБЯЗАТЕЛЬНО требуется сделать то, что в конструкторе базового класса + инициализации для данного подкласса.
Очень непрозрачное поведение, учитывая, что классы-наследники могут переопределять эти методы. А в твоём скриншоте даже должны.
Особенно непрозрачно разделение общего функционала на два метода, за обоими методами при этом пользователь должен следить и их реализовывать.
Я бы использовал defaultdict, где в ключ добавляешь символ, а значение увеличивашь на 1 каждый раз когда встречаешь этот символ в строке.
Отмена вопроса. Я через pd.DataFrame делаю. Но появился новый вопрос. Вот тут:
data_sheet=pd.DataFrame(columns =["Ticker", 'open', 'close', 'high', 'low', 'value', 'volume', 'begin', 'end'])
for h in range(160000,370000+1, 5000):
url=f'https://iss.moex.com/iss/engines/futures/markets/options/\
securities/MX{h}BA0/candles.csv?from=\
2019-01-01&till=2020-01-01&interval=24&iss.meta=on'
data_sheet=data_sheet.append(pd.read_csv(url, sep=";", skiprows=2), ignore_index=True, sort=False)
Надо чтоб в поле "Ticker" подставлялось значение f"MX{h}BA0" в каждой строке. Сейчас у меня он NaN.
>call super антипаттерн
Что, простите?
>можно забыть его вызвать и ничего не будет работать
Ну и нахуй таких программистов увольнять тогда.
Если в цикле дописать
data_sheet['Ticker'][len(data_sheet['Ticker'])-1]=f'MX{h}BA0'
то часть заполняется. Но проблема в тех, где парсится более 1 строки и в последней строке.
Код https://pastebin.com/BXtEzCQ5
Прикольный проект. На гитхаб залить не хочешь? Я бы ковырнул.
Касательно твоей проблемы - особо нихуя не понятно, нужно все смотреть чтобы понять контекст, воспроизвести и найти ошибку.
Я просто сначала не допер, думал там ещё есть кода.
Я уже ковыряю, пытаюсь причесать код для понятности.
Советуют вместо пандаса юзать модуль csv.
Но у тебя тут таблички из сложных типов пандаса, видимо не стоит...
Можешь объяснить эту строку: data_sheet['Ticker'][len(data_sheet['Ticker'])-1] = f'MX{h}BA0'
И да, если будешь писать чище - будет всем понятнее, включая тебя
Помозговал - тут короче в таблицу залетает сразу пара строк, а прописываешь ты только в последнюю.
Нужно переписать логику и будет все хорошо.
'Ticker' это столбец в который нужно писать откуда мы берем инфу например MX330000BA0. Цифры посередине меняются потом и другие части будут меняться, но пока только цифры. Мы обращаемся к столбцу Ticker, а чтоб понять в какую строку писать я выдумал конструкцию len(data_sheet['Ticker'])-1. Поскольку в цикле просто к низу присоединяются строки, то посчитав количество строк всего мы поймем где сейчас находимся. Минус 1, чтоб начинать с 0 позиции.
>>81750
> Нужно переписать логику и будет все хорошо.
Я пока ничего лучше измерения количества строк не придумал. Еще проблема с самой последней строкой. Поскольку там новые строки не добавляются идет перезапись дальше чем нужно. Например MX370000BA0370000 это последнее число в цикле, но в последнюю строку в тикер нужно писать MX360000BA0.
Например MX370000BA0 это последнее число в цикле, но в последнюю строку в тикер нужно писать MX360000BA0. убрал \t370000 не знаю откуда это прилипло
Есть такое. Вот придумал как убирать NaN из таблицы и заполнять следующим значением (которое ниже). https://pastebin.com/3a4nvuj1 Но проблема в том, что так можно убрать только если NaN бала в одной строке. Если будет две подряд такие, то уже не поможет. Может завтра кто поможет или сам догадаюсь.
Ты какой-то хуйней занимаешься, но мне лень разбираться в этом pd.
На первый взгляд, что мешает воткнуть это в каждый результат csv_read, а потом уже делать append?
for i in range(100):
Process(target=func).start()
Но создается только 5 потоков, там какие-то лимиты или что, как обойти?
>там какие-то лимиты или что
Каких-то ограничений питон не делает.
Может ты что-то не так написал, see Threading examples.
У тебя же процессы.
Вроде __setattr__ - то что надо, но он даже не вызывается в этом случае.
По-уебански, наверное, написал. Проблема такая: я при определении класса создаю в этом классе кучу статических атрибутов, и вот в эти атрибуты (это объекты моего еба-класса, они, если что, инициализируются и присваиваются сразу) хочу установить класс в котором эти объекты записываются в статические атрибуты.
дескрипторы
Нужна возможность вводить команды.
Да, да, обу всё расписал уже, ага. https://2ch.hk/api/хуй (М)
> воткнуть это в каждый результат csv_read, а потом уже делать append?
Как это сделать? Результат csv_read каждый раз разный. Чаще всего пустой, бывает одна строка, бывает 10. Я не пойму как добавить значение в одну колонку в каждую не пустую строку. На сколько я понимаю прямо в функцию pd.csv_read добавить это нельзя.
Нет, нужен интерактивный режим
Как повиксить?
Спасибо, няша!
хз, почитай содержание, затрагиваются ли там темы которые тебя интересуют вообще.
Можно создать чат в телеге и набирать вкатывальщиков чтоб друг-другу отвечать на вопросы
Можно пользоваться google and some guides to понять если что-то непонятно.
И тут залез посмотреть на Ютуб, а что нужно знать вкатывальщикам, помимо Пайтона, фласка и джанго. И понеслось: работа с линуксом, гитхабом, понимание основ фронтенда. Знание, как работают сети. И ещё небольшой список разного.
Потратил часов 50 уже. И приходит понимание, что работа компьютера - это не просто магия, а что-то совсем пиздецовое. И за год учебы по вечерам не факт, что освоишь минимальный уровень.
> И понеслось: работа с линуксом, гитхабом, понимание основ фронтенда
Несколько команд для консоли которыми будешь пользоваться постоянно и все. Фронтенд - на базовом уровне html/css/ и желательно js.
>Знание, как работают сети.
Какие-то простые вещи, хз что тут на практике может пригодится, несколько моментов разве что.
>поделили обычные сраные массивы на
lists, tuples, sets, dictionary
Просто чтобы было, зачем еще) По факту в основном используются списки['list1', 'list2'] и словари{'key1' : 'value1'}
Ты бы жс посмотрел, синтаксис там
>кривой и уродливый
Но негодовать по этому поводу смысла нет, как есть так есть, привыкнется))
Тебе знакомо понятие коллекции, более того они высокоуровневые.
Какое они имеют отношение к массивами в С?
Он просто не осилил, вместо того чтобы 1 раз выучить, негодует что какая-то технология не похожа на ту к которой он привык.
https://www.w3schools.com/python/python_lists.asp
Попробуй сам создать пару миллиардов строк и колонок, потом напиши
Мимо не тов. майор
Всякие большие спамилки-авторегалки делал. В принципе оплачивается неплохо, но не чтобы аж так.
Все деньги в малвари, а она на скрипатх не пишется, лол.
import selenium
import time
import random
from selenium import webdriver
spisok_proxy = ('188.170.233.100:3128')
imena = ('Вика', 'Алена')
for j in range(5):
PROXY = spisok_proxy[j]
selenium.webdriver.firefox.options = webdriver.Firefox()
options.addArguments('--proxy-server%s%PROXY')
webdriver.get('https://www.selenium.dev/')
ошибка такая
Traceback (most recent call last):
File "/home/user/pojerct/skkkript.py", line 10, in <module>
options.addArguments('--proxy-server%s%PROXY')
NameError: name 'options' is not defined
selenium.webdriver.firefox.options = webdriver.Firefox()
options.addArguments('--proxy-server%s%PROXY')
разницу сам видишь или носом потыкать?
spisok_proxy оо, бля, ну ты и.. хотя, не буду обзываться
Знакомо, мне так же от сишечки после голого ассемблера пригорало. Хотя, вот это zalupa.items() одновременно с enumerate(zalupa) - это рили косяк. Пиздуй-ка ты лучше к нам в раст. У раста хотя бы синтаксис прозрачный и очевидный.
Последовательности, это, считай, анонимные структуры. Когда тебе лень создавать структуру, но нужно завернуть данные разных типов в общий контейнер. Например ("zalupa", 5, 0.0001)
items это к словарям, вместе с keys и values, а итерейтить можно любые итерабли, не вижу никакой избыточности.
Дык, лажа в том, что итерейтишь ты внешней функцией, а не вызовом метода. Такая же лажа с len(zalupa).
Релизовано методами, вызываются средствами языка.
Хочет сделать поддержку в своем классе - реализуешь нужные методы.
Вот финальный вариант, если вдруг интересно.
https://github.com/Optionalyst/Option-price-parser
Пример:
find_atoms("K4[ON(SO3)2]2") -> [("K", 4), ("O", 14) ("N", 2), ("S", 4)]
Химический элемент канешн может состоять более чем из одной буквы, но в таком случае вторая буква будет маленькой строчной и это легко определяется
Ну ты поясни тогда, как эти скобки раскрываются.
В идеале надо посимвольно читать и токенизировать, а потом вторым проходом считать.
Все что в скобках - помножается на число стоящее после скобок Сдается мне что надо запарсить сначала все скобки (они могут быть как квадратными так и круглыми - ни на что не влияет) - с помощью регулярок скорее всего, но я не шарю в них - затем парсить все что внутри скобок при помощи этой же рекурсивной функции, в конечном итоге функция должна вернуть словарь с химическими элементами (ключи) и числом их вхождений в скобки (значения, в конце также помноженные на число после скобок)
<script src="static/scripts/main.js"></script>
написал, как и было в примере, но он не может найти эту директорию, засунул просто один файл main.js в ту же папку что и template, но джанга падла переходит по src="main.js" как по url-ссылке. Как ему указать путь?
сейчас есть прога:
в ней есть список фраз на английском языке
словарь в котором у английских фраз есть русский аналог
команда которая выдает случайную фразу на русском
кнопка Далее которая выдает следующую случайную фразу на русском
кнопка Проверить которая (тут начинается проблема) должна показывать английский вариант из словаря
вопрос - что вписать чтобы программа смотрела на ту случайную русскую фразу, которую сама нарандомила и выдавала ее английский вариант?
Всем заранее спасибо
Красивее и не сделаешь. Более правильные варианты значительно менее читаемые и нужны для синтетических примеров, когда формулы могут быть очень большими, на миллионы элементов итоговых - это не про реальные формулы, конечно.
>>83598
Если иначе подходить, то можно идти справа налево. Держим стек со значениями текущего мультипликатора.
Далее, если видим цифру, а за ней сразу букву, добавляем в счётчик элемент, умноженный на мультипликатор и это число.
Если же там закрывающая скобка, в вершину стека кладём произведение текущего мультипликатора на это число.
Если встречаем открывающую скобку, то убираем последний элемент из стека.
Я начал писать код, но получается хуже, чем пример с тупой заменой. Лень писать. Но это рекурсивный алгоритм без рекурсии, вместо рекурсии стек.
Есть список («привет», собака»)
Словарь выглядиь примерно d(“hello”:”привет», «dog”:”собака»)
Есть команда выдающая случайное слово из списка
Нужно понять как сделать чтобы если к нарандомленному слову из списка давало ключи из словаря и выглядело это так
команда для рандома
Привет
пользователь пишет проверить
*программа находит в словаре ключ к Привет и пишет «hello”
Посоны, полностью удовлетворен (переводной, разумеется) статьей с Хабра.
https://habr.com/ru/post/337420/
Ставьте ее в шапку, а видео старперское - обоссать
вот тут-то и оно. не понимаю как это сделать
Вот случай с1 это когда пользователь пишет Проверка. В этот момент программа должна выдавать ключ из словаря к тому что было нарандомлено после строки random.choice
вот я и хз как это делать
вот тут-то и оно. не понимаю как это сделать
Вот случай с1 это когда пользователь пишет Проверка. В этот момент программа должна выдавать ключ из словаря к тому что было нарандомлено после строки random.choice
вот я и хз как это делать
работает! От души душевно в душу
Казалось что просто, но на деле херня какая-то. itertools.permutations, combinations и combinations_with_replacement это не то, они не учитывают все возможные случаи. Хотя по факту это весьма "тупой" перебор. Если у нас есть 3 кубика по 6 граней в каждом, то там 666=216 комбинаций, надо просто скурпулезно перебрать все, но вот как это сделать? В данном случае нам нужно 3 вложенных цикла for, но что делать с произвольным случаем? Число этих циклов может быть любым (зависит от числа кубиков N). И как же блин это сделать?
По циклу запускает перебор. Типа
for x in range(1, 7):
____for y in range(1, 7):
________for z in range(1, 7):
Количество циклов и возвращаемый кортеж равен длинне repeat=3. И соединяет в список
Это я понял. Я сам хотел такое же сделать своими силами, вопрос в том как он делает переменное число циклов?
Dictionaries
kucha = {
__"vasia": 10,
__"vasia1": 110,
__"vasia9": "vasiaaaaaaaa"
}
https://www.w3schools.com/python/python_dictionaries.asp
dataclasses
есть веб-приложение на php и yii. Разумеется, у него в базе свои методы работы и описание схемы. И им занимаются другие погроммисты. Но сделано это, как обычно, хуево,
Я не изучал джангу но готов это начать делать, если будет немедленная практическая польза.
Можно ли на джанге сляпать админку чужих таблиц ?
Мне просто нужен редактор связанных таблиц и специфические массовые операции над ними.
Теорией бд легко владею . Сейчас по сути я поддерживаю эти таблицы в голом sql и это заебывает.
При прогоне for key in my_dict: key=key.replace("a", "b") по факту нихрена не меняется (потому что key это immutable строка и ключу в словаре глубоко похуй, что за операции я мучу с переменной key)
Неужели нет другого способа кроме как тупой проход по всем my_dict.values() и копировании их в новый словарь?
Посмотри название ключей, повторения не допускаются
Их просто срежет как с сетами
вроде как, хуй знает кароч
У тебя в строке, где userinput спрашивается, скобка лишняя.
мне нужны ключевые слова. Какие именно механизмы в django позволят это делать ? Что именно почитать?
я же не могу по книгам для вкатывальщиков делать тупые приложения. Мне нужен результат.
dict[key2] = dict.pop(key)
Мне кажется, что скорее нет. Джанго сильно привязан к своим моделям, админка уж точно. Соответственно чужие таблицы ты так просто не привяжешь, придётся подгадывать под них модели (это возможно).
В Джанго ты админку более-менее быстро можешь сконфигурировать, чтобы добавлять-редактировать элементы, связанные с другими элементами по ключам, но не сильно более того.
Книги для вкатывальщиков в любом случае придётся глянуть. Хотя бы на уровне демо-приложения Джарго, которое голосовалка, и главы в книге про админку и модели.
Погоди, но мне не обязательно портить чужую бд таблицами , я могу отдельную выделить только для джанги, а вот управлять хотелось бы конкретным набором таблиц в другой базе.
какой план?
> Хотя бы на уровне демо-приложения Джарго, которое голосовалка
вот тут я уже вижу оверхед. Ведь у меня приложение из нуля страниц!
>Джанго сильно привязан к своим моделям
В чем проблема описать модели на основе существующей базы?
>Можно ли на джанге сляпать админку чужих таблиц ?
>Мне просто нужен редактор связанных таблиц и специфические массовые операции над ними.
phpmyadmin?
> как вижуал студио для шарпа/крестов?
Если тебе нравится это говно, то и пиши на нем, питон там поддерживается.
Как бы vscode для пайтона неплохой вариант, плагины некоторые поставить и ок.
Если полегче что-то, то atom с плагинами.
Админка в Джангу встроена по умолчанию
Надо лишь предоставить ей собственно модели (таблицы) с которыми бэк будет работать
Для сортирования всё равно придется всю итераблю всосать, так что нет смысла возвращать генератор.
это было бы слишком примитивно.
там связанные таблицы и я не хочу вводить ид , а хочу редактировать как будто выбираю значения из выпадающего списка.
Кроме того, автоматизировать по шаблону генерацию или групповое изменение этих данных и тд.
Есть программа, которая проходит по файлам и делает с ними определенные штуки, после чего выполняет следующий этап. Манипуляции с файлами вынес в потоки, чтобы не фризился интерфейс и можно было одновременно обрабатывать N файлов. Но никак не могу понять, как продолжить выполнение работы только после окончания всех потоков? Ссейчас скрипт создает треды и переходит сразу дальше, что меня не устраивает.
И даже ни из объяснений семпая, ни из самого кода этого tortoise and hare не понял, что это и как оно работает.
Добра.
Чтобы можно было обратиться к элементу my_list[5], когда в списке их скажем всего 4 и он вернул бы мне элемент my_list[1]? Меня хватило на:
class CycList(list):
----def __getitem__(self, n):
--------return self[n%len(self)]
но внезапно эта срань рекурсивно вызывает саму себя и не годится
На 7 строке не валидный синтаксис.
Короче, обычно я диплою проект( django) так.
создаю nginx.conf, gunicorn.service. руками создаю базу и тд.
Собственно вопрост. если я делаю это через докер. то посутие мне на сервере не нужно ставить nginx я могу его поставить в докере? или как вообще правильнее?
много зачем. но ок почтиаю
птздец, яндекс хочет за свои говнокурсыпрактикум 90к
Инглишь курсы на coursera дешевле
+можно скупить всех индусов на udemy
Совсем пизданулись
По какой логике они вообще находятся? Нихрена не понимаю. Настроил STATIC_URL="/static/" в settings, создал в одном из приложений myapp папку static и засунул туда свою таблицу стилей my_styles.css - при вызове src="{% static 'my_styles.css' %}" все работает. Создал такую же папку static в другом приложении newapp - и джанго уже его "не видит"!
По какой логике эта хрень вообще ищет статичные файлы на моем диске?
че ты к ним доебался? все равно все nginx настраивают допом.
Спасибо.
Вариант с ВК не помог, потому что поиск должен происходить по имени файла, но при загрузке оно меняется. Есть вариант с описанием каждой фото, но это не то.
Держу в курсе.
Not bad конечно, но лучше бы иметь под рукой класс с понятной сематикой __getitem__
Для картинок нужно использовать space=photos, но и оно, увы, подвело
Если юзаешь докер то тебе нужно только поставить на целевой системе докер/докер-композ и всьо.
Дальше ебешься с написанием основного докерфайла и, если надо, докерфайлов для других частей(нжинкс и т.д.). Потом вставляешь все это в докер-композы, описываешь порты/вольюмы и прочее. Всьо.
Если проект серьезный то бд ставится на отдельный сервер и без докеров.
Эти гуглоапи весьма злоебучи, всегда какие-то пляски с ними.
нет для доки оно конечно хорошо, и даже заставляет заранее додумать, что конкретно должен делать код
но это говнище же просто нечитабельное, его внатуре сейчас используют? или хотя бы есть какие-то планы по включению этого тайпинга в обработку интерпретатором для ускорения вычислений, например?
Да, юзают, не особо читабельно, поэтому я, к примеру, юзаю простые конструкции что бы потом было более понятно какой тип данных надо передать и куда.
как там организовать поиск геолокации и маршрута, через обычные библиотеки типо geopy оно не работает, ибо диспатчер требует чтобы индексы были интами, но по api телеграмбота они там стринги и что делать со словарём я уже не знаю
Если твоя говнофункция принимает столько разномастного говна, не проще передавать ей в аргументы словарь или именованный кортеж? А уже на уровне моделя (или кастомного namedtuple) провести документацию, не?
Я не могу помочь
я тоже не могу помочь
Это слишком сложно.
Boolean это либо True, либо False, в то время как это 11010000 10111111 11010000 10111110 11010001 10001000 11010001 10010001 11010000 10111011 00100000 11010000 10111101 11010000 10110000 11010001 10000101 11010001 10000011 11010000 10111001
Не, я имел в виду бинарный как "бинарный оператор".
Есть унарный: -number есть бинарный: a+b=c, а есть тернарный number if number >= 0 else -number
Бинарный оператор - это оператор с двумя аргументами. Но ведь булевый оператор - это же тоже оператор с двумя аргументами?
нет
> Хз, я сам придумал.
ну так если сам придумал сам и давай определение, от нас ты что хочешь спросить?
> Булевый - это же математический термин. Разве нет?
Булева алгебра - математический термин, в информатике у нас Булев тип данных.
1. По гайду импортируется только from twitchio.ext import commands. Получается импорт только из папки ext происходит?
2. Как импортировать файлы из основной папки twitchio, в частности нужны функции из файла abcs.py.
3. Алсо, почему у меня не получается импортировать из моего файла config.py все переменные целиком? Чтобы они все импортировались мне пришлось их по одной перечислять.
Понял. Заменил на звездочку, вроде работает. Но почему пичарм эти строчки серыми сделал?
Добавил abcs и функцию timeout. Бот запускается без ошибок, но когда срабатывает событие с этой функией - пишет ошибку NameError: name 'timeout' is not defined
Что не так?
Серым, потому что не использовано в коде.
Для timeout вероятно надо указать неймспейс, если ты его прямо не импортировал себе.
>Серым, потому что не использовано в коде.
Как это не используются? Из конфига используются вот все эти переменные в настройке бота. Используется каждая из переменных. Ведь если я испортирую их всех по одной с тем же кодом - строка с импортом не серая же.
>Для timeout вероятно надо указать неймспейс, если ты его прямо не импортировал себе.
А вот тут подробнее. Что значит прямо импортировал и как указать неймспейс? я только вот вот дочитываю укус питона, еще мало чего понимаю
В конфиге просто прописал переменные в виде
TMI_TOKEN = "значение"
CLIENT_ID = "значение"
и так далее. Это неправильно чтоль?
И на вторую часть моего прошлого сообщения можешь ответить?
нет все правильно, просто надо понять откуда он хочет их импортнуть мб надо в pycharm указать папку со скриптами как source. Вот он красным подчеркивает, какую ошибку показывает если навести?
>можешь ответить?
могу но я уже другой анон
неймспейс это пространство имен, как бы сущность которая содержит имена для доступа к ним. Если у тебя config.py и ты его импортишь как import config а потом обращаешься к CLIENT_ID как config.CLIENT_ID то говорят что имя CLIENT_ID находится в неймспейсе config
поэтому замечание того анона было скорее всего про то что у тебя в importах не видно никаких timeout а ты их используешь (и ошибка говорит как раз что timeout не определен)
но мне каж ошибка в том, что у тебя в папке twichio нет config.py и ты хуй пойми что откуда запускаешь
добавь untitled2 PYTHONPATH (или пометь как source, тогда pycharm вроде должен сообразить)
>просто надо понять откуда он хочет их импортнуть
но ведь без этих переменных бот просто не законнектится к твичу, если бы он их не импортнул. А бот работает, значит импортирует правильно. Подчеркивает вот что -
>Если у тебя config.py и ты его импортишь как import config а потом обращаешься к CLIENT_ID как config.CLIENT_ID то говорят что имя CLIENT_ID находится в неймспейсе config
Если я делаю from config import * и дописываю config. перед переменными то получается вот так, сами переменные не подчеткивает, но config. подчеркивает(пик2) и при запуске выдает ошибку NameError: name 'config' is not defined Как блядь? Файл config лежит там же где и основной файл программы.
>поэтому замечание того анона было скорее всего про то что у тебя в importах не видно никаких timeout а ты их используешь (и ошибка говорит как раз что timeout не определен)
как нету? timeout это функция из abcs.py которую я импортирую.
>но мне каж ошибка в том, что у тебя в папке twichio нет config.py и ты хуй пойми что откуда запускаешь
А с чего бы ему там быть? Я его же отдельно импортирую
>добавь untitled2 PYTHONPATH (или пометь как source, тогда pycharm вроде должен сообразить)
Вот сейчас не очень понял
>>87080
А что не так? (пик3)
>лол ты чет код прям внутри venv ебашишь?
>А что не так? (пик3)
Как бы так не делается, папку проекта например C:\projects\apptwitckh\ добавляешь в свой IDE, далее уже цепляешь venv нужный.
чет у тебя с пучармом, поч config.py не определяется как питоновский файл?
какая конфигурация запуска?
> как нету? timeout это функция из abcs.py которую я импортирую.
если ты импортишь
import abcs
то использовать надо abcs.timeout
если
from abcs import timeout
то просто timeout
нахреначил такой блок:
import datetime
import dateutil.relativedelta
sql_from=(datetime.datetime.today() - dateutil.relativedelta.relativedelta(months=1)).strftime('%Y-%m-%d 0:0:0')
sql_to=datetime.datetime.today().strftime('%Y-%m-%d 23:59:59')
@interact_manual
def process_date(from_date=widgets.DatePicker(description='От'),
to_date=widgets.DatePicker(description='До')):
global sql_from,sql_to
sql_from=from_date.strftime('%Y-%m-%d %H:%M:%S')
sql_to=to_date.strftime('%Y-%m-%d 23:59:59')
print("Будет использоваться диапазон " + sql_from + ' - ' +sql_to)
Почему не обновляет глобальные переменные в ipython ?
Как правильно это делать?
Нет, это не код для питона, это код для ipython. обратите внимание на декоратор @interact_manual.
Задумка в том, чтобы создать простой веб-интерфейс оналитика и без джанги.
Есть и еще вопросы:
что ж так хреново с локалями в браузере? Как выбирать даты с российской локалью?
не ебанулся ли я? как бы решали задачи эпизодического анализа данных вы?
нахреначил такой блок:
import datetime
import dateutil.relativedelta
sql_from=(datetime.datetime.today() - dateutil.relativedelta.relativedelta(months=1)).strftime('%Y-%m-%d 0:0:0')
sql_to=datetime.datetime.today().strftime('%Y-%m-%d 23:59:59')
@interact_manual
def process_date(from_date=widgets.DatePicker(description='От'),
to_date=widgets.DatePicker(description='До')):
global sql_from,sql_to
sql_from=from_date.strftime('%Y-%m-%d %H:%M:%S')
sql_to=to_date.strftime('%Y-%m-%d 23:59:59')
print("Будет использоваться диапазон " + sql_from + ' - ' +sql_to)
Почему не обновляет глобальные переменные в ipython ?
Как правильно это делать?
Нет, это не код для питона, это код для ipython. обратите внимание на декоратор @interact_manual.
Задумка в том, чтобы создать простой веб-интерфейс оналитика и без джанги.
Есть и еще вопросы:
что ж так хреново с локалями в браузере? Как выбирать даты с российской локалью?
не ебанулся ли я? как бы решали задачи эпизодического анализа данных вы?
бля, вот я тупанул.
все работает. Просто функция вызывается позже нижнего блока print, в момент когда я нажимаю кнопку
Так у меня вроде и так основная программа вне venv, не? (пик 1)
Где добавить папку со своим проектом в pycharm? есть только дефолтная папка куда все проекты создаются.
>>87149
>чет у тебя с пучармом, поч config.py не определяется как питоновский файл?
А хуй его знает. Это на что-то влияет?
>какая конфигурация запуска?
Это что и где?
>если ты импортишь import abcs то использовать надо abcs.timeout
Я импортировал всю папку с twitchio (пик 2), добавил к команде abcs( пик 2, в самом низу) и выдало уже другую ошибку( пик 3) что в модуле нет такого атрибута.
Это как? Внутри abcs есть функция timeout(пик 4)
Ты путаешь модули и пакеты, так не получится. Просто почитай документацию, а не перебирай наугад.
Алсо, с этим config что-то явно не так.
> Ты путаешь модули и пакеты, так не получится.
Это ты про что? Что я с чем путаю?
>Просто почитай документацию, а не перебирай наугад.
В документации нихуя не написано почти, поэтому наугад и пробую. Можешь глянуть гитхаб twitchio? В какую сторону хоть копать?
> Алсо, с этим config что-то явно не так.
Что именно? Основная программа подхватывает переменные же.
twitchio не причем проблема с тем как ты запускаешь код в пучарме
1) убедись что ты реально запускаешь тот самый пайтон что лежит в venv, а не системный
2) убедись что ты запускаешь его из папки проекта а не из ~/
3) убедись что config.py не config.ру например (русские символы или какая-то юникод дрочь вместо точки)
4) ну не доку так гайд какой-то как запустить первый проект в пучарм
Чет проиграл с этого проекта
venv это просто среда исполнения с нужными библиотеками конкретно под твой проект, зачем ты прямо в пакет (либу) твичио вкорячил свой "код", если по логике тебе нужны некие методы из этого пакета модуле с чятиком? (а так же методы из пакета asyncio итд). Или ты собрался сначала добавить новые функции в сам твичио, а потом уже их использовать в своем проекте?подозреваю, что нет
Иными словами, этот код должен располагаться там же, где и chatbot.py и конфиг (а может и вообще в самом файле чатбота, если кода немного)
кстати, поясните, а зачем вообще нужен virtualvenv, если есть более современный pipenv, требующий в 2 раза меньше телодвижений для настройки проекта?
чел и не добавляет код в пакет ты че в глаза ебешься, посмотри че за файлы слева и че за файл открыт красной стрелкой он показывает на импортируемый файл а не на открытый
> нужен virtualvenv, если есть более современный pipenv
есть более современный poetry есть более современный dephell
> потратить лет, чтобы запомнить все.
Ну такое мало кто делает, сниппеты/шпаргалки как написали выше, ну и гуглят информацию по надобности.
Запоминают только базовые вещи, всего не запомнишь и особо нет надобности.
> 1) убедись что ты реально запускаешь тот самый пайтон что лежит в venv, а не системный
А как это можно посмотреть?
> 2) убедись что ты запускаешь его из папки проекта а не из ~/
А не из откуда?
> 3) убедись что config.py не config.ру например (русские символы или какая-то юникод дрочь вместо точки)
Я config.py создавал из под ide, не должно быть ошибки, но проверю. А есть разница есть ли на файле значок питона или нет? Разрешение же что надо.
> 4) ну не доку так гайд какой-то как запустить первый проект в пучарм
Ок, гляну.
>А как это можно посмотреть?
https://stackoverflow.com/questions/1871549/determine-if-python-is-running-inside-virtualenv
>А не из откуда?
/home/username
C:\\Users\username
В cmd и линуксе команда cd используется для того, чтобы указать, откуда ты хочешь запускать все программы
>А есть разница есть ли на файле значок питона или нет?
Нет разницы, mime-типы не должны влиять на это
мимо только собираюсь вкатиться
да это я знаю. мне было как раз не понятно только как с nginx поступить. но все стало понятно спс
requests. но если предполагается массовый многопоточный парсинг, можно смотреть сразу на aiohttp
да если многопоточный то офк aiohttp.
Прото я всегда юзал request в синхронных. но тут задумался
Прочел книгу с пика и теперь вопрос: куда двигаться дальше? Хочу развиваться именно в области бек-энда. Пилить свой пет-проект простейший, типа форума или твиттера? Или ещё за какую книгу взяться, где ещё подробнее разжуют джангу, базы данных и прочее?
начать пет-проект не рано никогда, лучше читай и ебашь параллельно переделывая. Проект бери такой, какой тебе интересно пилить. Хороших книг могу посоветовать две:
- Лучано Ромальо. Fluent Python. Подойдет если ты уже представляешь, что такое циклы, ветвления, модули, память.
- Лутц, если не представляешь
индусы на udemy
Я понимаю что адекватного сокрытия данных от питоновского ооп ждать не приходится но у вас бля вообще есть понятия аггрегации и композиции?
Я расширяю класс EngineClass методом копозиции, засунув ему в атрибуты self.extra = list(), хули я могу кинуть ссылку на self.extra извне и даже после удаления EngineClass instance этот объект останется в памяти??
Такое же говно как и жопаскрипт
Я прописал в начало программы
import sys
print (hasattr(sys, 'real_prefix'))
При запуске пишет False. Получается я запускаю питон не из venv?
>адекватного сокрытия данных
ой блять еще один жабадолбоёб думает, что инкапсуляция это про ЖОСТКОЕ СОКРЫТИЕ ШОТ НИБАЙБОХ НИКТО НЕ УВИДЕЛ
Хм, в настройках интерпретатор проекта указан как раз тот что внутри venv. Какого хуя?
а вот слева штучка если нажать Edit configuration там какой будет интерпретатор?
рассматривается, если будешь сразу в базу пихать и не пытаться синхронизацию изображать в программе.
Есть вариант с result = list(gen)[:5] но это пиздец неэкономично, т.к. список создается полностью и лишь потом значения отсекаются
itertools.islice
Лучше эту купи
Чертов псих, как у тебя остаётся психологическая энергия , чтобы думать /решать/понимать ?
Интересует Джанго
мимо 23 года , за плечами уже один том Лутца. Гуглить умею, намерения серьёзные - олл-ин . Не токсичный, адекватный , правда с математикой беды, но есть желание и время это исправить (для алгоритмов и тд)
Не хватает человека который наставит тем самым сократит время самообучения, а во вторых конечно хочется друга/пул друзей в таком направлении. А то мои все уже давно скололись, либо сидят.
@xkamiyada
Чому текстовое поле не выбирается через LIKE? Как это исправить?
FROM "table" WHERE "col" LIKE '%05%' нихуя не выбирается, хотя там пара сотен записей с цифрой пять в поле "col" (вот прям сейчас навставлял сторокове представление, возвращаемое str(datetime.datetime.now()) и пытаюсь в утилите пайчарма сделать запрос.
>уже один том Лутца
Нафига? Один фиг забудется. Достаточно основы вызубрить.
>уже давно скололись, либо сидят.
Ты где живешь? с укр что ли?
Да вроде всё ок. Может ты ничего не селектишь?
Второй том уже на середине , да совестно что-то делать, не пройдя основы. Основы - курс на ютубе не воспринимаю, а лишь дополняю книгу. Хз, возможно не правильно это, но боязнь пропустить ту самую информацию (предложение/слово)
С рф
vk.exceptions.VkAuthError: VK error: [invalid_request] Security Error
Мдауж
date= '18.09.2019'
datetime.strptime(date,"%d.%m.%Y")
Выдает
datetime.datetime(2019, 9, 18, 0, 0)
Конечная цель подставить в функцию вот так quantlib.Date(18, 9, 2019)
Как так форматировать?
> Нужно преобразовать так чтобы было на выходе d,m,yyyy Нашел strptime, но он меняет порядок и время добавляет.
Не знаю как в питоне, но в си вывод даты зависел от того как форматируешь сам - можешь выставить %d %m %y вместо %m %d %y или в любом другом порядке.
Ну почитай код что они делают и поймёшь
1) если мне надо создать много экземпляров одного класса, то как эти классы хранить с возможностью обращения к ним? Создать что-то вроде списка и добавлять в него новые экземпляры?
2) существуют ли какие-то магические приемы создать экземпляр класса с произвольным именем? То есть я через input ввожу имя в консоле, питон читает мою строку и создаёт объект с этим именем
>>> Input( "my_var" )
>>> my_var = my_class()
Не уверен, но звучит такая мысль как хуйня какая-то
1 - Любые переменные это ссылки на объекты, никакой разницы с числами или строчками.
2 - Можно через exec, например. Но нахуя?
Как изменить оригинальный объект, а не создавать его копию? Причём не из функции.
Например, from os import linesep
linesep = '\n'
Что значить изменить? Ты просто переопределяешь конкретную запись в таблице символов.
Как иы собрался "изменять оригинал" если это скажем immutable строка?
Есть вариант работать с bytearray или memorymap
Обращайся по индексу
Понадобилось сляпать график групп и отобразить все мелкие группы в отдельную "Другие".
вот что нагуглил и это мне подходит :
https://stackoverflow.com/questions/48587997/matplotlib-pie-graph-with-all-other-categories
Но почему так много когда? как бы выглядел современный код?
Это ведь традиционная задача для статистики.
Не могу нагуглить другое, а читать книжку по pandas за 600 страниц долго.
Мне понравилась. Теория вся базовая есть по самому языку. И практика есть по трем разным направлениям(игрульки, визуализация данных, веб-сайт). В целом чувствую в себе силы пилить простые сайты, параллельно все гугля и подсматривая в stack overflow.
Но не обосрись с изданием, анон. Я буквально вчера обнаружил, что ещё с февраля доступна новая версия книги с пика на русском. В оригинале она именуется вторым изданием, а в переводе на русский она уже зовется третьим изданием(все потому, что у нас до этого два раза книгу издавали из-за правок в оригинале). В новом издании есть кучка новых плюшек, типа f-строк, от которых я охуел в хорошем смысле. И книге всего-лишь год. Наверное, самый актуальный вариант для салаги.
Я читнул по диагонали. Слабовато охвачен язык, а проекты мне не особо интересны.
Вообще, это довольно неприятная проблема книг по питону - сегмент для новичков переполнен с вариантами вплоть до разжевывания для даунов.
Средняковые можно по пальцам пересчитать, а хардкорных вообще нет.
Сделал скрипт, где он while True чекает буфер обмена, и если содержимое изменилось, дёргает некую функцию.
Но работает это очень нестабильно, и безо всякой системы. То раза три-четыре подряд сработает, а потом начинается через раз на пятый. То прямо сразу не хочет, надо ждать и раз десять тыкать Ctrl+C, чтобы запустилось.
Спасибо, анон. Книжные как-то сейчас закрыты, так что заказал, не знаю какая версия придёт, но вроде самая последняя должна. На крайняк буду в электронном виде смотреть некоторые вещь.
Backend meetup
Ruby, GO, Rust, Node.js, Python, Elixir
https://metaconf.net/backend-meetup-2020
Мне нужен бумажный вариант. Так то у меня уже все давно скачано, но это не очень удобно.
https://medium.com/nuances-of-programming/обнаружение-объектов-с-10-строчками-кода-953bd0e22a2
На этой странице рассказывается как запилить компьютерное зрение не имея мозгов, и там есть файлик resnet50_coco_best_v2.0.1.h5.
Так вот он не качается(50 кб\с это не скорость, я пережил эти времена и больше не хочу), помогите. Где можно скачать нормально. Все ссылки что я нашел ведут на гит, с странно медленной скоростью загрузки.
Вставил в начале вот такой код на проверку запускается ли питон что внутри виртуального окружения или нет. Запускается внутри. Проверял просто создавая скрипт в любом левом месте и запуская - пишет вне виртуалки.
Так в чем может быть проблема?
Решил вкатится в програмирование с питона. За сколько при ежедневнои труде можно стать мидлом?
насыщает не время проведенное на кухне, а количество съеденных беляшей
Аноны, ктото проходил курсы по пистону у хекслета? Или, может есть другая годнота?
если у меня есть random, выдающий случайную фразу из забитого словаря, есть ли какая-то команда, чтобы за 1 запуск программы 1 и та же фраза НЕ повторялось (т.е. чтобы каждой фразы из словаря выдавало только по 1 разу) и так чтобы в конце когда все фразы из словаяр уже были либо начиналось по 2ому кругу либо просто прерывало прогу?
Мидлом на задачах в вакууме не станешь, мидл в первую очередь специалист опытный, он знает что то о code design и архитектуре. Так что тут сколько бы ты времени не потратил нужен боевой опыт.
+
Сейчас код выглядит так
if name == c4:
while word:
key = random.choice(list(word.keys()))
val = word[key]
check = input(f'переведи = {val}: ')
if not check:
break
if check == key:
print('Верно!')
del (word[key])
else:
print('Неверно')
print({key})
Прохожу тутор по Джанге и тут нужно импортировать polls.models.
В интерактивном интерпретаторе все работает.
Задача: Создать объект класса Сутки, используя классы Час, Минута. Методы: вывести на консоль текущее время, рассчитать время суток (утро, день, вечер, ночь).
https://pastebin.com/TqFuU94e
алсо, куда лучше запихать проверку на время суток?
все нашел, извините что потревожил
А зачем все эти методы типо get_minute нужны, если они просто возвращают переменную из класса? Тип почему просто переменную сразу не брать?
Зачем, если можно:
Вызубрить основы.
Сделать несколько туториалов и пет проектов.
OR
Сделать то же самое + заплатить денежные единицы. За тебя ведь никто ничего не сделает.
Ааа, забыл про эту механику вообще.
Пикча 1. Все збс, выводится ,но только информация с модели Manga, а мне нужно там же еще с одной модели, но нихуя не пойму как, хелп
В чем смысл Serializer в Django REST? Что он там блэт "сериализирует"? Он принимает на вход объект модели и возвращает питоновский словарь. Чтобы дополнительно сериализовать данные в json нужно заюзать JSONRenderer. Че за хня?
Смысл сериализатора в том, что он сериализует данные.
Код может и ок, но не имеет никакого смысла.
Алсо - ".format", как там в 2007? Норм?
Аместо написания классов ненужных, лучше по полной заюзал бы datetime там же много классных возможностей.
> Что, прямо векторная функция у тебя?
Вроде да, я точно в определениях не разбираюсь. Я хочу калибровать модель Хестона для опционов (описание https://www.quantalgos.ru/?p=500). Там огромная ёба функция и надо подобрать 4 коэффициента. Как я понял там считаем min(функция(параметры)-известный результат). Только там еще есть ограничения на подбираемые параметры. Функция эта пробегает по таблице. По сути надо сделать МНК, но крутой Levenberg-Marquardt. А Levenberg-Marquardt как я понял считается через scipy.optimize.root.
> for i in range(колво строк):
> if dataset['Название колонки'] =="#Н/Д":
> dataset.drop(, inplace=True)
Крашится с KeyError: 19 или KeyError: 17
А, ну тогда хуй знает. Возможно следует вопхнуть ограничения для параметров в саму функцию (прибавляя большое значение к результату при выходе параметра за границы, например). Но это не точно
https://pastebin.com/Lf8uwTL4
У меня цикл просто прерывается.
Если continue заменять на pass ничего не меняется.
Что именно? Списки в списках, конкретный список в списке, значения одного списка в другом?
Нужно проверить если ли в одном списке слова из другого списка. Я пока ждал сделал так:
list = []
words = []
for word in words:
if word in list:
Так нормально делать или можно это сделать как-то лучше?
Или тебе найти любые, а не проверить на все?
Тогда можно
[word in words if word in list]
или set(words) & set(list)
мне достаточно совпадения 1 слова в двух списках. После 1 совпадения проверять все остальные слова не надо.
Еще вопрос - я пытаюсь сделать список из текстового файла. Сделал как на пик 1. Все работает, но забирается еще и символ переноса строки к каждому элементу( пик 2). Как его исключить из добавления в элементы списка:?
Тогда оптимально any(word in list for word in words)
Чтение файла у тебя так себе. Достаточно
for line in f:
___line = line.strip()
Непонятно, зачем там i.
К твоему примеру
with open("list.txt") as f:
___for line in f:
______words.append(line.strip())
Больше ничего не надо.
Хм, работает. Только вот он разбивает по строкам. Поэтому приходится делать в текстовом файле вот так:
123
456
789
Можно сделать разбивку если у меня будет 123 456 789 в одной строке?
То что надо, благодарю!
Так, а подскажи еще почему русский текст в файле превращается в ['123', '456', '789', 'жопа', '000'] в списке?
Так блэт, нашел фичу (хотя скорее баг) В ебучем numpy
Есть у нас строка с разделителями \n по типу:
string = """
здравствуй\n
двачер\n
нахуй\n
иди\n """
Если я захочу сформировать из этой херни двумерный numpy-массив таким образом:
a = np.array([list(line) for line in string.splitlines()])
То на выходе у меня получится хуета вроде той что на пикриле.
Чтобы все работало "как и должно" надо сначала сформировать ебучий список списков с буквами:
x = [list(line) for line in string.splitlines()] (та же самая блять операция же что и в предыдущем!)
А потом его заснуть уже в np.array:
a = np.array(x)
Вот че это за хуйня? еще и видно что в первом варианте получился dtype=object, а во втором как надо: dtype='<U1'
Проблема обнаружена: в начале затесалась ебучая пустая строка, отчего длины строк не совпали
a = np.array([list(line) for line in string.splitlines() if line]) должно решить проблему
Так задание состоит в том, чтобы поюзать много классов.
>Алсо - ".format", как там в 2007? Норм?
Чем господа питонисты сейчас пользуются?
А еще такой вопрос - можно проверять как-нибудь на длину слова? т.е если у меня в списке words есть элемент лупа то в списке list не получалось совпадения с элементом залупа.
Надо тогда ещё каждое слово крутить и смотреть в нем.
word for word in words for l in list if word in l
Лол, я думал ты знаешь про компрехеншены.
В самом начале результат.
Вот как это работает https://ideone.com/SHRjSc
Я пишу свою манга читалку в вебе и уже сделал вывод по категориям, жанрам, вывод всех добавленных манг. Реализовал переход на конкретную мангу, где появляется обложка, описание и все, что у есть у других, но не могу понять, как реализовать отображение глав для перехода на них и соответственно чтение. Я создал модель Add_chapter и связал ее с моделью Manga
class Add_chapter(models.Model):
chapter_name = models.ForeignKey(
Manga, verbose_name="Манга", on_delete=models.SET_NULL, null=True, max_length=100, default=""
)
Даже получилось реализовать загрузку zip архивов и прочего. При заходе в админку и добавлении глав в через модель add_cpater и все збс, я могу выбрать уже созданную мангу и как бы привязать ее. НОООО, при выводе уже привязанных глав, в детальной информации у всех тайтлов появляются эти созданные главы, то есть есть тайтл наруто, я добавил к этому татйлу 3 главы и при заходе в тайтл блич у меня появляются 3 главы наруто, хотя их та быть не должно. Че не так?
Тут наглядно видно. В наруто есть главы 2, 3, 5, 7 и они же выводятся в других татлах, хотя при добавлении главы в add_chapter я указывал наруто
>компрехеншены.
это что еще такое?
>Вот как это работает
А если вместо списка list у меня просто строка?
Такая фича для сокращения этих унылых итераций.
> А если вместо списка list у меня просто строка?
Просто выбрасываешь один из циклов.
Отметил папку с моделью как source.
Теперь требует environment variable, но походу тогда надо добавить весь проект в path
Нахуй, пойду пичарм про скачаю
сделал именно так и сделал из строки message список message_list. Но не работало пока я в конце сделал
не if word in message_word:
а if word == message_word:
В чем разница? почему in не находил соответствие?
f-strings это грязь, потому что это смешивание кода и вывода, выжигать такое надо калёным железом. Кто хочет php забыть как страшный сон, тот таким "инновациям" не радуется.
format хорошая и удобная штука, для всего хватает. Вот где пиздец, так это в традиционных компилируемых языках. Как вспомню, что из себя вывод в C++ представлял (без сишных принтфов), так вздрогну, хз, может сейчас и туда что-то подвезли.
>== это точное совпадение, in это подстроки.
в чем разница?
>Видимо ты перепутал что в чем ищется, лол.
Что с чем я перепутал?
На пхп не писал и забывать нечего, форматировать при помощи Ф-строк очень понравилось и зашло.
Безусловно, каждому свое.
Просто всё выебывались, что в перле и пхп хуево сделали с интерполяцией, а потом сами это спиздили, лол.
Так мне и нужно было чтобы только при полном совпадении слов срабатывало условие. Мне наоборот не надо чтобы hui == huilo выдавало тру
Так оно изначально не совпадет, я думал надо чтобы совпадало, иначе с чего такие вопросы?
Это строка и список.
В строке ищутся подстроки, в спсике элементы.
А чтобы искать в списке подстроки надо дополнительный цикл, о чем и была речь.
Под это дело залил книги на живой сука диск.
Не влезли только книги из:
https://yadi.sk/d/H-00n-UG3RSQem
Их залью чуть позже, надо докупить место.
Собсна ссылка:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6
Т.е. в списке in выдает тру только если элемент совпадает полностью а в строке in выдает тру и при частичном совпадении?
Так я все по итогу правильно сделал? (пик)
когда кто-то выебывался на интерполяцию в пхп?
https://en.wikipedia.org/wiki/String_interpolation
зачем ты ему объясняешь чувак ж довен не может погуглить элементарные вещи и адаптировать элементарный пример
coroutine get_chatters(channel: str)
#This function is a coroutine.
Что такое coroutine и чем они отличаются от методов?
Как определить к какой функции этот get_chatters относится чтобы ее использовать?
Всегда. Это пришло из шелла в перл, а оттуда в пхп.
В то время все выебывались, что это смешивания и спагетти и юзали конкатенцию или всякие ебанутые стрингбилдеры у жаб и шарпов. А потом утащили себе и теперь это пиздец фича модная, ага.
ее надо вызывать с await вот так:
await get_chatters("some_channel")
соотвественно вызвать ее можно либо в другой корутине либо через asyncio.get_event_loop().run_until_complete(get_chatters("..."))
вся суть выебщиков в этом треде
придумал хуйню и начал нести в массы. Не стыдно? Вот нюфани читают такое и потом несут хуйню на собесах.
Приходит на собеседование и рассказывает, что в ранних нулевых выебывались на интерполяцию, а потом спиздили себе?
>соотвественно вызвать ее можно либо в другой корутине
Попробовал вызвать его вот так - пишет NameError: name 'get_chatters' is not defined
начинают говорить что х плохо потому что это как в php, при этом на пхп не писали, поч именно плохо объяснить не могут, но могут пиздеть и чувствовать себя важными
я в курсе этой ошибки. Но функция get_chatters находится в Client.py внутри пакета twitchio, который я подключил(правда строка почему-то серая)
Я вообще только за интерполяцию, а читали они таких пуристов, о которых я и писал.
У меня все настроено нормально, постил же скрины. Глянь пик 1 и 2
Я даже проверку в начале программы сделал на то внутри ли venv питон запускается. И да - внутри. Хули ему надо то?
И что же у меня не так настроено то?
Мне чем пичарм нравится - автокомплит и дебаг заебатые, хз как вскод в этом плане. Вскод он вроде дохуя модульный, когда поставлю линукс себе - попробую атом или емакс.
Пичарм конечно многие вещи за меня делает - даже на примере тутора Джанги пичарм про сам файл settings изменил, когда я новое приложение создал.
Когда тутор через консоль делал - заябывало отсутствие автокомплита в cmd и внятного представления структуры папки. Хотя и понимания происходящего требовалось побольше.
Есть файл вида:
3,1 3,2 3,3
4,1 4,2 4,3
Нужно распарсить так, чтобы на выходе был массив [[[3,1][3,2][3,3],[[4,1][4,2][4,3]]]
Это все делать через split()? Совсем запутался
Это просто грязь, когда ты делаешь вычисления внутри строк и прямую подстановку туда переменных. Код необходимо отделять от представления.
format даёт для этого оптимальную возможность.
PHP "из нулевых" самый яркий представитель, где в коде смешивали строки и сам код. От переменных до циклов с sql-запросами.
В идеале ты вообще должен выносить определения строк куда-то наружу из кода, чтобы, например, поддержать многоязычность. Format это идеально позволяет.
> Это просто грязь, когда ты делаешь вычисления внутри строк и прямую подстановку туда переменных. Код необходимо отделять от представления.
Кроме вычислений внутри строк, формат же точно также подставляет в строку значения переменных? Только пишешь ты их в строке, а не рядом. В этом и проблема? Я форматом не пользовался никогда просто.
> В идеале ты вообще должен выносить определения строк куда-то наружу из кода, чтобы, например, поддержать многоязычность. Format это идеально позволяет.
Можешь дать пример? Может приложение с гитхаба, а то у меня еще не было необходимости использовать именно format, обходился f-strings.
>В этом и проблема?
Да, в этом проблема, это грязь. Это подход по принципу "слепить побыстрее". Отложенное форматирование довольно часто используется. Ты где-нибудь в конфиге определяешь строку для форматирования, а потом её используешь. format ведь позволяет и по имени переменной работать.
Примеры на гитхабе искать надо.
Ты ж мудак
все из twitchio импортируется без проблем, но какого хуя пишет AttributeError: module 'twitchio.client' has no attribute 'get_chatters' ? Внутри client.py есть get_chatters
votes_data = votes_data.fillna(votes_mean) чет не работает.
Перекати сам
К примеру есть список [['1','2'],['3','4']]
Я делаю такую конструкцию:
for row in list:
for elem in row:
elem = int(elem)
И ожидаю, что после того как снова запринчу этот список, значения там будут в int, но не работает.
Надо новый создавать?
Можно через enumerate и по индексу менять.
Так он заполняет средними по колонкам, а не по строкам. А с аргументом mean(1) не работает.
попробуй чтото должно сработать
votes_data = votes_data.fillna(np.mean())
votes_data = votes_data.fillna(votes_data.mean())
Хочу научиться работать с библиотекой vk_api, вернее у меня есть идея, которую хочу реализовать для бота в сообществе.
Но, начинать надо с чего-то простого, что у меня не получилось.
Объясните плз, как можно элементарно с помощью бота отправить, например сообщение самому себе? А то просмотрел несколько источников, на одном источнике была подобная информация, но данную функцию тупо выпилили с какой-то там версией vk_api.
Будьте добры, напишите код, (я знаю, что там строчки 3-4 должно быть, пролема в знании методов), ии подкиньте доков читабельных
Это копия, сохраненная 8 сентября 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.