Вы видите копию треда, сохраненную 21 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1733222 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
https://dumpz.org/bASGKD8cCFDf
По теме: где-то объясняется как намутить fullstack приложение на Джанго и каким-нибудь js-фреймворке? Туториалы, что находятся в сети, представляют собой в основном видосы длительностью 1-3 часа. Лучше бы была статья, объясняющая азы, особенно по части жаваскрипта
>Лучше бы была статья, объясняющая азы, особенно по части жаваскрипта
Ну так возьми любую статью по фреймовку на ЖС, начни с какого-нибудь Вью, он очень дружелюбен для вката. Дальше пишешь апи для джанго. Фронт раздаешь Nginx`ом как статику, все запросы к беку перенаправляешь к Джанго - все
Первая ссылка в гугле:
https://tproger.ru/translations/developing-app-with-flask-and-vue-js/
Если не понравится - поищу свежие статьи от Miguel Grinberg, как раз он недавно хуярил тематику Vue + Flask.
Для джанги сам найдешь, думаю.
Напиздел, у Мигеля - реакт.
https://blog.miguelgrinberg.com/post/how-to-deploy-a-react--flask-project
> Это равносильно выключению https, когда возникли "какие-то проблемы с сертификатом"
Нет.
Csrf-атака это когда админу-человеку подсовывают url и он радостно тыкает своими куками и дропает базу.
Нет человека - нет запроса.
Пробуй в любом api яндекса(аппелирование к авторитету на анонимной борде) найти csrf-токен или что-то подобное. Его там нет.
В api csrf токен не нужен, там уже есть oauth и http-заголовок для него. На фронтах у Яндекса есть csrf-токены или проверка каптчи во всех мутирующих запросах. На скрине я пошёл в passport.yandex.ru и поменял свой адрес.
Документацию на любой машинный с csrf покажи
На их сайте?
Насколько я знаю, да.
Но т.к. издательтво орайли захватили успешные менеджеры и они скатились от локомотива опенсорса к типовому инфобарыге по подписке, то сам понимаешь.
>Собственно вопрос, такая организация "Ок" или "неОк"?
Сам как думаешь, это игрушка для портативного железа 80-х
>поле игры организовал через двумерный список с словарем внутри, для состояний каждой клетки, в главном цикле пару раз пробегал по каждому элементу списка
Зачем хранить все поле игры? Достаточно хранить отмеченные точки и направление движения.
Господа питонисты, здравствуйте.
В общем, посмотрел я в шапке информацию о вкате на хабре, посмотрел еще пару статей и видео о том, что читать/смотреть для вката. Ну, думаю, есть пара книжек и курсов, которые мелькают у всех в рекомендациях, начну, наверное, с них. Потом решил проверить треды, что писали ананасы, – и вы то поносите одну книгу, то другую. То укус питона - говно для говноедов, то Лутц уебище водяное. То какие-то курсы хороши, то это вообще говнище ебаное. Я вообще нихуя не понял в итоге, с чего начинать.
Посоветуйте, пожалуйста, аноны, какие книги читать для начала, да и с заделом на продолжение? Может, какие курсы можно посмотреть? Я так понял, российские курсы вы поносите. А какие пиндосские курсы посоветуете? С английским всё хорошо.
Питон мне понадобится довольно сильно, и нужны довольно хорошие в нем знания. Зарабатывать питоном вообще не собираюсь пока. Сейчас он нужен в качестве приложения к основной области, для курсовой.
Насчёт книг:
В прошлый тред ворвалась маня и поносила топ книгу - укус питона. Не слушай маню, слушай шапку треда. Недавно обновил укус питона до свежей версии.
Лутц - долго и нужно, если диплом у тебя через 5 лет, то можешь начать читать лутца.
Курсы анон оьосрал из-за цены и "обещаний" трудоустройства, да и на них ничего оригинального не дают, все тоже самое ты найдешь в нете(видео/статьи/документация). Мимо провел пару лекций по пистону на курсах, и ушел.
Хорошие зарубежные курсы, может кто-то подскажет. Было бы неплохо их в шапку добавить
С хорошим знанием англицкого - учиться будет легко.
Спасибо! То есть, получается, начинать с укуса питона, а дальше что читать? Насколько я понимаю, там совсем базовые знания для новичков, а что дальше после этого читать, если не Лутца на 1000 страниц? В ЧаВо есть ссылка на хабр, там человек сразу говорит читать Лутца, потом говорит еще про 2 книги, ссылки на которые не открываются, а авторы не приведены насколько я понял, под "Язык программирования Python" он имел в виду книгу Россума, Дрейка, Оркидача? это что-то из разряда маст рид? что он имел в виду под "Основы программирования на Python. Учебник. Вводный курс" я так и не понял а потом уже справочник по питону, опять, на ~900 страниц.
В итоге я в смятении, что читать после укуса питона.
Аноны, кто ещё знает, подскажите, пожалуйста, курсы русские/пиндосские по питону для начинающих ну и, собственно, с заделом на углубленное изучение. Просто я совсем не ебу, гикбрейнсы, хуейнсы, датакэпмы, что из них хорошее, а что плохое.
пфффф че за лох бля. нормальные пацаны хранят так
Ты для начала полностью прочти укус питона, сделай все примеры и задания, дальше принимайся за Джанго, потом уже можешь потихоньку искать работку, я сам так вкатился, на следующей неделе будет год как работаю бекенд разработчиком, время очень быстро летит.
Всё заработало. Я тыкнул Run на альшифте и теперь могу тыкать Run просто на шифте. Магия какая-то.
пиши в консоль python lesson4.py а не просто lesson4.py
По другому в общем и не сделаешь.
Можно сделать тупли проверяемых позиций и проверять в цикле, например.
print("text" + "text" \ + "text") - выдаёт ошибку
print("text" + "text" \
+ "text") - работает
Почему выдаёт ошибку в первом варианте и зачем вообще нужен этот слэш? Я разобрался с \a, \n, \t но в остальных ситуация, я не понимаю зачем он вообще.
Например зачем при написании
print(" \'text\' "), если можно просто написать print(" 'text' ")?
Можешь воспринимать / в конце строки как экранирование перевода строки.
Паттерн такой может быть. Делаешь функцию-отображение
field_line(num) --> line
то есть занумеровать все возможные линии, их в случае поля 3x3 будет 8 штук, и получать эту линию по номеру
А линию уже легко проверять на то, выигрышная она или проигрышная. Просто циклом по ней проходишь и считаешь, сколько там крестиков и ноликов. Можно и для 3x3, и для больших полей и линий длины 5.
На этом же принципе ты можешь и стратегию игры строить, простейший алгоритм. В частности, предотвращать возможность противнику собрать линию, находить хорошие ходы и т.п.
И где найти её фуллфронт?
Тоже оффтоп. Вот здесь, например:
https://dangerousminds.net/comments/salvador_dalis_bizarre_but_sexy_photoshoot_for_playboy_1973
Это фото 1973 года, не уверен, что она по-прежнему такая же сочная.
У меня есть пара мыслей насчет парсера: еще после прошлого треда наклепал небольшую версию парсера, реализованную на пайпах subprocess.Popen и как следствие - мультипроцессинге. Походу мультипроцессинг в Питоне на пайпах весьма годный (но только если не выходить за рамки конвеера)
У нас есть Leacher, который отправляет запросы к сторонним ресурсами и получает json-ы либо html страницы, если ситуация позволяет, то он может даже работать в асинхронном loop, есть Worker он осуществляет парсинг документа (с помощью bs4 если это html) и передает результат к Writer, который создает нужные директории, файлы и осуществляет запись (также может работать через aiofiles)
Большая доля нагрузки ложится именно на Worker, документов может приходить разом много и их надо вовремя распарсить, так почему бы не сделать 2го или 3го Worker-а? Можно ли с помощью subprocess перенаправить вывод сразу в 3 места так, чтобы результат отдавался по очереди сначала в 1й, потом во 2й, затем в 3й и после снова в 1й Worker? (ну или как-нибудь иначе, главное чтоб нагрузка была распределена)
Я ебу что-ли? Знал бы не спрашивал. Тесты на селениуме, боты всяких телег дискордов, парсеры, многопоточные обработчики, спамеры, какая-нибудь хуйня с безопасностью.
QA, бэк, дата инжиниринг, машоб, прикладнйо скриптинг. Все.
Еще остаются: десктоп (плавно отмирающий и явно не для питона), фронт (за жсом целиком), геймдев (зашкварная хуйня сама по себе), мобилки (тут изощряются но в основном кроме Жабы/Котлина/Свифта тут ничто не живет)
Какой еще "диплом" лол? Бакалавр заборостроительного по специальности "кампухтир саинз" это потешная степень и не более
>около начальные знания
Сразу нахуй
Ну блять не заборостроительного конечно но около того нас и всяким алгоритмам учат, графы хуяфы, машинное обучение тоже было правда называлось искуссвенным интеллектом че такое класы знаю про всякие наследования вкурсе, пару залуп для упрощения жизни писал мб этого хватит для Джуна-нихуя-не-знаю плотите зп пожалуйста
>отдавался по очереди сначала в 1й, потом во 2й, затем в 3й и после снова в 1й Worker? (ну или как-нибудь иначе, главное чтоб нагрузка была распределена)
RabbitMQ какой-нибудь прихуярь, где твой личер будет продюсером, а воркеров перенести на косьюмеров
Огонь! Спасибо.
Тебе и простого Реббита хватит
Это Гвидо же!
iv это initialization vector, а ct можно предположить, что ciphertext, т.е. зашифрованное значение в base64.
Вероятно, AES. Так что ищи ключик.
Угу, и правда AES.
Я правильно понимаю что ключ должен лежать где-то в ЖС-коде?
Ибо структура такая:
На фронте жму кнопку, делается аякс-запрос на сервер, оттуда приходят эти данные(ключи что скинул) и затем на фронте выводится инфа.
Больше никаких запросов на бэк не ходит.
Опытным путем вычислил, что ключ секретный - `cp` пикрил, но вот место где эта переменная инициализируется не нашел, видимо в ЖС-тред надо идти.
Я охуел от ЖСа, после пистона - просто пиздец.
Посмотри на самой странице, скорее всего оно динамеческое для сессии, например, как csrf-токен.
https://pastebin.com/uayHYSxQ
Суть в том что если поставить exit(0) до функции
model.add(Dense(1024, input_shape=(3072,), activation="sigmoid"))
метки сохраняются, если не ставить то файл пустой, в чём может быть проблема?
P.S.
Переписал код на:
with open(args["label_bin"], 'wb') as f:
pickle.dump(lb, f)
Сохраняет нормально
Очень дельная инфа, бро (нет)
Вангую у тебя не скачан Pillow или ты не поставил в поле blank=True
>>41714 (OP)
Каковы подводные запуска сразу 3х джанго-приложений на одном виртуальном хостинге с gunicorn? Все 3 обращаются к Postgres но к разным ДБ канешн. В распоряжении 2 ядра и 2 ГБ озу
> Каковы подводные запуска сразу 3х джанго-приложений на одном виртуальном хостинге с gunicorn? Все 3 обращаются к Postgres но к разным ДБ канешн. В распоряжении 2 ядра и 2 ГБ озу
А нагрузка какая? Все от етого зависит.
Но я бы БД не запускал на том же сервере что и аппа.
спасибо, помогло
Правильно ли я понимаю, что чтобы добиться конкурентности в рамках одного треда на корутинах - необходимо чтобы все времязатратные функции были не блокирующими? Т.е. корутины не решают проблему блокирующих операций, они вместо этого требуют, чтобы все длительные операции были неблокирующими, и все подключенные либы соответственно тоже?
> Но я бы БД не запускал на том же сервере что и аппа.
Но это как? Как они будут обращаться к друг другу. Это же виртуальные серваки, а не реальные соединенные проводами.
Тогда вопрос в догонку:
Нахер нужен мультитрединг, если там все равно GIL тру асинхронности не дает, а накладных расходов больше?
if money:
print("...")
else:
print("...")
Выражение: if money > 0 ,было бы для меня понятно.
Я правильно понимаю, что переменная с функцией int и аргументом 0, для интерпритатора false по дефолту?
Спасибо.
> У меня был курс бд.
Я ебал, курс у него был, а ты наверное на курсе том и не был.
> Какие?
Как подключаться к БД.
SuspiciousFileOperation at ПУТЬ
А, точно. Но удаленный доступ вообще не для этого нужен. Какой в этом смысл, это же просто задержку работы увеличит.
> Я ебал, курс у него был, а ты наверное на курсе том и не был.
Курс про бд это ACID, аномалии, нормальные формы, какие структуры лежат за бд и тд.
> Но удаленный доступ вообще не для этого нужен.
Нет.
> Какой в этом смысл, это же просто задержку работы увеличит.
Если две стойки стоят в одном ДЦ и объединены в одну сеть, ты уверен что заметишь задержки?
Смысл в распределении нагрузок.
> Нет.
Как нет, если речь шла о нагрузке. Если у тебя приложение коннектится к бд через сеть, это долго будет с тз высокой нагрузки.
Ладно если ты с дома на бд с работы что-то перемешиваешь, отравляя только текст транзакций.
> Если две стойки стоят в одном ДЦ и объединены в одну сеть, ты уверен что заметишь задержки?
> Смысл в распределении нагрузок.
Ват? Виртуальные серваки объединены в сеть? Это если наверное только специально заказывать у хостинга такие. А так смысл виртуальных серваков как раз в том, что они изолированы. Коннект будет через интернет, очень весело да.
>Я правильно понимаю, что переменная с функцией int и аргументом 0, для интерпритатора false по дефолту?
Да. Но лучше так не делать.
Сто лет уже можно строить внутренние инфраструктуры у облачных провайдеров.
Да и если спавнить отдельные серваки в одной локации, они всё равно будут в одной автономной системе провайдера без оверхеда по сети.
>Виртуальные серваки объединены в сеть?
Пока ты не хостишь базу данных и веб-сервер у разных провайдеров - да, они объеденные, о какой изоляции ты говоришь? Ну да, на пол миллисекунды будет медленнее, чем если два компа напрямую соеденить шнурком, но все равно ты хуй заметишь. А если использовать серверлесс БД то еще и быстрее может выйти.
По-моему, везде рекомендуются эти неявные проверки.
Единственное, что я предпочитаю, это записи вроде num % 1000 == 0, в этом случае действительно наглянее, чем not.
>Но я бы БД не запускал на том же сервере что и аппа.
Почему нет? Что за карго-культ?
На отдельный сервер есть смысл выносить тогда, когда сервер БД каким-то специальным образом сконфигурирован, там специальные диски-raid, и т.п. При этом один сервер БД обслуживает много разных приложений.
Потому что главная задача БД обеспечить надёжность хранения данных и быстрый доступ к ним, а задача прикладных серверов обслуживать нагрузку, надёжность там не важна.
Это требует разных конфигураций.
Разделять на виртуальные сервера смысла почти нет. Это не увеличит ни надёжность, ни производительность. Может упростить обслуживание и развёртывание в каких-то случаях.
При этом проблемы добавляются. Например если БД на отдельном сервере, то по-хорошему уже должен быть защищённый коннект. А это дополнительные ресурсы и возня. И не только это.
>они всё равно будут в одной автономной системе провайдера
Не мешай понятия. Автономная система, AS, это понятие из маршрутизации (BGP семейство), как определять политику доставки пакетов по группам сетей. В одной автономной сети могут находиться сети, физически очень далёкие друг от друга, с очень большим пингом.
Особого оверхеда в сети нет, подключение по tcp с рамках localhost сравнимо по скорости с unix-сокетами, unix-сокеты сейчас даже не сколько для скорости, сколько для защиты используют, можно выставить владельца и права доступа на unix-сокет, а на tcp порт нельзя (точнее только с помощью специальных файерволлов можно, система-зависимых). Но если у тебя соединения между разными серверами, то их надо защищать, это стандарты безопасности просто, а вот это требует дополнительной работы.
Локальная сеть гипотетически тоже может быть перегружена, тут тоже риски добавляются.
У тебя ошибка: вместо f.close надо f.close(). Нафига ты полез в нейросети делая такие глупые ошибки я не понимаю.
>Почему нет?
Ох, видел сколько кушоет Постгрес когда запускает вакуум и прочее?
Вынося БД на отдельный сервер или отдавая БД на откуп провайдеру(не очень нравится) ты снимаешь часть головной боли связанной с ней и с поддержкой/настройкой сервера и апы. Безусловно это можно не делать если приложение использует 1,5 анона, но если идет нормальная нагрузка - это бэст практис. А я именно о таком случае говорю.
> Что за карго-культ?
Ну вот такой, повсеметный и подтвержденный культ. Как и запуск БД не под докером. Я не спец по БД поэтому предпочитаю доверять людям которые ебутся с ними 24/7 и пишут новую логику для них. Я конкретно про Постгрес, т.к. использую его + рашко-разрабы довольно часто выступают на конференциях и рассказывают что к чему и как.
Аноны, опять я на связи.
Значит разобрался и нашел ключ для дешифрации данных, даже получилось их извлечь, правда только ЖС-либой - CryptoJS, пикрил №2.
А вот питоновскими либами нихуя не выходит. Как и различными анлаен-сервисами.
Так же выснил что юзается - cbc.
Пикрил №1 вроде как возврщает ответ, байты, но при попытке их декодировать получается ебучая каша.
Вопрос анону - куда бежать/что делать?
Я так понимаю, что при неправильном ключе дешифрация не прошла бы вообще, а тут проходит но получаю говно.
Ключ - c3b2d44cd6efe3020a54b0cbb53786ce
Собсна остальные поля - https://pastebin.com/tdKJGnqS
Как видно, там участвует ещё некая соль, которая у тебя имеется как s, как-то оно там ещё хуевертится дополнительно.
Вот здесь есть реализация на похапе именно под эту либу, что-то там перехешируют дополнительно, мне лень разбираться.
https://github.com/meetio/cryptojs-aes/blob/master/cryptojs-aes.php
Бля, и сразу попадание
while username:
Я не могу понять, смысл этих утверждения.
Например если бы переменная username имела аргумент, было бы понятно.
while username <= 1, или что-то в таком духе.
а так, while username ЧТО?
Объясните пожалуйста, как для умственно отсталого.
В булевом контексте любой объект кастится в тру или фолс, вот там небольшой списочек фолсов, все остальные тру.
https://docs.python.org/3/library/stdtypes.html#truth-value-testing
>серверлесс БД
А это ещё что за зверь?
Могу предположить разве что "managed"-решения, т.е. когда тебе твой "облачный" провайдер продаёт доступ к настроенной базе, а не машину на которую эту базу ещё нужно поставить.
Я вообще слабо понимаю значения словечек вроде "ОБЛАЧНЫЙ" и "СЕРВЕРЛЕСС".
VPS - это уже сразу СЕРВЕРЛЕСС или только ОБЛАЧНО?
А докер и k8s (в которых нужно нихуёво ебаться с сетью и прочими очень "серверными"/"сисадминскими" вещами)?
Спасибо за ответ.
Изначальная моя переменная имеет следующий вид
username=""
это false, потому как "" в списке false по дефолту.
Следовательно выражение:
while username:
буквально означает запуск и работу цикла, до тех пор, пока переменная возвращает false
а выражение:
while not username:
до тех пор, пока переменная возвращает true.
Как только, например через input, переменная получает хоть один символ, цикл начинает выполнять следующие выражения.
Правильно?
не читал вопросов и ответов от других анонов
крч if x, while x ждут что вместо x будет переменная типа bool, но так как питон зело удобный есть правила приведения типов к этому бул
по сути
if username это тоже что if bool(username) а вот этот bool(username) у каждого типа разный
для строк это username != ""
для списков это x != []
поэтому я и говорю что питон не очень подходит как первый язык
Поясню таки: обычно при разработке в том же джанго на моей машине у меня было разом включено 4-5 сессий с терминалом: в одном работает manage.py runserver, в другом воркер celery, в третьем redis-server, в четвертом я в manage.py shell копаюсь, а пятый для общей разработки и curl-ов. Как такое мутить при подключении к хостингу?.. мне 5 раз из разных терминалов приконнектиться через ssh к серву?
screen, tmux, terminator
>Как такое мутить при подключении к хостингу?.. мне 5 раз из разных терминалов приконнектиться через ssh к серву?
А нахуя тебе такое делать на хостинге, ты же понимаешь, что как только ты закроешь 1 терминал у тебя все ебнется, а держать их открытыми постоянно - хуета
Вопрос в догонку:
Через пару минут неактивности, терминал зависает, що как фиксать?
Мимодругойанон
А еще, есть какие-нибудь фреймворки вроде blazor?
Тоже tmux. Если у тебя терминал отвалится,то всё останется работать. Потом можно подключиться обратно.
Спасибо, ща буду пробовать как оно.
Нужно 5 терминалов - открываешь 5 терминалов.
К чем проблема? Ахуеть вообще.
Ты мышкой не владеешь? Тебя пугает число 5?
Как вернуть ИМЯ инстанса класса внутри метода?
Я уже опробовал __repr__() __str__() и даже просто self
В результате возвращает такую вот парашу
><__main__.Neuronet object at 0x7fa4c4e2c040>
что такое имя инстанса?
тип class A(): ...
a = A()
ты хочешь сделать что-что вроде
a.__huita__ и получить "a"
так нельзя сделать
Именно эта __хуита__ мне и нужна для того чтобы вывести данные в файл с таким же именем каково имя объекта.
Я понимаю что на один и тот же объект могут ссылаться несколько имён. Однако моей проблемы это понимание не решает.
{"data":{"test":[
{
"date":"2020-07-07T00:00:00",
"time":"10-05",
"foo":"bar 1",
},
{
"date":"2020-07-07T00:00:00",
"time":"11-50",
"foo":"bar 1",
},
{
"date":"2020-07-08T00:00:00",
"time":"13-35",
"foo":"bar 2",
}
]}}
Нужно получить вот такой вывод (то есть сгруппировать по дате):
2020-07-07:
10-05: bar 1
11-50: bar 1
2020-07-08:
13-35: bar 2
Как это сделать?
{"data":{"test":[
{
"date":"2020-07-07T00:00:00",
"time":"10-05",
"foo":"bar 1",
},
{
"date":"2020-07-07T00:00:00",
"time":"11-50",
"foo":"bar 1",
},
{
"date":"2020-07-08T00:00:00",
"time":"13-35",
"foo":"bar 2",
}
]}}
Нужно получить вот такой вывод (то есть сгруппировать по дате):
2020-07-07:
10-05: bar 1
11-50: bar 1
2020-07-08:
13-35: bar 2
Как это сделать?
Ты ведь знаешь, что можно просто погуглить и найти ответ на твой вопрос за 5 секунд?
Хотя не совсем понял твой вопрос, имя инстанса это уже хуйня какая-то
честно говоря мы не понимаем хули тебе надо, напиши плз код как это должно работать
потому что __huita__ существует только для классов, функций и модулей и называется __name__, у экземпляров классов такой штуки нет
разве что
obj.__class__.__name__
Что есть инстанс? Объект. Если сделать override __repr__ для конструктора то задача будет решена
class Factory:
def __init__(self):
self.__name = 'factory'
self.__id = 1
def __repr__(self):
return f'{self__name}{self.__id}'
concrete_a = Factory()
assert repr(concrete_a) == 'factory1'
Потому что проблемы нет и это надо донести
Проверено в repl.it
[code]
class Factory:
def __init__(self):
self.__name = 'factory'
def __repr__(self):
return self.__name
concrete = Factory()
print(repr(concrete) == 'factory')
[/code]
Ты теоретизируешь. Коннекты дропать может кто угодно, и твой хостинг, и твой провайдер. Их реально дропают.
Ну ебана...
class Factory:
def __init__(self):
self.__name = 'factory'
def __repr__(self):
return self.__name
concrete = Factory()
print(repr(concrete) == 'factory')
в путинской россии один провайдер - ростелеком и он не дропает.
Никому не нужны тупые проблемы из-за обрывающихся соединений.
Это всегда клиентская проблема.
а нахуя тебе оно надо?
Вопрос был в том, как дать инстансу название. Я и дал ответ. Что не так? Не знаете что такое override метода?
А какая вообще задача стоит?
Название же статическое в любом случае будет, смысл тогда в этой хуете? И нахуя репр явно вызывать, вы че
Генерируй через UUID уникальное, хули. Хоть через timestamp.
Ты какой-то душный.
А как ты без repr сделаешь call к нужному методу? Я же говорю, можно и через @property все расписать и понятнее будет
>Генерируй через UUID уникальное, хули. Хоть через timestamp.
Я мимочел, изначальный вопрос анона был именно в имени переменной насколько я понял, а не класса.
>А как ты без repr сделаешь call к нужному методу?
Тут хуйню сказал, соглашусь, имел в виду что логичнее обращаться к str()
А схуяли ты думаешь что я из россии?
С роутером все Ок.
Т.к. на работе тоже самое, как минимум.
Насчет __str__ согласен, так как __repr__ должен содержать название класса.
Enum? Но надо писать метод для выдачи
Хуевый вариант это дергать globals()
a =1
b =2
print(globals())
GLOBALS = globals()
print(GLOBALS['a'])
Костыль, но задача выполнена, лол.
ну так купи услуги у тех у кого не глючит.
последний раз я пинг в ssh настраивал 10 лет назад, потому что в очередной прошивке dir-300 решили экономить память при раздаче торентов.
Провайдеров много. Большинство дропает. И на хостингах дропают.
Как минимум сейчас норма, что многие подключены не напрямую, а через роутер или NAT провайдера. У МГТС так, у мобильных операторов.
Они по-определению дропают. Потому что NAT не может забивать себе адресную таблицу слишком большим количеством путей.
Такие же проблемы есть и у хостеров. У них есть какая-то защита сессионного уровня и они дропают мёртвые соединения, по которым давно не шёл трафик.
Решение есть, опция -o ServerAliveInterval=10
эта опция говорил, чтобы ssh каждые 10 секунд посылал keep-alieve пакет, если нет трафика. Можно прописать в конфиг и не думать после этого.
> Какая зп?
Сперва была 50к, сейчас подняли до 80к, самое смешное что как подняли то стали поступать другие предложения, вот сейчас в процессе прохождения собеседования в другую контору там 100к обещали. Не ДС и не ДС 2, но миллионик.
Да пусть настроит. Но он должен знать,
что дропают только обоссанные хохлятские хостинги. ОС посылает этот "пинг" без участия приложения с интервалом 45-60 секунд
Округляется к меньшему целому.
а вот и вкатывальщики, которые не осилили деление с остатком. Пока есть вы, я не боюсь конкуренци.
Пиздец тайное знание.
Вообще не помню, была ли когда-нибудь потребность использовать его в реальном проекте.
С помощью opencv удалось вывести картинку экрана в окно. Теперь стоит задача определить, находится ли конкретная картинка на экране. Пробовал через cv2.matchTemplate, но он дает сравнивать только 2 картинки. А нужно, что в реальном времени считывалось через запись экрана. Ниже код, через который записываю экран. Умоляю, помогите. В пайтоне полный ноль, уже несколько дней бьюсь, гугл не помогает.
printscreen = np.array(ImageGrab.grab(bbox=(30,80,960,500)))
cv2.imshow('window',cv2.cvtColor(printscreen, cv2.COLOR_BGR2RGB))
Что бы не хранить дробную часть, когда данные должны быть в натуральных значениях
>мышкой
>ssh
Это само по себе прикольно, но да хуй с ним, вероятно ты подразумевал немного иное (но все равно сказал хуйню)
Суть в запуске даймонов: редиса, celery и т.п. удачи сделать это "просто открыв 5 терминалов"
Ну дак делай цикл, который будет делать скриншот окна и при помощи cv2.matchTemplate определять есть ли на скриншоте совпадения с патерном.
Хотя опенссиви вроде как умеет и сам раскрадровывать видео, которое захватывает, но тут я уже ничего не подскажу
Ну да, запустить 5 сервисов можно и с 1 терминала, ебать мозги с 5 - это уже какое-то извращение
>удалось вывести картинку экрана в окно. Теперь стоит задача определить, находится ли конкретная картинка на экране
людям потребовалось 50 лет чтобы создать нейросети в современном виде.
Как часто ими вы пользуетесь?
Вообще не понимаю как и когда их уместо использовать, вижу решения других людей - почти каждое имеет эти фунции.
Либо я говнокодер, хз короче
буду говорить про бекенд и как часто он используется в задачах написания веб-апи. Про то как там в анализе данных не знаю. Во всяких задачах для собеседований и прочих leetcode'ах эти функции используются довольно часто.
>map
берет функцию f и какой-нибудь итерируемый объект список. Для каждого элемента из списка делает f(x) и возвращает соответственно список этих f(x)
используется не часто, обычно использует list comprehension, типа (f(x) for x in my_list)
но можно сказать что часто используется в threadpoolexecutor'ах см: https://chriskiehl.com/article/parallelism-in-one-line
>filter
берет функцию f, список my_list, смотрит каждый элемент если для него f(x) == True то возвращает его в выходной список, если нет то пропускает
используется еще реже, обычно либо делают списковое включение а-ля (x for x in my_list if x), либо дрочат какой-нибудь for x in my_list: if f(x): ret.append(x), либо сразу запрашивают нужные данные в sql или еще где
но заюзав какой-нибудь f = open(); filter(None, f) можно выебнуться перед коллегамиодноклассниками
>zip
есть два списка my_list в котором хранятся x1, x2, ... и your_list в котором y1, y2, ... . zip берет их и делает новый список с парами: (x1, y1) , (x2, y2) , (x3, y3), ...
используется оч часто когда нужно совместить два каких-нибудь выхлопа, вроде запроса-ответа, id-объекта какого-нибудь
>etc
ну там много разных в itertools и в functools
>Вообще не понимаю как и когда их уместо использовать
в питоне принято дрочить на эти функции и везде совать, такой python-way. В принципе использовать их стоит если они сокращают код и делают его понятнее. Фильтры в фильтрах делать не стоит
>Либо я говнокодер, хз короче
читай переодически этот тред, чтобы самоутверждаться на местных довенах
буду говорить про бекенд и как часто он используется в задачах написания веб-апи. Про то как там в анализе данных не знаю. Во всяких задачах для собеседований и прочих leetcode'ах эти функции используются довольно часто.
>map
берет функцию f и какой-нибудь итерируемый объект список. Для каждого элемента из списка делает f(x) и возвращает соответственно список этих f(x)
используется не часто, обычно использует list comprehension, типа (f(x) for x in my_list)
но можно сказать что часто используется в threadpoolexecutor'ах см: https://chriskiehl.com/article/parallelism-in-one-line
>filter
берет функцию f, список my_list, смотрит каждый элемент если для него f(x) == True то возвращает его в выходной список, если нет то пропускает
используется еще реже, обычно либо делают списковое включение а-ля (x for x in my_list if x), либо дрочат какой-нибудь for x in my_list: if f(x): ret.append(x), либо сразу запрашивают нужные данные в sql или еще где
но заюзав какой-нибудь f = open(); filter(None, f) можно выебнуться перед коллегамиодноклассниками
>zip
есть два списка my_list в котором хранятся x1, x2, ... и your_list в котором y1, y2, ... . zip берет их и делает новый список с парами: (x1, y1) , (x2, y2) , (x3, y3), ...
используется оч часто когда нужно совместить два каких-нибудь выхлопа, вроде запроса-ответа, id-объекта какого-нибудь
>etc
ну там много разных в itertools и в functools
>Вообще не понимаю как и когда их уместо использовать
в питоне принято дрочить на эти функции и везде совать, такой python-way. В принципе использовать их стоит если они сокращают код и делают его понятнее. Фильтры в фильтрах делать не стоит
>Либо я говнокодер, хз короче
читай переодически этот тред, чтобы самоутверждаться на местных довенах
map и filter используются нечасто, есть более актуальные генераторные выражения и компрехеншены.
А zip полезная штука, много где не обойтись.
Django background task
Короче это не особая фича, петух просто за кадром где-то создал этот файл вот и все
Уже написали, zip иногда полезная штука, map, filter ближе к тому что рудименты, во втором питоне активнее ими пользовались, сколько помню, они там иначе вызывались.
map-filter вносили как инструменты из функционального программирования, чтобы был мультипарадигмовый язык.
Однако то, как они поддержаны в третьем питоне, лишает их смысла. Для того, чтобы смысл был, надо, чтобы был механизм объединения в цепочки, условно
result = filter(func, source).map(func2).filter(func2)
и т.п., но ничего и близкого нет.
Смысл теряется. При этом на выходе ты получаешь специфичные объекты, с которыми надо что-то делать.
А просто filter-map можно заменить не менее наглядными генераторами списков-словарей, ключевой фишкой питона, которой не в большинстве других языков.
Уже тоже написали, смотри на itertools и functools. Там есть очень прикладные вещи.
>Уже тоже написали, смотри на itertools и functools. Там есть очень прикладные вещи.
Из дополнительных библиотек еще есть more_itertools. Очень годная вещь.
a=1
while a:
a=input("...")
else:
input("exit")
Если ввести цифру, интерпритатор вновь и вновь будет выполнять цикл, потому что переменная True.
Если ничего не вводить, переменная получит аргумент в виде пустой строки, что для bool является False по дефолту.
Однако при вводе значения 0, цикл продолжает выполняться.
Почему? Ведь 0 это тоже по дефолту False. Я пробовал делать так:
a=int(1)
Но это ничего не изменило.
Подскажите пожалуйста.
Код взял здесь: https://qna.habr.com/q/174859
def findword(line):
for step in range(1, len(line)):
for start in range(step):
if len(set(line[(start or None)::step])) != 1:
break
else:
return line[:step]
return line
print findword("HELLOHELLOHELLOHEL")
print findword("HHHELLOHHHELLOHHHELLOHHH")
print findword("_HHELLOHHELLOHHELLOHHELLOHHELLOHHE")
в библиотеке нет этого параметра. Это параметр, который отправляется сайту. Тело запроса такое
>data – (optional) Dictionary, list of tuples, bytes, or file-like object to send in the body of the Request.
Ты дебил? Print стал функцией с параметрами уже давно.
Потому что стоит брать адекватное булевое значение, не?
Тем более input выдает строку, надо указывать конкретный тип который хочешь получить.
in = input('...')
If isinstance(in, int) and int(in) > 0:
a = True
else:
a = False
break # прерываем цикл, неосилятор ты ебаный
Потом сниппет скину. Есть список словарей с одинаковыми ключами
[{'a': 1, 'b':[]},...]. Надо их свести к виду {'a':[b...b(n)] и отсортировать по датам данные в списках (тоже словари)
Там itertools.groupby. В postgres можно было бы ещё в базе это сделать, но mysql ебаная параша
Есть сервис на питоне, который должен вытягивать инфу запросами и отправлять в ответ дургие запрросы, плюс нужна бд. Как это всё лучше запилить?
Pool Connection и FastAPI для REST например
Кароче пишу бота для вк, надо запрашивать лонгполами инфу по чейнджам, а потом делать по ним POST запросы разной степени упоротости. И при этом должна быть бд куда сваливать данные.
БД аналитическая нужна или просто временные данные? PostgreSQL, MySQL, MySQL для хранения на ФС.
Clickhouse для аналитики
Redis NoSQL в память.
Ну вообще API с примерами и я хуй знает что тебе ещё подсказать. Для HTTP запросов requests, aiohttp
Спасибо, а что по мультитредингу? Сейчас это сделано так: есть тред с запросами к бд, который делает запросы и складывает их в очередь. В другом потоке мы ждём когда нам что-то упадёт и обрабатываем. Хотелось бы ещё более асинхронно всё это делать. Что можешь подсказать? Есть какие-то штуки для этого?
>>45658
Да.
Мультитред -> GIL, учти.
Process1 -> Queue -> Process2.
Есть ZeroMQ для этих целей, RabbitMQ оверкилл, хочешь на нативных инструментах сделай. Process это прирост на линуксе овердохуя, про шинду забудь.
Вчера пробовал Process fork на линупсе с uvloop внутри, 13 мб памяти футпринт, а spawn 36. Ебал я в рот весь Редмонд.
a = [ i for i in range(10)]
result = list(filter(lambda x: x<6, filter(lambda x: x>3, a)))
Все работает жи
А ну и мультитред уже неактуален, только для run_in_executor() для asyncio. Тред банально быстрее запускать чем процесс. Ну и доступ сразу к namespace и globals будет(нет). Чисто сделать и закрыть.
А Process на постоянку. И так как у тебя I/O только, но ты хочешь слушать постоянно и писать без блокирования, то разделяй так.
В БД пишешь с асинхронной либой через connection pool. Сразу держит соединения для быстрого обращения к БД. Но э. то нагрузка на сервер БД сразу. Так что решай сам. Пул для concurrency берут, но я сразу его использую. Проще въебать asyncio.gather(*tasks) где каждый таск это выполнение процедуры БД. ORM медленное дерьмо, prepared statement это говнокод. А так передаешь аргументы и похуй. В самой.процедуре проще код поменять и отладить заранее.
Я набил шишки на этом, но другие могут быть со мной не согласны. Каждый по-своему прав. Ищи что тебе удобнее и даёт нужный результат.
Если совсем тумдум и нихера не выйдет скину готовые шаблоны Процесса с uvloop внутри и graceful shutdown через signal(SIGKILL, SIGTERM) и готовый aiomysql connector с tenacity retry. Для того чтобы повторять запросы если база легла и автоматически поднимать pool. Т.е. переживает перезапуск сервера и не уходит в exception или unclean exit code.
Пушто собирать и отменять корутины внутри процессов та ещё ебля. Но лучше чем запускать 100500 файлов пихона описанные в my_pihon.sh или 100500 unit service.
А, типа он просто делает .../getUpdates?timeout=100&offset=None а что оно делает надо в доках телеги смотреть.
Кто там за ФП копротивлялся?
class MyFilter(filter):
----def filter(self, func):
--------return self.__class__(func, self)
class MyList(list):
----def filter(self, func):
--------return MyFilter(func, self)
arr = MyList(data)
arr.filter(callback1).filter(callback2).filter(callback3)
В курсе что уже многие книги тупо протухли и надо сразу идти читать документацию и лезть в код модуля, чтобы знать где метод или параметр стал deprecated? Питон это вам не жава.
>Нахер нужен мультитрединг, если там все равно GIL тру асинхронности не дает, а накладных расходов больше?
Разные задачи, разные плюсы и минусы. И мультитрединг с асинхронностью разные вещи
1.Накладные расходы на мультитрединг сильно преувеличины.
2. GIL ОТПУСКАЕТСЯ при вызове кода на С или системных вызовов. Поэтому ты можешь спокойно писать многопоточный традиционный сетевой сервис . И даже на pandas какие-то ебнутые обсчеты делать мультитредно.
в каком то из языков это делается с помощью // вроде
https://www.w3schools.com/python/default.asp
Для тебя только единственный путь с гарантированным трудоустройством - https://hh.ru/employer/2624085
спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
они на то и ньюфаги, ньюфаг по определению не может быть умным
ну вот и пусть, как анон в соседнем треде говорил, умные ребята юзают их по низкой цене и меняют как перчатки
Сегодня решил автоматизировать на работе один рутинный процесс. Написал скрипт на питоне, и когда он заработал, и скучная хуйня, на которую я тратил свою жизнь, была решена за пару секунд - почувствовал себя первооткрывателем. Чистая эйфория.
Потом решил автоматизировать другой процесс, и тут уже наступил затык. Есть конфиг в текстовом файле, в нем есть определенные строчки, в которые нужно внести изменения. Сперва через инпут последовательно вводятся нужные данные айпи, маска, шлюз, имя хоста и потом как-то бы надо эти данные подставить в конфиг, но я застопорился и рабочий день закончился.
Но вообще, ощущения - атас. Когда прогаешь реальные задачи - это не идёт ни в какое сравнение.
Когда уже перечитал весь SO, github issues, всевозможные блоги и нашел крупицы того, что поможет с решением, НО в итоге реализовал свое вот это охуенно, а когда оно еще и в production работает... уууу прям радугой кончаешь.
Как жить-то? Либу asyncio развивают во всю, куча либ с поддержкой asyncio и 3.8. Uvloop везде, а все ебутся со стеком Django-Celery(Redis, RabbitMQ). Н-А-Х-У-Я?
да потому что это ебет только двачетред! зачем ты ему поверил то?
никто не пишет на питоне сервера. нет задач у малого бизнеса
в принципе можно 1 к 1 переделать
> а все ебутся со стеком Django-Celery(Redis, RabbitMQ). Н-А-Х-У-Я?
Еще годика полтора потерпят и асинхронность сразу в Джангу завезут
>из 100 штук только в одной требование работы с asyncio
Как ты ищешь?
Глянул HH, Мск за три дня, по слову django 83 вакансии, по asyncio 24
Причём в части asyncio именно требуется.
Во время карантинов вакансий было больше.
Сервера? Может сервисы/микросервисы? АSGI фреймворков дохера уже развелось.
Размытое понятие. В том-то и дело, что без определенного стека asyncio. Sanic, Falkon, Starlette...? ML, микросервис?
деление нацело полезно в бесконечных циклах где число обязательно должно быть целым, чтобы в этом бесконечном цикле не вызывать функцию int , потому что int работает сильно медленнее чем //
И часто тебе приходится использоватьс циклы на сто миллионов итераций с целочисленным делением?
Вроде спустя n часов все заработало. Поставил в setting.py DEBUG=False так при загрузке страницы nginx выбрасывает 403 error на static файлы, а медиа (картинки) вообще не подгружаются. Что за прикол? Я всего-то убрал дебаг-мод, с ним все работает и никаких 403
Столкнулся с такой проблемой. Дело даже не в питоне, а скорее в иде.
Надо было сделать новый чит-код для игрухи (sims 4), собсна нашел некоторый "быстрый старт" https://darasims.com/stati/tutorial/tutor_sims4/3662-kak-delat-skriptovye-mody-na-python-dlya-the-sims-4.html
Побыстренькому набросал необходимое и запустил compile.py, как сказано в инструкции. И тут выводит ошибку:
>from Utilities import compile_module
>ModuleNotFoundError: No module named 'Utilities'
(Структура папок в прикрепленном изображении)
Хотя, если в файле писать тот же from он спокойно предлагает Utilities
Вроде итак подступался и сяк, решил установить pycharm, шоб было прям как в инструкции.
И оно заработало.
Я даже хз в чем проблема была. Предполагаю, что из-за настроек в папки .idea.
Собсно, может кто пояснить почему так происходит, и как это исправить, чтобы в VSCode все нормально работало?
я предполагаю, что я не знаю чего-то прям простого, и прошу вас сказать в чем проблема или же, в какую сторону копать
Спасибо, анон!
Я даже не подумал об этом, да даже если бы подумал, хз как избежать.
Но почему-то в vscode это не работает, а в pycharm работает.
Так всё-таки, как это исправить?
Тебе надо во всех папках проекта создать пустые файлы __init__.py которые будут показывать, что это не просто пустые папки, а модули.
так, но в папке Utilities был __init__.py, т.е. он воспринимался как модуль. Или как бы да, но как-бы нет?
Хорошо, смысл понял.
Но почему тогда в pycharm это всё выполнялось нормально? Я даже опешил на некоторое время
ну просто надо знать об этом, у меня например в игрушке на pygame есть main loop, и там происходит деление координаты на число чтоб получить новую координату, координата не может быть не целочисленная иначе краш ( не бывает полтора пикселя), в мейн лупе все время вызывать int это хуйня а вот // збс
Например:
class Node:
____def __init__(self, *values):
________self.values = values
class value(Node):
____def compute(self):
________return self.values[0]
class add(Node):
____def compute(self):
________return value(self.values[0].compute() + self.values[1].compute()).compute()
Добра!
>>46686
Так понятнее?
class Node:
def __init__(self, values):
self.values = values
class value(Node):
def compute(self):
return self.values[0]
class add(Node):
def compute(self):
print (self.values[0])
return value(self.values[0].compute() + self.values[1].compute()).compute()
class sub(Node):
def compute(self):
return value(self.values[0].compute() - self.values[1].compute()).compute()
class mul(Node):
def compute(self):
return value(self.values[0].compute() self.values[1].compute()).compute()
class truediv(Node):
def compute(self):
return value(self.values[0].compute() / self.values[1].compute()).compute()
class mod(Node):
def compute(self):
return value(self.values[0].compute() % self.values[1].compute()).compute()
class pow(Node):
def compute(self):
return value(self.values[0].compute() self.values[1].compute()).compute()
a, b = value(5), value(2)
print(add(a, b).compute())
>>46686
Так понятнее?
class Node:
def __init__(self, values):
self.values = values
class value(Node):
def compute(self):
return self.values[0]
class add(Node):
def compute(self):
print (self.values[0])
return value(self.values[0].compute() + self.values[1].compute()).compute()
class sub(Node):
def compute(self):
return value(self.values[0].compute() - self.values[1].compute()).compute()
class mul(Node):
def compute(self):
return value(self.values[0].compute() self.values[1].compute()).compute()
class truediv(Node):
def compute(self):
return value(self.values[0].compute() / self.values[1].compute()).compute()
class mod(Node):
def compute(self):
return value(self.values[0].compute() % self.values[1].compute()).compute()
class pow(Node):
def compute(self):
return value(self.values[0].compute() self.values[1].compute()).compute()
a, b = value(5), value(2)
print(add(a, b).compute())
Неактуально для 3.7+
Для того чтобы пользоваться директориями не принадлежащими к данному проекту, но при этом там заведомо нужные для работы модули или просто файлы, то прописываешь PYTHONPATH=/dir/modules_dir
бля ты бы хоть описал что это за кусок и откуда ты его взял. Зачем тебе разбираться, что ты от этого куска хочешь
выглядит это либо как кусок калькулятора либо как часть какого-то парсера
какая-то строка бьется на токены а потом собирается в ноды. Каждая нода мб своего типа в зависимости от того что было в строке. Потом это говно попадает в какую-то функцию которая проходит по всем нодам и вызывает у каждой compute
это называется полиморфизм и применение ISP
вообще чем понятнее задашь вопрос тем точнее и лучше будет ответ
на всякий случай: ты долбоеб и иди нахуй
Да я долбоеб, и что? Но ты же в глаза ебешся. Я блядь конкретно спрашиваю нахуя в данном коде .compute() и что оно делает.
>Да я долбоеб, и что
то что программирование не твое иди мой туалеты
>Я блядь конкретно спрашиваю нахуя в данном коде .compute()
предоставляет интерфейс чтобы в другом месте с экземлярами sub mul truediv mod pow можно было работать не вдаваясь в подробности что это конкретно за реализация Node.
>что оно делает.
соответстввенно в add compute складывает, в mul умножает и так далее
Ясно, ты ебанат. Дальнейшие разговоры будут бессмысленными. Иди нахуй, пидар.
Анон, ты охуенен. Добра тебе.
В Питоне? Зачем? Статику должен nginx отправлять, так везде и советуют
Вот конфиг: https://pastebin.com/25Z6EP7N
По инету ходит инфа, что дело в недостаточных правах для групп юзеров... Хер знает, буду смотреть
Ну как видишь команда runserver и без nginx прекрасно справляется. Но почему-то для продакшна это не катит. Как думаешь, почему?
Добавили дополнительную сущность - сервер приложений, который связывает твой прикладной код с веб-сервером.
Веб-сервер обслуживает клиентов и передает динамические запросы серверу приложений. Сам по себе он тоже может выступать сервером, но особых нагрузок держать не сможет, т.к. такой задачи нет.
Осенью буду искать, если пиздеца с короной не будет. Сейчас есть работа за 90к, в августе буду отдыхать, а потом закрывать пробелы в знаниях.
Короче помогло 2 часа танцев с бубнами и: добавление моего юзера в группу www-data, рекурсивное изменение правил chmod для папок проекта и папок nginx, рекурсивное изменение владельцев chown тех же директорий
как я ебал эти пердолли сука...
Ну это стандартная хуйня, так ещё диды делали.
Ты еще спроси зачем cgi в стандартной либе есть
Это потоковый парсер, ты заебешься им извлекать конкретные элементы с условиями. Надо держать стейт и ручками всем управлять, ориентируясь по этим ивентам.
Он подходит или для всяких сложных дел типа создания dom, или совсем простенького типа извлечь все ссылки или картинки.
start = None
while start != "":
start = (input("\nНачальная позиция: "))
if start:
start = int(start)
finish = int(input("Конечная позиция: "))
print("Срез word[", start, ":", finish, "] выглядит как:", end=" ")
print(word[start:finish])
print("Полная последовательность выглядит как:", word[:])
Почему при попытке проиндексировать срез в обратном порядке, на экран выводиться пустота?
Почему при попытке на запрос аргумента для переменной start через input просто нажать Enter, цикл прекращает работу?
Подскажите пожалуйста.
Но я так и делаю же. Например если ввести слово "пицца" и задать
от -5 до +1, выводит пустой экран.
Что то я туплю и пишу ерунду.
Вопросы из №1747686 для меня всё ещё актуальны.
При попытке для слова "пицца" задать диапазон от -5 до -1
на экран выдаёт пицц.
Последнюю букву таким способом я вывести не могу. Разве что изначально задать вместо "пицца", строку "пицца "
-5 и -1 это просто оффсеты считая с конца, они не задают порядок, это делает третий опциональный параметр.
Например.
In [24]: 'govno'[2::-1]
Out[24]: 'vog'
> Почему при попытке на запрос аргумента для переменной start через input просто нажать Enter, цикл прекращает работу?
По твоему коду не понятно, тк при копировании на двач у тебя пропали отступы в условии, и я не знаю, что у тебя находится в блоке if, а что нет.
Если у тебя в условии только строка start = int(start), то в случае пустой строки в start, у тебя происходит извлечение среза, где одна из границ None.
Выполни скрипт из консоли, а не дабл кликом, да посмотри ошибку.
a = [int(i) for i in input().split()]
Собственно есть задача: есть произвольный список l содержащий любое количество строк.И есть переменная q содержащая в себе одну или несколько букв, и мне надо проверить начинается ли она с любой буквы, содержащейся в q для каждой строчки из l.Собственно функцию я накатал но она мне выдет вместо нужного первый элемент списка l и ошибки я не вижу.Может добрый анон подскажет ньюфагу пожалуйста?
Вот моя функция:
def start_with(l, q):
for letter in l.split():
if l[0].startswith(q):
print(q)
start_with(l, q)
Спасибо добрый анон.Буду разбираться почему у меня получается итерация не по списку.
Вот скрин с этим кодом.
Его даже не я написал, я изучал его по книге, из которой и скопировал.
Если ничего не вводить и нажать Enter, програма переходит к последней строке.
>l.split()
И шо это должно по-твоему делать?
>if l[0]
И это в цикле?
У тебя ж наверняка Exception-ы вылезают, прочитай что они тебе пишут. И логирование сделай, для начала функцией print, такие траблы как у тебя решаются логами и не засоряют лишний раз инфополе
>Почему при попытке на запрос аргумента для переменной start через input просто нажать Enter, цикл прекращает работу?
И второй вопрос, у тебя условие - цикл продолжается пока:
start != "" (цикл должен продолжаться пока не введена пустота - "")
Когда ты вводишь пустоту - "", start равняется "" (start=="") соответственно цикл выходит
Спасибо, это очень помогло.
Invalid HTTP_HOST header: 'www.myresource.com'. You may need to add 'www.myresource.com' to ALLOWED_HOSTS.
У меня сайт в формате myresource.com, никаких www там нет, с хрена ли мне это присылается?
Бывает ещё в теле класса такая же ебень.
Так загугли. Это для background задачи по типу рассылки сообщений
This
Осваиваешь сельдерей но не в курсе про декораторы? Ты молодцом
Тот же вопрос: теперь пришли оповещения о вообще каких-то левых айпишниках, что это блэт?
Если оно публично захощено, то боты какие-то щупают.
На тот же ssh сразу начинают массово ломиться.
В одном время точеное, в Int'aх, в другом значение функции дрочёное в float'ах.
Как в матплотлибе построить обычный 2д график по этим двум спискам? Всё прогуглил, всё не то.
Уточню.
Этот код
import pylab
figsize = (8,6)
pylab.plot (time, a)
pylab.show()
строит график. Но мне нужно его в streamlit загнать. Не получается найти способ построить такой график по двум спискам, чтобы загнать в streamlit
Вопрос следующего плана, я не имею понятия как дела обстоят в иных случаях, но знаю что некоторые эксплоиты выполняют в памяти уязвимого приложения шеллкод.
Меня интересует может ли что-то подобное делать пайтон на винде.
Парочку примеров я видел, но они для UNIX систем, в общем мне интересен просто рабочий пример.
Другой вопрос не особо касается питона, но все-же вдруг кто знает.
Например написал я программу на Си, которая выводит Hello world. Как мне из декомпилированной программы получить собственно сам сырой код, чтобы его потом разместить в памяти и выполнить ?
Сразу скажу, я не мамин хакир, меня интересует сам процесс, хочу попытаться реализовать одну идею которая давно в голове сидит пердит.
учишь класический мл, и соответствующие либы - нумпай, пандас, склерн. Потом можно учить дип лернинг это соответстннно пай торч или тензерфлоу, лучше пайторч
Я уже разобрался. Но пичот с документации. Очень сложно стороннему человеку, обладающему минимуму информации.
А графики используют, да.
>Получить оффер на 250-300к живя в россиюшке и кодя на пистоне можно только работая на западного барина?
Такие зарплаты только у кабанчиков. Западный барин платит не больше, чем крупные российские компании в ДС.
Знакомый 420к получает, просто удобно устроился. Фирма на 200 человек, из них 120 - инженеры теплоэнергетики. А он один стал систадмином на всю контору.
У меня знакомый работает на русскоязычную контору из проебалтики, которая 2.5к евро платит. Смотрел вакухи на удаленку на швятых, там в 1.5 раза больше средние
Как забахать роутинг для следующих урлов:
/abs
/abs/{blabla}
В джанго ебнул решулярку на конец строки, и готово. Тут какая то дикаяч смесь, и не регулярка, но и не строка. Есть прям так и бахать, как у меня, то ругается, что уже есть роут для /abs. Пробовал в первом случае добавить симовол конца строки (r'^/abs$') - не рабаотает
пишешь
/abs/{blabla:\d+}
все что после : это регулярка
blabla это имя по которому внутри контроллера будет доступно значение через request.match_info
это все есть в документации
https://docs.aiohttp.org/en/stable/web_quickstart.html#variable-resources
пример
https://pastebin.com/Zq5g5tAT
import os
import pickle
import errno
import numpy as np
STORAGE_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '.storage'))
class NeuralNetwork:
def __init__(self, input_nodes=3, hidden_nodes=3, output_nodes=3, rate=0.3, load_from=None):
"""
:param int input_nodes: количество узлов во входном слое
:param int hidden_nodes: количество узлов в скрытом слое
:param int output_nodes: количество узлов в выходном слое
:param float rate: коэфициент обучения
:param str load_from: загрузить данные из предварительно обученной модели
"""
if load_from is not None:
if not self.load(load_from):
raise ValueError('Model with name `{}` not found'.format(load_from))
else:
self.input_nodes = input_nodes
self.hidden_nodes = hidden_nodes
self.output_nodes = output_nodes
self.rate = rate
self.w_i_h = None # весовые коэффициенты между входным и скрытым слоем
self.w_h_o = None # весовые коэффициенты между скрытым и выходным слоем
self.__init_weights()
def train(self, input_list, target_list):
"""Тренировка нейронной сети - уточнение весовых коэффициентов
:param iterable input_list: входные данные
:param iterable target_list: целевые значения
"""
# Преобразуем входные данные в двумерный массив [1, 2, 3, 4] -> array([[1], [2], [3], [4]])
inputs = np.array(input_list, ndmin=2).T
targets = np.array(target_list, ndmin=2).T
# Расчитаем входящие сигналы для скрытого слоя
h_inputs = np.dot(self.w_i_h, inputs)
# Расчитаем исходящие сигналы для скрытого слоя
h_outputs = self.__activation_function(h_inputs)
# Расчитаем входящие сигналы для выходного слоя
o_inputs = np.dot(self.w_h_o, h_outputs)
# Расчитаем исходящие сигналы для выходного слоя
o_outputs = self.__activation_function(o_inputs)
# Выходная ошибка сети = целевое значение - фактическое значение
o_errors = targets - o_outputs
# Ошибки скрытого слоя - это ошибки выходного слоя сети,
# распределенные пропорционально весовым коэфициентам связей
# и рекомбинированные на скрытых узлах
h_errors = np.dot(self.w_h_o.T, o_errors)
# Обновим весовые по следующей формуле:
# alpha e sigmoid(x) (1 - sigmoid(x)) o, где
# alpha - коэфициент обучения,
# e - выходная ошибка,
# sigmoid(x) (1 - sigmoid(x)) - производная от функции активации (сигмойды в нашем случае),
# o - выходной сигнал предыдущего слоя.
# Обновим весовые коэфициенты между скрытым и выходным слоем сети
self.w_h_o += self.rate np.dot((o_errors o_outputs (1 - o_outputs)), h_outputs.T)
# Обновим весовые коэфициенты между входным и скрытым слоем сети
self.w_i_h += self.rate np.dot((h_errors h_outputs (1 - h_outputs)), inputs.T)
def predict(self, input_list):
"""Опрос нейронной сети - получение значений сигналов выходных узлов
:param iterable input_list: входные данные
:return numpy.array: выходные данные
"""
# Преобразуем входные данные в двумерный массив [1, 2, 3, 4] -> array([[1], [2], [3], [4]])
inputs = np.array(input_list, ndmin=2).T
# Расчитаем входящие сигналы для скрытого слоя
h_inputs = np.dot(self.w_i_h, inputs)
# Расчитаем исходящие сигналы для скрытого слоя
h_outputs = self.__activation_function(h_inputs)
# Расчитаем входящие сигналы для выходного слоя
o_inputs = np.dot(self.w_h_o, h_outputs)
# Расчитаем исходящие сигналы для выходного слоя
o_outputs = self.__activation_function(o_inputs)
return o_outputs
def back_query(self, output_list):
"""Осуществляет обратный запрос к сети
:param iterable output_list: обратные исходящие сигналы сети
:return numpy.array: выходные данные
"""
# Преобразуем входные данные в двумерный массив [1, 2, 3, 4] -> array([[1], [2], [3], [4]])
o_outputs = np.array(output_list, ndmin=2).T
# Преобразуем выходящие сигналы во входящие сигналы для выходного слоя
o_inputs = self.__back_activation_function(o_outputs)
# Расчитаем исходящие сигналы для скрытого слоя
h_outputs = np.dot(self.w_h_o.T, o_inputs)
# Нормализуем сигналы от 0.01 до 0.99, т.к. сигмойда не может давать знаения за пределами этих чисел
h_outputs -= np.min(h_outputs)
h_outputs /= np.max(h_outputs)
h_outputs = 0.98
h_outputs += 0.01
# Расчитаем входящие сигналы для скрытого слоя
hidden_inputs = self.__back_activation_function(h_outputs)
# Расчитаем исходящие сигналы для входного слоя
inputs = np.dot(self.w_i_h.T, hidden_inputs)
# Нормализуем сигналы от 0.01 до 0.99, т.к. сигмойда не может давать знаения за пределами этих чисел
inputs -= np.min(inputs)
inputs /= np.max(inputs)
inputs = 0.98
inputs += 0.01
return inputs
def save(self, key):
"""Сохраняет обученную модель
:param str key: имя модели
"""
try:
os.makedirs(STORAGE_PATH)
except OSError as e:
if e.errno != errno.EEXIST:
raise
file_path = os.path.join(STORAGE_PATH, key)
value = {
'input_nodes': self.input_nodes,
'hidden_nodes': self.hidden_nodes,
'output_nodes': self.output_nodes,
'rate': self.rate,
'w_i_h': self.w_i_h,
'w_h_o': self.w_h_o,
}
with open(file_path, mode='wb') as fn:
pickle.dump(value, fn, protocol=2)
def load(self, key):
"""Загружает обученную модель
:param str key: имя модели
"""
file_path = os.path.join(STORAGE_PATH, key)
if os.path.isfile(file_path):
with open(file_path, mode='rb') as fn:
value = pickle.load(fn)
self.input_nodes = value['input_nodes']
self.hidden_nodes = value['hidden_nodes']
self.output_nodes = value['output_nodes']
self.rate = value['rate']
self.w_i_h = value['w_i_h']
self.w_h_o = value['w_h_o']
return True
else:
return False
def __init_weights(self):
"""Инициализация случайных весов используя "улучшенный" вариант инициализации весовых коэфициентов.
Весовые коэфициенты выбираются из нормального распределения центром в нуле и со стандартным отклонением,
величина которого обратно пропорциональна квадратному корню из количества входящих связей на узел.
"""
self.w_i_h = np.random.normal(0.0, pow(self.hidden_nodes, -0.5), (self.hidden_nodes, self.input_nodes))
self.w_h_o = np.random.normal(0.0, pow(self.output_nodes, -0.5), (self.output_nodes, self.hidden_nodes))
@staticmethod
def __activation_function(x):
"""Функция активации нейронной сети
:param iterable x: матрица входящих сигналов сети
:return numpy.array: матрица сглаженных комбинированных сигналов
"""
return 1.0 / (1.0 + np.exp(-x)) # в качастве функции активации будет выступать сигмойда
@staticmethod
def __back_activation_function(y):
"""Функция обратной активации нейронной сети
В нашем случае, для сигмойды обратной функцией является логит - y = 1/(1 + e*-x) <=> x = ln(y/(1-y))
:param iterable y: матрица обратных исходящих сигналов сети
:return numpy.array: матрица обратно сглаженных комбинированных сигналов
"""
return np.log(y / (1.0 - y))
import os
import pickle
import errno
import numpy as np
STORAGE_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '.storage'))
class NeuralNetwork:
def __init__(self, input_nodes=3, hidden_nodes=3, output_nodes=3, rate=0.3, load_from=None):
"""
:param int input_nodes: количество узлов во входном слое
:param int hidden_nodes: количество узлов в скрытом слое
:param int output_nodes: количество узлов в выходном слое
:param float rate: коэфициент обучения
:param str load_from: загрузить данные из предварительно обученной модели
"""
if load_from is not None:
if not self.load(load_from):
raise ValueError('Model with name `{}` not found'.format(load_from))
else:
self.input_nodes = input_nodes
self.hidden_nodes = hidden_nodes
self.output_nodes = output_nodes
self.rate = rate
self.w_i_h = None # весовые коэффициенты между входным и скрытым слоем
self.w_h_o = None # весовые коэффициенты между скрытым и выходным слоем
self.__init_weights()
def train(self, input_list, target_list):
"""Тренировка нейронной сети - уточнение весовых коэффициентов
:param iterable input_list: входные данные
:param iterable target_list: целевые значения
"""
# Преобразуем входные данные в двумерный массив [1, 2, 3, 4] -> array([[1], [2], [3], [4]])
inputs = np.array(input_list, ndmin=2).T
targets = np.array(target_list, ndmin=2).T
# Расчитаем входящие сигналы для скрытого слоя
h_inputs = np.dot(self.w_i_h, inputs)
# Расчитаем исходящие сигналы для скрытого слоя
h_outputs = self.__activation_function(h_inputs)
# Расчитаем входящие сигналы для выходного слоя
o_inputs = np.dot(self.w_h_o, h_outputs)
# Расчитаем исходящие сигналы для выходного слоя
o_outputs = self.__activation_function(o_inputs)
# Выходная ошибка сети = целевое значение - фактическое значение
o_errors = targets - o_outputs
# Ошибки скрытого слоя - это ошибки выходного слоя сети,
# распределенные пропорционально весовым коэфициентам связей
# и рекомбинированные на скрытых узлах
h_errors = np.dot(self.w_h_o.T, o_errors)
# Обновим весовые по следующей формуле:
# alpha e sigmoid(x) (1 - sigmoid(x)) o, где
# alpha - коэфициент обучения,
# e - выходная ошибка,
# sigmoid(x) (1 - sigmoid(x)) - производная от функции активации (сигмойды в нашем случае),
# o - выходной сигнал предыдущего слоя.
# Обновим весовые коэфициенты между скрытым и выходным слоем сети
self.w_h_o += self.rate np.dot((o_errors o_outputs (1 - o_outputs)), h_outputs.T)
# Обновим весовые коэфициенты между входным и скрытым слоем сети
self.w_i_h += self.rate np.dot((h_errors h_outputs (1 - h_outputs)), inputs.T)
def predict(self, input_list):
"""Опрос нейронной сети - получение значений сигналов выходных узлов
:param iterable input_list: входные данные
:return numpy.array: выходные данные
"""
# Преобразуем входные данные в двумерный массив [1, 2, 3, 4] -> array([[1], [2], [3], [4]])
inputs = np.array(input_list, ndmin=2).T
# Расчитаем входящие сигналы для скрытого слоя
h_inputs = np.dot(self.w_i_h, inputs)
# Расчитаем исходящие сигналы для скрытого слоя
h_outputs = self.__activation_function(h_inputs)
# Расчитаем входящие сигналы для выходного слоя
o_inputs = np.dot(self.w_h_o, h_outputs)
# Расчитаем исходящие сигналы для выходного слоя
o_outputs = self.__activation_function(o_inputs)
return o_outputs
def back_query(self, output_list):
"""Осуществляет обратный запрос к сети
:param iterable output_list: обратные исходящие сигналы сети
:return numpy.array: выходные данные
"""
# Преобразуем входные данные в двумерный массив [1, 2, 3, 4] -> array([[1], [2], [3], [4]])
o_outputs = np.array(output_list, ndmin=2).T
# Преобразуем выходящие сигналы во входящие сигналы для выходного слоя
o_inputs = self.__back_activation_function(o_outputs)
# Расчитаем исходящие сигналы для скрытого слоя
h_outputs = np.dot(self.w_h_o.T, o_inputs)
# Нормализуем сигналы от 0.01 до 0.99, т.к. сигмойда не может давать знаения за пределами этих чисел
h_outputs -= np.min(h_outputs)
h_outputs /= np.max(h_outputs)
h_outputs = 0.98
h_outputs += 0.01
# Расчитаем входящие сигналы для скрытого слоя
hidden_inputs = self.__back_activation_function(h_outputs)
# Расчитаем исходящие сигналы для входного слоя
inputs = np.dot(self.w_i_h.T, hidden_inputs)
# Нормализуем сигналы от 0.01 до 0.99, т.к. сигмойда не может давать знаения за пределами этих чисел
inputs -= np.min(inputs)
inputs /= np.max(inputs)
inputs = 0.98
inputs += 0.01
return inputs
def save(self, key):
"""Сохраняет обученную модель
:param str key: имя модели
"""
try:
os.makedirs(STORAGE_PATH)
except OSError as e:
if e.errno != errno.EEXIST:
raise
file_path = os.path.join(STORAGE_PATH, key)
value = {
'input_nodes': self.input_nodes,
'hidden_nodes': self.hidden_nodes,
'output_nodes': self.output_nodes,
'rate': self.rate,
'w_i_h': self.w_i_h,
'w_h_o': self.w_h_o,
}
with open(file_path, mode='wb') as fn:
pickle.dump(value, fn, protocol=2)
def load(self, key):
"""Загружает обученную модель
:param str key: имя модели
"""
file_path = os.path.join(STORAGE_PATH, key)
if os.path.isfile(file_path):
with open(file_path, mode='rb') as fn:
value = pickle.load(fn)
self.input_nodes = value['input_nodes']
self.hidden_nodes = value['hidden_nodes']
self.output_nodes = value['output_nodes']
self.rate = value['rate']
self.w_i_h = value['w_i_h']
self.w_h_o = value['w_h_o']
return True
else:
return False
def __init_weights(self):
"""Инициализация случайных весов используя "улучшенный" вариант инициализации весовых коэфициентов.
Весовые коэфициенты выбираются из нормального распределения центром в нуле и со стандартным отклонением,
величина которого обратно пропорциональна квадратному корню из количества входящих связей на узел.
"""
self.w_i_h = np.random.normal(0.0, pow(self.hidden_nodes, -0.5), (self.hidden_nodes, self.input_nodes))
self.w_h_o = np.random.normal(0.0, pow(self.output_nodes, -0.5), (self.output_nodes, self.hidden_nodes))
@staticmethod
def __activation_function(x):
"""Функция активации нейронной сети
:param iterable x: матрица входящих сигналов сети
:return numpy.array: матрица сглаженных комбинированных сигналов
"""
return 1.0 / (1.0 + np.exp(-x)) # в качастве функции активации будет выступать сигмойда
@staticmethod
def __back_activation_function(y):
"""Функция обратной активации нейронной сети
В нашем случае, для сигмойды обратной функцией является логит - y = 1/(1 + e*-x) <=> x = ln(y/(1-y))
:param iterable y: матрица обратных исходящих сигналов сети
:return numpy.array: матрица обратно сглаженных комбинированных сигналов
"""
return np.log(y / (1.0 - y))
Я хз, кто тебе ответил ниже, это не я.
По поводу моего ворпоса - пажжи, тут что то хайня какая то.
глянь еще раз код в примере
если дописать то
response = await client.post("/some/another/")
assert response.status == 404
соответственно все /abs/ будут попадать куда нужно, а /abss/ /abs/sba/ будут 404
Рейт ми, анон. Не троллю, просто сто лет по собесам не ходил, а щас на вольном плавании. Думаю, сколько просить. 13 лет разработки, 9 из них в яндексе. В основном пишу на питонах, но довольно неплохо умею и в сишку. Остальное по мелочи: хайлоад, асинхронность, распределенные системы, докеры-хуекеры, немношк встраиваемые системы и контроллеры. JS/HTML умею, но в гробу видал.
Не учи отца ебаться в жопу.
5к$
Но тут смотря насколько ты лох, тебя и на 1.5к$ могут развести, а ты и рад будешь.что не отпиздили, и прекратили обоссывать
Я знаю как это фиксить, но все равно дико бесит, в последнее время пишу исключительно ручные миграции
ставлю расширение oragne3 - pip комплиятор хочет :
running build_ext running config compiling '_configtest.c': int __attribute__((optimize("O3"))) have_attribute_optimize_opt_3(void*); int main(void) { return 0; } error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/ ---------------------------------------- ERROR: Failed building wheel for bottleneck ERROR: Could not build wheels for bottleneck which use PEP 517 and cannot be installed directly
Visual Studio Community весит 7 гб. Поменьше нельзя что-то качнуть? У меня просто на ноутбуке места мало осталось.
Как прочекать наличие бинарника в wheels ?
mport sys
import os.path
import glob
import cv2
import numpy as np
import torch
import architecture as arch
model_path = sys.argv[1] # models/RRDB_ESRGAN_x4.pth OR models/RRDB_PSNR_x4.pth
device = torch.device('cuda') # if you want to run on CPU, change 'cuda' -> cpu
# device = torch.device('cpu')
test_img_folder = 'LR_V/'
model = arch.RRDB_Net(3, 3, 64, 23, gc=32, upscale=4, norm_type=None, act_type='leakyrelu', \
mode='CNA', res_scale=1, upsample_mode='upconv')
model.load_state_dict(torch.load(model_path), strict=True)
model.eval()
for k, v in model.named_parameters():
v.requires_grad = False
model = model.to(device)
print('Model path {:s}. \nTesting...'.format(model_path))
idx = 0
for path in glob.glob(test_img_folder):
idx += 1
base = os.path.splitext(os.path.basename(path))[0]
print(idx, base)
cap = cv2.VideoCapture(path)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) 4
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) 4
fps = int(cap.get(cv2.CAP_PROP_FPS))
out = cv2.VideoWriter('results/{:s}.avi'.format(base), cv2.VideoWriter_fourcc('M','J','P','G'), fps, (width,height))
while True:
ret, img = cap.read();
if img is None:
break
img = img 1.0 / 255
img = torch.from_numpy(np.transpose(img[:, :, [2, 1, 0]], (2, 0, 1))).float()
img_LR = img.unsqueeze(0)
img_LR = img_LR.to(device)
output = model(img_LR).data.squeeze().float().cpu().clamp_(0, 1).numpy()
output = np.transpose(output[[2, 1, 0], :, :], (1, 2, 0))
output = (output 255.0).round()
output = np.uint8(output)
out.write(output)
cap.release()
out.release()
Ошибка:
IPython 7.12.0 -- An enhanced Interactive Python.
Model path models/RRDB_ESRGAN_x4.pth.
Testing...
1 15946389272380
Traceback (most recent call last):
File "C:\Users\---\Desktop\ESRGAN-master\test.py", line 28, in <module>
img = img 1.0 / 255
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
mport sys
import os.path
import glob
import cv2
import numpy as np
import torch
import architecture as arch
model_path = sys.argv[1] # models/RRDB_ESRGAN_x4.pth OR models/RRDB_PSNR_x4.pth
device = torch.device('cuda') # if you want to run on CPU, change 'cuda' -> cpu
# device = torch.device('cpu')
test_img_folder = 'LR_V/'
model = arch.RRDB_Net(3, 3, 64, 23, gc=32, upscale=4, norm_type=None, act_type='leakyrelu', \
mode='CNA', res_scale=1, upsample_mode='upconv')
model.load_state_dict(torch.load(model_path), strict=True)
model.eval()
for k, v in model.named_parameters():
v.requires_grad = False
model = model.to(device)
print('Model path {:s}. \nTesting...'.format(model_path))
idx = 0
for path in glob.glob(test_img_folder):
idx += 1
base = os.path.splitext(os.path.basename(path))[0]
print(idx, base)
cap = cv2.VideoCapture(path)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) 4
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) 4
fps = int(cap.get(cv2.CAP_PROP_FPS))
out = cv2.VideoWriter('results/{:s}.avi'.format(base), cv2.VideoWriter_fourcc('M','J','P','G'), fps, (width,height))
while True:
ret, img = cap.read();
if img is None:
break
img = img 1.0 / 255
img = torch.from_numpy(np.transpose(img[:, :, [2, 1, 0]], (2, 0, 1))).float()
img_LR = img.unsqueeze(0)
img_LR = img_LR.to(device)
output = model(img_LR).data.squeeze().float().cpu().clamp_(0, 1).numpy()
output = np.transpose(output[[2, 1, 0], :, :], (1, 2, 0))
output = (output 255.0).round()
output = np.uint8(output)
out.write(output)
cap.release()
out.release()
Ошибка:
IPython 7.12.0 -- An enhanced Interactive Python.
Model path models/RRDB_ESRGAN_x4.pth.
Testing...
1 15946389272380
Traceback (most recent call last):
File "C:\Users\---\Desktop\ESRGAN-master\test.py", line 28, in <module>
img = img 1.0 / 255
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'
Есть цикл {% for entry in entry_list %} и я с помощью него могу засовывать статейки в заранее подготовленные html теги, а как блин их рассовать чтоб они шли по двое?..
Короче, нужно сделать кнопку, при нажатии на которую скрипт останавливается. Огромное кол-во циклов при работе. работа в стороннем приложении, так что горячими клавишами не обойтись
Саму кнопку сделал, но вообще хуй помни какая функция нужна для btn.bind. Код кнопки ниже.
try:
from tkinter import
except:
from Tkinter import
root=Tk()
btn = Button(root,
text="Stop Code",
width=30,height=5,
bg="white",fg="black",)
btn.pack()
btn.bind("<Button-1>", )
root.attributes("-topmost",True)
root.mainloop()
Если запросы не особо частые, то можно и в тред вынести
1) Раскидать по модулям?
2) Писать более сложные методы?
Асинхронная библиотека для SQLite есть, но там есть нюансы.
Все равно семафор придется делать (один хуй с asyncio это проще)
def stop():
sys.exit(0)
В кнопку хуячь lambda x: stop() или красиво через functools.partial(stop())
Да, кажется там сразу тянет пакеты для работы с шиндой и компилятор vs (для сборок wrappers). Винда самая хуевая платформа. Накати WSL2 и радуйся.
после этого сказали окей хорошо. и затем спросили "как можно определить что можно хешировать, а что нет?" и после этого я просто впал в нереальный ступор на полминуты и в итоге промолчал. в итоге услышал заветное "мы вам перезвоним". так вот, подскажите пжалста ответ на этот вопрос
Паттерны братиш. Я сам в это вляпался. Начал рефакторить и заплакал.
Ещё раз посмотри принципы ООП в Пихоне и дуй на http://www.refactoring.guru там сразу примеры есть. Тяжело для понимания, но хули делать
https://docs.python.org/3/library/hashlib.html
А вообще ты знатно обосрался. В документации все написано.
> You can now feed this object with bytes-like objects (normally bytes)
Ну и то что хэш не только для криптографии используется на SO пояснили и в документаци написано
> были вопросы по хеш функциям. спросили че это и нахуя оно надо
Ебать, чтобы хэшировать инфу, составлять уникальные значения для данных. Очень классно использовать в бд, особенно если хэш алгоритм лёгкий.
> как можно определить что можно хешировать, а что нет?
Хэшировать можно всё нахуй, хоть небо, хоть аллаха, хоть сам питон и эйчара.
Я прошел собес, аноны?
Вот суки ебаные, я знаю, ваша либа хэша дырявая сучка и любит принимать инжект ту-туту-ту-ту-ту
По всем пунктам неверно.
Хеширование не может гарантировать уникальность, даже для длинных криптографических хешей, но там вероятность коллизий исключительно мала.
Хеширование в теории алгоритмов нужно для того, чтобы иметь возможность быстро искать сложные объекты, удобно их хранить. Ты работаешь не с объектами напрямую, а в паре хеш-адрес объекта.
Слёту про hash() в питоне без подсказок, вот если бы меня сейчас спросили, я бы адекватно не рассказал, мне проще там про устройство словарей и списков что-то сказать. Пересказывать доку не буду. Есть ощущение, что помнить это не надо, на практике вряд ли пригодится.
Вопрос кстати по хешам: почему в питонухе не хешируются (а следовательно не могут и быть ключами в словаре) изменяемые объекты? Ну изменится хеш при изменении самого объекта, дальше-то что? В чем изъян?
Чтобы ты не мог себе в ногу выстрелить. Сделаешь словарь от листа, измнеишь лист и потом не сможешь им как ключем воспользоваться и РЯЯЯЯ
Ключ у тебя отвалилвается, потому что изменненный хеш не подходит, а старого уже нет.
Неизменяемые объекты в питоне хранятся в виде объекта и счётчика ссылок. Два одинаковых по значению неизменяемых объекта - это на самом деле всегда один объект.
А вот два одинаковых по значению изменяемых объекта - это два разных объекта.
Из-за этого и идут все ограничения. Если ты обращаешься по ключу, то просто логика здорового кода подразумевает, что ты ищешь что-то по значению, а не по ссылке.
Если объект, используемый в качестве ключа изменяемый, то тебе необходимо во-первых поддержать поиск по значению, поддержать функцию сравнения, и во-вторых реализовать механизм изменения хешей и т.п. в случае, если объект-ключ изменился. Всё это очень сложно сделать, накладно по ресурсам и много исключительных ситуаций. Поэтому и не нужно.
Может хешмапа строится во время создания/изменения дикта/сета и при изменении самого объекта ты не сможешь получить к нему доступ, если в качестве ключа укажешь новое значение? хотя по такой логике по старому оно должно быть доступно?
Пизда, хотел я проверить до какого порога они забиты, написал скрипт, а CPython Опять мне тапком по лицу провел. Скрипт через exec внезапно не робит:
https://www.ideone.com/4X8m7g
Да верно всё, ты всё то же самое говоришь, просто другими словам.
На практике хэши довольно часто нужны. Иногда бывает проще хэши сравнивать, чем строки/данные, если нужно сравнить и похуй на иллюзорную неточность.
Ускорение в чем? Тебе уже на пальцах объяснили. Попробуй в словаре два одинаковых ключа сделать. Поймёшь почему нельзя сделать два ключа {'name': 'Gvido', 'name': 'Rossum'}?
Касательно уникальности -> uuid, криптография несколько сложнее.
https://ru.m.wikipedia.org/wiki/Соль_(криптография)
А тот анон прав, тебя спрашивали не о применении в общем, но о том, что можно хэшировать и как.
Ты на кого вообще шел?
Алсо, для понимания в остальных языках словарь это hashmap. Почему в Пихоне это словарь, видимо чтобы проще было понимать.
Например есть объект:
int(228)
Какое название атрибутаили метода, я так до конца и не разобрался после точки нужно указать чтобы вернуть количество ссылок на объект?
Я знаю про sys.getrefcount(), но не понимаю откуда берется это значение
Никак, это внутренняя хуйня, которой управляет вм.
Её можно пощупать всякими внешними средствами вроде getrefcount, но не более.
Тот же самый скрипт но в консоле (не в виде функции) работает ответ кстати 257
Че это блэт? Связано с пространством local? Или просто очередная "магия" пистона?
Не удивлюсь что если это тот же чел, который недавно хвалился "айти вышкой" и утверждал что он"шарит в бд", но при этом сама концепция переноса Postgres на сторонний сервер вместо localhost взорвала ему мозг (ну они же проводами не соединены!1 как так-то??)
Спасибо, анон, работает как часы. Только пиздец, теперь когда вставляю кнопку в основной код он ее создает и дальше код не обрабатывает. Ждет пока я на нее нажму и все сломаю.
"Шарить в БД" это ни о чем. Я вот научился клепать говеные таблицы и создавать процедуры. Нашел бутылочное горлышко в этой хуйне (и знатно на него присел), теперь ищу книгу чтобы вновь не обсираться с индексацией и перекатиться на peewee. Жду как ману небесную Tortoise. Пилят Django style на uvloop. Пока нет нихуя, миграция в 1.0, ,а выкачена 0.18, лол.
Скорее всего буду делать PR clickhouse-infi с переходом на aiohttp. Тоже ORM. Если тут анонасы подскочат буду рад.
Пихон удобный, вот тебе словарь из данных выгруженные из БД, а вот ты обсираешься с ключом. Вот теперь я переобуваюсь, так как топил за процедуры в SQL, но заебался их поддерживать.
Вышка ровным счётом это поджопник. Мне до Джуна ещё минимум два года, так как пиздец какие поверхностные знания. Пока в продакшене не будет ещё 3 проекта, считай и не ходил нихуя.
Поделки на гитхабе (есть желание для себя сделать автозагрузки ongoing сериалов с торрента) я считаю даже при устройстве на галеру стыдно будет показывать.
Так ты так код написал. У тебя только кнопка и loop. Внутри в цикле хоть дату выводи.
Ну а что можно такого взять? Потом же аналитику надо проводить. SQL запросы учатся за минут 40, потом уже по методикам развиваешь их. А с NoSQL? Вход сложнее априори.
> Вход сложнее априори.
Да никто не говорил что просто будет. Но для джуна и sql хватит, да, нормально вообще. Кэширование нахуярить и сидишь пердишь.
Я про то, что другие будут лезть в БД, и им NoSQL будет непонятен. Когда сам архитектуру пишешь, то похуй..используешь что удобнее тебе. А потом твой код превращается в легаси
ну так цифорки же быстрее сравнивать например чем строки. разве нет? шел на джанго веб девелопера
>>50992
не, это простыня-кун который писал сюда в марте. и у меня не айти вышка всего лишь атомная энергетика
алсо, есть какая годная литература по поводу этого? чтобы в книжках читануть. сам читал только укус питона, и только в том сентябре
Ты дурак или да? Какие нахер книги. Пиздуй доку по Джанге читай и тыкай готовые примеры. Совсем уже мозги пропили.
АйТи это книга для пинка под зад + документация. Так как библиотеки постоянно меняются. В шапку этот аргумент вставьте, заебали такие тупые вопросы.
Что читать, блять. Сукалол
мимо мамкин экономист со знанием тех. английского
>ну так цифорки же быстрее сравнивать например чем строки. разве нет?
Все есть байтики и сравниваются они одинакого
Бамп вопросу.
да, и заебашит туда libpython и бинарник интерпретатора. на SO сотни раз разжевано.
Только он чет сторонние библиотеки не добавляет и нихуя поэтому не работает. Как быть если у меня в сторонних библиотеках их штук 20?
По-моему, он читает код и оттуда достает что добавить.
Если они у тебя задействуются косвенно, то можешь попробовать добавить явно, чтобы он подхватил.
У меня считай почти целиком код работает с помощью сторонней библиотеки. А она в свою очередь использует другие библиотеки.
Как все это явно добавить?
Ну смотри чего не хватает в результате и добавляй строчки import huita в своем главном скрипте.
https://stackoverflow.com/questions/62897439/django-docker-cant-launch-a-project
А как я ипортирую библиотеки, которые использует другой пакет? Основной пакет у меня и так испортируется, но прога нихуя не работает.
Да ты у себя импортируй и ничего не делай. Они подхватятся и будут в наличии для использования там.
у меня и так пакет в самой программе импортируется для работы. Но тому пакету нужны еще другие пакеты
Когда вы гуглить начнете?
Во-первых запускай его в консоли нахуй или инициализируй запуск консоли.
https://pyinstaller.readthedocs.io/en/stable/when-things-go-wrong.html#listing-hidden-imports
mysql-connector например шел с hidden imports, я хуй знает что ты там портируешь. Можешь указывать так же PYTHONPATH чтобы наверняка.
У тебя JSON кривой
line 1, либо нет открывающей {, либо не указал значение после ключа.
ЗАЕБАЛИ
ГУГЛИТЕ СНАЧАЛА ЕБУЧИЕ ОШИБКИ
Перекот на Go, там ебланов меньше.
Нахрена ты вообще собираешь экзешник? Хочешь экзешники пиздуй С++ учить или С#. С шиндой никакой интеграции считай и нет, все через жопу.
Python это только Linux (Docker Image как вариант), даже в MacOS натворили хуйни.
Давай сразу в хачкель.
https://www.packtpub.com/free-ebooks/virtualization-and-cloud/docker-cookbook-second-edition/9781788626866
Анон, помоги ньюфагу. Есть скрипт https://raw.githubusercontent.com/amayatsky/shadowsocks-url-generator/master/ss-genuri.py
Нужно, чтобы он вместо
>config['server'],
Определял внешний айпи сервака (то, что он тянет из конфига - там другое и это не нужно).
И при выводе, чтобы в конце после всего, что он вывел, он добавлял
>?plugin=vmess%3Bhost%3Dkremlin.ru#done
Ты мне очень поможешь. Бьюсь уже пол дня.
откуда ты знаешь какие задания тебе нужны а какие нет?
>Traceback (most recent call last):
> File "/dev/fd/63", line 5, in <module>
>ImportError: No module named request
Видимо ему библиотека твоя не нравится. А нельзя просто брать этот параметр из сетевого интерфейса? Айпи белый.
И еще, можно ли задать вывод другим цветом? В терминале нужно, чтобы цвет другой был у выводимой строчки
Второй питон штоле? Про интерфейс хз есть ли универсальный метод. Если есть команда, выдающая его, то можно выполнить и забрать вывод.
Цвет можно задать через анси-коды, надо смотреть.
Я не знаю, стандартно что стоит на впске с убунтой после всех апгрейдов.
>Python 2.7.17 (default, Apr 15 2020, 17:20:14)
>[GCC 7.5.0] on linux2
>:~$ sudo apt-get install python
>Reading package lists... Done
>Building dependency tree
>Reading state information... Done
>python is already the newest version (2.7.15~rc1-1).
>The following packages were automatically installed and are no >longer required:
> grub-pc-bin linux-headers-4.15.0-109
>Use 'sudo apt autoremove' to remove them.
>0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
>sudo apt-get install python3
>sudo apt-get install python3
Reading package lists... Done
Building dependency tree
Reading state information... Done
python3 is already the newest version (3.6.7-1~18.04).
python3 set to manually installed.
The following packages were automatically installed and are no longer required:
grub-pc-bin linux-headers-4.15.0-109
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Ну примерно так.
print('\033[91m' + 'huita' + '\033[0m')
Первое задает красный цвет, второе сбрасывает.
Коды эти можешь погуглить по ansi escape sequence.
Например:
> obj = Zazaza(some_dict)
> obj = Zazaza(some_list1, some_int)
По идее я могу просто в __init__() прописать проверку колличества аргумента и их типа и в зависимости от этого уже управлять созданием объекта НО инит раздувается неприлично, а он у меня и так жЫрный
Но это на мой вкус КАК-ТО ГРЯЗНО, есть ли более красивый способ это как-то сделать?
Нехера не понял. Может просто написать, чтобы для скрипта >>51536 в конце вывело желтую строчку?
По ссылке 33 это, кстати, желтый http://ascii-table.com/ansi-escape-sequences.php
Пытаюсь составить прикладную програмку лично для себя через PyQt5, чтобы исполнять написанный мною скрипт. Собственно GUI я сделал, осталось назначить функции кнопкам, но возникла внезапная проблема, решение которой я не могу найти: как передавать в исполняемую функцию необходимые переменные при нажатии кнопки? Это делается через глобальные переменные или есть какой-то более нормальный способ?
Собственно, вот примерно то, чего бы я хотел:
> self.su_show_button.clicked.connect(self.OpenDF(path))
но оно не работает
Есть код - пикрил. Читаю из файла некую инфу. Return вроде как лишний. Как првильно прочесть данные асинхронно и положить в файл? А метод чтения из файла нужно ведь помечать как async? У меня что то тоявляется желание везде писать async\await, теорию читаешь, вроде все понятно, а на практике хуета выходит.
Ты сразу и вызвал метод, он прочел что то там, и вернул результат, который пытвается вызваться при каждом клике, что то в этом духе. Тебе надо саму функцию передать, а нее результат ее вызова
Да, так не будет работать, тебе надо работать задавая где-то заранее переменную и потом в функции ее юзать.
В КюТэ есть встроенные некоторые функции-сигналы которые принимают какие-то параметры(например сигнал ресайза окна), но это не твой случай.
>А по цветному выводу нет идей?
>>51628
>Ну примерно так.
>print('\033[91m' + 'huita' + '\033[0m')
Это все очень сложно для одной строчки. Нашел вот код, но мне нужно вывод из кода >>51536 задать, как переменную, тогда смогу цветом вывести
Пример, как цвет, у переменных
>echo -e "${green} ${qr_code} ${plain}"
> echo -n "${qr_code}" | qrencode -s8 -o "${cur_dir}"
Я не силен, а ты, если понял, как, подскажи.
Указывает, что функция применима только к экземпляру класса.
Ссылка внутри описания класса на атрибуты класса.
Синтаксический сахар для методов класса, эквивалентен передаче в функцию первым аргументом объекта.
Т.е. по сути это вот так
obj.func(...)
func(obj, ...)
Не знаю в этот тред или есть специализированные но хочу поличить видеокадры с вебки ноута через OpenCV. Но даже пару строчек кода классического примера выдает ошибки:
[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (681) CvCapture_MSMF::initStream Failed to set mediaType (stream 0, (640x480 @ 30) MFVideoFormat_RGB24(unsupported media type)
[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (436) `anonymous-namespace'::SourceReaderCB::~SourceReaderCB terminating async callback
Как это исправить чтобы всё работало?
ПАМАГИТЕ, ПРОШУ
Привет, мне нужно реализовать создание объекта двумя разными способами
Например:
> obj = Zazaza(some_dict)
> obj = Zazaza(some_list1, some_int)
По идее я могу просто в __init__() прописать проверку колличества аргумента и их типа и в зависимости от этого уже управлять созданием объекта НО инит раздувается неприлично, а он у меня и так жЫрный
Но это на мой вкус КАК-ТО ГРЯЗНО, есть ли более красивый способ это как-то сделать?
Бамп вопросу
Может быть тебе лучше садистом пользоваться
Никак, только для pylint
init(a:Union[dict, List], b:Optional[int] = None):
self.a = a
self.b = b
А в методе уже проверка. Если b передан используй переменную, иначе нахер. Enjoy dynamic types
Ты доки читал? Видимо нет.
https://pyinstaller.readthedocs.io/en/stable/spec-files.html
В spec все описывать надо. Из-за таких вкатывальщиков тупых все проблемы. Вас реально будут менять как перчатки на проектах.
Да, охуенный в питоне полиморфизм - просто во все поля, куда деваться.
То есть я теперь должен сперва в инит принимать неограниченное число безымянных аргументов, затем проверять их тип и колличество. Затем выдавать им имена для использования внутри инит.
Ну а хули, будем делать.
Вроде правильно все на пике.
>А метод чтения из файла нужно ведь помечать как async?
Если в теле метода есть await ты помечаешь его как async или сосешь
поч не сделать несколько фабричных методов?
def __init__(...): ...
@classmethod
def from_config_file(...): self.__init__(...)
@classmethod
def from_some(...): self.__init__(...)
в этих ваших статически типизируемых языках приватные конструкторы не такое уж и редкое явление
Нет, ты можешь использовать property. Но ты же не читал доеументацию, а сразу спросил. Вот тебе простой вариант решения дали
Оооооо, спасибо огромное!!!!
Как я сам не догадался, а ещё говорят, что статические или классовые методы это вредно, а оно полезно
слоуфикс
def __init__(...): ...
@classmethod
def from_config_file(...): return cls(...)
@classmethod
def from_some(...): return cls(...)
Аноны, у меня выйдет спиздеть что я знаю фласк если до этого занимался джангой 4 месяца, а потом по-быстрому подучить его?
Мне создать отдельный класс State, а потом внутри основного класса Worker делать что-то типа self.handler = State("FirstState")?
Никто ничего не говорил плохо про классовые методы, а вот статики говно говна
Какие еще есть стулья кроме django и flask для веб бэкенда? Мне асинхронные вьюхи нужны и асинхронный read из БД, а те 2 залупы - синхронные
Вкатился душить питона с нуля на нубо-уровне. Однако выбрал по глупости не тот путь. Не туда воюю, кароч.
Взял курс Python-разработчик от скиллботоксов. Их обещалкам с работой не верю, сам уже работаю сисадмином на бюджете в гос.администрации. Слежу за серверами, администрирую бюджет (торги, закупки), сижу на телефоне с подчинёнными организациями. Хочу начать ещё и программировать. Особого времени на книжки пока нет. Но эти курсы на выходных позалипать могу.
Будет ли это нормальной базой для будущего развития?
в таком случае создание объектов будет так выглядеть?
> obj = Zazaza.__init__.from_config_file(some_dict)
> obj = Zazaza.__init__.from_some(some_list1, some_int)
Нужно ли использовать псевдонимы чтобы убрать вот этот вот __init__ торчащий?
Статикки - это способ раскидать функции по разным категориям. Это использование святого ООП в неких низменных целях.
> obj = Zazaza.__init__.from_config_file(some_dict)
шта
вот так будет выглядеть
obj = Zazaza.from_config_file(some_dict)
метод класса же
Если в институте на что-то инженерное учился, то у тебя уже база есть. А программировать начинать надо с практики программирования. Начни писать программу или скриптик своей мечты. А нужные знание будешь по ходу написания проги подтягивать и усваивать.
так я классметоды и предложил
скажи что последние 4 месяца занимался джангой, но попробовать фласк не против
> Как заставить класс исполнять действия в зависимости от состояния?
if self.state == state_N1: ...
> У меня есть 3 разных состояния, одни и те же методы будут исполняться по-разному в зависимости от них
наследуй -> переопределяй
> Мне создать отдельный класс State, а потом внутри основного класса Worker делать что-то типа self.handler = State("FirstState")?
нихуя не понял вопрос
берешь любую книжку которая с нуля и читаешь по полчаса каждое утро
если не зайдет, берешь другую, но читаешь каждый день
каждый вечер по часу в свободном режиме пишешь любую хуйню которая нравится, начиная от автопостера в телегу с каналом с мемами, то генерации твоих менеджерских отчетов
тащемта секретов тут и нет
def init(args):
self.__a: Union[Dict, List] = None
self.__b: Optional[int] = None
@property
def a(self):
return self.__a
@a.getter
def a(self):
if isinstance(args[0], dict) or isinstance(args[0], list):
return args[0]
else:
raise ValueError("An unpropriate value type was assigned to variable 'a'")
@property
def b(self):
return self.__b
@b.getter(self):
if isinstance(args[0], list):
if isinstance(args[1], int):
return args[1]
else:
raise ValueError("An unpropriate value type was assigned to variable 'b")
else:
delattr(self, 'b')
def method(self):
if self.a
if isinstance(self.a, dict):
for k,v in self.a.items():
#do
elif isinstance(self.a, list) and b:
for elem in self.a:
# elem*b
Все равно громоздко?
def init(args):
self.__a: Union[Dict, List] = None
self.__b: Optional[int] = None
@property
def a(self):
return self.__a
@a.getter
def a(self):
if isinstance(args[0], dict) or isinstance(args[0], list):
return args[0]
else:
raise ValueError("An unpropriate value type was assigned to variable 'a'")
@property
def b(self):
return self.__b
@b.getter(self):
if isinstance(args[0], list):
if isinstance(args[1], int):
return args[1]
else:
raise ValueError("An unpropriate value type was assigned to variable 'b")
else:
delattr(self, 'b')
def method(self):
if self.a
if isinstance(self.a, dict):
for k,v in self.a.items():
#do
elif isinstance(self.a, list) and b:
for elem in self.a:
# elem*b
Все равно громоздко?
какой у тебя код
что тебе предлагает автокомплит
причем тут мы и твой хуево настроенный автокомлит?
А это правда, что программисту нужно знать линейную алгебру и теорию вероятности?
объебался. потом при вызове c.b будет Exception.
Да я думал удалить нахер аттрибут, но потом сделал их с двойными underscore
смотря что ты будешь делать. для реализации мат моделей нужно, в остальном английский на хорошем уровне
ну смотря что писать, как и на каком уровне. Большая часть прогеров математику дальше 9-го класса не освоили
программирование - это умение писать код + знание предметной области. Для веб макаки знание рекомендаций по использованию библиотек в тыщу раз полезнее интегралов
Нигде, потому что либо ты заранее знаешь что положишь в аргументы и заранее знаешь что тебе придет tuple(List, Int) и ты будешь работать c List как со списком без применения методов для словаря, либо пишешь такую хуергу или тупо try...except...else
то скорее всего линейка тебе не сильно в этом деле поможет, конечно, будет сказываться что ты не графы ворочал на лабах, а хуйней страдал в универе, но ничего принципиального ты бы там не узнал енивей
вообще питон не тот язык на котором пишут мобилки, там следующая ситуация
objective c который сейчас заменился почти swift
java которая никак не заменится kotlin
немного упоротого js
питон вообще не катит, есть попытки, но эт хуйня все
Во-первых property это все же инкапсуляция для начала. Касательно classmethod кому как удобно, похуй ваще. И я объебался в init...
Не знаю, надо либо привязывать нормально аргументы либо изъебываться. Универсальность это нечто недостижимое.
> @classmethod
> def from_layers(cls, layiers: list):
>@classmethod
> def from_weights(cls, weiights: dict):
Ты траллируешь что ли? У тебя орфографические ошибки в наименовании аргументов.
у тебя classmethod внутри init а дб на том же уровне
https://pastebin.com/V7zdETu1
и вообще что-то напутано немного
Так вышло что в js и python тредах пиздец какие тупые нюфани, но норм олды
а в java, c++ тредах наоборот
Это специально, линтер пишет что перекрываются имена во внешней области видимости
крч тебе нужно ревью попроси препода помочь тебе накидать норм структуру
ты посмотри что в теле метода `weights` и `layers`.
Ты зачем переменные класса тогда ввел? обращайся тогда cls.layers, cls.weights. Потом прибежишь роняя кал "анооон, чому не работаааееееет питоооон гавноооо".
> Полезно ли сисадмину вообще питона душить?
да, ansible вся хуйня да и вообще на нем приятнее выглядить скрипты чем на том же bash
> Плюс могу приложения свои пилить опять же для работы
только под линукс, либо django-cms какой-нибудь либо еще что
> сайты делать нашим организациям
нужен js
но вообще с питона начать норм идея
Верно. Есть обертки для systemd, windows (я хуй знает как называется). Надстроек над SSH несколько штук и т.п.
Все зависит от прикладной задачи.
Можешь брать rsyslog -> error.log -> python -> clickhouse
Для аналитики (если это оправдывает средства)
Можешь просто парсить лог и переводить его в JSON структуру. Да дохуя чего можно, задачу сначала сформулируй и там видно будет. Zabbix все с лихвой перекроет на самом деле. Или Webmin тот же.
Там гавно какое-то
aiohttp типо крут, но нихуя не ясно как на нем реализуются даже элементарные операции
Но я тебя понял, ща буду поправлять, спасибо.
Ты выслал кусок кода. У тебя классовые атрибуты без начальных значений. Тогда нахуя они?
Зачем тебе значения инстанса? У тебя будут разные состояния (значения инстансов). Давай считать что ты овердохуя раз будешь их инициализировать. Будет у тебя 100 объектов типа Neuronet. Так у тебя значения априори list и dict как отправная точка. Хули ты вола ебёшь тут?
FastaAPI, Sanic, Starlette с асинхронкой на uvloop. Aiohttp это скелет для создания своего фреймворка. Быстрее чем готовое, но скорее всего обосрешься при парсинге и в итоге потеряешь в скорости в отличие от уже поддерживаемых.
Потому что это полный сюр. Откуда код? Что за библиотека? Структура непонятная, комментарии спизженные. Человек не понимает разницу между class и instance судя по всему, но уже колит нейронку.
>aiohttp типо крут, но нихуя не ясно как на нем реализуются даже элементарные операции
Пиздец наркоман
> Человек не понимает разницу между class и instance судя по всему, но уже колит нейронку.
ну тут согласен
а ещё html и css естественно.
>python / django
Если он не пойдет на галеру, то можно и что-то поновее и легковеснее использовать. Хотя бы ознакомится с асинхронкой
Код полностью мой
Комменты тоже писал сам, докстринги писал по стандартам, потом докстринг генератор прикрутил к IDE
Разницу между классом и инстансом знаю, но классовые методы впервые использую,
А вот по структуре, что тут непонятного?
result = switch_dict["cat"](self)
Как сделать так, чтобы при несуществующем ключе возвращалась одна и та же некая дефолтная функция с одним аргументом? В курсе про метод get у словаря, но это не то. Посмотрел на defaultdict, но че-то не работает и пиздит что я в дефолтную лямбду ничего не передал
хочу стать Full stack-разработчиком, если что. Ну мб и игры писать, но это второстепенно.
Тогда объясняй:
1. Зачем атрибуты класса в данном случае?
2. Почему ты хочешь менять классовые атрибуты а не класса при инициализации инстанса?
Принцип какой? Singleton? Или будет Фабрика (класс который будет содержать в себе все инстансы типа Neuronet) ?
Вот самое простое.
def default_funcia_s_odnim_argumentom(x): return x
defaultdict(lambda: default_funcia_s_odnim_argumentom)
Лямбда которая возвращает другую лямбду конечно же
1) В данном случае незачем, а так из них по идее можно инициализировать объект
2) ХЗ
Там где я читал про классовые методы было написано что это используется в фабриках.
Впрочем, я уже всё перепилил по уму, как мне кажется, теперь буду тестить.
А теперь смотри фокус...
https://repl.it/repls/StrictTameAutocad#main.py
Классовые переменные переходят с тем же значением в инстанс.
хотел выебнуться на нюфаню сам сморозил хуйню
разницу между
layers: list
weights: dict
и
a = 1
b =2
понимаешь?
Объявление типа переменной без значения. Которое там непонятно зачем, так как в @classmethod не используется и к которому потом нельзя обратиться. Ок?
> Объявление типа
шта
> Которое там непонятно зачем
ну да чувак там намудрил с weiiight и layyyers
> которому потом нельзя обратиться
шта
о том и речь да, что это чисто аннотация
более того это аннотация подразумевает что 'a' атрибут инстанса
поэтому мне кажется что питон не самый хороший первый язык
Как первый он ок, если вчитываться в доки, а не слушать скиллбокс цыган. Я уже брал курс от МФТИ. В итоге... они слали читать документацию. Благо курс был 18 000.
В свою защиту скажу, что это было давно и на Coursera и тогда не было такого обилия уроков, по направлениям все было интересно. Там были в примерах мат. модели даже. В итоге они меня знатно заебали обилием ошибок и сроками
Скилбоксы-гикбрейнзы это наёп на доллАры. На гикбрейнсе например, бесплатные вебинары, по признанию самих студентов, лучше чем занятия самого курса.
> бесплатные вебинары
так потому что вебинары это больше рассказать/обсудить/поделиться опытом, а не гарантировать трудоустройство. "Ну приду я в Мыло.сру. Вот берите меня я тут стек выучил немножко, а в ответ явно услышу "нахер пошел, Вася", нам нужен миддл с опытом 10 лет, мы тут не на фантики работаем"
https://pastebin.com/WszHK8yk
Вот тут написано, что было найдено в аналогичных скриптах, где вводится цветом. >>51660 Вся сложность в том, чтобы задать всю эту строчку, как переменную и просто присвоить ей цвет, как я понял.
разобрался, была проблема из-за русских букв
При простом копировании у меня это не получилось сделать.
Юзай гит, и venv. И больше ни шагу без venv.
Вы видите копию треда, сохраненную 21 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.