Это копия, сохраненная 6 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1627269 (OP)
Литература:
Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
шаблон шапки: https://dumpz.org/aZWStPx4fWf3
>>> bin(1234)
'0b10011010010'
>>> int('0b10011010010')
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
int('0b10011010010')
ValueError: invalid literal for int() with base 10: '0b10011010010'
стоп, без кавычек работает
По умолчанию, у инта база десятичная. Делай int('0b100', 2)
Парни, в шапку ничего нового не добавляли?
Братаны, сейчас очень важный момент на повестке дня стоит: пишу парсер для шлюхосайта, нужно определить оценки для каждой шлюхи, которые ей выставили пользователи, но оценки идут в виде малюсеньких gif-файлов - к такому меня жизнь не готовила. Как по этим gif-изображениям понять значение выставленной оценки? Pillow как-то поможет? (хз, вообще ей никогда не пользовался)
Я бы нашёл все гифки, посчитал хеш и хранил бы в словаре хеш->оценка
Так как они реализованы?
Можно считать количество картинок, если разными, или урлы, если одна на разные.
Что именно на твоей картинке идет как гиф? Полностью все, включая текст?
А надо было? В предыдущем треде ничего не составили, что добавить.
Нужно что добавить, так составь текст и дай сошлись на шапку. Перекатчики посмотрят и может добавят.
Когда я перекатываю, то смотрю всегда.
Посмотрел русдосуг иногда ебу там тянок сам, есть такое, у оценок в исходном коде есть классы. Чекни. Гифки не нужны (но самому интересно как по ним произвести парсинг, отпишите если че)
Нет
>>38346 (OP)
Я, кстати, предлагаю добавить в шапку в качестве рекомендации книгу Марка Саммерфильда "Программирование на Питон-3".
По-моему это как раз лучшая вводная в Питон книга для тех, кто более-менее умеет программировать.
Короче к следующему разу или через раз сделаю рекомендации по паре книжек, что по ссылкам в шапке доступны.
Лутц мне вот не нравится совсем, реально дохера просто воды, невозможно читать.
Зач читать такие книги тем, кто уже немного умеет программировать? Если это не книги по проектированию и паттернам (т.е вещи, слабо привязанные к конкретному яп), то обычные доки/практические примеры в сто раз лучше же.
Чтобы писать на питоне как на питоне, а не на си-пхп или ещё что.
Кто не умеет программировать совсем, тому надо суть программирования толкать. Кто умеет, тому надо суть языка.
В питоне же очень много такого, чего в других языках просто нет. Вот среды, генераторы и генераторные выражения, мутабельные-иммутабельные типы и масса другой хрени.
Они постарались выпилить возможности писать разными способами, так что можно разве что через жопу сделать, что бывалому не придет в голову.
Мне как перловику было не особо сложно перекатиться, есть много всяких удобств.
Кстати, в парсере bs4 есть какая-то возможность сразу отбрасывать невалидный результат в soup.findAll? А то он выдает список найденных значений, по которому приходится итерироваться снова, но нахуя если итерация по элементу уже была произведена?
Скажем я ищу оценки по class_='sGrades5' только за Фото, а остальные мне не интересны. Как это замутить? (тег <img class_> расположен внутри тега <span>...)
Селекторы? Как мне вообще в bs4 выбрать атрибут, который залегает внутри другого атрибута в DOM-дереве? не регулярками же
А это уже к котлиногосподам.
Посоветуйте материала по тестам. Хочу вкатится, понять что к чему и для чего нужно. Заранее спасибо, змеякi!
алгоритм не понимаю, я примерно представляю у себя в голове как это должно происходить, но..
Функционал можно расширить
Дойти до подробного парсинга пользовательских данных / мониторинга новых анкет через сервер в реальном времени
Добавил туда асинхронность из aiohttp, процесс стал занимать на 30% меньше времени, но походу по-прежнему прилично тратится на непосредственный парсинг страниц в bs4. К асинхронности можно как-то прикрутить параллельное исполнение парсинга контента или эта хуйня какая-то и в Питонухе так не прокатит?
> но походу по-прежнему прилично тратится на непосредственный парсинг страниц в bs4
Очень сомнительно.
класть в очередь, в несколько потоков брать из очереди, результаты парсинга класть в другую очередь
Но не факт что даст прирост на маленьких объемах
вот у тебя число N, переводишь его в десятичную запись и каждую цифру кладешь в список
digits = [1, 4, 8, 8] # 1488
потом идешь по digits сначала смотришь [0:13], потом [1: 14], потом [2:15]
Это спрофилировать можно, или руками, или инструментами, чтобы проверить.
Но я сильно сомневаюсь, что проблема в bs4. Сколько у тебя страниц в секунду? Многие сотни в секунду не проблема распарсить, если в коде лажи нет. Но даже десять в секунду вытягивать уже проблема.
Скорее всего у тебя где-то на скачивании тормоза.
Вообще, ты можешь сначала всё скачать и сохранить в файлы, а потом уже отдельно распарсить.
Дампишь элементы в текст и достаешь регулярками, в чем проблема?
Залей сюда примеры этих GIF
Вообще может быть вариант, например, когда GIF берётся из ссылки вида
whore_rating.org/api/get_rating?rating_id=1&whore_id=444
то есть по названию ты не можешь понять, какой там рейтинг.
Но скорее всего GIF-файлы с рейтингом 5 будут все одинаковые, ты просто можешь сравнивать файлы побайтно = через хеш с образцовыми и получать значение рейтинга.
То есть тебе не нужно распознавать картинку в таком случае в самом скрипте, по хешу картинки всё будет ясно.
>сохранить в файлы
Не уж-то в текстовые?
Пытался нормально вбрасывать html текст от bs4 в файлы - какая-то хуйня выходит. Канешн сохранять нужно string, чтобы не было TypeError: write() argument must be str, not BeautifulSoup. Поэтому вопрос: как это замутить-то? У элемента soup есть атрибут string, но он почему-то возвращает None, также есть метод decode, я успешно декодировал страницу в консоли, но когда забил тот же код в методе write для файла получил UnicodeEncodeError: 'charmap' codec can't encode character '\u2009' in position 0: character maps to <undefined>
Как их в строки-то конвертировать адекватно?
>>39171
У гифок есть классы sGrade: от 1 до 5, поэтому можно делать что-то вроде:
for j in range(1, 5+1):
----cur_score = soup.select(f'img.sGrade{j}')
----girls[url][j] = len(cur_score)
https://dumpz.org/cDPnADAT7abC
Код из jupyter, просто сюда скопировал чтобы легче читать было
Что-то у меня сложилось впечатление, что ты методом тыка и поэтому весьма черезжопно всё делаешь, вот оно и тормозит.
>делать что-то вроде
Вот тут мой вопрос про регулярки опять в тему. Ты ж 5 ебаных раз проходишься по одному и тому же документы - нахера? Если есть такой простой паттерн то легче сразу выбрать все 5 классов селекторов и потом уже итерироваться 1 раз по этой коллекции, забрасывая поинты в зависимости от текущей оценки
Спасибо, я как раз пока разбирался пришел к этому выводу, вот только до конца логику этой перестановки так и не понял, т.е. по форме получается как reshape с перестановкой порядка значений, а вот что при этом с самими значениями происходит я пока так и не смог понять
есть способ автоматически создавать директорию когда записываю данные в файл с помощью open()?
а то приходится через ебучие костыли ставить цикл while а внутри него ловить FileNotFoundError чтобы в случае отсутствия директории она таки создалась через os.mkdir()
Неа, нету. Напиши свою обёртку и юзай её.
Хуя у тебя задачи конечно, возможно вот тут на 91 странице показан пример создания директории в случае её отсутствия https://wombat.org.ua/AByteOfPython/AByteofPythonRussian-2.01.pdf
>Мой IP забанили лол
Ясен хуй, перевел на асинхронные запросы и хуяришь их десятками за маленький период времени
необходимо: Redis, Celery, Mlflow, Docker, PostgreSQL, flask, pyramid, numpy, pandas, spark, SOLID, GRASP, ETL, Rule Engine, Math Engine, scikit-learn, RabbitMQ, Tornado, OSGEO/GDAL, MongoDb, SQLAlchemy, ExtJS, Опыт работы с CRM.
и вот в связи с этим вопрос: что из этого я смогу изучить сам без реальных проектов и на сколько это будет реально за полгода? стоит ли пытаться вообще? нужна очень своя помощь, анон
inb4: Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь...
необходимо: Redis, Celery, Mlflow, Docker, PostgreSQL, flask, pyramid, numpy, pandas, spark, SOLID, GRASP, ETL, Rule Engine, Math Engine, scikit-learn, RabbitMQ, Tornado, OSGEO/GDAL, MongoDb, SQLAlchemy, ExtJS, Опыт работы с CRM.
и вот в связи с этим вопрос: что из этого я смогу изучить сам без реальных проектов и на сколько это будет реально за полгода? стоит ли пытаться вообще? нужна очень своя помощь, анон
inb4: Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь...
не был тут давно а двач как обычно
Жиза с питоном, вакансий мало для ждунов, сам кукую.
Большую часть указанного реально выучитить на пет-проектах.
Например изучение докера ты можешь совместить с изучением постгреса: установишь докер, потом образ постгреса, затем докерезируешь свой проект, например на фласке.
Позже можно постгрес заменить на монгу. И да, в качестве орм в данной конструкции использовать sqlalchemy
Для изучения нампай, пандас и тп - пройди какой-нибудь курс по машингому обучению. Выучить все не выучишь, но представление будет.
На счет времени трудно сказать, полгода в свободное время может и не хватить.
Удачи тебе.
Сам думаю, что возможно, стоило джаву осваивать, вакансий больше
Пиздец я заебался читать твою простыню, однако.
Изучить-то можно самостоятельно что угодно, главное - не забивать и не откладывать. Из твоего списка большая часть учится недолго, где-то несколько вечеров на каждое, но в сумме уйдёт немало времени.
А я вот как раз перекатился в джаву из питона тупо ради вакансий. На джаве писать скучновато, свои проекты и скрипты по-прежнему на питоне пишу.
мимо
> Сам думаю, что возможно, стоило джаву осваивать, вакансий больше
Вот куда не сунь ебальник везде джава будет
мимо джун
А сколько кукареканья от шарпистов и гошников про мертвое и некому не нужное кобололегаси.
>Redis, Celery, Mlflow, Docker, PostgreSQL, flask, pyramid, numpy, pandas, spark, SOLID, GRASP, ETL, Rule Engine, Math Engine, scikit-learn, RabbitMQ, Tornado, OSGEO/GDAL, MongoDb, SQLAlchemy, ExtJS
Ёпт, ну ты и намешал говна. hh посмотри и увидишь что в зависимости от компании и что главное от типа задач стек технологий серьезно варируется
>>39634
ну вот как раз и думал о пет проектах. просто интересует мнение борды как и лучше все это осваивать и в какой последовательности, ибо честно скажу - многое для меня тут просто незнакомые слова
а по поводу джавы отвечу сразу же и >>39636 -анону. мне нравится этот ебучий синтаксис, да и нет какой то такой стандартизации и многих фишек пиона. поммню читал статью на хабре где писали про многопоточность на джаве в 70+ срок и нан питоне в 4 строки с map и pool. алсо, привык к тому что по питону намного легче что то нагуглить или найти + оф дока сильно пиздатая. недавно стал копаться в ларавеле т.к. необходимо по работе. все пишут и говорят что вот типо ответ джанге и хуе мое. и даже архитектура фреймворка такая же. но когда начал пытаться и разбираться делая свой учебный проект понял что та же дока говнище. да исложнее все намного. например для того чтобы начать что то на питоне писать, просто захожу в линукс, пишу pip3 install django, пишу в терминале старт проджект и все нахуй. а с той же пыхой это надо поставить php, потом апач, затем бд, потом настроить хосты, потом подключить админку, создать юзера для админки и бд, установить и настроить компоузер, установить ларавель и только после этого можешь писать стартпроджект. просто пиздец, я горю нахуй.
В вебе тебе вряд ли пригодятся технологии и понятия из data science/big data/data engineering (numpy, pandas, spark, scikit-learn, ETL)
GRASP, SOLID и прчоее - это вообще не технологии, а принципы, про которые можно за полчаса прочитать на википедии.
Вообще, лучше загуглить каждую технологию, понять, что это и для чего, и подумать, понадобится ли это для веба.
> флаsk
> книги
Ебать.
Квикстарт: https://flask.palletsprojects.com/en/1.1.x/quickstart/
Курс на хабре: https://habr.com/ru/post/346306/
я тоже с такими мыслями сидел когда смотрел вакансии на местных галерах. конкретно эти требования взяты с двух вакансий где было написано web developer. всего их дюжина. две из них я выкинул из за того что там супер крутые сеньоры помидоры нужны для удаленки на сингапур и мальту. со всех остальных скинул сюда в тред. трустори, я не тролль.
Спасибо
Какая серия лекций у Хирьянова лучше - "программирование на Python" или "Алгоритмы на python"? Может, есть англоязычные лекции ещё более высокого качества для вкатывальщиков?
А вы конспектируете лекции по погромированию? Стоит на это тратить время именно в случае программирования? Или не столь полезен такой же подход, как к математике, например?
Обязательно. Потом постоянно будешь заглядывать.
Программирование - это не математика, что бы тут ни кукарекали. И подходы к изучению у них разные.
В математике ты обязан задрачивать вообще все детали и тонкости какой-то области, потому что понадобятся реально всё. Абстракции текут повсеместно. Поэтому приходится конспектировать, чтобы уж точно ничего не упустить. Но масштабы в сравнении с программированием небольшие.
В программировании наоборот нет смысла учить всё, учится только то, что используется. А что используется - то и легко запоминается. Соответственно, и конспектировать не нужно.
Есть тут кто-то, кто в курсах что проходят в рашкинских айти ВУЗах? Небось там конспектами ебут и код заставляют на тетрадных листках приносить?
Контесты на компьютерах, практикумы с сдачей программы.
Хуйню ты какую-то написал про математику.
В математике тебе надо конспектировать тогда, когда надо какое-нибудь доказательство запомнить или может просто формулировку какой-нибудь теоремы. Ты их может и поймёшь, а потом забудешь, а сдавать предмет надо по конкретным теоремам и доказательствам.
В программировании так тоже иногда может быть, ты можешь забыть какие-то конкретные алгоритмы, даже если их поймёшь, а сдавать как-то надо. Или, хуже, какие-нибудь структуры данных специфичные, API, какие-то параметры и т.п., что тоже потом потребуется на экзамене.
Я учил в вузе C++, но у нас не ебали, ваще пох всем было.
На контрольных и экзах был выбор - писать на листках или пекарне. Но на пеке требования были выше - код обязательно должен заработать, а на листке прощалось, если немного наебался.
допустим, хочу отправить через aiohttp миллион запросов и в случае SIGINT запомнить, где прервалось исполнение, схоронить статус, все дела.
нашёл это: https://medium.com/@rob.blackbourn/a-python-asyncio-cancellation-pattern-a808db861b84
но не разберусь, как оно работает и как его вставить например сюда: https://pastebin.com/XRecPXSq
>Небось там конспектами ебут и код заставляют на тетрадных листках приносить?
От предмета зависит. Большинству похуй, многие на ноутах конспекты делали. Но по каким-нибудь ОСям нужен был конспект лекций от руки.
Только вот в нормальном листе надо поддерживать порядок объектов после удаления и добавления новых (а также иметь возможность перемещать объекты внутри листа). Как это сделать в контексте любой джанговской реляционной БД?..
Полную хуйню пишешь. Для каждого фреймворка на пыхе есть уже готовая тестовая среда исполнения - НИЧЕГО настраивать не нужно. А когда тебе придется деплоить проект на реальный сервак кажущаяся простота питона тебе ничем не поможет - ведь тебе точно так же придется ставить nginx, прописывать прокси на wsgi-сервер, подключать постгресс/редис и прочее. Композер к слову гораздо круче пипа по фичам.
>Как это сделать в контексте любой джанговской реляционной БД?..
Можешь сделать кастомные сейвы, делиты и т.д.
Хз, что может быть сложного в Java. Выучил ее на втором курсе по инерции, когда читали ООП на базе крестов, так и галерю с тех пор. Питон использую для пет-проектов - боты, парсеры, всякая прочая тяп-ляп шелупонь, когда надо быстро проверить гипотезу, не задумываясь о качестве. Но писать большие проекты на питоне - это имхо изврат.
В этом калбеке неоднократно вызывается этот же калбек (пик 2). Это нормальная практика, или это говнокод и лучше писать под разные ивенты (команды бота) свои обработчики?
Я читал и учился по Брюс Эккель Философия Java. Где кривой перевод на русском и по версии Java 5. В принципе все понятно, Java Core по идее знаю, но теперь где это все применить, знания улетучиваются без практики по немного. Есть конечно идея сейчас почитать Герберта Шилдта Полное руководство Java, чтобы освежить немного знания...
Эрик Мэтиз мне понравился
Можно не использовать иде вообще и взять какой-нибудь лёгкий редактор, тот же vim. Да, не будет автодополнения, линтера и много чего ещё из коробки, но жить можно. А запускать всё из консоли.
Что ты называешь древним? 15-ти летние вполне годятся. Нетбуки на атомах годятся. Используй что полегче просто, например code от майкрософт, или тот же vim.
ТЗ сформулируй, что тебе надо, какой сигнал словить и что делать при этом.
Для многозадачной программы тут сложная логика может быть. И не важно, у тебя через asyncio задачи сделаны, или через процессы-треды. У тебя в принципе логика в этом случае сложная, сформулируй её по-русски сначала, прежде чем в кодирование лезть.
Эту логику канешн надо внутри моделей распогать, а не во вьюхах?
п.с. насколько это все трудозатратно с точки зрения использования памяти и CPU? я не горожу уродливый велосипед?
>Эту логику канешн надо внутри моделей распогать, а не во вьюхах?
Конечно.
>п.с. насколько это все трудозатратно с точки зрения использования памяти и CPU? я не горожу уродливый велосипед?
Насчет памяти не скажу, но учти, что если делать через переопределение сейва/делита при создании/удалении объекта ты будешь каждый раз делать несколько дополнительных запросов к БД. Поэтому, наверное, лучше сделать как сказано тут:
https://stackoverflow.com/questions/23590616/how-to-use-linked-list-to-find-next-and-previous-objects-in-django
Никаких доп.полей и т.д., просто запросы по требованию
А ты знаешь, что такое словарь в питоне?
Тебе нужен просто не словарь, а лист тьюплов.
Достаточно только желания изучить новое. Придумай проект где можно задрочить интересующие тебя технологии
В том то и дело, что изучил не много. Вот и приходится в очередной раз писать цикл выводящий 10 раз "соси".
Понятия не имею, вариант с стаковерфлоу вполне должен и так быть
Питон 3.8.1
c = [1,3,5,7]
i = iter(c)
for r in range(5):
try:
print(next(i))
print(c)
except StopIteration:
c.append(11)
print(next(i))
print(c)
Код выше дропает ошибку при обработке исключения, хотя список я уже дополнил
c = [1,3,5]
i = iter(c)
print(next(i))
print(next(i))
print(next(i))
c.append(7)
print(next(i))
А вот этот код работает. Главный вопрос какого хуя!? ЧЯДНТ???как пофиксить?
А подумать? Если твой итератор умер, то ничто уже не может оживить его. Всё, баста, поздно.
набрасал код но так как я не сильно знаком с asincio хз норм написал или нет. Если кто может поревьювте!
https://pastebin.com/ffxMm3Wf
Во вселенной StarWars существует всего лишь один завод по производству световых мечей.
В зависимости от кого пришел заказ - на меч устанавливается либо алое лезвие (Ситхи) либо голубое (Джедаи)
Завод состоит из цеха, и двух отделов доставки.
- Отдел доставки Ситхов, состоит за одного курьера (Может доставлять 1 меч одновременно, время доставки - 5 сек на меч)
- Отдел доставки Джедаев состоит из пяти курьеров (Может доставлять 5 мечей одновременно, время доставки - 1 сек на меч)
- Цех производит 1 меч за 100мс
- Завод не должен останавливаться в момент доставки мечей
файл заказа: orders.txt
<количество> <1 - джедаи, 2 - ситхи>
пример:
10 1
5 2
10 1
Задача:
Написать программу, которая при старте прочитает orders.txt и выполнит заказы по порядку.
Требования:
- Использовать ООП
- Ипользовать AsyncIO
набрасал код но так как я не сильно знаком с asincio хз норм написал или нет. Если кто может поревьювте!
https://pastebin.com/ffxMm3Wf
Во вселенной StarWars существует всего лишь один завод по производству световых мечей.
В зависимости от кого пришел заказ - на меч устанавливается либо алое лезвие (Ситхи) либо голубое (Джедаи)
Завод состоит из цеха, и двух отделов доставки.
- Отдел доставки Ситхов, состоит за одного курьера (Может доставлять 1 меч одновременно, время доставки - 5 сек на меч)
- Отдел доставки Джедаев состоит из пяти курьеров (Может доставлять 5 мечей одновременно, время доставки - 1 сек на меч)
- Цех производит 1 меч за 100мс
- Завод не должен останавливаться в момент доставки мечей
файл заказа: orders.txt
<количество> <1 - джедаи, 2 - ситхи>
пример:
10 1
5 2
10 1
Задача:
Написать программу, которая при старте прочитает orders.txt и выполнит заказы по порядку.
Требования:
- Использовать ООП
- Ипользовать AsyncIO
Я уже с условия бомбанул.
Как норм пацан храни все в json на локальном серве и всё ёпт
(n & (1 << i)) >> i
вот поэтому питон не очень хорошо заходит как первый язык и изучать программирование лучше не с него.
В питоне все есть объект. Если у тебя некоторый x, то type(x) ты узнаешь экземпляром какого класса он является, а по dir(x) какие у него есть атрибуты.
Как работать с файловой системой в питоне: есть модуль os, в котором есть нужные тебе процедуры:
files = os.listdir("/your/path") # будет список строчек с путями
if files: # if СПИСОК выполняется если список не пуст (аналогично if len(files) == 0
в питоне нет переменных есть
имена
к разряду в какой системе счисления? Крч если в десятичной, то надо явно туды сюды переводить:
n = 2456
m = 2
int(str(abs(n))[m])
Те путь - это список, и если я посмотрю что это за сущность, это будет список, и мне надо будет работать с ним как со списком, и чтобы поверить есть что-то в папке, надо будет просто узнать пуст список или нет? Вот это я хочу понять.
путь - это строка "C://Program Files/Huita"
путь может указывать на файл, папку или ссылку
если путь указывает на папку, то можно сделать os.listdir и увидеть какие еще файлы лежат в этой папке.
посмотри доку про модули: os, os.path, filepath
Про это я знаю, и про эти модули тоже, вопрос в другом. Например, после загрузки модуля. Если папка пустая, а это значение я занес в переменной, вот пустая папка - это будет что? Какой тип?
Эксепшоны лучше сделать кастомные или выбрать менее общие из имеющихся, их же и перехватывать.
Ну и когда рейзишь, можно эксепшон проинициализмрлвать и засунуть туда собственно сообщение об ошибке
Ну и тут лучше инвертировать логику, чтобы понизить цикломатическую сложность. И убрать ненужные else
Тут надо функцию типа usage с выходом, а не хуевертить конструкции, тем более эксепшены, которые для исключительных ситуаций. Это не исключительная ситуация.
ты чет непонятно говоришь, напиши код
Если делать кастомные, код выходит путанный. А такая идиома может много где пригодиться. Если делать общие, что-то в них попадёт. В данном случае можно бросать NameError
>>40604
Много строк. x=Exception(); x.message='y'; raise x -- быдлокодно смотрится
>>40606
Не знаю что ты имеешь ввиду, но брякаться из циклов нельзя. Можно рейзить при успехе обоих условий, чтобы вырваться, так можно избавиться от одного рейза. Так выходит, в теории, хуже, учитывая что эксепшон перестаёт означать ошибку, а эксепшонов без ошибки в питоне не завезли
Тут точно нужен трай-эккцепт? Вроде простая проверка условий, если не проходит, то печатаешь своё сообщение выходишь.
У меня там два условия, если одно из них неверно, нужно выполнить один и тот же блок кода. Если этот блок кода копипастить в обоих else, получается некультурно, по быдлански
по-хорошему надо брать argparse или какой-нибудь click и не ебать себе голову
Здесь-то оно прокатит, а если между условий нужно будет ещё что-то делать? Где-то такой flow control может оказаться нужным
packt сразу в помойку.
Из орайлей introducing -> fluent -> cookbook
Если для совсем нуба, то первую из них можно заменить на обе от no starch.
Всякие нетворки-фласки по необходимости.
Вот что у тебя заведомо недоделано - программа не останавливается после того, как все заказы выполнены и доставлены.
Ты вызываешь queue.task_done(), но нигде не используешь это. Task_done() имеет смысл только в том случае, если ты где-то делаешь queue.join().
Я не очень понимаю условие "- Отдел доставки Джедаев состоит из пяти курьеров (Может доставлять 5 мечей одновременно, время доставки - 1 сек на меч)", но явно не так, как это ты интерпретируешь.
У тебя логика такая, что просто отдел доставки доставляет один меч в секунду, как-будто есть один курьер и последовательно по одному мечу доставляет. Но у тебя пять курьеров, если курьер свободен, он при поступлении заказа доставляет меч (за одну или за пять секунд, вот это не понятно, мне кажется, что подразумевалось, конечно, что курьер за 5 секунд доставляет, но есть пять курьеров и среднее время доставки, соответственно, 1 секунда).
В общем здесь разумно сделать общую очередь для Джедаев, пять задач для курьеров, один курьер-одна задача, они слушают очередь, репортят task_done(), а отдел доставки уже делает join() для своих курьеров.
Общая логика. Фабрика по производству мечей каким-то образом должна информировать, что заказы окончены. Правильнее всего это делать не через task_done()-join(), а запульнуть в очередь соответствующее сообщение, либо использовать другие специальные инструменты из asyncio для этого. Я бы именно в очереди что-то клал, это более универсальный подход.
Отделы доставки читают очередь и раздают задачи курьерам. Как только они получают сообщение "заказы завершены", они, после доставки мечей, сами прерывают свою работу. Так у тебя сможет сработать твой gather.
>>40730
Ещё дополнение по стилю.
У тебя используются f-string, которые появились в python-3.6, но при этом ты пользуешься активно obsolete-вещами, что нужны были в python-3.5, где были недоделаны до конца циклы обработки сообщений.
Например, ты передаёшь в asyncio.Queue параметр loop. Уже в 3.6 это никогда не нужно и документация рекомендует этого НЕ делать. В последующих версиях это будет выпилено.
Нужно прочитать все, порядок не важен.
В основном книги дублируют друг друга и читать всё заведомо не нужно. И нужно на свои задачи ориентироваться, что писать будешь.
Я бы воспользовался хероку, на но там ограничение по времени, а мне нужно, чтобы скрипт работал 24/7
Просто гугл выдает такое кол-во вариантов, что хуй знает как выбрать нужный вдс, имея 0 опыта в этом
https://ideone.com/z22jbu
AWS - 1$ на первый год
Жду, а пока прохожу на курсере курс для начинающих от ВШЭ. Пока легко, все жду объекты, потому что раньше с ними не сталкивался - у меня из опыта семестр паскаля в универе и курсач.
Надо было git -rm --cached просто, а ты пердолиться начал.
Лол, свинговый диалог с дефолтной темой.
А хз, как-то сразу не подумал, что можно функцию проверки сделать и пошёл в цикл чтобы после проверки не сохранялись любые данные.
А что ещё не так? Думаю там где метод is_healthy можно было попроще реализовать, накидал на скорую руку.
>>40824
Сам то понял чего сказал? И эта шутка >хелловрот просто апогей юмора. Такого кринжа я давно не ловил.
Лютый пиздец, тебе надо идти на курсы с оплатой 300k/сек.
Вот нельзя просто проверки нельзя так делать.
Если хочешь диапазон проверять, делай
30 <= age < 40
и много чего ещё.
Цикл ввода тоже иначе делай. Я бы скорее сделал через
while True:
____str_year = input(...)
____if len(str_year) == 4:
_______year = int(year)
_______break
В таком стиле, только ещё КРАЙНЕ желательно в try-except это обернуть. Но паттерн такой.
Вообще, много чего лучше переделать.
Например?
Ну я в основном про 1 прогу. Во первых цикл. 0000 это что за число такое?) Если хотел 0, то его вообще можно не указывать range(4) -> 0,1,2,3
Во вторых вместо if (1 такт процессора, ну или чуть больше, хз) ты делаешь 10000 тактов процессора. Это как минимум не правильно (И это только года!)
Зачем тебе сторонняя либа я не понял. Расскажи, пж)
Кйек
Анон, из-за ебанного вируса меня и 99% прочих работников фирмы отправили домой, на эдакий отпуск сроком на месяца 2 как минимум(за свой счет конечно же).
Вот думаю эти 2 месяца провести продуктивно, есть огромное желание выучить этот ЯП.
Опыта крайне мало, в свое время(2-3 года тому назад) писал простенькие скрипты/макросы на AutoIt, определенные знания(поверхностные) про всякие там массивы, функции, циклы и т.д. есть.
Вот пару дней как начал смотреть лекции Хирьянова(спасибо ОП-посту), только вот смотрю не "Алгоритмы и структуры данных на Python 3", а "Практика программирования на Python 3".
Вернее, пробовал начать с "Алгоритмы и структуры данных на Python 3", только вот с математикой как-то у меня туго(хотя в школе были 5-ки, видимо за это время проебал все знания), поэтому где-то на 4-5 видео, там где пошла информация с математическими примерами, как-то объебался.
По поводу среды разработки, пробовал сначала писать(громко сказано) на PyCharm, вроде бы все хорошо, только вот при попытке установить разные библиотеки, началась суета с уймой ошибок, перешел на VS Code, вроде бы все хорошо, никаких ошибок пока не наблюдаю.
Хотел вот совета у анона:
1) Я вот хочу в веб программирование вкатиться(Django), только вот почему-то думается мне, что лучше начать с создания обычных и простеньких desktop app-ов, набить руку, а потом уже вкатываться в веб. Это вообще правильных подход?
2) Какие простенькие программы лучше начать писать на первых порах, дабы набить руку? Я пока что делаю так: посмотрел лекцию, там, например, обучали массиву, после просмотра, минут 30-40 пытаюсь всячески "играться" с этими массивами, дабы больше узнать про принцип работы оного.
3) Как быть с алгоритмами? В простеньких и коротких кодах проблем никаких нет, ибо они простенькие и короткие. А вот где научиться строить правильные алгоритмы в больших кодах, где уйма функций, циклов и т.д.? Или это со временем само придет?
4) Что еще в целом можешь посоветовать, анон? Может еще какие-то лекции? Пробовал книги, прочитал тот же "A Byte of Python", вроде бы все просто и понятно, но с тот же Хирьянов для понятен и как-то более легче получается по нему учится.
Анон, из-за ебанного вируса меня и 99% прочих работников фирмы отправили домой, на эдакий отпуск сроком на месяца 2 как минимум(за свой счет конечно же).
Вот думаю эти 2 месяца провести продуктивно, есть огромное желание выучить этот ЯП.
Опыта крайне мало, в свое время(2-3 года тому назад) писал простенькие скрипты/макросы на AutoIt, определенные знания(поверхностные) про всякие там массивы, функции, циклы и т.д. есть.
Вот пару дней как начал смотреть лекции Хирьянова(спасибо ОП-посту), только вот смотрю не "Алгоритмы и структуры данных на Python 3", а "Практика программирования на Python 3".
Вернее, пробовал начать с "Алгоритмы и структуры данных на Python 3", только вот с математикой как-то у меня туго(хотя в школе были 5-ки, видимо за это время проебал все знания), поэтому где-то на 4-5 видео, там где пошла информация с математическими примерами, как-то объебался.
По поводу среды разработки, пробовал сначала писать(громко сказано) на PyCharm, вроде бы все хорошо, только вот при попытке установить разные библиотеки, началась суета с уймой ошибок, перешел на VS Code, вроде бы все хорошо, никаких ошибок пока не наблюдаю.
Хотел вот совета у анона:
1) Я вот хочу в веб программирование вкатиться(Django), только вот почему-то думается мне, что лучше начать с создания обычных и простеньких desktop app-ов, набить руку, а потом уже вкатываться в веб. Это вообще правильных подход?
2) Какие простенькие программы лучше начать писать на первых порах, дабы набить руку? Я пока что делаю так: посмотрел лекцию, там, например, обучали массиву, после просмотра, минут 30-40 пытаюсь всячески "играться" с этими массивами, дабы больше узнать про принцип работы оного.
3) Как быть с алгоритмами? В простеньких и коротких кодах проблем никаких нет, ибо они простенькие и короткие. А вот где научиться строить правильные алгоритмы в больших кодах, где уйма функций, циклов и т.д.? Или это со временем само придет?
4) Что еще в целом можешь посоветовать, анон? Может еще какие-то лекции? Пробовал книги, прочитал тот же "A Byte of Python", вроде бы все просто и понятно, но с тот же Хирьянов для понятен и как-то более легче получается по нему учится.
Хочешь быть неудачником следуй правилам неудачников:
1. Хочешь одно - делай другое
2. Перед тем как сделать долго выбирай из вариантов. Если сомневаешься в выборе - начинай сначала
3. Начал - бросай при первых затруднениях и смотри аниме.
4. Всегда следи чтобы любое дело начинать было не поздно. Спрашивай на дваче не поздно ли в 28 лет учить бибиотеку beautiful soup
5. Если решил что поздно всегда ищи контраргументы
Не обижайся, но по твоему тексту прям видно типичнейшего вкатыша без технического бекграунда и с полной кашей в голове. Прям вижу твои посты в треде неосиляторов спустя пару месяцев.
Осталось только записаться на ML курсы от какого-нибудь гикбрейнса.
Алсо, как я и написал чуть выше, желание есть, в мотивации не нуждаюсь, не будет получаться, буду трудиться упорнее. Да я и нихуя не спрашивал, про поздно ли и т.д., я молод, люди вон в 30-35 начинают и добиваются чего-то. Да и учится никогда не поздно.
>1) Я вот хочу в веб программирование вкатиться(Django), только вот почему-то думается мне, что лучше начать с создания обычных и простеньких desktop app-ов, набить руку, а потом уже вкатываться в веб. Это вообще правильных подход?
Нет, Desktop-приложения сложнее, особенно на питоне, который для них просто не предназначен. Работа с окнами, интерфейсами и т.п. достаточно сложна, требует понимания.
Скорее нужно начинать с учебных консольных скриптов, вот они проще. Просто скрипты, которые что-то считают, берут данные из файлов, и т.п. Все учебные задачи про это.
>>40907
>2) Какие простенькие программы лучше начать писать на первых порах, дабы набить руку? Я пока что делаю так: посмотрел лекцию, там, например, обучали массиву, после просмотра, минут 30-40 пытаюсь всячески "играться" с этими массивами, дабы больше узнать про принцип работы оного.
Играться очень полезно, можно самому себе ставить задачки на понимание и искать ответ. Есть масса "олимпиадных" задач в интернете, от очень простых до реально сложных. Стоит найти такие сервисы и брать оттуда простые задачки.
>>40907
>3) Как быть с алгоритмами? В простеньких и коротких кодах проблем никаких нет, ибо они простенькие и короткие. А вот где научиться строить правильные алгоритмы в больших кодах, где уйма функций, циклов и т.д.? Или это со временем само придет?
Ты тут описываешь не сколько программирование, сколько проектирование. Этим надо заниматься и этому годами учатся, на своём опыте, изучая другой опыт, чужой код. Книги мало этому помогут, хотя когда там описывают учебные приложения какие-нибудь, то это на пользу.
Я бы в целом посоветовал именно на веб-приложения смотреть, это и в чём-то проще, и практично, и за этим будущее, сейчас все приложения уходят в веб, даже локальные. Минус в том, что тебе одновременно надо ещё и HTML-CSS-JS осваивать. И массу других технологий. Но в любом случае массу других технологий.
В общем хороший вариант два направления одновременно:
1) простенькие алгоритмические задачи на структуры данных
2) как вариант Джанго, например сначала их учебное приложение, и потом может под себя что-нибудь похожее.
>1) Я вот хочу в веб программирование вкатиться(Django), только вот почему-то думается мне, что лучше начать с создания обычных и простеньких desktop app-ов, набить руку, а потом уже вкатываться в веб. Это вообще правильных подход?
Нет, Desktop-приложения сложнее, особенно на питоне, который для них просто не предназначен. Работа с окнами, интерфейсами и т.п. достаточно сложна, требует понимания.
Скорее нужно начинать с учебных консольных скриптов, вот они проще. Просто скрипты, которые что-то считают, берут данные из файлов, и т.п. Все учебные задачи про это.
>>40907
>2) Какие простенькие программы лучше начать писать на первых порах, дабы набить руку? Я пока что делаю так: посмотрел лекцию, там, например, обучали массиву, после просмотра, минут 30-40 пытаюсь всячески "играться" с этими массивами, дабы больше узнать про принцип работы оного.
Играться очень полезно, можно самому себе ставить задачки на понимание и искать ответ. Есть масса "олимпиадных" задач в интернете, от очень простых до реально сложных. Стоит найти такие сервисы и брать оттуда простые задачки.
>>40907
>3) Как быть с алгоритмами? В простеньких и коротких кодах проблем никаких нет, ибо они простенькие и короткие. А вот где научиться строить правильные алгоритмы в больших кодах, где уйма функций, циклов и т.д.? Или это со временем само придет?
Ты тут описываешь не сколько программирование, сколько проектирование. Этим надо заниматься и этому годами учатся, на своём опыте, изучая другой опыт, чужой код. Книги мало этому помогут, хотя когда там описывают учебные приложения какие-нибудь, то это на пользу.
Я бы в целом посоветовал именно на веб-приложения смотреть, это и в чём-то проще, и практично, и за этим будущее, сейчас все приложения уходят в веб, даже локальные. Минус в том, что тебе одновременно надо ещё и HTML-CSS-JS осваивать. И массу других технологий. Но в любом случае массу других технологий.
В общем хороший вариант два направления одновременно:
1) простенькие алгоритмические задачи на структуры данных
2) как вариант Джанго, например сначала их учебное приложение, и потом может под себя что-нибудь похожее.
Спасибо тебе большое, анон!
Так и сделаю. Вот добью лекции Хирьянова, освою синтаксис Python-a, а дальше уже нырну прямиком в Django.
Добра тебе!
Алсо, еще такой вопрос тебе, добрый анон:
Как быть с кодом на первых порах? Я имею ввиду, там в коллективе кто-то опытнее подскажет, что тут исправить, а что там, то бишь, поможет оптимизировать, а как быть самоучке? Как лучше всего научиться писать чистый и читабельный код?
Никак.
Папаня (я) понял что для удаления с концами внутреннего Гита надо озалупить файтл vcs.xml внутри .idea/
Я в курсе, я задал папку, как мне проверить что она пустая, и если пустая, то вывести сообщение. Пустая папка - это что? Какой тип, с чем его сравинть, если писать if == то что с чем сравинть то?
if len(res) == 0
Но так как пустой список кастится в false, то можно просто if not res.
Ты почитай какой-то вводный курс хоть, штоле.
Меня кстати все зовут Большим Папой. Угадай почему
Польза математики для программирования переоценена. Это я как имеющий математическое образование так считаю.
Важнее, какой опыт в инженерных вопросах и разных IT технологиях. Ну там понимание баз данных, структур данных, умению сложные графики-таблицы в экселе делать, умение работать в консоли, понимание HTML, принципов работы интернета, умению ставить и настраивать софт разный и т.п. Есть куча вот такой хрени, что одни умеют и понимают, не умея программировать, а другие совсем нет. Первым будет сильно проще в программировании.
Тут ведь надо всё одновременно осваивать и при этом самому, вот это тяжело.
Если хоть немного когда-то программировал, на уровне лаб в универе, то это уже хороший задел.
Я имела в виду, что математика способствует развитию логического мышления, а обладателям этого навыка (хотя бы начального) гораздо проще обучиться программированию.
Дело не в знании тонкостей математики, а в общем математическом мышлении, хотя бы начальном.
Люди с гуманитарным образованием, например,обучаются медленнее или не обучаются вообще, поскольку то ли не могут думать логически, то ли им не удается себя заставить, то ли им действительно просто не дано понимать.
Алсо, рейт как сделал, сам охуел как могу. Наверняка можно было там как-то в 1,5 строки хуе-мое, но мне понравилось, что я сам допер и довольно быстро.
Ну сама программа мне в общем-то нравится.
выглядит стремновато да, может попробовать через maketrans сделать
на ум еще приходит что-то пикрил
ты чисто для примера такое странное делаешь или ты рил из создания списка выкидываешь квадратные скобки? какой кейс?
Ну вот было задание про очередь я сделол хуйню, воссоздал прямо блять очередь (количество касс разное) а челики просто прибавляли к минимальной кассе значения а потом большее посчитали и все. Элементарно блять. Почему я не додумался хз. Я задания буквально как то делаю
>умению сложные графики-таблицы в экселе делать
>умению ставить и настраивать софт разный
Очень важно для говнокодинга, конечно.
Я как даун второй вариант сделал потому что подумал что в первом варианте многоуважаемому компьютеру будет дольше считать ? Но так ли это, profile показывает что и там и там время исполнения ноль.
Варианты разные, второй не учитывает безносые.
Алсо, во втором эти проверки прокручиваются для каждого символа и нахуй не нужный face строится, надо при первом же несовпадении делать continue и считать сколько дошли до конца.
В общем, первый идиоматичнее, второй можно сделать быстрее при правильной реализации, но в целом нахуй не нужно, это экономия на спичках.
У меня был continue я его забыл в конечном варике вставить, если бы он был, какой варик лучше быстрый или красивый ?
Ответил выше.
Ну смари малёк ты сам откуда ? Как звать ?
Есть варианты попроще?
Ковыряю сейчас джангу с реактом и осознаю, что мне это нахуй не всралось, вот просто не интересно и я не хочу серьезно работать с этим стеком.
Хотя сам по себе язык очень нравится, писать скрипты для автоматизации всякой хуйни нравится, работать с данными тоже нравится.
>QA
Ну у нас все интеграционные тесты написаны на selenium + самописный pom + pytest + allure2. Жизнь есть.
Другое дело, что это у нас внутренняя необходимость была. А как на внешнем рыночке - я не знаю.
Привет любителям душить питона. Пишу программу-клиент с PyQt5. Нужно сделать так, чтобы при любом действии пользователя (движения мышки, клики, ввод с клавиатуры и прочее) сработала функция, которая сообщит серверу, что клиент все еще у компьютера и закрывать сессию не надо.
Как такое сделать? Спасибо.
А смысл? Лучше на сервере разрывать по таймауту, чем дрочить клиента.
Ну а так, сделать какой-то таймер, который будет инкрементировать, а любое действие обнулять его. После достижения некоего значения разрывать.
Таймер сделал, но как вставить свою функцию в обработчик действий пользователя PyQt? Если по отдельности для мышки и клавиатуры, то могу забыть например перетаскивание окна или что-нибудь еще.
У меня соединение висит не всегда, и задача клиента сказать серверу "я живой, продли мой токен на N секунд". Для http есть практики получше?
Относительно своего опыта поиска работы после запиливания функционирующего пета - ты нахуй никому не нужен.
Поскольку в моей срани нет вакансий по питону я проверить свою теорию не могу, а она заключается в том что тебе надо найти интересующую тебя вакансию и подогнать под нее свои знания.
Ну и да джанго - хлеб для джуна.
по поводу pyqt тебе надо погуглить какие есть event у нужного тебе qwidget и переопределить их.
по обновлению токена гугли jwt refresh token
Спасибо, надо учиться транслировать в голове C++ в питон :) Получилось переназначить функцию notify в QApplication:
class Application(QtWidgets.QApplication):
def notify(self, obj, event):
print('user input', time.time())
return QtWidgets.QApplication.notify(self, obj, event)
if __name__ == "__main__":
app = Application(sys.argv)
Так, а как нормально постить питонячий код на двачи?
Ну, заюзал pastebin: https://pastebin.com/7beg8YVv
Короч купил вдс за 80 рубасов/манс, лол. А теперь чешу репу, что с ним делать, помохите...
На локалке мой проект представляет из себя пикрил не смотрите на докерфайл, я от балды написал, понятия не имею, как его использовать
Я уже догадался подключиться к серверу через путти, обнаружил там ебунту с терминалом (знаю команд 5 от силы). Теперь, если я правильно все понял, мне нужно установить нужную версию питона, накатить pipenv, сделать mkdir, выполнить туда гитклон с локалки и запустить мейн скрипт? Пипенв, по идее, сам скачает все нужные модули и все заработает, так же? Или как такие штуки делают здоровые люди?
Чета ппц этот деплой какой-то геморный, и это у меня ещё приложение уровня хелловрот...
> математика способствует развитию логического мышления
> общем математическом мышлении
> Люди с гуманитарным образованием, например,обучаются медленнее или не обучаются вообще
Семантические и идеологические клише.
> Люди с гуманитарным образованием, например,о
Отсутствие пробела после запятой, то есть, безразличие к стилистике текста.
> не могут думать логически
Допущение существования "нелогического мышления". Именно "нелогического", а не "нелогичного", как было бы в том случае, если бы обращались к клише "нелогичный человек".
> просто не дано понимать
Отсутствие понимания значимости среды в формировании ЦНС, а также то ли по косноязычности, то ли специально оставленный намёк на генную (или даже "божественную") детерминированность мыслительной способности.
В общем, солидный набор тупой пизды.
Так вот, че посоветуете почитать на тему логики или по математике какие нить годные книжки, но без углублений?
т.е. допустим (for i in code.split(delim)).join(' ')
Знаю, есть головоломный способ у вас
И эт, надо ли дрочить сикп? Или отложить его на потом, читнуть после изучения пейтона?
а зачем делать split в первой строке, а не перенести дальше, если ты все равно делаешь for, а не list comprehension?
У тебя join - это же обычный для str, а не какой-то своего класса? Если да, то ты джоин не можешь так сделать. Т.к. сплит дает list.
поправляю быдлокод на больший быдлокод для понятности
parsed = ' '.join(for i in code.split(' '))):
i = chr(int(i))
короче, просто опишу что надо сделать:
сплит даёт лист, я прохожусь циклом по элементам, затем джойню лист в то, что было
Думать логически, мыслить логически - устоявшееся выражение в русском языке вообще-то
parsed = ' '.join(code.split(' '))
только это бессмысленно, получишь тоже самое. Т.к. join гарантирует обратные результат для split (где-то в документации про сплит или джоин написано)
parsed = " ".join(code.split()) - такое имеет смысл.
Контекст надо. Для чего это делать?
Во, так работает. Адаптировал, спасибо
Ну ребят, надо поменять пароль
Я провославный васян вкатывальщик, у меня бафф на:
+ резист от долбоебов.
- 5 к логике и математике
+ 5 к усидчивости и упорству
"Логическое мышление" - это семантическое клише-профанизм, и алогичного мышления не существует в природе, поскольку само мышление есть логика.
Впрочем, употребление подобных выражений - это настолько верный маркер интеллектуальной блеклости, что эти объяснения идут против моих интересов.
Два чаю, но я думаю что это скорее самцы с мозгами ТП. Нет никаких гуманитариев и технарей, есть специалисты в отдельных областях, которые отнюдь не освобождаются от обязанности быть образованным человеком.
Ну как минимум нужен мультипарт запрос, смотри, как его включить.
https://egoroffartem.pythonanywhere.com/course/python/
Палю годноту потому что ты хороший и перспективный. Там после каждого коротенького урока задание. Лаконичнее объяснений Питона для новичка не видел. И задания с разных контор асмпру и тд там ссылки будут.
Не переживай, нафталиновая мудрость с определенных пор стала глупостью потому что вообще не монетизируется никак. Говори свободно. Всем похуй. Токо скажи плез где у меня запятых нет и почему, надо пиздец.
Видно, решил свою задачу и больше здесь не нужен.
Есть для третьей, шапку прочти там ссылка на яндекс диск с книгами.
>>41756
Благодарю
Алсо, котоны расскажите про "Лутца - Изучаем пайтон. Том1"
Прочитал 70 страниц, ебать я столько воды в жизни не читал, тупо хвалит и питон и рассуждает как он хорош, мне точно надо это все читать? Или я могу смело скипнуть две главу и сразу читать с практики? Помогите советом кто читал.
Лутц хуйня в которой дохуя воды. Если ты совсем новичок то сиди не перди и читай, если уже нюхал говна, то попробуй лучше Лучано Ромальо Fluent Python
В IDLE много не напишешь, удобно для каких-то коротких тестов, да, но не сильно более.
Судя по всему, генерик нубская книжка, на таком уровне особой разницы нет. Хотя мне сложно смотреть с этой стороны, годно ли разжевывают и т.п.
Ты что-то совсем умом тронулся)
Необходимость йоба-ИДЕ для скриптов переоценена, достаточно вменяемой работы с файловой системой и подсветки синтаксиса.
Плохо браться за питон по нубской книжке, если фронт уже 3 мес изучаю?
Новичок на связи, не слушай ебанутых. Лутц рассказывает про Питон прыгая по темам и всегда затрагивая их большой срез. Плюс там язык такой «технический» что пиздец. Советую этого челика смотреть которого выше кидал и лекции Харьянова про алгоритмы, там тоже с заданиями. А уже после нескольких пройденных тем полировать Лутцем, в таком режиме он норм заходит.
Тебе и собаки хватит
Логика это раздел математики, а "логичное мышление" само по себе просторечное выражение.
>>42206
>курс лекций
Хирьянова по алгоритмам.
По синтаксису у sentdex'а на ютубе есть курс лекций по базовому питону, их там штук 30 и воды по минимуму.
Больше ничего мне лично не зашло.
>книгам
Укус питона, вкоту больше ничего не надо, после достаточной практики Python cookbook.
''.join(chr(ord(c)-2) for c in 'чхл')
rtf requirements.txt
Понял, принял, спасибо
Типо приехал и сидишь как макака обезьянишь, пока не устроишься на работку.
https://it-incubator.by/
https://hutorium.ru/
Как бы вы ответили?
УГ
> 22 страницы
Я не читал даже первый абзац ОП-поста, но уже уверен, что вопрос - хуита, посылки автора - демагогские, а на первой странице постят в основном те, кто на самом деле не верит в то, что пишет.
> скрипты для CLI - bash, lua (хотя сойдут PHP или JS);
Ну вот тут я могу сказать, что скрипт больше 10 строк в баше писать уже не стоит.
Во-первых строки вместо структур и легаси вместо синтаксиса. Во вторых учитывая весь зоопарк возможных интерпретаторов и бинутилзов, писать читаемые и переносимые скрипты - это большей степени искусство чем ремесло.
мимо_пишу_скрипты_12_лет
> сервер - PHP, Go (а где-то Java, JS);
Вот тут вообще странна логика. Вот этим четырём можно, а питону ну никак нельзя.
хочешь вкатиться - прочти шапку и тредик и вкатывайся, а не забивай голову ерундой
скорее хохол
Ну просто курсы его (лично для меня), показались очень годными. По ним учился вёрстке и ПэХэПэ. Вот теперь увидел, что у него есть и по Питону, только вот на торрентах что-то не видно его.
Смотри Хирьянова, че ты велосипед изобретаешь?
>все уже придумали для годного вката, нет блять не хочу на ложечке всё, хочу сам порыться в говне, а потом с полным ртом говна кушать все таки с вашей ложечки.
Ты ведь в МВП-тред это хотел запостить и просто промахнулся, да?
Никакие пути не нужны. Скажем, есть такая структура.
Папка A, в ней ma.py и папка B, в которой mb.py
В main делаем import A.B.mb
в mb.py делаем import A.ma
Всё.
Это абсолютные импорты, есть ещё относительные с . и .., работает как в файловых путях. Это и есть пути по сути.
есть дерево, где ноды могут быть "недоступны" (допустим, это флаг node.available)
все потомки "недоступной" ноды автоматически "недоступны" (невзирая на флаг), это важно
у нод есть метод Node.next_node(), который должен вернуть следующую "доступную" ноду
подразумевается depth-first search
простым вайл лупом Node.next_node() мы можем посетить по цепочке все доступные ноды до самого конца дерева
у каждой ноды доступны родитель и дети, ясен пень
вот начальный код поиграться: https://ideone.com/IS8TKI
функция print_tree() просто печатает всё дерево, для дебага
функция traverse() это луп, который сейчас останавливается на верхней ноде, потому что метод Node.next_node() не придуман
у меня пока получается вонючее говно
>у нод есть метод Node.next_node(), который должен вернуть следующую "доступную" ноду
Тебе именно так и надо?
Спорное решение, что подобный метод относится именно к ноде, а не к какому-то классу-дереву целиком. Хотя возможное.
Тебе, значит, надо в next_node() обход делать дерева.
Логика:
1) сначала проверяешь детей, если есть дети и они available, возвращаешь дитя соответствующее, это легко.
Вот дальше уже неочевидно. Надо реализовать метод проверки братьев, для этого лезть в родительскую ноду, брать список детей, сравнивать с текущей нодой, после того, как найдена, уже пойдут те, что надо исследовать. Или надо подниматься на уровень выше.
Это рекурсивным алгоритмом делается, но более хитрым, чем если бы ты от вершины шёл и один генератор просто листья возвращал.
вот начальный код поиграться, издание второе, дополненное: https://ideone.com/8S8VTR
я - дегрод и забыл нодам дать ссылки на своих парентов
>>42897
да, я как раз пытаюсь рекурсивно запилить, примерно как ты пишешь. почти получилось
>>42898
сам, сам. это не какое-то задание, а часть моей программы
В питоне нельзя так просто импортировать родительский каталог.
Кривой путь, но возможный:
пусть у тебя каталоги
project/p1/p2
project/p1/p3
файлы
project/p1/p2/modul.py
project/p1/p3/script.py
если тебе в script.py нужно открыть modul, где есть функция foo
то ты там можешь сделать код вида
import sys
sys.path.append('../..') <-- это ты добавляешь p1 в список импорта
дальше
import p1.p2.modul as modul
modul.foo()
Но это всё-таки грязноватый подход. Можно, лучше, добавлять не относительный путь, а глобальный, это лучше, но тебе придётся для этого дополнительный код делать.
Потому что sys.path это глобальная переменная, и ты вот этими хаками её тоже портишь, это может сломать тебе какой-то код.
Ты можешь, кстати, вместо того, чтобы руками список детей заполнять, что чревато ошибками и лишний код:
parent0.children = [child0, child1]
сделать в конструкторе код вида:
if parent:
____parent.children.append(self)
так надёжнее
С рекурсией такой, нормально, можно сделать, но реально тут дополнительные заморочки появляются, по прикидкам код из-за этого разрастается. Не пробовал пока делать.
да, в основном коде все автоматизировано
с рекурсией пока обосрамс - вниз спускаться получается, а вверх получается бесконечная лестница из ифов, проверяющих есть ли у парента сосед, иначе есть ли у парента парента сосед, иначе есть ли у парента парента парента сосед, ...
тэкс, MVP говно потекло по трубам: https://ideone.com/do15ar
пока что печатает желаемое. но это позорнейший говнокод, а мне еще расширять этот функционал
буду думать как улучшить
>>42897
всё, зарефакторил: https://ideone.com/pHxZ1E
начинаем с детей, переходим на братьев, затем идем наверх. логично, питонично. я доволен
for i in range(150):
db.i.insert_one({'x': i})
Имею в виду вот тут db.i.insert_one, как подставлять каждый раз число i при вызове функции?
db.1
db.2
это не валидные идентификаторы, так что никак
если говорить про валидные
db.a
db.b
то их можно передать через operator.getattr(obj, name), либо обычно в orm есть свои кастомные штуки для такого
- изменяемые/неизменяемые типы данных
- итераторы/генераторы
- декораторы
- ооп
- http
- sql
- фреймворки (django, flask etc)
Что еще могут? И какого типа задачи могут быть?
На трекерах раздают.
Есть функция. Если в качестве аргумента передать 1, то
результат будет 2, если передали 2, результат равен 1. Как
может выглядеть эта функция без использования условных
операторов. (2 способа)
return 3 - x;
3 x лул
Ну ты ловкач.
Но не нужно.
Правильных подхода два, либо математически вычислять
return 3 -x,
либо через словарь
return {1: 2, 2: 1}.get(x, None)
Вот у меня есть класс. Как в нем объявить поля, которые присвоятся только потом, в процессе работы?
Ну типа можно конечно через None (self.filed = None), но, боюсь, так только долбаебы делают
Выручай, анон
В связи с чем возник вопрос, насколько хорошо вообще веб разрабу нужно знать линукс и уметь в терминал? Или у компаний для таких вещей существуют специально обученные люди?
>В связи с чем возник вопрос, насколько хорошо вообще веб разрабу нужно знать линукс и уметь в терминал? Или у компаний для таких вещей существуют специально обученные люди?
Это примерно как английским языком владеть. Да, бывают специальные люди, но на каком-то начальном уровне уметь это надо обязательно.
Обычно да, специальные люди есть.
Но в идеале нужно хорошо знать свою область и хотя бы на минимальном уровне уметь остальное. Во многих случаях это облегчит работу.
в админке мб используется?
>какого типа задачи могут быть
ну мб тебе дадут простую алгоритмическую задачу
а так да, надо знать всё что ты перечислил и этого будет достаточно
Правда не знаю что можно спросить по джанге...мб Спросят что такое MVC, REST
Тут тред был.
Шёл бы ты в тему перезвонщиков.
Скорее с тобой поговорят просто по-пацански, типа кто ты, что из себя по жизни представляешь, как держишься, чего добился, как мозги работают. Спросят за темы, близкие к тому, чем в проекте занимаются.
Собеседование не экзамен, где преподы по билетам гоняют.
Если у тебя кругозор есть по технологиям, проектам и т.п., это тебе в плюс.
Если ты свободно пишешь код на каких-нибудь алгоритмических задачках, это тоже тебе в плюс.
Если ты понимаешь, как какие-то кишки устроены и подкапотную хрень, или в состоянии сам додумать, это тоже тебе в плюс. О таких вещах все любят говорить.
Вот понимаешь ли ты, что происходит под капотом в таком коде
a = 2
a += 1
это на понимание неизменяемости типов данных, например. Хотя бы примерно.
Понимаешь ли ты, какие стадии проходит один какой-нибудь типовой запрос к django? Примерно?
Вот эти вещи показывают что-то о собеседнике.
Что ты называешь выкидыванием числа из списка, что ты называешь делением?
Если ты про питон, хотя и про другие языки, то смотри про стоимости разных операций с разными структурами данных. Например операция удаления элемента из списка довольно дорогая, O(N), это если вначале списка элемент.
Факторов скорости и производительности дофига.
Тебе надо понимать структуры данных, их реализацию, как компьютер работает и на счёт чего тормоза появляются.
А где такое узнать про стоимость и про факторы производительности ? Как гуглить что бы лишнего не было ?
Надо читать все эти ебовейшие книжки по алгоритмам и структурам.
Седжвик, Скиена.
Сириус бизнес, ёпта.
Модуль timeit ответит на твои вопросы, падаван
Cython
байтоебствуй наздоровье
>>38346 (OP)
В админке Джанги вижу, данные юзеров. Видно что пароли уже хранятся в виде хеша с солью, есть способ изменить алглритм хешировагия или убрать его, чтоб видеть пароли сразу? Где это делается?
Преобразиться в кулцхакера, Властелина Небес и Преисподней, стать одновременно и всем и ничем, повелевать всем сущим при помощи лишь эфемерного
Скомпилированные программы никогда не были кроссплатформенными?
Он всего лишь бандлит интерпретатор и скрипты.
Получать точно так же - устанавливать скрипты и интерпретатор.
у этого пидора последние видео на ютубе будут платными
Нет, не ближайшее чётное. Иначе 3.4 тоже бы в 4 округлялось.
>Для честности
Для чётности
Они это даже задокументировали, оказывается:
> For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2).
Гвидо глубоко затянул, выдохнул, и решил, что надо так. ХЗ, может есть логика какая-то в этом. Дунуть надо, может допру.
>ХЗ, может есть логика какая-то в этом.
Так сейчас делает математика. Я не шутил, когда говорил, что это достижения последних лет. Дело там не в чётности, а в чередовании округления вверх и вниз.
откуда ты знаешь, что это именно математики нагадили ? какая-то теория не налазила, или как?
Невермайнд, я читал статью (на самом деле только абстракт, я туповатый), но там про именно альтерацию вверх и вниз; в питоне же действительно к ближайшему чётному приближают, а это инженерная рекоммендация, а не математическая
https://en.wikipedia.org/wiki/IEEE_754#Roundings_to_nearest
Полезно представлять, что есть, и попробовать многое в каких-нибудь тестовых примерах.
Так ты расширяешь свой кругозор, разные подходы к программированию и проектированию, как api принято строить и другое, что вообще с помощью языка можно сделать.
В ряде случаев это тебя спасает от изобретения велосипеда.
Хотя там, конечно, много специализированного, что не нужно обычно.
КТО ЕСЛИ НЕ ГВИДО
Бумерок говна поел. Любой школьник-киборг для которого интернет и есть память смеётся над тобой как над питекантропом. Готовься к земле мразь, ты своё отжила. (Мотивирую как могу соре)
задрачивать ради задрачивания нет смысла. просто периодически скань либы, за пару месяцев будешь знать, что там есть и где может понадобиться
алсо многие стандартные либы либо легаси из нулевых, либо говно на палке, и их никто не использует
погуглил за тебя, не благодари:
https://www.jetbrains.com/help/pycharm/finding-and-replacing-text-in-project.html#replace_search_string_in_project
далеко пойдёшь, братан
Школьники гуглят хуёво, сам видел как пиздюк не мог простой скрипт для работы с файлами написать.
Какие посоветуешь точно знать из стандартных, ну кроме сокеты конеш. И какие еще по типу скрапи и схожих, насчет фреймворков все ясно.
сходу не назову, половину стандартной либы где-то юзаю так или иначе.
checkio.org наверни, пока оно еще существует. неплохо натаскивает по многим закоулкам стандартной либы
для баловства лучше всего поставить jupyter notebook, это такой интерактивный блокнот, где можно очень быстро прототипировать и тестить всякое говно
>либо математически
Да и без словаря там бесконечное количество математических решений через нелинейные функции. Кроме очевидной 2/x, например есть бесконечное множетсов квадратичных функций типа x^2-4x+5.
Потому что ты мясо
ПО вашим ощущением, насколько python востребован для веба и будет перспективен? Сам сейчас заебался писать на plsql и хотел бы вкатиться в backend.
Пара знакомых коллег (может и пиздят), топят за ноду, но у меня почему-то сложилось впечатление, что это js стоит изучать только для фронта.
В гугол умею, но звучит слишком красиво
Молодец, ноунейм мальчик. Но что ты хочешь этим сказать и при чём тут программирование? Имеешь какое-то представление о школьной математике, здорово. Может ты как многие здесь даже учился в институте и знаешь про функциональные пространства L_0, L_1, L_2 и другие.
Будем знать, что тут водится умный питонанон. Но как это поможет программированию на питоне?
Не будешь же ты в реальной задаче вставлять такую формулу? Вот даже для трёх-четырёх точек?
>что это js стоит изучать только для фронта.
JS очень сильная штука для бэка, точнее нода. В чём-то сильнее и удобнее питона во многих задачах. JS просто как язык говно.
А по первому вопросу, более-менее востребован и более-менее перспективен. Нода довольно удобна для асинхронных сервисов и задач, но питон намного удобнее для обработки данных, хоть асинхронные вещи там менее наглядные и очевидные.
Да ну, в большинстве применений жс это борьба с его анальными выкрутасами для достижения цели. Но его роль в вебе и как встраиваемого движка это да, дает много профита при изучении.
fork()
execv()
Невермайнд это же питон тред
https://docs.python.org/dev/library/subprocess.html#using-the-subprocess-module
Но если что-то простое, то через шелл лучше, как выше посоветовали.
пардон, ты пишешь про удобство питона для обработки данных - речь уже не про веб, а ds, аналитика? в эту область даже не планирую лезть, т.к. сомневаюсь в своих умственных способностях (может и для веба туповат, да)
ОП, мой дорогой, спасибо за книги!
3.9.0 на подходе кстати. Так, что будь готов.
Т.е. новые версии должны корректно работать с PyQt? А в чем тогда может быть проблема с отсутствием designer.exe?
Нашел. Экзешник был по пути pyqt5_tools\Qt\bin
Пытаюсь привязать таблицу к tableview как тут
https://stackoverflow.com/questions/6927576/database-view-in-pyqt
или тут
https://stackoverflow.com/questions/20993084/how-to-display-data-from-database-in-table-view-in-python
Пишет:
cannot import name 'QTableView' from 'PyQt5.QtGui'
Привет. Скажи почему в описаниях всякого по Python всегда использую n+1 n-1 литералы что это вообще почему так откуда 1 и откуда n ?
эх, знал бы и я это.
што?
Что значит добавить?
Если это список, то стандартно как к списку.
Если у тебя предполагается добавлять, то инициализируй значения как список с одним элементом и всё.
Ну вот например есть d=({'a':['a'],'b':['b']})
я хочу добавить к key 'a' еще и значение 'c' чтобы стало d=({'a':['a','c'],'b':['b']})
Збс, а ты как?
Кста ты по какой методе сейчас изучаешь питон, твой алгоритм действий ?
Я короче смотрю егорова артема потом решаю задачки под его видео, когда несколько тем прохожу, смотрю видос Харьянова про алгоритмы, и ещё между делом пробегаю глазками книжку Седжвика и решаю на кодеварсе задачки. Но делаю все в ненапряжном темпе, я уже старый 30+ торопится уже некуда. А ты как делаешь рассказывай друг
Я на курсере бесплатную неделю взял, собственно все пока
Смотря куда. Я на винде полноценно писал проект 7 месяцев на джанге, только редис и постгря в Докере были. Единственную проблему испытал только при конвертации docx в PDF и что нельзя блять смену раскладки на Caps Lock перенести нормально
>Смотря куда.
ну в это, в питонирование. Чтоб Через год устроиться на 30 тысяч рублей джуном. можно было любые эксперименты проводить и все пробовать без ограничений платформы.
Ну вкатывайся с того, что тебе удобнее. Если вдруг понадобится -- поставишь виртуалку с линуксом, если дуалбут глаза мозолит. Заодно в последующих тредах расскажешь в каких случаях вкатываться строго через "злоебучий линукс".
> в питонирование
Веб, ML, скриптонирование, формочки, направлений хватает.
Для общего развития линукс пригодится. Есть ненулевая вероятность, что тебе достанется какое-нибудь некроговно, которое можно поднять только на линуксе. Ну и в идеале надо разрабатывать на той платформе, на которой будет крутиться проект
Думаю меня хватит на веб и еще что нибудь простое. Никакого ML, компьютерного зрения и прочей чепухи я довольно тупенький.
>и что нельзя блять смену раскладки на Caps Lock перенести нормально
Однострочник в AutoHotkey
Видишь: дружба, печеньки, и все такое.
https://youtu.be/42gmCTdKwH8
Ты вот такое умеешь ? Если нет, держи. Пригодится. Это самая бесячая хуяня из всех, в задачках.
Ну видишь вверху как, а я всегда использую не самые оптимальные инструменты, а знаю я их пока не так много но даже с этого скудного выбора не могу найти оптимальное решение. Видишь как нагородил
Ну тут стратегия обучения очень простая.
Берёшь кусок своего говнокода и начинаешь целеустремлённо пытаться минимизировать количество строк. Путём генераторов, длинных паравозиков из методов, однострочных ифов и прочих лямбд-хуямб. Тут теде документация и стаковерфлоу в помощь.
Потом через неделю пытаешься всё это говно прочитать и понимаешь, что вот как раньше оно было лучше.
Вот. Несколько повторений из крайности в крайности и найдёшь золотую середину.
Разрешите выполнять ?
И есть ли либа под питон для этого? Мне понятно как написать это на крестах (по крайне мере для некоторых типов функций, чего будет достаточно в моём случае), но на питоне если написать вручную это будет очень медленно, а как внутри работает numpy, что код выполняется в 10 раз быстрее чем обычный питонокод, я не знаю - потому рассчитываю на либу.
>знаю я их пока не так много
Ну вот узнал новый для себя возможный метод решения. Так они и изучаются.
Ещё быстрее практики? Вряд ли.
>А быстрее никак ?
Ну вот применительно с кромсанию строк. Запускаешь какой-нибудь ipython или jupyter-lab. Открываешь доку по строкам: https://docs.python.org/2/library/stdtypes.html и начинаешь один за одним применять методы и смотришь чё происходит.
Так во-первых ты один за одним набираешь соплю-однострочник. А во вторых и в голове откладываешь, что вот же там где-то встречался же метод, который проверял все символы в строке - цифры.
Первое решение тоже хуйня, соснет на http://huiwww.com, например. Тут идеально регулярками сделать, но можно и
без них наворотить.
Ну а у тебя просто коряво и неоптимально, это улучшается с опытом.
Питон днище просто. Это вспомогательный язык. Если кто-то знает только питон (питон для него основной) - то это не программист даже, естественно он ничего не понимает даже про конструктор.
460x630, 0:14
морщат лбы, выдумывая альтернативные названия?
называют файлы с подчеркиванием?
что-то еще?
например, есть такой модуль:
> shitfuck.py/
> __init__.py
> parser.py
> token.py
и всё работало, пока я не попытался импортнуть те же dataclasses в файле shitfuck/token.py
и получил говна на лопате, так как в процессе импортов импортируется стандартная либа token, которую зашадовило
прикол в том, что вся структура shitfuck это файлы с названиями лексер, аст, парсер
я думал, что модуль даёт неймспейс
да, использую релатив импорт. я понял, что ошибка возникает только если я запускаю сам файл. на уровне модуля всё работает
> from shitfuck import Token
> print(Token('foo', 'bar'))
> import token
> print(token.__all__)
нормально принтит и мой токен, и содержимое питоновского модуля
в принципе, некритично. тем более что релатив импорты всё равно ломают возможность запуска файликов отдельно
через нью конструировал или через инит?
Как вообще управляться с СУБД в Джанге? Мне вот во время тестирования приложения приходится часто очищать БД (или только какие-то конкретные таблицы) и заполнять ее какими-то dummy записями. Как это делать быстро? Файлы миграций стирать стоит?
>>46256
Добавь нужные таблицы в админку и если что очищай через нее
Забейте, просто через оптимизатор-минимизатор в scipy сделал, там есть всё необходимое. Я и забыл про него.
А я какое-то бесполезное sklearn нашёл и всё листал его. Вообще тоже прикольная штука с виду.
Нужна либа, с помощью которой я буду выполнять функцию как в кроне "/15 " или "0 *".
В жаес есть хороший node-schedule, а в питоне одна хуита.
Мне не нужно запускать функцию именно в #.00, #.15 или #.30 минут, никакие таймеры не помогут тк они начинают отсчёт в момент запуска программы schedule, например: next run at: 2020-03-30 20:43:46 MSK
Получай время, вычисляй следующие #.## минут, нужные тебе, и ставь таймер. Но, конечно, висеть всем интерпретатором и скриптом постоянно в памяти, чтобы раз в 15 минут запускаться, вместо того, чтобы заставить инит его вызывать, когда нужно, это грустная идея.
>Я зелёный совсем, не знаю как правильно.
На линуксе делаешь name.timer содержимого
[Unit]
Description=Runs name every quarter hour
[Timer]
OnCalendar=:0/15:00 (или :0,15,30,45:00 , если тебе так понятнее будет потом читать)
[Install]
WantedBy=timers.target
А свой скрипт помещаешь в name.service:
[Unit]
Description=Veri useful name
[Service]
Type=simple
ExecStart=/path/to/you/script.py
Перед двоиточиями макаба звёздочки съела в строке OnCalendar.
Я же говорю - он начинает отсчёт в момент запуска программы.
Как мне его, например, заставить вызывать функцию каждые 15 минут? 21.00, 21.15, 21.30, 21.45...
>>46513
Это вообще не вариант, программа работает в докере, привязывать её к системному таймеру не хочется. Нужно именно одну функцию запускать переодично.
Я пока не нашел ничего лучше, чем сделать сначала html страничку нужного формата, а потом переформатировать её в пдф.
> программа работает в докере, привязывать её к системному таймеру не хочется
systemd умеет подхватывать таймеры из контейнеров. Из памяти не напишу, но там не очень сложно было.
Ну, оно и писать умеет.
https://pythonhosted.org/PyPDF2/PdfFileWriter.html
У тебя сейчас квитанции как размечены?
У меня есть pdf файл с примером, мне в принципе только туда вставить данные надо
Ну так а чем тебе тогда чтение не так? Читаешь-изменяешь- записываешь.
15 лет стажа сейчас тебе все пояснит, для работы с пдф надо просто взять и начать сосать хуй и больше никогда к этому говну не притрагиваться
Да это лаба по предмету. Я уже начинаю проникаться этим действом.
ПДФ отличная вещь, ты просто пока не встретился с хорошими практиками его использования. Проблема в адобе.
https://www.youtube.com/watch?v=158bJFTETRI
Как реализовать перемещение элемента по списку? Есть список a и дан индекс i элемент которого надо переместить на n позиций вправо или влево в списке. Число n либо положительно (тогда элемент сдвигается вправо), либо отрицательно (элемент соответственно сдвигается влево)
pop + insert
Круто а дальше-то че? Надо потом писать овердохуя if-ов, чтобы проверить куда попадает ебаный элемент, есть какой-то способ сделать это лаконично?
a = [0, 1, 2, 3, 4]
idx = 2
n = 1
Надо на 1 позицию вправо сдвинуть двойку, если ее pop-нуть, то индексы уже изменят свое значение, поэтому предварителнь онужно вставить сраный if и не один. Это нагромождение из говнокода какое-то
После вставки будет такое же, так что ничего не меняется, норкоман.
a.insert(idx+n, a.pop(idx))
>Я пока не нашел ничего лучше, чем сделать сначала html страничку нужного формата, а потом переформатировать её в пдф.
Как минимум видел в двух местах, где в проде пдф именно так и генерился. Наверное в этом есть смысл.
В этом есть смысл, если пдф с нуля надо делать, потому что у пдф нет plain text representation. Ты берёшь язык разметки, который знаешь, и создаёшь саму страничку им. Обычно это tex, но можно вполне и через html сделать.
Самый правильный путь, именно HTML делать и конвертировать в pdf. Разметка PDF сама по себе очень сложна и не документирована, не знаю, как сейчас, но ещё недавно парсить pdf было просто нереально, никаких нормальных свободных решений не было, только совсем слабые.
А вот решения html в pdf есть. При этом есть поддержка специальной дополнительной разметки, если тебе надо в pdf делать, скажем, шапку и подвал, чтобы разрыв страницы был в нужных местах и не был в ненужных и т.п. Всё для этого есть.
> Разметка PDF сама по себе очень сложна и не документирована
Лолшто? Спека не только доступна, но и является промышленным стандартом. PDF - подмножество постскрипта, нихуя сложного в генерации PDF нет, можно хоть вручную в блокноте писать. А вот парсить PDF сложно, да, но это в основном из-за его природы, семантики там мало, упор делается на сохранении неизменности представления.
> >поэтому не работает
так ведь именно так оно и работает. о чем прямым текстом написано в сообщении. двач же рекомендует есть суп ножом, хотя я давно самостоятельно нашёл ложку
Что непонятного? Логинишься в браузере и вытаскиваишь из лога реквестов нужные значения.
Говно ебаное. Питон, джаваскрипт, луа и все остальное скриптоговно без типизации.
Ты вообще понимаешь что в этом суть json? Ключи только строки нахуй и все тут. Учи матчасть
Я знаю, джаваскрипт уже обругал же. Я видел этот угрёбищный пример, где нужно догадаться чему равно '2'+3 и '2'-3 или ещё что-то такое, где отсутствие минуса для строк вызывает приведение типа.
>>47195
Сам ты говно. В этом примере как раз чёткая типизация, все ключи приводятся к строке, никакой магии нет.
Ты когда любой формат хранения данных используешь должен смотреть, что там может быть ключом, а что значением. Это стандарт формата, блеять! Если ты с ним через C++ работаешь, всё тоже самое будет. В XML у тебя тоже только строки.
Если тебе нужно более сложное хранение, то используй pickle. В этом формате ты можешь очень сложные вещи хранить, пересылать, и всё корректно. Правда только между питоновскими скриптами, хотя какие-то модули для JS есть.
Кстати вопрос на засыпку: почему несмотря на такую стремную типизацию производительность ЖС топовая по сравнению с другими скриптовыми языками?..
Динамическая типизация из ниоткуда не берется, за нее приходится платить (в том числе и производительностью). Так почему ЖС не особо-то и платит? спрашивал в жс-треде, но там гидроцефалы с половиной мозга, спорящие что круче - Вуе или Реакт
А если я создаю еще один .py файл, и пишу туда в UTF8 строки типа "d = {1: 100, '2': 500}", чтоб потом командой import их оттуда доставать, то меня можно считать Сверхразумом или я просто долбоеб и в любой компании меня обоссут, если я в таком признаюсь?
мимоанон
Насколько я помню, там только математика быстрая. Ну и искаробочная асинхронность.
А в всяких утилитарных задачах вполне себе соснет местами.
Движки JS используют JIT - компиляцию в машинный код во время исполнения, это позволяет сильно ускорять некоторые виды операций. И асинхронность там тоже в движке поддержана.
Для питона тоже есть подобные инструменты.
pypy - JIT интерпретатор питона, на текущий момент поддерживается только питон 3.6. Какой-то вычислительный код он может в разы и даже десятки раз ускорять. Какой-то нет.
Для асинхронных задач иногда можно использовать uvloop, это ускоренный движок для event loop из asyncio. Правда pypy и uvloop не совместимы между собой.
Не работает кстати наебал ты меня. Ты скажи специально или просто от злобы душевной ?
Это в режиме просмотра работает, а не редактирования. Esc нажми сначала.
corr()
У try есть else, который выполняется, если не было эксепшна.
Так что заворачиваешь в while и в else брекаешься.
while True:
___try:
_______par1 = xxx
_______par2 = yyy
_______func(par1, par2)
_______break # выполнится только в при успешном исполнении func
___except:
_______pass # здесь тоже можно манипулировать параметрами, в зависимости от кода ошибки, например
Можно ли как-нибудь ускорить питон, чтобы быстрее работал?
— Тебе надо понять, почему не хватает скорости. Возможно у тебя плохой алгоритм или ты не так структурами данных пользуешься. Если же твой код грамотный, то есть способы именно ускорить исполнение:
а) самый модный и новый - модуль numba, ставится через pip. Он позволяет делать компиляцию на лету нужных функций, к которым ты просто приписываешь декоратор @jit, и можешь сильно ускорять их работу. Полезно для вычислительных задач.
б) PyPy - альтернативный интерпретатор питона, тоже работает по принципу JIT. Тоже может ускорять код. Минусы - не совместим с некоторыми внешними библиотеками, поддержка версий отстаёт, сейчас только питон 3.6, когда на дворе уже 3.8.
в) cython - компиляция кода в промежуточный код на C. Требует дополнительной работы, правки кода, не рекомендуется, если ты только точно не знаешь, что это тебе надо. Пользуйся лучше numba или pypy.
Это бы в шапку, но может как-то сократить.
>—
>>47678
Как можно ускорить программу на питоне, без лишней возни?
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда радикально ускорить, используя JIT компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
ПЕРЕКАТ
>>1647702 (OP)
>>1647702 (OP)
>>1647702 (OP)
>>1647702 (OP)
>>1647702 (OP)
Код ревью
Нагугли лабки из какого-нибудь уника и пили.
docker-compose up:
Creating sso_celery-beat_1 ... error
type "bind": bind source path does not exist: /f/test/sso
ERROR: for sso_celery-beat_1 Cannot create container for service celery-beat: invalid mount
Creating sso_web_1 ... error
ERROR: for sso_web_1 Cannot create container for service web: invalid mount config for type
"bind": bind source path does not exist: /f/test/sso
ERROR: for celery Cannot create container for service celery: invalid mount config for type
"bind": bind source path does not exist: /f/test/sso
ERROR: for celery-beat Cannot create container for service celery-beat: invalid mount config
for type "bind": bind source path does not exist: /f/test/sso
Хотя сам путь есть (запускаю оттуда)
Перелопатил многое, docker login, менял что-то в докер файлах проекта, но увы
наткнулся на это
https://qna.habr.com/q/706007
Но там трудно чето вообще
Понимаю, что нужно путь абсолютно в строке указать, но как хз
win7, там docker toolbox
Это копия, сохраненная 6 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.