Это копия, сохраненная 6 декабря 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1711609 (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
Читаешь второй полностью и делаешь словарь, потом читаешь первый построчно, сверяешься со словарем и пишешь в новый файл. В конце переименовать новый на первый.
и это из твоего алгоритма выходит содержание 2го в 1м.
Мне надо чтобы все строки из нужного столбца остались и рядом в другом столбце была пометка что он совпадает со 2м
Схуяли? Читаешь первый и пишешь первый с добавлениями по итогам сверки со словарем второго.
Вот я примерно подобное делал https://pastebin.com/iyaG7H23
Надо только добавить модификацию row ну и формирование словаря для твоего варианта.
В 2020 что-то изменилось?
Да мне особо и не надо пока, я просто спросить ))
Так-то я вообще 1С-господин, зашел к джентельменам-питонистам на огонек
Процедура ОбработкаВнешнегоСобытия(Кто,Что,Зачем)
Если Кто="Анон" Тогда
Если Что="послалТебяИзТреда" Тогда
Сообщить(Зачем);
КонецЕсли;
КонецЕсли;
КонецПроцедуры //ОбработкаВнешнегоСобытия
просто это богомерское поделие погромированием называть западло
На самом деле это вообще не проблема - есть англоязычные синонимы для всех выражений. Непривычно только первые пару дней, если заставят на таком кодить конечно желаю всем в этом треде никогда с 1С не столкнутся, это ад кромешный для стойких духом людей.
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокументИмениНуралиеваБорисаГеоргиевича не одобряет англоязычные синонимы только АДъ и жопоболь!!!!!1111
это удобно, вы ничего не понимаете, сударь
https://dumpz.org/baQrRyNQreP4
Спасибо. У меня как в Шерлоке Холмсе - каждый раз я здесь что-то спрашиваю и когда отвечают я такой "да это же элементарно, как я сам до этого не додумался?". А вот сам додуматься не могу.
> 3
Что-то у меня впечатление с этим typing, что рано или поздно вхуячат какой-то import strict для обязательной типизации и зафорсят его, лол.
У меня в общем накипело. Я относительно недавно сел учить, чтоб мозги чем-то занять. Пока проходил азы - переменные, списки, словари, итерацию - все было просто и понятно. Как только пошел control flow - if, while и чуть более сложные задания, я просто сник. Вообще нихуя не понимаю, делаю задачки либо просто интуитивно, либо вовсе наполовину списываю из ответов, абсолютно не понимая что я делаю.
Не знаю теперь что делать дальше - либо перечитывать материал снова и снова, либо двигаться дальше, надеясь, что с опытом это все нанизается.
Спасибо. А что по перспективам, а то везде сейчас о nodejs говорят. я просто с helpdesk и слабо ориентируюсь в разработке
и правильно сделают
Не работает. Что делаю не так?
on_delete='CASCADE' вообще не чешется при удалении плейлистов. Пробовал в обе стороны её пихать. Хотелось бы, чтобы автоматически удалялись осиротевшие треки.
Playlist.delete().where(Playlist.user == self.db_user).execute()
Плейлисты грохаются, а треки остаются.
Пох, думаю, давай ручками:
Сначала удаляю связи:
pls = Playlist.select().where(Playlist.user == self.db_user)
for pl in pls:
for track in pl.tracks:
track.playlists.remove(pl)
Связи удаляются нормально.
Дальше пробую такое:
Track.select('title').where(Track.playlists.is_null()).execute()
Запрос получается такой:
SELECT "t1"."id", "t1"."code", "t1"."title", "t1"."artist", "t1"."duration", "t1"."link" FROM "track" AS "t1" WHERE ("t1"."playlists" IS NULL)
при попытке выполнить:
peewee.OperationalError: no such column: t1.playlists
Причём в модели эта колонка есть (я её и туда и туда пробовал добавлять, весь день ебусь с этой сранью). Проще было уже голом SQL всё это написать 10 раз, чем с этой орм гадать что там у разрабов в голове было, когда они её писали.
Более того, заново создал и наполнил, даже специальную функцию для этого написал, чтобы экспериментировать.
Или ты про то, что Каскада срабатывает только во время миграции?
Подскажите, плиз. как обработать байты, если их засовывает в строку и в итоге получается вот такая фигня "b'\\x00\\x00'"?
я про то что каскада это же в sql CASCADE DROP и надо чтобы в таблице было определено
бля если честно хз, надо смотреть какие запросы генерирует peewee и че там в документации
мб другие аноны подскажут
Ну вот у тебя есть ForeignKey constraint, если ты удаляешь этот ключ, то на что собственно ссылаются все значения для него? На NULL? На несуществующий ключ? чекни
с django orm не сталкивался с такой херней
str() не помогает?
Там создаётся отдельная таблица соответствий посредством .get_through_model()
В ней ведётся учёт что к чему относится. Но вот как потом удалить элементы, которые больше не соотносятся ни с одной группой. Прямого доступа к этой таблице я не нашёл, явно её объявлять и описывать её логику, что за меня уже сделали - я ебал. Всяко есть какое-то штатное решение, задача-то тривиальная - избавиться от бесхозного мусора в БД.
>самоитерируемый индекс
Ты о чем блин? Если о БД, то ты лох - про autoincrement почитай иди в тред про БД
Инкрементируемый то есть. Здоровенный мануал молчит как сука на эту тему.
Да, пару слов всё же нашлось:
http://docs.peewee-orm.com/en/latest/peewee/sqlite_ext.html?highlight=autoincrement#AutoIncrementField
И как его объявлять в модели?
>если я буду проводить импорт import myfile
То импортируешь файл из текущей директории. Для импорта из других директорий надо дописывать их названия (import directory.myfile)
>То импортируешь файл из текущей директории
Домашняя дир тоже в пути есть по дефолту, что произойдет если в pwd и в home два разных файла с одинаковым названием? Первый попавшийся возьмет?
@app.route('/files/<filename>')
def get_output_file(filename):
Ничего не выходит, пишет:
FileNotFoundError: [Errno 2] No such file or directory: '/files/yobafile.yo'
Для начала покушать. Но не много. Сытое брюхо к учению глухо.
Затем найти системник. У меня вот на холодильнике валяется core 2 quad 95что-то-там, с 4 винтами в btrfs RAIDе. Тоже когда-то хотел и мог. Сейчас пылится.
Ставишь на него Ubuntu сервер, там вроже сейчас в альтернативном инсталлере уже есть LAMP, ставь сразу его. Дальше по мануалам.
От себя советую накатить webmin. Удобная штука.
Про настройку твоего mikrotik рассказывать не буду, мануалов куча.
Слушать 3-4 папки с файлами, при появлении новых файлов в этих папках копировать новый файл в 5-ю папку, переименовать копию в имя например folder_1_год_месяц_число_время
да.
Задачка простая. Там кстати ещё переменная в enumerate пропущена и хз будет ли вообще работать, не запускал. Если всё проверять и вылизывать, будет намного дольше.
да
Пишу для Армы 3 конфиг-файлы питоном.
10 мб exeшник позволяет иметь кучу (7 человек) людей, которые вообще не знают, как работает система конфиг-файлов внутриигровых, но при этом могут импортировать в игру готовый к работе контент.
Специально не учился, работаю 2 часа в день.
Всё, с чем встречался - написано нормально и разумно. ЧЯДНТ?
Что посоветуешь бротишка? Java?
Собственно, как мне адекватно засунуть ексепшены в один метод?(а потом и в другие). Он на этапе конструктора подключается к внешнему api и сверяет кое-какие права доступа, иначе программе лучше отвалиться
Подумал написать кастомные исключения. Как минимум, одно для проверки, что авторизация|подключение происходит успешно, а второе для проверки, что метод возвращает правильный ответ (если token и client_id правильные - в ответе должен быть список прав доступа для приложения)
https://pastebin.com/s3fKhSD0
Мне бы пример, как можно в своих (унаследованных от Exception) классах писать новую логику для использования в try/except блин какой то шизоидный вопрос получился, но и в гугле забанили
Ну вот например задание: создать список с названиями чего-нибудь. Затем создать пустой список. Затем с помощью вайл-лупа взять каждый элемент из первого списка, написать что нибудь про него и перекинуть в пустой список, затем показать, что эти элементы и правда в пустом списке.
Я не переварил принцип работы вайл лупа и не могу понять как нужно писать while True - или while [условие]. У меня постоянно бесконечные циклы вылезают. Хуита какая-то, вроде ничего сложного здесь не должно быть, а я чет затупил.
Там в первом списке типа никнеймы. Написать всмысле print(). "Юзернейм логинится" например - написать обращаясь к списку с юзернеймами. Потом перекинуть элементы из этого списка в пустой и написать "юзернейм залогинился" обращаясь уже к пустому списку. И все это через while.
Про поп знаю.
А у меня получилось вот так в итоге.
https://pastebin.com/QTZcczts
Все равно в конце через for делал.
Такое через while обычно только в очередях делается, когда множественный доступ к одному списку. В большинстве остальных случаях нормальные люди используют for element in list, или даже enumerate(), ибо первый лист проебать обычно не хочется, а память экономить нынче нет нужды.
Это просто задания в вакууме, для того чтоб я понимал как использовать while со списками. Вот только я не понимаю нихера.
А что непонятно-то?
Если это непонятно, срашно представить как ты дальше будешь... Может программирование - это не твоё?
Зачем набирать сильных духом и платить им за силу духа, если можно нанять быдло без вкуса, которые не чувствуют что это говно. Я видел таких.
https://stackoverflow.com/questions/5419888/reading-from-a-frequently-updated-file ?
или не открывай файл, а шли его внутрь через stdin
Парни, как сделать полное сохранение информации Traceback от эксепшнов? У меня парсер проходится по ссылкам и перехватывает эксепшны на каждом url, который обрабатывает, сохраняя при этом информацию об ошибке, чтоб потом было легче понять, что пошло не так:
Собственно Ошибка:
Traceback (most recent call last):
File "C:\PyCharmProjects\brower\posts\parsing.py", line 127, in work_on_resource
results = self._handle_resource()
AttributeError: 'NoneType' object has no attribute 'text'
Сохранение ошибки в список errors:
except Exception as e:
____errors.append({"exception text":e, "resource":url})
____continue
Сохраняется только последнее предложение (в данном случае: NoneType' object has no attribute 'text'), а я хочу чтобы сохранялась вся информация об ошибке, в том числе номера строчек, в которых она произошла
если это по работе то гугли sentry
если просто, то делай logging.exception(e)
если хочешь прям сохранять в errors, то так и делай errors.append(e)
если прям пиздец то гугли sys.exc_info и модуль traceback
Есть базовый класс с асинк методами (например)
class Base:
----def __init__(self): pass
----async _def some_func(self, *args):
----#тут некая сложная логика
--------return await result
И есть класс наследник, который работает как упрощенная обертка для методов родителя
class Child(Base):
----def __init__(self):
--------super(Base, self).__init__()
----def some_func(self, x, y, c):
--------return self._some_func(self, x, y, c)
Так вот, почему во втором классе функции работают без операторов async/await?
Точнее, если где-нибудь из мейна вызвать Child().some_func() вместо await Child().some_func(), то разумеется, будет ошибка. Но в самом классе Child можно написать
def zalupa(self):
----return [i for i in self.somefunc(...)], например
Как бы понятно, что это просто ссылки на методы в родительский класс, но все же, почему так?
Это ОН. Вам всем пизда
Сделай на Селениуме парсер питон вакансий на авито с сохранением кукис для авторизации и чтоб команда консольная по крону брала из БД спарсенные вакансии с авито и писала их в эксель файлы. Вот это примерно то что нужно на рвботе, а не ссаные задачи на 2+2 в степени 200 и ряды сходящиеся
у объектов есть поле category, надо отфильтровать все объекты у которых category != "Fiction" Это как делается?
Понял, качаю freebsd
На нем и делается.
Вызывается функция, чтобы принтануть возвращенное значение, в функции проверка и рекурсия это слово ведь именно это обозначает? в случае, если введено не то, что нужно. Но затуп в том, что при повторном вызове как бы теряется связь и print выводит None
Вопрос: как быть, чтобы всегда возвращалось нормальное значение? И желательно не высирая кучу строк, т.к. я это и решил сделать для похудения кода
теперь там есть async/await
долгие годы у юниксоидов существовали простые неписанные правила написания скрептов для cron:
1.настроить в crontab MAILTO
2. не выводить ничего на stdout, если задача работает нормально.
3. я сказал, ВООБЩЕ не выводить ничего на stdout!
но ебаные пхпшники не понимали как работает cron и почему эти правила важны, в итоге родился Celery и пр. девопс с доставкой логов.
В принципе, ты можешь использовать эти правила и не погружаться в остальную фигню. Если что-то сломается, программа вывалит в stderr или stdout информацию и логи придут на почту.
А пока все работает - тебя ничто не побеспокоит.
Насладаешься своим карантином на удаленке.
Я 3.7 поставил 32 битный. Но мне 3.7 нужен для установки определенных пакетов. На 3.8 чето мало кто хочет переписывать свои проекты.
хуйня, не работает
По какой логике Джанго ебучая ищет фикстуры? Создаю я json файл с fixtures для теста (TestCase), указываю в тест-кейсе имя моего файла, а при запуске теста он мне пишет что типо не нашел его. Чтобы нашел надо кидать файл в самый корень проекта - что захламляет директорию
Как сделать так, чтобы фикстуры лежали в той же папке что и юнит-тесты?
Кинь ссылку на двач, расскажи как тут заебись
Да без разницы вообще, 32 бита или 64. Только для каких-то специфичных бинарных либ может быть разница.
И версия не очень критична, ну то есть не вторая, конечно, и не совсем старая третья. 3.8-3.9 от 3.7 вообще почти не отличаются, обратная совместимость почти полная, если только не совсем какое-то легаси.
Можно ли его спокойно оставлять в коде или нужно сунуть в какие-то конфиги, которые будут в гитигноре?
.env, в который ты запихнешь в гитигнор. И не только для бд пригодится, а в целом для настроек.
Сервисный слой (или доменный еще), не обязательно именно файл. Это не столько к питону и джанго относится, сколько вообще к бест практис. Не уверен, что на питоне многие это практикуют. Гугли всякие паттерны, солид, DDD. Недавно коротенькую книжеку перевели по этой теме, но там примеры на ларке.
Ну так накати два пистона и юзай через лаунчер py
Классический aes, хули.
Тебе нужна либа pycroptodome
Она вроде всё умеет.
Там есть примеры. По-хорошему, ещё бы тебе надо теорию почитать про режимы шифрования и т.п.
Используй либо AES (блочный шифр, но тогда надо почитать про режимы шифрования), либо какой-нибудь потоковый, Salsa20. Примеры есть, по 5 строчек на шифрование-расшифровку.
Про Salsa20, после шифрования там перед текстом добавляется 8 байт из аттрибута nonce, это некая случайная величина, нужная для работы алгоритма. Так это работает, остальное в примерах совсем очевидно.
С чего бы это? Гит вроде должен нормально между разными осями переноситься
в системе гит стоит?
знать все позиции меню, уметь работать с клиентами, поработать на кассе, тогда можно стать старшим смены
Хули не понятного, что должен знать двачер что бы попасть хотя бы на галеру за 50-60к, какие фреймворки
Python 3, Pyramid, PostgreSQL, SQLAlchemy, Celery, Rabbitmq, Redis, Buildout, Rest API, немного JS, Socket.io, Docker, ASP.NET MVC, Web API, HTML/CSS, Linux, FreeSWITCH или Asterisk, Git, OOP, OpenCV, Beautiful Soup, Selenium, Scrapy, Pandas , Numpy, Matplotlib, Plotly, Scikit Learn, PyTorch, Tensorflow, Librosa, Requests, Pillow, Asyncio, Multithreading, Aiohttp, Kivy. Для начальной позиции достаточно будет на зп 35к достаточно будет
да курс от гоши гондаря по питону
и мануал по джанге
и на изичах залетишь на галеру, там годик перекантуешься и уже мидол. дальше проще - походи на собесы и можешь в банк или продуктовую компанию, там ещё годик и можно в сеньёры. а там уже и в сша или ес.
не слушай никого, это ж айти. тут голод кадровый!
о, это же мой послужной список, за исключением ASP.Net.
скинь-ка ссылочку . попробую туда устроится.
(но ASP.Net знает моя жена)
На метаните актуально расписано?
Я смотрю на список и вижу мобильный клиент видеоконференций, аналитику накопленных данных и традиционный бекэнд на django , которую пропустили, как само собой разумеющиеся.
Человек, который все это затащит, может существовать, но разве что на уровне ПМ-а. Программировать это все одновременно сложно.
до прека доебался
Достаточно на бесплатном хостинге не в роисее захостить бота и никакие прокси не нужны
Благодарю.
Error: b'You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.\n'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-7briw_re/psycopg2/
Что-то с postgres ему не понравилось, но я ж блин уже установил postgresql и postgresql-contrib себе в систему. Что ему не так? (на винде все и так ставилось...)
self.browser.execute_script('recaptchaCallback();') у меня вылезает ебаная ошибка, что капча уже зарендерена... я пытался передать решенную капчу в функции, но это ничего не изменило.
да, читал. не работает блин...
Решение: надо было поставить еще кучу трипиздячих пакетов через apt install
ну хули в линухе столько заебов? в винде psycopg2 работал без левой хуйни
Мне бот нужен с доступом к моей пекарне
Это нормально, просто дрочи дальше, решай задачки. Если что-то не получается - отдохни и вернись к этому позже. В конце концов ты поймёшь. Только не забывай заниматься регулярно - это самое важное.
import concurrent.futures
import math
PRIMES = [
112272535095293,
112582705942171,
112272535095293,
115280095190773,
115797848077099,
1099726899285419]
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
sqrt_n = int(math.floor(math.sqrt(n)))
for i in range(3, sqrt_n + 1, 2):
if n % i == 0:
return False
return True
def main():
with concurrent.futures.ProcessPoolExecutor() as executor:
for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)):
print('%d is prime: %s' % (number, prime))
if __name__ == '__main__':
main()
почему, если вставить print(1) после импортов, происходит пик?
я понимаю, что у меня 24 логических процессора (именно столько единичек), но почему так работает? Он с каждым открытием нового процесса исполняет код основного вместе со всеми импортами? У меня интерпретатор кривой, или так и должно быть?
import concurrent.futures
import math
PRIMES = [
112272535095293,
112582705942171,
112272535095293,
115280095190773,
115797848077099,
1099726899285419]
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
sqrt_n = int(math.floor(math.sqrt(n)))
for i in range(3, sqrt_n + 1, 2):
if n % i == 0:
return False
return True
def main():
with concurrent.futures.ProcessPoolExecutor() as executor:
for number, prime in zip(PRIMES, executor.map(is_prime, PRIMES)):
print('%d is prime: %s' % (number, prime))
if __name__ == '__main__':
main()
почему, если вставить print(1) после импортов, происходит пик?
я понимаю, что у меня 24 логических процессора (именно столько единичек), но почему так работает? Он с каждым открытием нового процесса исполняет код основного вместе со всеми импортами? У меня интерпретатор кривой, или так и должно быть?
Во-первых, единичек должно быть 25 (кол-во логических процессоров плюс один, который main). Импорты в каждом процессе должны быть по-любому, а почему запускается остальной код - хуй его знает, особенности имплементации. Засунь print в main, и он не будет выполняться 25 раз.
dumps можно генерировать строку и писать в файл, а в dump можно передавать указатель.
то есть мне нужно вообще весь код обернуть функциями еще и все импорты засунуть в main? только тогда он не будет исполнять лишнего при создании процессов?
Почему эта срока нормально работает почти везде кроме юпитер нотебуке?
>Rename `slave` to `embedded` in `runTouchApp`
Фу,блядь. фу, нахуй.
мы не знаем
у пиндосов просто нет пары ведущий-ведомый вот и страдают
надо предложить кстати
veduschii vedomyi
мы не знаем
telegram api работает поверх http , так что тут именно socks прокси должны быть. А mtproto какая-то хуйня телеграмовская, хз как ее поверх http делать
Банальный вопрос тогда, а где взять сокс5, который не будет отваливаться раз в час?
ну ток если найдешь доступный где, но бесплатно это значит что за него кто-то платит и с тобой делиться ровно столько сколько хочет
Есть вроде либа конкретно для работы с docx однако хз как там обрабатывать колонтитулы
ппц, уже каждый двачер знает, что бесплатный socks5 находится на ip 127.0.0.1 и называется клиент tor.
Обладая этим тайным знанием, можно уже в Software Architect к Наваленному податься?
>Our Standards
>Using welcoming and inclusive language
>Showing empathy towards other community members
блядь, они хоть знаю что у них весь сайт забанен в России?
СУКА У МЕНЯ СТОЛЬКО НЕНАВИСТИ К ЭТИМ МЕМБЕРАМ НАКОПИЛОСЬ
Чёрная обезьяна-говнокодер человек, русский - не человек. Двойные стандарты/чмополитика as is.
Особых требований нет, поэтому хорошо подойдет для начинающих изучение пистона, главное что бы у вас было желание пилить что-то вместе, развиваться и набираться опыта. Всегда буду рад помочь/подсказать и поделиться опытом разработки. В прожекте будет БД, GUI, хттп запросы, работа со сторонним АПИ, CI/CD, доцкер, ну и пистон 3,6+.
Фейкопочта для связи, пиши, не стесняйся -
Все время я юзал в Celery обычные процедуры для работы с БД - они ничего не возвращали и аргументов тоже не принимали, поэтому вопрос: когда task celery возвращает какой-то результат, то куда он идет? И в чем смысл аргументов таска, когда я запускаю какую-то задачу через cron? Где он эти аргументы "находит"?
Я всегда показываю своего 21 см Питона и на этом собес заканчивается (моим наймом офк)
наемного работника постоянно наемывают
Только я что-то нихрена не шарю, одна каша в голове: в чем разница между Gunicorn и ngix? Я думал это софт для сервака, на котором работает uwsgi-приложение, и ты ставишь либо одно либо другое, но оказывается gunicorn часто ставится под nginx... (шта?)
Где подробно разжеванно что происходит на серваке а в особенности в чем разница между apache, nginx, gunicorn, heroku - они для меня все на одно лицо
nginx это сервер общего назначения, он принимает и обслуживает все запросы, питоньи передает питоньему уникорну на обработку.
Так работает быстрее и масштабируется.
в госконторах доебаться могут до чего угодно
для работы с ГТ питон не сертифицирован, но в фсб на нем пишут напр
Сегодня исторический день для Киви. Сняли все баны сайта.
торнадо это когда ветер сильно дует, а твистед это такая шаурма в кфц
1.Какие модули вы чаще всего используете?
2. Если не брать во внимание собственную борду, то какие проекты не стыдно было бы отправить в портфолио? С блогами, как я понимаю, практически всегда нахуй шлют. В принципе интересно узнать, какого плана работы вы на собеседованиях показывали.
шиндоус сабсистем фор линукс 2
2. Инстаграмм запили свой, или свой тиндер,или к какой нибудь нейронке прикрути веб интерфейс и выводи результат
>но оказывается gunicorn часто ставится под nginx
Все верно. Ну ставь uwsgi под nginx, в чем проблема?
>в чем разница между apache, nginx, gunicorn, heroku
Apache и nginx - это веб-сервера общего назначения, а gunicorn/uwsgi - веб-сервера для пайтона.
Можно использовать gunicorn без апача или nginx, но потеряешь производительность.
Heroku - это просто PaaS-платформа.
Горите суки
c++, java, javascript, python это такие лингва франка среди яп
А я ебу? Нахуй этот селф? Нельзя оставить пустые скобки если нихуя не принимается?
нет, потому что там на самом деле передается self
помню в далеком 2000-м, когда переходил с бэсика зх спектрума на ооп, тоже охуевал так. Но вскоре осознал, как это классно и красиво.
на самом деле нет, все эти функции и классы просто кривые костыли, чтобы не юзать гениальный в своей простоте GOTO, но все продолжают делать вид, что так надо и вообще СТИЛЬ
>>27672
я вот когда питон изучал, в прошлом году баловался, к нлп сеточке GPT2 прикручивал апи вк, апи двач (в бреде тред создавал и сеточка общаласьс анонами, пока модер пидор не забанил)
Кстати, сеточку я претрейнил пару месяцев на русской поэзии, порно-частушках и спарсенного б-флуда, при этом юзал "кластер" из 8-и гугл колаб tesla v100, 8 акков бесплатных между собой конектил посредству гуглдискапи,и методом суммирования ошибок обучал.
Такой проект пойдет для портфолио?
в 2000-х перекатывался с япа на яп? и у тебя нет портфолио?
Нельзя print(""Hello"") или print ('"Hello"')
Например экранировать \"
Почему не sqlalchemy?
Ну формально он не лишний. Путь который начинается со слеша - абсолютный и ищется относительно корневой root папки «/», если же путь указан без слэша, то это уже относительный ищется и поиск идёт в парке проекта, которая передаётся через аргумент.
Можно через одинарную кавычку, можно экранировать с бэкслэшем, первый вариант предпочтительнее, если такого обрамления нет в строке, на крайняк можно обрамлять тремя двойными кавычками.
Где вы вообще такие только задание откапываете мудатские
Поддерживаю, нахуя вообще синтаксис нужен, лучше бы мы писали на русском, что хотим, а это уже конвертилось в байт-код, но чтобы работало быстрее раста. Короче питон - хуйня из под коня, раз так не умеет делать.
|Материалы | Количество|
Хуй. | 10. |
Пизда. |. 4. |
Хуй#1. |. 2. |
ХуйBig. |. 1. 1
Пандасом выбираю все строка содержащее Хуй и проссумировать количество, количество записать в переменную, НО нужно исключить если есть big
Как блять это сделать в сраном пандасе? Делаю через str.contains()
>Делаю через str.contains()
Можно и так, но лучше всего запихнуть всю фильтрацию в один regex паттерн.
Как называется нотация документирования функций, когда ты указываешь детально выходы, входы и вот это вот все? Читал не так давно, хочется перечитать.
>Как называется нотация документирования функций, когда ты указываешь детально выходы, входы и вот это вот все? Читал не так давно, хочется перечитать.
docstring
Да я знаю, что это докстрингом зовется. Но блин, было какое-то броское название, что то с животными связно %но это не точно%%
Таки вспомнил. Sphinx
Есть тут опытные питонисты, а ещё лучше - реально работающие питонисты, использующие питон для прода?
Отзовитесь, пожалуйста.
Для тестов
IDE остальное берет на себя
Есть, но я вынужденно на питоне работаю и за два года не перестал плеваться от него.
Нужен курс для анализа данных на Питоне. Несколько библиотек я знаю, но изучал сам, хотелось бы систематизировать все это. Ищу именно курс, так как знаю, что самостоятельно проебусь и опять буду в два часа ночи перед дедлайном смотреть на ютубе всезнающих индусов и их объяснения
>>27839
Раз вы в теме, то объясните идиоту зачем uvicorn запускать совместно с gunicorn?
Что такое ASGI понимаю, это асинхронный веб, а для чего связка WSGI + ASGI, если тот же uvicorn при малых нагрузках прекрасно сам справляется?
Сейчас есть веб-сервис для галочки на fastapi, связка такая
Reverse proxy Nginx -> uvicorn + FastAPI.
В данном случае нужен еще Gunicorn или нет?
Запускаю все как forked child из parent (там все сложно, веб реально для галочки и входящих запросов с гулькин нос).
Документация дерьмо, асинхронные библиотеки с псевдо robust connection (например aiomysql, aiopika) то еще дерьмо, в итоге костыли делал.
Например если падает MySQL на стороне, то нихуя пул не поднимается, только заново создавать объект.
Та же самая херня с aiopika, заново создавать соединение, канал и прочее.
Опыт 1+ год на одном проекте.
Из библиотек:
aiohttp
aiologger
aiosnmp
aiomysql
fastapi
aiopika
По сути только из-за того что не знаю что-то более экономичное. Зато хуяришь только так и это работает.
Заебался с asyncio и особенно с остановкой Process с вложенными asyncio loops.
Я косноязычный, но не могу более подробно объяснить все свои костыли.
В погоне за модой и приростом скорости нахуярил франкенштейна.
> Раз вы в теме, то объясните идиоту зачем uvicorn запускать совместно с gunicorn?
3 джанга насколько знаю может на одном uvicorn работать, иначе нужно 2 сервера, один для синхронной джанги, другой для вебсокетов.
while (True):
i[0] += 1
print(i)
Нужно, чтоб 'a' заменялась на следующий ASCII символ, чяднт?
а говорят кресты высокоуровневые
i = "a"
x = 0
for x in range(28):
z = ord(i[0])
z += 1
i = chr(z)
print(i)
>>28633
Так, спасибо отписавшимся может ещё кто появится.
Тогда у меня маленькая, о настойчивая просьба: нужен кто-то вроде наставника по питону, для того, чтобы иногда давать более-менее приближенные к реальным условиям задачи, да ревьюить говнокод.
Все эти задачи, да петпроекты - хорошо, но они оторваны от реалий, и решения всяких задач на строки, простые числа, парсинг двачестраниц никаких плюсов в области практики фактически не дают.
Поэтому, если кто-то соблаговолит немножко потратить немножко времени, буду признателен.
А для celery асинхронный серв не нужен?
>>20203 (OP)
И кстати да: если я на один сервер залью 2-3 разных джанговских проекта (для экономии средств канешн), то как мне заставить celery/redis работать на разных проектах и не мешать друг другу? Запустить разные redis-server с разными портами? Или это нах не нужно?
Господа , помогите пожалуйста с задачей, не понимаю где ошибка в коде
(Задача: Запросить у пользователя размер массива. Задать длину динамического массива. Запросить и считать данные массива у пользователя.
Дана последовательность чисел а1, а2, …, аn. Найти положительную подпоследовательность наибольшей длины.)
Код:a= int(input())
xyz=[]
for i in range (a):
xyz.append(x)
dlina_xyz = len(xyz)
numbers= []
for i in range(a):
1 =[]
for j in range(i+1, a):
if xyz[j]>0:
1.append(xyz[j])
else:
numbers.append(1)
break
print(numbers.sort(key=len)[0])
С помощью чего можно заполнить таблицу (6к записей)? Что почитать, посмотреть?
Ещё нужно нарисовать график, но основное это записи
>С помощью чего можно заполнить таблицу
Теоретически - pandas.
>Ещё нужно нарисовать график
matplotlib или seaborn
если так:
AppDir/
modules/
module1
module2
utilities
И app.py в Module(n) имеет from utilities.someutil import UtilityClass,
то решается прописыванием PYTHONPATH="$WORKING_DIR/AppDir"
У меня есть класс и в нем 2 листа: ид вк и телеграмма.
https://ideone.com/lONvxP
Я хочу обьеденить их в 1 лист. То есть хочу чтобы был лист из элементов и у каждого ид было какое то свойство, вк оно или телеграмма. Как это можно сделать чтобы было красиво? Подскажите пожалуйста.
то есть существует просто вариант использовать tuple, но тогда нужно будет обращаться к ид с помощью
for i in vk_chats:
print(i[0])
нельзя чтобы сразу print(i)?
В чем проблема проблема запилить абстрактный класс с описанием методов и потом просто расширить class TgChat(AbstractChat) ?
Я новичок. Можешь подсказать где про это прочитать или можешь показать пример реализации?
ideone лег.
Короче, то что ты написал это конструктор. Ты можешь в таком случае сделать единый метод add_chat, remove_chat. Добавить атрибут self.im_type = str. Задавай его как хочешь, при создании объекта или уже после.
и тогда ты создаешь объекты
vk_client = Chat('vk')
tg_client = Chats('tg')
Ну и методы add_chat, remove_chat для них одинаковые без ебли.
Я саму задачу не понимаю. Чего хочешь добиться?
https://habr.com/ru/post/330034/
чаты можно кортежами описать, чтобы не ебаться с конструктором.
> А для celery асинхронный серв не нужен?
Причем тут celery? Он вообще в отдельном процессе работает.
Спасибо. А ещё такой вопрос: Как мне удалить индекс или сделать так чтобы он не отображался или как убрать его визуально при формировании файла?
Попробуй пандас
Следующий код должен парсить /b/ и писать содержимое всех постов в файл. В консоль выводит на ура, а при записи в файл упорно выдает ошибку, сколько бы я ни прописывал 'ignore'. Что не так?
Это логический оператор, если первое вычисляется в true, то возвращает второе.
Я хз что ты хотел сделать.
Ну по-идее, тебе надо передавать туплю\список или *args в функцию, а там уже смотреть документацию, поддерживает ли этот contains множественный поиск.
1 картинка - это то, что должно получиться в идеале.
2 - говнокод
Я не знаю всех операторов, к сожалению... и весь синтаксис еще не знаком. Что дальше-то делать нужно? Чтобы выдавался текст после (A1,A2,Б1,Б2).
>я после работы жить то не всегда хочу
Смени работу или пересмотри отношение работа:личная жизнь.
> с тобой возиться
Мне не нужно, чтобы у меня над душой стояли и натаскивали.
Мне нужна практика, приближенная к реальной разработке и иногда код-ревью.
А кто это сделает лучше как не настоящий разработчик на питоне?
> Смени работу или пересмотри отношение работа:личная жизнь.
чтобы бы тебе хорошо стало?
Хочешь практики - иди на работу
>чтобы бы тебе хорошо стало?
Нет тебе.
>Хочешь практики - иди на работу
В процессе.
Какой-никакой опыт разработки лучше чем никакого.
бамп
Какие подводные от юзания ThreadPoolExecutor в django для связи со сторонними ресурсами и связи с бд?
бамп вопросу
Потому что понятия не имею как именно треды могут повести себя в долгосрочной перспективе. Может они вдруг захотят не завершаться, я хз
В джанхе/питоне мультитрединг это всегда лишний шанс прострелить себе брюхо
https://www.youtube.com/watch?v=_woaM9DrQIU
Под свьзью со сторонними ресурсами ты что подразумеваешь?
Норкоман.
Есть у кого в сохранёнках ТГ канал с интересными фишками питона, как когда-то тут скидывали подобный канал, но в Твиттере? Поделитесь кто-нибудь
Конечно pandas
Благодарю
>>127724
Кто-нибудь деплоил фласк/джанго проект на собственном ПК в качестве сервера?
У меня 2 ПК, на одном из них Убунту, можно ли на основе него заделать сервер-хостинг, который будет держать мой проект? Какие подводные?
В общем, я бы хотел систематизировать свои знания, потому что я просто рандомно гуглил нужные мне вещи. Можете посоветовать какие-то курсы по анализу данных? Мне нужно просто систематизировать то, что я знаю. Самостоятельно у меня не хватит мотивации все это учить
Просто посмотри scrapy, там всё это уже сделано.
Я решил способом как на скрине, но есть ощущение что понаписал говна.
https://www.geeksforgeeks.org/python-frequency-of-each-character-in-string
Строку предварительно разбей на слова.
Нужно посчитать не сколько раз встречается каждое слово, а комбинации из 3-х слов
Группируешь слова в пары по 3 слова, эти пары собираешь в одну строку, считаешь повторения, выбираешь самое частое повторение соединенной строки, разбираешь строку на слова и показываешь петуху результат.
Спасибо, анон, просто странно, что импорт фейлится именно в этой папке, хотя точно такой же импорт работает в соседней
> Кто-нибудь деплоил фласк/джанго проект на собственном ПК в качестве сервера?
да
> У меня 2 ПК, на одном из них Убунту, можно ли на основе него заделать сервер-хостинг, который будет держать мой проект?
да
> Какие подводные?
нужен статичный айпишник
Раньше в моделях у меня было поле category, в котором стояло CharField, там собственно лежала одна конкретная категория. Я понял, что в некоторых случаях уместно обавить несколько категорий в модель, то есть заделать вместо CharFild ArrayField (благо Postgres позволяет). Пусть даже у меня есть Django ORM, но как безболезненно заменить один тип поля другим? Я хочу чтобы вместо одной строки везде появились списки, в которых лежат строки, то есть где раньше лежала просто строка "string" должен появиться список с единственный элементов: ["string"], как это сделать?
надо делать миграцию, мб django сам автоматически сгенерирует, но вполне вероятно что придется ебашить ручками
Вкатился недавно читал на метаните, базовый синтаксис нормально подают, хватило, дальше укатился на пандас
>сунь в любой онлайн-корректор кодировки
Да это понятно. А вот как в питоне такое декодировать?
делоешь словарь из букв (или возможно пары букв будет достаточно), кодируешь каждый каждой кодировкой. Потом инпут проходишь, ищешь в этом словаре совпадение, значит кодировка скорее всего эта. Декодируешь
или открой сорс код онлайн декодировщика и скопируй оттуда
Django will choose the first template it finds whose name matches, and if you had a template with the same name in a different application, Django would be unable to distinguish between them. We need to be able to point Django at the right one, and the best way to ensure this is by namespacing them. That is, by putting those templates inside another directory named for the application itself.
current_time = str(datetime.datetime.now().time())
И сравниваю с временем в другой промежуток времени.
Так корректно сравнивать?
Сами даты с типом datetime.time я сравнивал. Но тут же у меня получаются две строки вида "22:20:10.10211" и "22:21:11.15211". Как питон между собой их сравнивает?
Класс реализует кучу всяких методов для типичных операций вроде сравнений, математики и того же вывода как строки.
Тебе внутренняя реализация должна быть похуй.
да
короче когда данные по кодировке похерены ее надо детектить, онлайн кодировщики с помощью метода тыка угадывают
гугли python detect encoding там найдешь либу вроде chardet можно другую какую-нибудь
Есть FileField, хочется, чтобы можно было только загружать и удалять файлы. Делаю editable = false и в админке пропадает кнопка "Обзор", то есть возможность загрузить файл вообще (как в StackedInline, так и при создании объекта модели. Как решить?
есть ссылка на github?
Строка это строка, объекты datetime это datetime. Можно в обе стророны конвертировать, очевидно.
Как строку, алфавитно. Если в подходящем формате, то даже правильно сравнится.
А в винде что происходит?
Никуда не записываются, они устанавливаются в актуальном окружении, которое уже инициализировано из этих файлов и т.д.
Спасибо, уже разобрался
Первая считает сумму определенных ячеек в первом эксель файле
Вторая находит определенную строку в другом файле
Третья присваивает значение первой в строку которую нашла вторая и удаляет строки из первого файла тк они отработали и не нужны
После первого прохода функции принимают новые данные
И так раз 100-200
>>30748
https://pastebin.com/eFW0Peu3
вот такая хуйня у меня
никогда не писал на питоне да и ввобще первый раз че то сделал
Просто нормально советовать нет смысла, ибо ты не поймешь, да и тут всё переделывать, а колхозить колхоз неохота.
Хуй знает делал как мог, итог теперь такой, и даже это быстрее того что я делал руками
Да я и не прошу просто думал засунуть эти три хуйни в конце ка нибудь и гонять их подставляя значения
> думал засунуть эти три хуйни в конце в какой нибудь цикл и гонять их подставляя значения
Обосрался малеха
>>30750
>>30775
>думал засунуть эти три хуйни в конце в какой нибудь цикл и гонять их подставляя значения
>calc('толщ.2,5', '10ХСНД')
>writermy('Лист стальной толщ. 2,5 мм ст.10ХСНД ГОСТ 5521-93')
>delmat()
Можно запихнуть в класс
Еще можно через ipywidgets в jupyter notebook использовать интеракт если известны уникальные значения, используй dropdown
Но лучше попробуй через класс
реально снеси все, и с чистого листа запили ООП класс
> снеси все,
Щас это в работу пущу и дальше буду допиливать
В чем прикол юпитера? До сих пор не пойму нахуй он
Матплотлиб работает слишком медленно, какую библиотеку для этого использовать? Насколько я знаю, есть старая pygame, а еще недавно читал про новый, то ли входящий в стандарт, то ли де-факто самый популярный фреймворк для 2д графики, но забыл как он называется и не могу найти. Подскажите пожалуйста.
Можешь на коленке написать собственный рендеринг на опенгл или директиксе. Миллион прямоугольников на 60 фпс будешь рендерить не напрягаясь.
В реальном времени - это 30-60 кадров в секунду. Что ты там делаешь, если у тебя матплотлиб медленно работает. Каждый раз новую фигуру строишь вместо clf?
Вроде как проще с html, css, js и php, но не нравятся они мне. Открываю hh, запрос - python, искать только в названии вакансии
Посмотри 10 уроков отсюда https://www.youtube.com/watch?v=LqPPvPKUfV4&list=PL1P11yPQAo7opIg8r-4BMfh1Z_dCOfI0y&index=1
2 часа и ты батя в рисовании прямоугольников
Отрисовать массив из 256x256 разноцветных прямоугольников у меня занимает почему-то на несколько порядков дольше, чем я ожидал. Сверхъестественно медленно, короче.
Надоедливый helptext в принципе было несложно подавить через:
span.helptext {display: none;}
в css/html теге style
Однако что делать вот с этими "памятками" на пикриле ума не приложу. Они зашиты в самой джанго-форме, там даже классов и айдишников нет - просто теги ul и li, простыми манипуляциями с темплейтами их не дропнуть, что именно в джанго-форме django.contrib.auth.forms.UserCreationForm надо "дернуть", чтоб их убрать? Вариант с полным подавлением ul через display: none - временная и дурацкая мера
По-моему, там надо ещё подключить бутстраповую js либу, чтобы это взлетело.
Проверил, скоро отвечу.
Имел ввиду время, а не дату.
Через locals и globals можно получить мапу локальных переменных, если она внутри функции, или глобальных и и неё уже достать что нужно. Вот только подумай еще раз нахуй оно тебе.
Нде сука self и конструктор?
должно показывать актуальный курс доллара, в консоли
второй скрин как должно быть.
Выведи в консольку или сразу в файл html который ты получаешь, посмотри что не так
Типо так? У меня просто код в браузере открывается.
А в консоли где я должен видеть результат пишет:
Process finished with exit code 0
У тебя функция check_currency() (16 строка) сама в себе вызывается. Удали её оттуда и напиши без отступа (на 18 строке).
Вкатывальщики, ебать.
Тоже всегда максимально удивляло это. В примере пишут:
input("очень длинный текст типа введите количество говна" ) и они берут и прям так и пишут. Нахуя?
Есть список типа: b = ['', '', 'version 15.0', 'service timestamps debug datetime msec', 'service timestamps log datetime msec', ' ip address 10.0.100.1 255.255.255.0', '', '', '', '', '', '', '', 'line con 0', ' exec-timeout 0 0']
Надо удалить из него пустые строки.
Если делаю
for c in b:
if (c == ''):
b.remove(c)
print(b)
То часть кавычек остаётся:
['version 15.0', 'service timestamps debug datetime msec', 'service timestamps log datetime msec', ' ip address 10.0.100.1 255.255.255.0', '', '', '', '', 'line con 0', ' exec-timeout 0 0']
Если делаю так:
d = []
for c in b:
if c != '':
d.append(c)
print(d)
То всё ок:
['version 15.0', 'service timestamps debug datetime msec', 'service timestamps log datetime msec', ' ip address 10.0.100.1 255.255.255.0', 'line con 0', ' exec-timeout 0 0']
Почему первый способ не удаляет все кавычки?
remove удаляет первое входждение.
Проще всего через компрехеншен или через мап-фильтр, если нужна ленивость.
Хм, спасибо
b = list(filter(None, b))
а если захочешь пострипать, то как раз с мапом:
b = list(filter(None, map(str.strip, b)))
# Не проснулся еще, дебич, самофикс
Так действительно удобней
С подключением?
не стукайте
Чувствую, что нет. Иначе зачем словарю название
Есть два примера:
1) 21.01.2020
2) 21.п1.2020
в первом случае нужно достать "01", во втором "п1", можно ли одной регуляркой решить эту задачу, чтобы не нужно было потом стрипать точки и убирать букву? Или я в корне не понимаю регулярки и суть в том, чтобы сматчить по шаблону что-то типа "01" и "п1" и потом уже с этим манипулировать?
вкатываюсь из SQLля
в каком месте она платная??? мм дебик?
{a : 10, b :20, ...} или [{a:10}, {b:20}, ...] В чём глубинный смысл использования второго варианта и почему он так часто встречается в различных API?
Приведи примеры, где встречается второй вариант.
там на питоне какое-то апи, а сам сайт на пхп. очевидно же.
https://pythex.org/?regex=^\d{2}\.([п,0-9]{2})\.\d{4}$&test_string=22.01.202022.п1.2020&ignorecase=0&multiline=1&dotall=0&verbose=0
Только зачем оно тебе, если тут и split сойдёт.
Имеет ли место в реальной питонистской практике написание в функциональном стиле?
Чё-то я сбит с толку. Почему вот эта хрень с пикрила внезапно работает?
Мы создали одну функцию внутри другой, причем внутренняя counter обращается к переменной из внешней области видимости (т.к. мы обозначили ее через nonlocal). После вызова makecounter() мы получаем функцию, которая при каждом вызове дает нам увеличенное на 1 значение счетчика (причем если вызвать makecounter() несколько раз, то все полученные функции будут независимы друг от друга). Как так-то? По идее полученная функция должна пойти искать переменную i во внешнем scope, не найти ее и выдать NameError. Так почему этого не происходит?
Замыкание же. На переменную i есть ссылка в counter , поэтому она осталась жить после завершения функции makecounter.
Это nonlocal переменная, удерживаемая в замыкании, как правильно сказано.
Смотря где, живу в миллионике, на весь город 3-4 вакансии при чем везде middle+ требуется, еле вкатился год назад в полугосконтору, в целом язык приятный, пишется легко, некоторые вещи интуитивно пишутся, но на удаленку нужен опыт, брал текстовое недавно на удаленку в Московскую контору, ппц там и асинхронный код нужен и редис и селери и тесты чтобы были в итоге понял что не тяну. Пока сижу и не выебываюсь
Потому что в варианте с листом у тебя гарантировано идёт четкая последовательность объектов(словарей). В случае с простым словарём до версии 3.6 ты не мог завязываться на то, что ключи и значения у тебя будут в той же последовательности как они были добавлены. Т.е. обычно в словарях ключи со значениями хранятся рандомно и при последовательном переборе всегда будут идти в рандомном порядке.
tkinter
о чём проект в двух словах, ну или на какую тему?
Если у тебя обычный инпут в консольке через while, то что мешает тебе просто записывать в переменную время предыдущего ввода
Дефолтный input не читает ввод посимвольно, а только построчно.
Под виндой например, что-то такое можно сделать:
import datetime
import msvcrt
dt = datetime.datetime.now()
while True:
____ch = msvcrt.getch().decode('cp866', errors='replace')
____print(f'{dt:%X}\t{ch}')
____dt = datetime.datetime.now()
https://pypi.org/project/pynput/
Вот ещё библиотека. Включаешь Listener вторым потоком и сохраняешь в виде списка словарей или кортежей.
{'event’: datetime.now(), 'key': key} или (datetime.now(), key). Я люблю hashmap, чаще всего использую словари. Потом проще ориентироваться или вообще сразу в JSON перегонять
Сделал класс database, который на ините подключается к базе данных. Этот класс имеет несколько методов для чтения и записи в бд.
Как правильно:
- подключаться один раз на ините
или
- написать декоратор коннект/дисконнект и украсить им методы чтения/записи
Вопрос по-другому: нужно ли переподключаться к бд перед каждым действием или стоит просто держать коннект всегда открытым?
Удобнее в файл и импортировать как
import modules.variables as vars
Можно будет стучаться к переменным через vars.var
+ редактировать плейнфайл легче, чем класс
Ок спс, я так понимаю туда не нужно пихать иниты сэлфы декораторы? Просто класс с переменными?
Туда даже класс пихать не надо, просто переменные.
ФАЙЛ variables:
var1 = "хуй"
var2 = "зуй"
var3 = print
и тд.
В некоторых ясейках содержатся числа например 2,5 20 200 0,08 тут проблем нет но в некоторых 2,5/8 8 на 25 сука прям так и написано в ячейки
Тогда тебе точно никак не помочь.
Можешь написать свою функцию decrypt_pidoras(string), которая будет искать каждый случай пидораства в строке и исправлять.
Но, скорее всего, ты её дольше писать будешь. Легче файл ручками поправить автозаменой.
Думаю искать строки с текстовым полем в столбце вырезать эти строки и сохранять в отдельный файл а потом оттуда руками пердолить дальше, как же горит от совков которых посадили за пека
Ебать ты смелый, отдуши бро, наставил нубло на путь истинный
Да пока играю в дотку пиздан тянет дз с сайта школы решает, пишет, распечатывает
А что не так?
>нужно ли переподключаться к бд перед каждым действием или стоит просто держать коннект всегда открытым?
Зависит от БД, к которой ты обращаешься. Если там параллельно с тобой ещё n людей/приложений стучатся с инсёртами/делитами/хитровыебанными селектами с 100500 подзапросами, то естественно держать коннект не имеет смысла, т.к. будут локи, если ты обращаешься к тем же сущностям.
Если у тебя выборки никак не связаны, то не имеет смысла в принципе держать сессию после отработки запроса. Если у тебя выборки связаны (или создаются связанные временные таблицы), то лучше передавать сконкатенированные запросы через ; в одной сессии, так они могут быстрее отработать из-за кэша.
>т.к. будут локи, если ты обращаешься к тем же сущностям.
А разве эта хуйня не должна решаться созданием пула подключений? Т.е. пул один из которого выдаются подключения по требованию, а если сущность залочена - 2й ждет пока в пуле освободится место для подключения?
Вот у меня есть css-таблица, когда я вывожу форму в темлейт через {{ form.as_ul }} то каждая строчка уже выводится через <li> и я не могу ее кастомизировать, добавляя классы/айдишники в тег. Это как-то вероятно можно сделать внутри самого класса Form, но как?
та же история и с Selenium :
> r.find_element
почему не xpath ? Он тормозит или сложен массам?
Просто размышляю.
>>32398
>А разве эта хуйня не должна решаться созданием пула подключений?
Сразу из коробки - нет.
https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-connect.html
Отдельно - можно, но класс там не такой гибкий.
>A pooled connection cannot be reconfigured using its config() method. Connection changes must be done through the pool object itself, as described shortly.
https://dev.mysql.com/doc/connector-python/en/connector-python-connection-pooling.html
Для большинства случаев этого достаточно.
Для всяких хитровыебанных случаев есть селекторы или xpath, да.
Переписал парсинг хтмлин с bs4 + lxml через findAll на чистый lxml через xpath. Прирост по скорости был от x4 до x10 (вместо 0.3-0.8 секунд стало 0.03-0.2 секунд).
Там не findall тормозит, а в целом построение структур, чтобы он и другие функции работали. Можно парсить частично, тогда будет быстрее.
погоди, я не про хитрые случаи, а некую массовую работу инженера парсинга.
Разве не удобнее работать ТОЛЬКО с xpath ?
Я хз, примерно одинаково.
xpath это как регулярки применять на любую работу с текстом. Да, можно и привычно, но зачастую оверкилл.
нинада обижаться. я сам домашку делаю. спросил прост
Не отвечает на мой вопрос.
Я вот чего хочу:
заниматься парсингом с помощью аддонов в браузере и визуального подбора выражений :
ткнул в элемент - получил xpath
модифицировал - получил xpath, возвращающий все серию данных.
такие аддоны есть, но они не отменяют необходимости набирать xpath руками.
но когда тут вижу BS4, начинает подташнивать.
Неужели все эти люди что-то знают и BS4 удобнее?
а, ну и классическая парсинговая проблема:
как сделать такие якоря, которые не перестают работать при смене дизайна? что статистически выгоднее?
>ткнул в элемент - получил xpath
>модифицировал - получил xpath, возвращающий все серию данных.
Ты всё это можешь делать из обычного окна консоли браузера, курсором выделяя css селекторы и копировать их в код.
>как сделать такие якоря, которые не перестают работать при смене дизайна? что статистически выгоднее?
Плодить кучу иф-элсов или справочники или модель мл обучить.
У каждого объекта Post есть свой порядковый integer номер (который канешн не повторяются) - получается что-то типо динамического массива, эти порядковые места могут меняться в зависимости от информации, введенной юзером на фронте
Как сделать так, чтобы во время транзакции не происходило ошибок? Допустим нам надо "перевернуть" список изменив порядковые номера на "обратные": мы имеем queryset {Post(n: 0), Post(n: 1), Post(n: 2)}, начинаем с начала и меняем порядковый номер поста с n=0 на n=2, но пост с таким номером уже есть в базе и из-за ограничения unique, у нас вылезет ошибка. Как сделать чтоб ее не было?
list_of_lists = [[1, 0, 0, 1], [1, 0, 0, 0]]
arr = np.array(list_of_lists)
---
[list([1, 0, 0, 1])
list([1, 0, 0, 0])]
Нафига вообще может понадобиться такой расклад? Они там наркоманы что ли?
Как мне получить двумерный массив из списка списков или хоть как-нибудь вообще?
А ржака в том, что в 1 случае из 10 примерно arr.ndim даёт "2", в остальных - "1". Я вообще не понимаю как так! Одна и та же прога даёт разные результаты при разных запусках!!!
Всё, разобрался, там разный размер списков генерится.
Я уже заметил что ошибки вылетали на других приложениях.
Добавил в класс методы опен и клоус и вставил эти методы во все коннекты. По ощущениям, разницы во времени нет.
Спасибо за объяснение.
Пул нужен если у тебя постоянные обращения в базу. С точки зрения ресурсов у тебя снижается время и стоимость I/O операции, то бишь ты не коннктишься к базе, а берешь готовое соединениее.
Пул нужен если многопоток или асинхронка используешь.
Thread хуже асинхронки в плане сложности управления и по сути если хочешь распределить нагрузку через многопоточность с загрузкой ядер, то лучше Process.
Алсо, сразу перекатывайтесь на asyncio.
Я не понимаю зачем в 2020 году все ещё мучают Flask и Джангу.
ORM априори медленный, stored procedure надёжнее и потом в случае изменений не придется код переписывать.
Всё намного проще.
Бот в телеге данные раньше писал в джейсон, а я переделываю на базу данных.
Бот мой, выполныет задачи синхронно последовательно, я его сильно не тороплю.
Ну если одинаковые параметры для конекшена я не думаю что это будет проблемой. Вот мне интересно как вообще с дедлоками бороться, есть mysql база, к которой я подключаюсь с помощью Aiomysql. Пул вроде сконфигурировал как было у них в документации https://aiomysql.readthedocs.io/en/latest/examples.html , метод сделал точно такой же как в последнем примере, т.е. коннект и курсор оно открывает/закрывает само с помощью контекстного менеджера, но при нагрузочном тестировании на 100+ пользователей оно начинает выдавать некоторое количество ошибок с дедлоком. Увеличивая размер пула получается уменьшить размер ошибок, но какой-то % все еще остается. Как с этим правильно бороться, или просто масштабировать ресурсы для бд/сайта?
У меня с некоторых пор развилась на фласк аллергия. А когда я увидел, как внутри написан сам фласк и веркзеуг (от того же автора) - необратимо охуел и выхуеть до сих пор не смог. Это же пиздец блядь.
InnoDB, Linux? Prepared statements/stored procedures? Больше исходных данных надо.
Я сразу начал со starlette и перескочил на FastAPI, так как фреймворк по сути доделанный Starlette.
Поддержка Pydantic, OpenAPI, SQLAlchemy. Но все дрочат на Django и все курсы веб питона именно про Django.
Курсор лучше закрывать вручную. Использую context manager, но в блоке try except else в конце ещё блок try except с закрытием соединений (например для aiohttp).
Ну честно, хуй его знает, что будет в продакшене с большей нагрузкой чем в предпроде. По стоимости операция ни о чем.
Тем более можно задавать wait_for(timeout=0.5).
InnoDB, тестировал на Шиндовс, Prepared statements. Я вроде и смотрел саму либу aiomysql и контекстный менеджер выглядел нормально, но если самому закрывать и конекшен, и курсор в конце контекстного - я терял 1/3 запросов за это же время, но % ошибок падал с 10-11 до 1-2
Если курсор закрывать самому оно почему-то теряет в количестве обработанных запросов за это же время, но тенденцию к уменьшению ошибок при этом я тоже заметил, спасибо. Пока заткну while'ом, в котором буду ловить дедлоки и выполнять операцию заново при нем, так вроде более-менее выходит по запросам, просто интересно в самой хуйне разобраться.
>Если курсор закрывать самому оно почему-то теряет в количестве обработанных запросов за это же время, но тенденцию к уменьшению ошибок при этом я тоже заметил
Точнее не так, не на те данные посмотрел. При закрытии курсора теряется немного запросов, но % ошибок тот же, если закрывать конекшен из пула самому тогда уменьшается % ошибок, но теряется намного больше запросов за то же время.
Скорее проблема MySQL для шиндоуса. Попробуй на линуксе с теми же настройками.
В линупсе если не ошибаюсь нативный concurrency MySQL.
Понятно, спасибо, разверну завтра на убунте и попробую прогнать там.
https://pastebin.com/ChVxgFAe
Откуда вы такие лезете?
>Добавляет объекту указанный атрибут.
>setattr(obj, name, value)
>obj : object Объект, который следует дополнить атрибутом.
>name : str Строка с именем атрибута. Можно указывать как >имя нового, так и существующего атрибута.
value : Произвольное значение атрибута.
Как тогда? Через if\else ловить исключения?
где ты такое прочитал
сохраняй в облако
Потому что это на джанге проще всего наговнокодить среднестатистический сайт, примерно столько же нужно усилий, как в случае с пыхпых-говном. Логично, что уровня особого для этого не требуется. А если прямо, ты вообще много видел в природе питонистов, которые действительно понимают, как надо работать с этим языком, и проекты которых не превращаются в кашу по достижении полутора тысяч строк? И я не про стиль, а про общую архитектуру. Синглотоны, глобальные переменные, шаманства с атрибутами там, где все это не нужно. Я лично за всю свою питон-карьеру (13+ лет) видел где-то ну с десяток человек, которые умеют писать на питоне. У остальных же не код, а ебучий поток сознания блядь.
программировать умеют только джависты. Жс-пидоры и питонисты - просто дети, играющиеся с кампухтером. Даже на крестах мало кто умеет программировать из-за изначальной заебистости языка, наплодившего кучу сущностей и параллельно облегчившего быдлокодинг для вкатывальщиков
Дооо, особенно жависты, ага.
Аноны, пишу приложение на kivy под андроид. Apk buildozer'ом собирается без ошибок, но при запуске приложения оно сразу же падает. Посмотрел логи на телефоне, он пытается найти main.py по пути, который у меня используется на десктопе и ему это ясное дело неудаётся.
В buildozer.spec: source.dir = .
Собираю командой buildozer android debug
Что за нахуй, он ебанутый?
Столкнулся с такой проблемой. Дело даже не в питоне, а скорее в иде.
Надо было сделать новый чит-код для игрухи (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 все нормально работало?
я предполагаю, что я не знаю чего-то прям простого, и прошу вас сказать в чем проблема или же, в какую сторону копать __init__.py
Спасибо, анон!
Я попробовал решить это через цикл, но я безграмотный хуй.
Готов заплатить за всю хуйню, только помогите решить.
Это копия, сохраненная 6 декабря 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.