Это копия, сохраненная 24 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1793243 (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
>tells everyone that Python takes name from 'Monty Python' and has no relation with snakes
>proceeds to make a snake alike logo
дайте ссыль
Денег платят в два раза больше.
Все равно не хватает, потому что все тратишь на алкоголь и психотерапевта.
Какая же стрессовая работа, яебал.
Этот инвалид пытается у тебя спросить, какая у тебя з/п. Но ему тяжко это даётся
Ну его все равно не впечатлит. Я ж не в ДС, а в дальнем регионе.
Я просто мимо заметил что он до формулировки докопался.
Ну, ура!
Желательно пошагово
Какие задачи решать если можно сслыки чтобы качать скил
И какие проекты писать, начиная от самого простого и сложного, чтобы вкатиться макс комфортно.
И чтобы набивать портофолио, что нужно чтобы уже было написано, чтобы удивить РАБотодателя.
От себя - уже знаю синтаксис, про ооп, смотрел пару курсов пробовал до конца дочитать лутца, но нет, укус битон - да, по часу всего на ютабе - вообще вот он я.
Шо там за платная конференция?
Спизженные видео будут?
Интересно было бы послушать некоторых
Ну че там? Полсуток уже прошло... Оч надо.
Да.
Гугли системный анализ.
>Пользуетесь ли вы в процессе разработки блок-схемами?
Нет.
>Ну или вообще какими-нибудь визуализациями структуры проекта, моделей бд итд?
Без задней мысли сразу начинаешь фигачить заготовки классов. Для начала продумываешь интерфейсы, а тела методов оставляешь пустыми с пометкой TODO.
Да, для себя, перед началом работы, визуализирую схему работы системы, продумываю на схеме различные варианты. Рисую модели БД в pony orm эдиторе, эту схему скриню и в документацию пихаю. Иногда просят обрисовать общую схему работы, тогда иду в Фигму и рисую общую блок-схему.
Почему F работает не так как в документации? Написано, что можно применить выражение к уже полученному объекту, но в итоге оно выдает ошибку, что я пытаюсь сложить инт и CombinedExpression, хотя запись в БД обновляет. Но если вместо готового объекта применить это на кверисет от фильтра через апдейт - все нормально без каких либо ошибок, я что-то не так понял?
Упустил моент с релоадом объекта
да ет понятно, мне бы с материалами по этим темам актуальные.
что почитать,где посмотреть и так далее.
Во-первых, если у тебя a это объект типа Author, то тебе нужен просто а.id
Во-вторых, если a это объект типа Artclie, то тебе в твоем случае нужен article_author_id
В-третьих, зачем тебе приставка article_ в полях? Тебе названия модели мало?
>Во-вторых, если a это объект типа Artclie, то тебе в твоем случае нужен article_author_id
А можешь эту хуйню чуть подробнее пояснить? А то я сделал какой-то адовый костыль в итоге чтобы получить айди автора, вот, глянь на пик с темплейтом, (в authors у меня лежит Authots.objects.all()). Причем обрати внимание, внизу закоменченная строка blog.article_author.id, она тоже дает айди автора, но я не понимаю почему, ведь у меня в blog только поля статьи, и в поле с автором статьи в модели статьи нет айди, а только его имя. Бля, наверное хуево поясняю, приложу еще вьюху 2м пиком, если вдруг тебе не впадлу ответить
>В-третьих, зачем тебе приставка article_ в полях? Тебе названия модели мало?
Увидел у какого-то чела на ютубе (sentdex вроде, или как-то так, и показалось удобно
Что можно писать на питоне? Ну вот джава для веба предназначена, сшарп для программ, а нахуй питон нужен? Чё с ним делают вообще?
Вот это уже похоже на правду.
в модулях на все случаи жизни
>Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource.
(Reason: CORS request did not succeed).
Насколько я понял, тут ошибка с csrf токенами.
Можно ли отключить эту хуиту?
Импортировать crsf_exempt пробовал, в settings Middleware комментировал. Ничего не выходит.
Или средствами самого джанго аякс-запросы не отсылаются, и надо ещё какие-то библиотеки устанавливать?
наскока я знаю сервак должен разрешать cors, во фласке там экзепляр приложухи оборачиваешь в cors а в жанго хз, погугли django rest cors
Yippee-ki-yay, mothefucka
$ python3 --version
мне в ответ 3.8.3
а если писать
$ brew info python
то мне в ответ stable 3.8.5
Почему, блядь?
Так там же нужнл просто id а не author_id
https://dumpz.org/bBq2qrRBF4wK
метод get_username() чуть сложнее чем в примере.
Наверное это говнокод и можно сделать иначе, но я не знаю как.
а бля. накосячил. у меня есть лист из юзеров и я передаю конечно этот id
>>05322
Спасибо. Вот такой ответ оказался.
https://stackoverflow.com/questions/36844101/how-to-pass-django-csrf-token-in-ajax-without-jquery
Что имеем: django==2
Чего не имеем: брокер сообщений
Что нужно сделать? Отправить на сервис запрос, в ходе которого также должно отправиться письмо пользователю. Времени ждать, пока отправка запросу сервису рассылки писем выполнится, - нет.
Первое что приходит в голову - завести селери, отправлять заду в нее.
Но ради такой ерунды не хочется подниматься селери.
Вопрос - можно ли как-то с помощью тредов/корутин реализовать это дело, в рамках запроса?
1) убери приставки названий моделей у полей
2) чтобы получить id автора - достаточно просто обратиться к полю,и указать нужный атрибут "id".
Например
article = Article.objects.first()
author_id = article.article_author.id
либо
Article.objects.filter(article_author_id=id_number)
Когда ты обращаешься к полям модели, через поле другой модели, джанга сама создает доп запрос, чтоб получить эти данные. Чтобы не слать лишние запросы, рекомендуется подтягивать их сразу, с помощью prefetch_related()
https://docs.djangoproject.com/en/3.1/ref/models/querysets/#prefetch-related
я уж думал ты нагугли чего нить, ищи path env и чекни не состыковки в них, либо удоли старый питон и оставь свежий
Блин, я только сейчас понял, т.е. article.article_author это не просто имя автора, а прям целиком автор со всеми полями, так? А я начал кучу доп. запросов всратых лепить, получать всех авторов и сравнивать имена. Спасибо, стало понятнее
https://stackoverflow.com/questions/806835/django-redirect-to-previous-page-after-login вот тут вроде примерно о том, но я если честно нихуя тут не понял. Может кто-то помочь тупому? Уже и доки читал, и стаковерфлоу, так нихуя и не понял
Вроде как, делают через метод класса, вот примерно так: https://pastebin.com/S3MQjarF
>>05857
Что конкретно у тебя не получается?
>Что конкретно у тебя не получается?
Не понимаю что куда совать.
Я если что этот анон:
>>05139
>>04878
Вот моя вьюха и темплейт, я не понимаю что куда и как совать, чтобы заработало.
<form method="post" action="./?next={{ redirect_to }}"> вот это например куда совать вообще? По идее в форму, но где, если я дефолтную джанговскую юзаю для логина. Тяжело поверить, что нельзя сделать нормальный редирект с дефолтной формой.
<a href='/login/?next={{ request.path }}'>Login</a> вот это вообще хуй знает куда пихать, ну и главное, я не хочу бездумно копипастить, даже если оно заработает, и я так и не нашел, где бы в доках это нормально описывалось. Смотрел в доках по авторизации, по формам, еще каким-то. Может я совсем тупой, и сам не понимаю, что мне надо...
ну и офк уже пробовал просто
<a href='/login/?next={{ request.path }}'>Login</a> подставить в сайдбар,
<form method="post" action="./?next={{ redirect_to }}"> впихнуть в темплейт для логина
и вьюху изменить как пикрил, хуй (это к вопросу про бездумно копипастить)
Удали старый питон. Или вообще оба удали и заново поставь.
><form method="post" action="./?next={{ redirect_to }}"> вот это например куда совать вообще?
Скорее всего никуда. Потому как в форме логина у тебя есть скрытое поле с "next", что и есть твой redirect.
><a href='/login/?next={{ request.path }}'>Login</a> вот это вообще хуй знает куда пихать
Скорее всего никуда. Потому как декоратор @login_required должен делать это за тебя.
>Может я совсем тупой, и сам не понимаю, что мне надо...
У тебя вполне обычная реакция. В такие моменты лучше отвлечься, чаю попить и все такое.
>я не хочу бездумно копипастить
Ок. Давай попробуем подумать как это все должно работать:
1. Пользователь жмёт на ссылку, запрос идёт во вьюху, где его проверяют на авторизацию.
2. Если он не авторизован, то декоратор @login_required посылает его на вьюху логина, от себя добавляя в query ?next="путь_к_предыдущей_странице"
3. Вьюха логина получает этот запрос, берет из него значение "next" пихает его в невидимое поле твоего шаблона, из шаблона делает страницу с формой и отдает пользователю.
Если это так, или примерно так, то ты можешь это проверить:
- когда тебя переадресует на страницу логина, то в форме должно быть то самое скрытое поле с тем самым значением "путь_к_предыдущей_странице". Надеюсь, ты знаешь как открыть соснольку разработчика в браузере.
Что было?
>Потому как декоратор @login_required должен делать это за тебя.
Этот декоратор висит только на одной вьюхе, которую я даже не скидывал, с чего ты взял, что он висит? Декоратор-то сам работает нормально, но я не хочу, чтобы только залогиненные могли лазить по сайту, декоратором я закрыл только определенные странички, например где нужно комментарии оставлять.
Если ты хочешь делать редиректы как это делает декоратор @login_required, ты повторяешь ту же последовательность действий, только добавление дополнительного параметра "next" и пересылку запроса другой вьюхе выполняет твой код.
То есть тебе не надо добавлять в темплейтах в ссылки "?next={{ }}", ты просто во вьюхе проверяешь надо ли тебе редиректить этого пользователя на страницу логина, если надо, то используешь функцию redirect_to_login(next)
Отправить на хост запросы ping с разным размером длины пакета и посчитать время отклика. Как из Питона обратиться к ping и как прочитать ответ?..
Там ничо не понятно, библиотеки не подключаются, ничего не получается, ошибки сыпяться
Нет царского пути в математику. И нет царского пути в программирование.
> начиная от самого простого и сложного
Вот здесь правильная мысль.
> удивить РАБотодателя
Делай то что ты собираешься делать в будущем. Веб-разработка? Значит делай сайты. Аналитика и бигдата? Делай это. Машоб? Делай машоб. Гуи на десктоп? Делай гуи на десктоп.
Опыт работы и цель убери. В проекты добавь более детальное описание и ссылки на код. Навыки разбей по категорям. К сертификатам тоже можешь добавить описание.
Дизайн у тебя в целом неплохой, но резюме слишком пустое. Даже если у тебя нет опыта работы, ты можешь добавить описание к каждому проекту и сертификату.
Спасибо
Быстро, есть какой-нибудь проект для портфолио? На что рассчитываешь? Степик, кестати, бесплатный?
Сначала изучал чистый питон, начал с укуса, потом углублялся в алгоритмы и структуры данных, смотрел препода мфти, грокаем алгоритмы, решал задачи по питону, когда получил базу пошел на степик
Курсы на степике: введение в базы данных, git(имхо слишком сложный, но дает лишний сертификат), web технологии, python: основы и применение, введение в linux. После курса веб технологии остается проект на джанге - сайт с вопросами
Курс web технологии на степике бесплатный, после него остается проект учебный на джанге, расчитываю на то что у людей кровь не пойдет от моего кода, ибо сам ревьювить не умею
Вот к примеру на сайте есть js код и только после того как ты нажмешь что-либо - подгрузится новый html контент. По любому когда ты исполняешь js код, браузер отправляет какой-нибудь get запрос на сервер, давая знать что ты что-то исполнил, и он присылает тебе контент в ответ. Как средствами одного requests мне сделать этот самый запрос, чтобы сервер подумал что я исполнил js код, и отослал мне новый хтмл? В отладчике сети браузера я не вижу нихуя никаких запросов, только информацию что я получил картинки и всякое такое.
К примеру есть браузерная игра сессионка с лоббями. После игры партия заносится в архив сайта и можно просматривать историю ходов. Разумеется там все заскриптовано и если отключить жс то вообще ничего не увидишь. И как мне без всяких селениумов заставить его прислать мне контента чтобы я спарсил внутриигровые данные определенной партии?
Бля, я забыл еще что чтобы партии просматривать там надо быть залогиненым, лол. Такую хуйню еще не умею делать, надеюсь это тоже без селениума можно.
Ну вот я скачал плагин, а что и где писать, чтоб тесты в параллельке запускались? И как настроить, чтоб максимум 4 теста одновременно делалось.
Когда я в VSCode тыкаю на «открыть терминал» и пишу pip install -r requirements.txt (клонировал репозиторий на компьютер), в какой из интерпретаторов устанавливаются нужные библиотеки?
Потому что в ответе пишет, что все нормально, requirements установились, но когда я пытаюсь запустить код, каких-то библиотек все равно нет
У тебя их 4, а не 15. Проверь опытным путем. Кто знает что ты там накуралесил.
Выискивал 5 часов ошибку, почему данные не сохраняются в кеше. На самом деле они сохранялись. Просто обращения происходили через словарь, где в качестве ключей использовались integer, а искали через string. Заебись.
юзайте для ключей всегда только str, нахуй выебываться
Написал в прошлом треде предложение о своей супер-пупер программе (которая, как мне намекнули, достаточно просто реализуется) - 0 откликов.
Питонщики зажрались(
Я гребу на околоэнтерпрайз параше в бэке, мне некогда
Объясните нубу, почему записи?
while arr > arr[i - 1] and i < len(arr):
i += 1
и
while i < len(arr) and arr > arr[i - 1]:
i += 1
неэквивалентны и в одном из случаев выдает ошибку out of range?
>while arr > arr[i - 1]
И нахера ты сравниваешь list с элементом этого самого list?
что интерсно в 2.7 на PyPy ошибка не рейзится
Если выражение слева от and равно False, то и всё выражение целиком будет равно False, поэтому питончик не проверяет выражение справа от and. Поэтому даже такое сработает:
if False and похуй_что_тут_вообще:
pass
Спасибо, анон
бумп
У тебя просто симлинки дистр делает в разные папки, это один и тот же интерпретатор.
сертификат по git от степика - просто пиздец.
ебанутейшний лектор. бодро начал, а дальше нихуя не понятно.
абсолютно бесполезный курс.
да, у меня тоже есть этот сертификат
У меня есть на линкдине значок что я знаю гит, только это нихуя не говорит вообще.
нет, серьезно, этот конкретный лектор - хуевый
я бы хотел по-быстренькому на ютубчике просмотреть про гит, но придется все же книжку читать.
Можешь заменить список за кортеж
ключ должен быть хешируемым объектом
чел пытается запустить py файл, но у ниго нихуя не выходит, вот что на пике
Проблема в банально-саном PATH?!
Сука. Если это так, обязательно умру оставив файл с параметрами path. И положу его себе под лопатки, когда буду в гробике.
>Проблема в банально-саном PATH?!
Не факт, может у тебя в py файле нет основного цикла и приложение сразу закрывается
Спасибо, по(т/д)бодрил.
if __name__ == '__main__':
executor.start_polling(dp)
Проблема в этой хуйне. Без этого куска, выходит первый пик. С ней, новый пик.
if __name__ == '__main__':
executor.start_polling(dp)
Проблема в этой хуйне. Без этого куска, выходит первый пик. С ней, новый пик.
К удивлению, нет. Ладно, ясно, спасибо за помощь.
Всем привет,аноны!
Начну сразу с сути,решил парсить дамп википедии по этому гайду: https://www.heatonresearch.com/2017/03/03/python-basic-wikipedia-parsing .
Cуть в том,что бы работать с дамопм википедии через xml.etree.
Подцепило тем что довольно резво работает(Всю вики за 23 минуты проходит)
Все бы ничего, да только вылезла проблема: если текст у елемента довольно большой, что часто бывает на страницах википедии, то elem.text возвращает None.
Мне по сути весь текст внутри тега и не надо, мне хватит пару первых строк, но уже день не могу выудить их оттуда.Гугл что наш, что пендосский молчит по этому пвовду,так что шарящий анон, выручай.Если что,я тут сижу и отвечу на любые уточнительные вопросы.
>Все бы ничего, да только вылезла проблема: если текст у елемента довольно большой, что часто бывает на страницах википедии, то elem.text возвращает None.
а ты уверен, что это из-за большого текста, а не из-за того, что элемент пустой? там могут быть плейсхолдеры
типа
<root>
<tag attr="hui"/>
</root>
Алсо 23 минуты это пиздец долго жи. Бери индексированный архив и ебашь разбор парралельно. У меня дамп русской википедии где-то за 3 минуты сжирает прямо из архива. Правда, там процессинг очень простой.
Алсо мне казалось что 120-150к, именно такие зп предлагают работодатели, а я отказываюсь думая что продешевил.
Хз у меня знакомый мидлом на 200к проходил, мы с ним вместе гребли. Мне кажется реальный синьор за 150к не пойдет в ДС работать.
>Хз у меня знакомый мидлом на 200к проходил
Иногда мне кажется, что я живу в параллельной вселенной где зарплаты вдвое ниже.
Дак ссылку на гит оставляй, всем двачем отревьюим
Все по-старому братиш, работа-дом. Сам знаешь.
Да нет,в том то и дело что там прям <text>Много букв</text>.
И я убирал внутри тега текст по паре строк пока оно не начало возвращать не None. Нигде про такое не могу найти инфу.
ну если так, то стоит попробовать
хуй знает. может какая буфферизация ебет вола? попробуй замени еетрипарсер на пуллпарсер и скорми ему файл в бинарном виде типа
with open('dump.xml', 'rb', buffering=0) as f:
parser.feed(f.read())
Анон, подскажи по пистону и рест-фреймворку Falcon - если у меня один процесс и в контроллерах я не использую асинхронность, сугубо hello world, то можно ли сказать что контроллеры thread-safe? Грубо гря получается по одному запросу одновременно, или я где-то объебался?
https://ru.wikipedia.org/wiki/Цикломатическая_сложность
Конечно пользуемся. Добавляем его в pipeline, в СБОРОЧКУ/CI, через несколько месяцев понимаем что бизнес не платит за удовлетворение этой хуиты, выпыливаем, забиваем, смеемся в лицо дяде Бобу с его методами в 10 строк.
print(a,"x +",b,"=",c)
equation_writing(3,4,3)
Почему выводит дважды?
замени print на return, я так понимаю, что первый раз печатает внутри функции, а потом еще раз результат функции
блять, я тот еще советчик)) функция принимает integers, а возвращает строку, поэтому
return str(a) + “ x + “ + str(b) + “ = “ + str(c)
В его дно галере не принято писать нормальный код. В репозиторий можно сливать любой мусор, а потом их сис. админ деплоит это руками на голое железо.
Все почти так, но все же ci у нас остался. Ну и таких галер в типичных крудошлепских конторах большинство.
У вас там всем заветам дядипиздабола Боба следуют? Небось water cooler moments насыщены дискуссиями о код-стайле. Эх, блядь, молодость.
Интересует конкретно sqlite.
На данный момент все форматирование строк в запросах заменил на вставку подготовленных операторов через '?'
class Tree(models.Model):
name = CharField
sort = IntegerField
parent = ForeignKey('self')
level = IntegerField
где level - уровень вложенности (0 - самый верхний родитель)
Нужно сделать структуру типа:
[{"name": '...', 'children': [{...}]}, ...]
отсортировано всё будет по sort
Объясните тупому, что значит получить структуру? Она в json формате должна быть что ли, тогда почему все в []скобках собрано?
Я так понял мне надо сделать все же json, а во всех вложения parent - child сделать сортировку, верно?
Почему, когда я делаю вьюху как на 1м пике, у меня next в запросе оказывается пустой? как работает эта черная магия?
Если сделать как у этого парня эту строчку:
>redirect_to = request.REQUEST.get('next', '')
то в next хранится нужный мне юрл, но сама страничка с логином не открывается, т.к. я так понял такой синтаксис для джанги уже не актуален, и нэкст надо доставать просто через request.GET[] как у меня на первом пике.
Короче я так понимаю мне надо где-то на стадии уже полученной страницы с логином нужно где-то сохранить этот кусок урла, и потом отправить его в пост запросе, и я так понял хидден в темплейте логина - плохая хуйня, какие еще есть способы?
Я при вкате писал говносертификаты и спиздил чужой код с гита. Сейчас, если бы сам кого то хейрил, то не обращал бы на это внимание вообще.
Если ты не указываешь типы, то за тебя этого никто не сделает. У нас тут динамический язык.
Тот же бэк для вэба на джанге
чудес не бывает
IDE может вывести тип если ей есть на чем основываться - или автор кода где-то использовал явный тип или информацию о типах оставил. или библиотека описана в typeshed
typed либа может быть
не все любят захламлять код типами
многие любят как раз из-за того что он кря-тайпинг в противовес языкам, где нужно явно указывать типы
и типизация для них только "засирает код"
К тому же typing это питон3, а либы писались во времена питона2 и совместимость мешает все тайпингами обвесить
А там это нахуй не надо вообще.
так то это норма в кря-тайпинг языках. в этом и суть кря-тайпинга
и для него тайпхинтинг по факту костыли которые противоречат самой сути кря
Так а с какой книги начинать, если я вообще никогда ни на чём не программировал? Везде пишут код, а куда его вводить я не понимаю, есть что-то для совсем новичков?
Я просто увидел копипасту "завтра ищешь в интернете книжку dive into python" и хочу делать имиджборды, но dive into python мне слишком сложна а ещё я незнаю английский, да
сейчас же идешь и смотришь канал на ютубе хауди хо пайтон за час, потом джанго за час , а потом отправляешь свое резюме куда нить где платят 300к наносек , и вот ты бэкэнд деволопер 300к наносек
> хауди хо пайтон за час
Это без сарказма? Нет цели 300кк/нс, хочу писать всякую фигню чтобы она что-то там делала или печатала, охуенно же
Ну а что тебе еще остается, если ты даже не понимаешь куда код вводить, и пришел за ответом сюда
гиперскилл по пистону. если первый майлстоун первого проекта делаешь быстро — получаешь 1 месяц триала. если за этот месяц доделываешь первый проект — получаешь еще 2 месяца триала. штобы ты знал, первый прокт это что-то типа крестиков ноликов. так что 3 месяца триала изи получить.
https://hyperskill.org/onboarding
upd:если не хочешь легким способом изучить весь питон за 2 часа то вот можешь еще посмотреть, начиная от того как установить на шиндовс интерпритатор(штука которая будет переводить твою писанину(код) в команды для процессора) https://www.youtube.com/watch?v=IU4-19ofajg&list=PLQAt0m1f9OHvv2wxPGSCWjgy1qER_FvB6&ab_channel=egoroff_channel
Хочу посчитать количество строк кода в проекте. Офк пустые строки или закомментированные считаться не должны. Также желательно не считать докстринги. Как это сделать?
открываешь файл в редлайнс проходишься по строкам фором
строку стрипишь чтобы табы и пробелы и смивол переноса строк убрать с обоих сторон и если длинна 0. или стартует с # или стартует с доксимволов то пас иначе строки+=1
а теперь бери django + drf, и пиши на нем свой двач(либо aiohttp - лучше, но сложнее). Дальше устраивайся джуном.
Если знаешь алгосы, патерны и можешь минимально пояснить за проектирование систем - то иди в продуктовую компанию.
Если не можешь - иди в небольшую галерку, чтоб через годик свалить
дак у тебя в поле next - действительно пустая строка. Ты в него ничего не добавляешь
Кажется ты не понимаешь сути кря.
Подумай - почему утиная типизация используется не только в диамически, но и в статически-типизированных языках(например go)
Красота. Только вот UnicodeDecodeError постоянно всплывает. Пиздит что байтики прочитать не может то тут, то там. Как вообще понять в каком формате файл открывать? При utf8 везде как видишь не срабатывает
вики
"Неявная типизация, латентная типизация или утиная типизация — в ООП-языках — определение факта реализации определённого интерфейса объектом без явного указания или наследования этого интерфейса, а просто по реализации полного набора его методов"
Я выделил жирным саму суть.
А суть в том, что хоть в питоне всего лишь хинтниг (явное указание, но не наследование) это все равно ломает идею кря.
у тебя было
def foo(a):
a.bar()
a.baz()
даже если ты всего лишь описал протокол с методом bar()
def foo(a: BarableProtocol):
a.bar()
a.baz()
то работать будет, но иде будет выделять baz как ошибочный. Потому что явное указание типа (контракта) ломает идею "зуб даю, этот метод там будет в момент вызова" потому что сам контракт описывает то, что должно приплыть в метод
таким образом любое указание на интерфейс объекта противоречит идее кря
я мимокрок и хз о чем вы
но в питоне для утф8+BOM нужно указывать кодировку "utf-8-sig", а для просто utf8 "utf-8"
Если не указывать, будет utf8, я не об этом
На данный момент открываю файлы в бинарном формате, проблем не возникает. Вопрос лишь в том, как мне до открытия по метаданным понять, в какой кодировке файл можно открыть?
Вот что получилось (это один крупный проджект, что попался в руки):
{'py': 62989, 'js': 12876640, 'ts': 1533118, 'php': 229729, 'html': 127282, 'css': 231549, 'json': 739869, 'txt': 52950, 'other': 2014346}
Слева расширение, справа - число строк кода. В other все что не попало в указанные расширения (за вычетом всякой ебени вроде jpeg, svg, png - это сразу фильтровалось)
суть в том какие проблемы она решает
>тайпхинтинг по факту костыли которые противоречат самой сути кря
Сижу на проекте где пистоновский модуль написал при помощи тайпхинтов и паттерна Dependency Injection (все зависимости определяются явно при инициализации объекта, как правило каждый объект инициализировал лишь раз) - полет нормальный. Без тайпхинтов там можно ебануться, а так сразу очевидно что за объект мы принимаем (или что за интерфейс) и что возвращаем
На самом деле питон - жопа
Это правда. Слава типам!
Я тоже сверхактвно юзаю хинты.
Я всего лишь напомнил что есть люди которые считают что хинты рушат саму суть динамичности и крякнутости языка
Меня в питоне подкупает скорость "хуяк хуяк и в продакшен"
И для этого и юзаю
Какая схема работы подойдёт лучше, для масштабируемой системы:
1. Сервер на котором сразу все. Nginx+flask+pgbouncer+postgredql. И таким образом набор этих сервисов раскинуть по все регионам.
2. Сервер на которых веб часть(Nginx+flask) и один(под каждый регион) отдельный сервер под бд(pgbouncer+postgres).
Задача в том, что бы на каждый гео-регион поставить сервера, что бы юзеру был пинг получше.
Первый вариант проще всего доставлять и нихуя особо настраивать не надо. Но тогда больше шанс проеба при репликации мастер-мастер т.к. бд много получается.
Второй вариант сложнее настраивать, т.к. каждый раз надо будет для приложения прописывать вручную конкретный адрес бд которая подходит к его региону.
Деплой идёт докер-композом.
Неужели кубернетосы завозить надо?
поставить отдельные сервера для пингов по всему миру. пинг будет зашибись
а так это лучше спрашивать в теме про хайлоад
Вообще писать с типами это как минимум удобно. Понятно что идет на вход функции и что она возвращает, автокомплит от IDE, меньше опечаток, так как несуществующий метод или свойство будет светить IDE.
Может и криворучка. Но один и тот же запрос с одним и тем же JSON из под soupUI работает, из скрипта работает, а из ебаного postman Failed to decode JSON
На память -
POST 127.0.0.1:5000
> headers
Content-Type : application/json
> body
{
"origin_url": "something.com"
}
Ну и соответственно в postman body - raw - json. В curl тож эту ошибку отдает. Есть мнение, что кавычки экранировать надо - но мне не помогло.
Из под postman -
> "message": "Failed to decode JSON object: Expecting value: line 1 column 1 (char 0)"
Из других утилит - JSON с созданным объектом.
Ок.
Спасибо!
word_list.join(" ")
а что если в списке объекты класса fingers или объекты класса ass у которых нету не __repr__ не __str__ зачем в таком случае листу нужен такой метод? и в таком случае тданный метод в строке а не в спистке смотриться вполне логичнее уже
челик имеет ввиду что он хочет листу метод джойн в который передается строка который вернет строку, а не строке в его джойн передавать список
Лучше скажи зачем объекту метод который ему противоречит и приводит к крашу, который даже в случае положительного кейса возвращает ни как не относящееся к себе объекты? порванка
>который даже в случае положительного кейса возвращает ни как не относящееся к себе объекты?
Че блядь?
ну кто понял тот понял , а кто не понял учитесь пока тру кодерки живы B)
большой проект на любом языке - жопа
> а так сразу очевидно что за объект
Union[dict, Callable[[Tuple[dict, set]], List[Union[set, list]]]]
Да нет никакого особенного алгоритма, просто берёшь и строишь дерево соединяя parent-child циклом.
плохой вопрос,нахуя метод или нахуя в него строка передается, да и в любом случае адресован не туда
А если я джойню пустой строкой. Или пустая строка, склеивай вот это. Там же не только списки, там любой итератор можно склеить.
Каким образом?
>там любой итератор можно склеить.
>а что если в списке объекты класса fingers или объекты класса ass у которых нету не __repr__ не __str__ зачем в таком случае листу нужен такой метод?
любой строковой итератор мань, хватит исходить на говно, включи хоть немного серого вещества и поубавь ненависти к обществу за то что ты такой и все у тебя получится
Почему пикрелейтед код не вызывает редирект?
Например я обращаюсь по сокращенной ссылке hui
>127.0.0.1:5000/hui
В бд на short_url = 'hui' возвращает original_link='2ch.hk', это все проверял.
В итоге ссылка меняется на
>127.0.0.1:5000/2ch.hk
А результат на пике 2
>ряя ебанутый вариант, который работает только со строковыми итераторами, лучше нормального варианта, который работает только со списками строк
Ну так а в чём суть возражения? Что не склеит нестроковые объекты? Ну выпадет эррор, и чо? А вот обязать любой итерируемый объект реализовать метод join — вот это пиздец. Особенно если мой объект генерирует нестроковые объекты, которым этот join и даром не сдался.
ну все мань, питон нелогичный и вообще говно, мой тебе совет, хочешь логичности иди в js
>А вот обязать любой итерируемый объект реализовать метод join
В питон не завезли реализации по умолчанию?
завезли, но тебе не логично
Дело не в этом. Дело в минималистичности интерфейсов. Итератор должен иметь только метод next. Если ты хочешь реализацию всего на свете прямо в стандартных типах, то тебе в руби.
А как же множества, кортежи, словари, ещё тысячи разных структур? Им всем тоже join надо? Как ты будешь объяснять пользователям почему list.join есть, а dict.join нет?
Вот я с универа (щас мне 24) пилю всякую хуйню в опенсорс, у меня зеленый гитхаб, есть немножк звездочек от одноклассников, пры в чужие репы, есть даже работающий сервис, которым пользуется минимум с десяток мимокроков. Но так как я по натуре крайне мнительная даун-аутист короче личность, то за все время учебы не было ни одной попытки куда-нибудь вкатиться хотя бы стажером, как мои одногруппники. А теперь вот приспичило, так сказатб...
Просто гадаю, как мне резюме составить: честно, как есть - култори о том, что ещё нигде не работал, но очень люблю заниматься кодированием + ссылочки с подробным описанием проектов; либо кулсторти + "добавить" годик реального опыта в рогаикопыта...
Не, с пингом разобрался, тут cloudflare и их балансировка в помощь.
Разве у тут есть живой тренд про хайлоад?
>>11042
Если ты про синхронизацию данных в бд то проблем не будет, будет задержка небольшая, но тут дело такое, что ты находясь в северной амуреке вряд-ли очень часто меняешь место пребывания своего и задержка в синхронизации на 10-15 секунд на тебя не повлияет. Все таки ты будешь ходить на один и тот же сервер, с высокой долей вероятности.
Если смотрят, то не особенно глубоко. Гитхаб очень легко подделать. Ты можешь файл в своём проекте как пример хорошего кода привести. Или заработать себе известность, и впоследствии работу, если делаешь что-то нужное и значимое.
У тебя хуй на списки что ли стоит? Открою тебе секрет: в метод join можно передавать не просто список а произвольный Iterable
В главном файле делаю следующее:
import configparser
...
config_filepath = path.join(path.abspath(path.dirname(__file__)), 'settings.ini')
conf = configparser.ConfigParser()
conf.read(config_filepath)
Всё ок, но как теперь к нему обратиться из других скриптов, которые вложены в папку?
Они, к слову, вызываются из этого главного файла. Отправлять переменную с каждым вызовом функции же не вариант, как и читать в каждом модуле конфиг заново (не dry).
Те че-то неясно сука?
Собери функции модуля в класс. Передавай конфиг как параметр класса. Либо делай глобал и импортируй его из главного модуля.
Можешь и 422 отправить. Или 400 с описанием что не так. Главное чтобы ответ был 4хх и клиент понял что сам накосячил. Алсо, убил бы сука за валидацию почты. В ней единственное что должно требоваться это наличие собачки.
Еще добавлю. Присмотрись к аргументу permanent, вместо того, чтобы использовать code
Надо POST.
1. В случае GET все ссылки пользователей окажутся в логах сервера.
2. В случае GET можно где-нибудь запостить ссылку типа /short?url= на твой сервис и какая-нибудь генерация превьюшек нагенерит тебе сокращений для левых людей, которые и знать не знали про твой сервис.
3. В случае GET ответ может закешироваться в проксях. Конечно для сокращателя ссылок это наверное не так страшно, но придумать как это может сломать пользовательский опыт можно.
Спасибо, буду делать через пост
>Можно передавать любой итерируемый объект
Дальше че? Пусть в любом итерируемом объекте будет join, а не только в строке
>Пусть в любом итерируемом объекте будет join
Мальчик, отойди в сторону, не мешайся. Тут Большие Дяди разговаривают
у меня есть опыт работы в ойти почти в 10 лет. нас тут 300 человек на мороз выкинули через layoff. работы много. у меня бывает по 30-50 звонков в день. но многие конторы требуют coding skills, хотя я больше инфраструктуру поддерживал (DevOps я). чтобы попасть в фаанг люди сидят в leetcode по полгода. вот поэтому и интересуюсь на сколько это реально за пару месяцев поднять питон с алгоритмами.
ps: я нахожусь в швятой, да.
>чтобы попасть в фаанг люди сидят в leetcode по полгода. вот поэтому и интересуюсь на сколько это реально за пару месяцев поднять питон с алгоритмами.
>ps: я нахожусь в швятой, да.
Учитывая твой опыт, может хватить и нескольких месяцев. Все зависит от того, чем ты занимался. Может ты десять лет писал круды, и встанешь в ступор при попытке написать алгоритм сортировки.
все так. алгоритмы и питон я учил в 2013 году. все это отвалилось и забылось за ненадобностью. Спасибо, буду долбить. Другого выбора у меня нету.
На мой JSON API поступает PUT-запрос, причем в нем заполнены не все поля, а только те, что нужно обновить. Функуция -
@app.route('/product/<id>', methods=['PUT'])
def update_product(id):
product = Product.query.get(id)
name = request.json['name']
description = request.json['description']
price = request.json['price']
qty = request.json['qty']
product.name = name
product.description = description
product.price = price
product.qty = qty
Так вот вопрос - как мне обработать запрос, если в запросе приходит всего одно поле? Покрывать каждое поле if-ами? if 'name' in request.json?
Макаба разметку сьедает
вообще зависит что у тебя за фреймворк/орм
но как бэ если request.json это что-то типо дикта, а product какой-нибудь орм, то поч не сделать просто
product.update(request.json())
или если совсем тугое апи, то
for k, v in request.json(): setattr(product, k, v)
О! Спасибо тебе, добрый человек.
на leetcode смотришь top interview question с уровнем easy
скорее всего твои интервьюеры возьмут задачи околооттуда
Спасибо, анон
Я в гугл проходил интервью на контракт там хард задачи спрашивают.
Забавно, что в нескольких виденных мною книгах, охватывающих основы питона, эта и несколько других особенностей специально пояснены. Вероятно, в документации тоже.
Но куда там толпе экспертов-вкатышей. Хорошо хоть большая часть убежала к жабаскриптерам с их смишнявками, которые скоро рандомные хуи на фишки.нет будут знать наизусть.
Да, так бывает. Языку 40 лет, ебать тебя в сраку.
В питоне и так слишком осторожничают, навешивая сто дополнительных контекстов на существующие кейворды, вместо введения новых.
Таки 30, но сути не меняет.
На это потребовалось десять лет, причем список критических изменений весьма небольшой. И этот самый переход до сих пор не закончен. Нубы уже безальтернативно учат 3, но ровным пасанам надо знать оба.
Декоратор фласка.
>Потому что неинтуитивны, ага.
оно непривычно, но очень полезно ведь может пережевать все, что может итерироваться. а итерироватся может много чего в том числе и пользовательского
в языке где
in obj вместо obj.contains так то нормально
Причина не в этом. Есть тот же len, который опирается на дандер-методы для каждого кастомного объекта. В случае с джойном решила семантика: строковый метод - получаем строку.
Изучаем пайтон том 2 глава 39 декораторы
x = x + 1
print(x)
f()
f()
f()
vs
def g(y = []):
y.append(0)
print(y)
g()
g()
g()
результат второго:
[0]
[0, 0]
[0, 0, 0]
Зин, какого хуя?
список y он один на всех. особенность создания функций в питоне
Недавно совсем начал изучать язык и возник вопрос , где можно было бы найти человека , который мог бы помочь с изучением, мог бы отвечать на мои тупые вопросы и направлять? Так сказать ментора.
С одной стороны не понимаю зачем это кому то может быть нужно, кроме может быть поднятия каким то образом ЧСВ, но с другой стороны наличие старшего опытного товарища крайне ускорило бы процесс вхождения в тему.
В общем, как- то криво описал, но надеюсь мой вопрос понятен.
За менторство берут почасовую оплату, цена тебе не понравится.
зачем тебе 1 человек если есть целый тред проффессианальных кодерков 300к наносек?задовай свои ответы
>который мог бы направлять
направляю проверяй хауди хо пайтон за час
Анон, решил проблему? Если да, то скажи как
ну всегда так было. во всех остальных языках семантика именно такая.
Тут такое дело.. хочу написать бота для Discord'a на питоне. И все бы ничего, но возникла одна проблема.
Необходимо создать команду, при которой бот создает голосование (Embed с реакцией). И с этой задачей я справился. Но в силу своих умственных умений, не сумел справиться со второй задачей - рандом пик участника, который нажал на реакцию (при этом еще идет таймер на минуту, дабы все успели кликнуть).
Искренне надеюсь на помощь анона.
Пик рил - часть кода, где, собственно, располагается команда.
Вот только делает она это каждый раз когда надо эти картинки показать.
То есть у меня есть фильм, к нему название, дата выпуска, обложка и тд.
Как это делать кешировать, чтобы каждый раз не загружать?
Чисто предположение, можно записывать в некий файл все ссылки на загруженные картинки и если на сайте есть картинка с ссылкой которая уже есть, то брать картинку из папки с загруженными картинками. Так же можно создавать папку под все файлы конкретного url, если нужно загрузить новый урл, то создавать папку и туда все складировать, если папка с таким урлом уже есть, то брать файлы из нее
Посмотри как браузер кеширует, мне кажется это самая простая реализация, кстати, если это твой пэт проект и ты хотел бы еще кого-то пригласить к разработке, пиши tg @yellowpearl
Да у меня там какашка. Я сам только наполовину понимаю что я делаю
reduce - это fold из функциональных языков программирования. Первым аргументом должна идти функция с двумя аргументами, которая возвращает объект того же типа что и оба аргумента.
str.fold - это метод с одним аргументом, но поскольку ты его вызываешь из класса, а не объекта, то self считается за еще один аргумент и используется по назначению. То есть str.join('a', 'b') превращается в 'a'.join('b'), и возвращает 'b' (второй аргумент). Так что твоя хуйня должна вывести последний элемент в массиве.
>нет
Да, проебался. Если строки в массиве из одного символа, то выведет последнюю, а иначе получается то, что у тебя.
А все потому, что join в качестве аргумента ожидает список, а ты суешь ему строку. Но поскольку они оба (список и строка) iterable, то оно работает, и получается, что после каждого символа во второй строке вставляется первая строка.
То есть str.join("govno", "mocha") превращается в "govno".join("mocha"), что эквивалентно "govno".join(["m", "o", "c", "h", "a"]), и получается mgovnoogovnocgovnohgovnoa.
from urllib.parse import parse_qs
decoded_url = parse_qs('https://www.google.com/search?q=url+example&oq=url+exa&aqs=chrome.0.0j69i57j0l6.2350j0j7&sourceid=chrome&ie=UTF-8')
{'https://www.google.com/search?q': ['url example'], 'oq': ['url exa'], 'aqs': ['chrome.0.0j69i57j0l6.2350j0j7'], 'sourceid': ['chrome'], 'ie': ['UTF-8']}
тип - словарь
Я не понял, что ты хочешь, но у меня сразу 2 вопроса:
1.Почему таймер поставлен на 10 сек, а не на минуту?
2. Почему ты вызываешь синхронный слип в асинхронной функции, а не asyncio.sleep?
Как заделать авторизацию (проверку прав юзера) на серваке на aiohttp? Я как джангодаун привык что в каждом реквесте есть переменная user, с которой можно мутить что угодно, а как авторизацию имплементить в aiohttp?
Дак ты не на память показывай, а реальные данные на которых не работает. Желательно скрином
aiohttp-session
Мое приложение принимает в пост запросе ссылку, а когда мне нужно получить тело запроса его нужно декодить, в итоге все слеши и двоеточия неправильно кодировки
Ну тогда понятно, почему у тебя все через анус работает
word_1 это строка
Причем если просто написать
search_result.append(word_1)
print(search_result)
то список выводится на экран нормально
Потому что append изменяет лист и ничего не возвращает.
Таймер на 10 сек для теста. А второе хуй знает. 4-й день пишу бота и за 4 дня не сильно разобрался в питоне.
>prepend
подразумевает добавление в начало чего-либо.
а теперь вопрос на сеньёра:
а где начало у деки? слева или справа?
Иди читай сначала, а потом пиши, чукча.
А ты араб или европеец?
Змеены, а кто-нибудь разбирался в кишках tk/tkinter? Мне нужно рендерить кнопочки-курсорчики в картинку без вывода гуя на десктоп, а пользовательский ввод получать инжектом координат, эвентов и прочего мусора. Просто результатом отображения должен быть массив пикселей, который будет потом пожат и отправлен юзеру. Там можно так сделать или все гвоздями к x11/окнам приколочено?
Может, есть какая-нибудь батарейка для такого эрзац-гуя?
Если я создам метод с другим именем, но тоже с двумя нижними подчёркиваниями в каждой стороны, этот метод будет тоже вызываться автоматом, или нет?
написал функцию
https://pastebin.com/JKJHfXyn
Она выводит все веса(или расстояния ) от начальной точки.
Вопрос состоит в том, как добавить запись самих вершин короткого пути.
Например чтобы путь от А до D выводило так - ABCD - 65
нет не будет, ели очень надо то можешь просто создать метод и вызвать его в том же ините если надо и при создании экземпляра класса он отработает,
Спасибо
Тружновато каждый раз это прогонять через дебаггер PyCharma - он ещё более менее показывает ту структуру, которую хотелось бы от инструмента проектирования.
uml
Нет, я не зеленый очень серьезно спрашиваю. Мне на самом деле интересно почему так. Когда можно взять однгого, он обучит остальных. Питону не учат в универах, так же как бэкенду и фронтенду. Каждый работ предлагает свою стек, нет единой унификации - те что конкретно нужно знать. Заметил - знать надо вообще все. Это просто нереально.
Питон один из инструментов не более. Как минимум нужно понимать сетевой стэк, базы данных и паттерны проектирования.
Да, все по часу на ютабе. Но работодателю этого не достаточно. В требованиях пишут знания несколько яп. Также, знание всяких фреймов. Те помимо базы что ты указал, которую можно выучить на ютабе за день, нужно знать еще овердохуя всего, и либ на питоне, и других япов. И что самое интересное, на одну задачу - овердохуя либ, фреймов, решений и тд и тп. А единой унификации нету. В итоге, хз что учить, где учить. Как вообще устроиться на работку прогером. Думаю в рашке только такая трабла. В школе и в вузах учат хуйне, но кроме дс наверное.
>Да, все по часу на ютабе. Но работодателю этого не достаточно.
Правильно что недостаточно, за час ты вообще ничего не узнаешь.
Обосрешься на первой таске, так как нет опыта и практики.
> Как вообще устроиться на работку прогером. Думаю в рашке только такая трабла.
Да конечно, проблема в стране.
чето странное выдумал.
передавать в консольку данные от удаленного процесса чтобы локально рендерился гуй?
ладно. ты смотрел guizero ?
а jupyter kernel protocol?
>Да, все по часу на ютабе
Учебник по матану можно за 2 дня прочитать, по линейной алгебре ну еще 2. Ты сразу можешь в магистратуру идти, хули 5 лет терять.
Ну да. В итоге, ни опыта, ни работы, ничего. За 5 лет технологии шагнули вперед, и вот ты знаешь, что есть матан, высшая алгербра. И появилось еще 100500 либ и еще 100500 обновилось. Ты тратишь еще 5 лет на обучение, сидя дома. Итого 10 лет, без опыта. Ты изучил все, без опыта. И снова
И появилось еще 100500 либ и еще 100500 обновилось. Ты тратишь еще 5 лет на обучение, сидя дома. Итого 10 лет, без опыта. Ты
a = 'И появилось еще 100500 либ и еще 100500 обновилось. Ты тратишь еще 5 лет на обучение, сидя дома. Итого 10 лет, без опыта. Ты '
While True:
Дальше сам уже.
Я про это и говорю, в теории все просто и понятно, пока не попадаешь на задачи из реального мира.
Так же как и веса. Для каждого neighbour записываешь node, которая дала new_distance, типа предыдущая точка на пути. Потом смотришь какая предыдущая нода у D, какая предыдущая у предыдущей и т.д.
https://en.wikipedia.org/wiki/Dijkstra's_algorithm
Первое не то, просто гуй-либа, а второе прям из пушки по воробьям.
Смотри. Я написал VNC-сервер. Увы, в протоколе нет нужных мне расширений для реализации кое-каких доп-функций, поэтому я подумал, что можно сделать так, чтобы при подведении курсора к верхнему краю экрана, из него бы ваваливалось бы окошко, которую рендерит сервер. В менюшки кнопки, комбобоксы, лейблы и вся хуйня.
VNC передает просто картинку, то есть моя задача - собрать гуевое окошко, передать либе координаты пользовательского курсора и эвенты нажатия мыши, отрендерить результат, отправить его по VNC клиенту.
Я тебе про это и пишу, решает навык программирования на питоне. То есть навык. Навык. Навыыыык. НАВЫК.
А не книги по матану.
Работодателю, любому, нужна скорость решения задачи, чтобы было быстро и качественно, исходя из этого, надо делать быстро и качественно. То что он сказал, не больше.
Вот начитался ты курсов, хуйни из вузов, матана. Пришел, тебе дали реальное задание, сделать то то и то то. Нвыка нету. Хуй пойми какие либы. Как все это собрать и тд и тп. В итоге - дверь.
Тем более в рашке, все доки до на ангельском. Пока прочитаешь, переведешь, въедешь. Набьеш скилл. Снова - дверь. Прочитал одно на русском. уже версия питона - 6,0. Снова - дверь.
Я понимаю дрочить питон, и работу на нем со школы или вуза. А не так, вместе с бейсиком или паскалем. То есть учить сразу, решать задачи, которые нужны в реальном времени. Такого на сегодняшшний день - нигде нету, ни в одном вузе и ни в одной школе.
Нет унификации, единого требования, все решается через множество япов. Алгов и тд и тп. В итоге, хуй вообще пойми что делать. Я еще понимаю, в конторе работает друг. ХОтя бы подскаже куда копать. А так пришел, дали тз, и ушел.
Так и задачи у всех разные. Подключиться к БД или запилить pool connection это навык на питоне?
А создать robust pool connection? А определить где хранить промежуточные данные в SQL или NoSQL? Хуй знает.
Ты сейчас говоришь про minimum viable project, который потом рефакторится и развивается.
Алсо, я так и работал. Дали ТЗ и предложили на выбор Java или Python. Легаси был на Java, были утечки памяти, в итоге все к хуям переписал на питухоне, потому что скорость разработки выше. Рефакторил после смены ТЗ и версий API.
Я в ебучей яме.
Я тащемто про обучение. Выше уже писали, что на каждый чих - уже готово решение, мб только литл разница и все. Те именно для этой разницы и нужны челики дяде. Чтобы править. А с нуля - уже тоже есть решения. Так вот. Почему бы в вузах - школах, уже не готовить птонистов. Чтобы дрочить что нужно на работе там, нарабатывать скил - чтобы быстро и качественно. А то на выходе - выучил матан, физику, химию, бейсик. И все. И нихуя. Я например, хочу вкатиться, но меня не пригалашают. Мб потому что образование не профильное. А мб боятся что я тупо зафейлю. Я например, тоже боюсь что то делать с нуля. Дадаут тз если, сразу полезу в гугл, ютаб. Это потому, что в реальной жизни все по другому чем у лутца.
А почему Java не учить? В МФТИ есть питонисты, тащемта.
Django например тупой комбайн AIO и примеров бэка на на нем овердохуя.
Какие готовые решения есть? Есть несколько систем, надо сделать адаптер, чтобы они могли общаться. Пишешь на питухоне такой адаптер. В одной системе запросы по SOAP, в другой REST.
Нужно хранить логи и промежуточные данные. Вот тебе реальная задача. Вот реальная задача.
блжд, мск. в моем мухосранске - нету такого, даже явы лол. Я про это и говорю, что дсам повезло, их могут научить, тянуть. А меня - никто не тянет, и друзей в этой сфере нету. И все вузы - еще и платные. Вот я сам и ебусь. Плюс - я не так охуенно знаю англ, на уровне со влоарем. Мониторю хх ру, там требования, ебал я в рот. Очень много надо знать, опыт, и все с нуля ебать. Этому лутц меня не учил.
> по другому чем у лутца
лутц это не питон это просто книжка по его синтаксису, хотя я более чем уверен что ты и половины ее не осилил
>готовить питонистов
обилие инфоциган явно показывает, что питонистов и так готовят
>меня не пригалашают
с таким отношением тебя даже на час просмотра зарплаты програмиста на ютубе не позовут
Да нет, просто нужна работа. А на работе, в отличии от твоего маня мира требуют чтобы работа была сделана)
сори если рушу твоего лутца.
Ну лутц то про програмирование, а тебе нужна работа такая чтобы по праздникам можно было куриный доширак купить комуналку платить и на средней дешовости интернет чтобы позволял на дваче срать
ты просто сыкливый. Я пришел считай нулевый с Java Core и начальным питухоном. В итоге все на месте освоил, потому что например Лутц не учит как работать с RabbitMQ или как пользоваться ORM и нужна ли она или прямые запросы, лол.
Специальность мат методы в экономике, но я все нахуй растерял, перекатился в программирование в 29, короче 2 года только.
Никто не тянул, пиздил сначала код с SO, спрашивал там, потом начал гуглить, смотреть кто и как реализовывал какие-то задачи, потом тупо читал руководства по библиотеками, теперь еще и issues на github.
А хули делать? IT оно такое, иногда и без наставников ебашишь.
> а тебе нужна работа такая
> ты не должне жить
> ты унтерменш
> ты не человек
> ты конченный скот
> потому что я белый человек и так решил, потому что закончил мфти. А ты - нет. Я гитлер на яве, а ты - мразь на питухоне от инфоциган, на котором ездят луноходы на марсе, пашет инста и ютуб, и еще куча всякой хуеты вплоть до этой борды.
Ну глупо, рили так рассуждать.
>Лутц не учит как работать с RabbitMQ
бля люто плюсую ну че ему сложно чтоле пидорасу старому а заодно и монге пусть научит и джаве скрипту ну и скл за одно куда же без него , вот же пидорас ленивый не учит нихуя
И докеру, и новому синтаксису, и новому форматированию, и рыночным отношениям, и как искать работу, и как идти нахуй, как в рашке устроится прогером, как в мухосранске найти работу на питухоне, как знать все и сразу, как написать твитер с нуля, и торнадо, и фласк, и .... и ... и вообще все и сразу. Вот сука то.
Ну не учат! Не учат жи! Как так!?
А что там с монгой? РКН заблокировали сайт с документацией и примерами? Доступ стал платным? Уууу рашка. Надо валить.
да че с ней че с ней это че с лутцом че ему трудно научить чтоли анонов желающих работать и чтоб работа была сделана и опыта еще дать и профильное образование чтоб на собеседования звали?
>Надо валить.
Кого?
Ну а вообще согласен, где это видано чтобы работать програмистом надо оказывается уметь программировать, пиздец рашка о5 дно пробивает
>Но работодателю этого не достаточно.
скажи ему этому обэмэ работадателю что ты квалифицированный специолист, у тебя такие мощные проэкты как просмтр хауди хо пайтон за час и джанго за час, и что он полный дурак раз ему этого недостаточно
Профит в том, что источником изображения для VNC является не ось, а видеозахват. То есть у меня нет ни X11 на стороне сервера. У меня там кроме картинки из устройства вообще ничего нет.
Блядь, я не хочу аттеншнвхорить, просто показать будет проще: https://github.com/pikvm/pikvm
Я сделал байду, которая изображает из себя недо-IPMI. Мне надо в VNC, в котором рисуется BIOS компа, сделать менюшку для управления питанием и подключения сменных носителей. Ну и у меня два пути: сделать расширение протокола (его согласны добавить к себе и в стандарт челы из TigerVNC, потому что проект - не хуй с горы и пользователей много), либо рисовать картинку.. Я склоняюсь к картинке, потому что протокол потом в стандарте не допилишь, а мало ли чего мне еще захочется рисовать.
while True:
choose = int(input("would like to view: > "))
print(animals[choose])
while True:
----choose = input("would like to view: > ")
----if choose == "exit":
--------break
----else:
--------choose = int(choose)
--------print(animals[choose])
от души, не додумался, что сначала нужно делать проверку на выход
a = ['один', ',', 'два', ',', 'три']
b = ' '.join(a)
b.replace(' , ', ', ')
print(b)
выдает
один , два , три
вместо
один, два, три
с пробелами по обе стороны запятой? Как их убрать в итоге?
стрип же удалит все пробелы вместо одного перед запятой
Объясните пожалуйста максимально доступно, как ребёнку, зачем?
Что означает строка self.name = name
>Питонисты, расскажите, в чём вы пишите свой код. Какая-нибудь IDE? Какая?
PyCharm + Cmder в качестве терминала + Sublime для редактирования отдельных файлов, не входящих в проект.
Благодарствую
>зачем?
затем, что гвидо так захотел. ни больше, ни меньше.
>Что означает строка self.name = name
self - ссылка на себя
self.name - создать в себе переменную name
self.name = name - инициализировать переменную name аргументом функции __init__
VSCode с плагинами, Пучарм прожорливый. ГУИ для подключения к БД - DBeaver, потому что у него куча драйверов, из минусов - Java/JDBC
celsius = (fahrenheit - 32) * 5 / 9
round(celsius, 3)
return celsius
print(fahrenheit_to_celsius())
Почему число не округляется?
>Pypy won't resolve Python problems of running a single-thread each time, since it also makes use of the GIL - http://doc.pypy.org/en/latest/faq.html#does-pypy-have-a-gil-why
наверное потому что значение в переменной не перезаписывается?
celsius = round((farenheit-32)*5/9, 3)
return celsius
ты учти, что когда над объектом проводится операция, то либо ты в новую переменную сохраняешь, либо перезаписываешь текущую. Так-то за тебя ни интерпретатор, ни компилятор не додумает надо тебе результат сохранять или выбросить его к хуям при сборке мусора.
Ты провел операцию округления, но результат не сохранил в переменной. Учти, что питухон прожорливый, чем меньше переменных с выделением ячеек в памяти, тем проще сборщику мусора. Тем более динамическая типизация.
решаю, на хайпер скиле, что не так?
def pairs(arr):
return sum( abs(a-b)==1 for a,b in zip(arr[::2],arr[1::2]) )
print(pairs([21, 20, 22, 40, 39, -56, 30, -55, 95, 94]))
что записывает в кортеж вот ето выражение abs(a-b)==1
оно же блядь логическое и с ним функция sum не должна работать
Дан произвольный список, содержащий и строки и числа.
Есть задание:
Дан произвольный список, содержащий и строки и числа.
Выведите все нечетные элементы в одной строке.
Вопрос в том, как мне сделать список, содержащий СТРОКИ и ЧИСЛА
Что не так на пикриле?
И еще такой вопрос, кто работает, можно уточнить для чего именно пилят эти самые веб-приложения, ну примерно. Не просто же сайты, фирмам надо для чего-то же. И по стеку. Джанги хватит? Или надо фласк и батл и пирамиды всякие знать. Что посоветуете для изучения? какие связки лучше юзать или дрочить.
Например - бд sql alchemy
веб - джанго, фласк или что?
для деплоя че докера хватит? или надо дрочить ансиблы всякие?
Ну и для девопа что дрочить? датадога хватит?
Мне просто интересно, как происходит процесс создания веб приложух. С чего начинают, и тд и тп. Опыта нету просто. Читаю вакансии, пишут кто на что горазд, а что дрочить то конкретно?
А, ну для фронта что? явы хватит с хтмл и кссом?
Можешь так:
import random
str_or_int = lambda x : str(x) if random.randint(10)<5 else x
ls = [str_or_int(x) for x in random.sample(range(1,100),10)]
Не заморачиваясь, строка, содержащая число все равно считается строкой.
> этапы разработки веб-приложения?
там сбор требований, формулирование задач, реализация, ревью, тестирование, выкатка, мониторинг и так по кругу
> для чего именно пилят эти самые веб-приложения, ну примерно
для того чтобы приносить бабло, либо это сайты на заказ, которые делают какую-то хитрую штуку, либо внутренние тулзы для бизнеса, либо API для каких-то сервисов. 99% случаев это получить json, распарсить, положить в БД, отправить емеил, тыкнуть внешний сервис, собрать json
> Джанги хватит?
да
> какие связки лучше юзать или дрочить
django + drf
flask + sqlalchemy
aiohttp + sqlalchemy
БД либо postgres или mysql, либо mongo
> для деплоя че докера хватит?
да, но лучше потыкать в gitlab ci
> или надо дрочить ансиблы всякие
не надо
> Ну и для девопа что дрочить
elk
> Мне просто интересно, как происходит процесс создания веб приложух
приходит твой начальник и говорит, что есть проблема: тетя срака устала считать на калькуляторе сделайте ей кнопку чтобы хуяк и заебись ты делаешь
> ну для фронта что
reactjs
На самом деле знания лишними не бывают и то что ты шаришь в ансибле скажется на зп положительно. Но расписал стек который наиболее распространен сейчас
> этапы разработки веб-приложения?
там сбор требований, формулирование задач, реализация, ревью, тестирование, выкатка, мониторинг и так по кругу
> для чего именно пилят эти самые веб-приложения, ну примерно
для того чтобы приносить бабло, либо это сайты на заказ, которые делают какую-то хитрую штуку, либо внутренние тулзы для бизнеса, либо API для каких-то сервисов. 99% случаев это получить json, распарсить, положить в БД, отправить емеил, тыкнуть внешний сервис, собрать json
> Джанги хватит?
да
> какие связки лучше юзать или дрочить
django + drf
flask + sqlalchemy
aiohttp + sqlalchemy
БД либо postgres или mysql, либо mongo
> для деплоя че докера хватит?
да, но лучше потыкать в gitlab ci
> или надо дрочить ансиблы всякие
не надо
> Ну и для девопа что дрочить
elk
> Мне просто интересно, как происходит процесс создания веб приложух
приходит твой начальник и говорит, что есть проблема: тетя срака устала считать на калькуляторе сделайте ей кнопку чтобы хуяк и заебись ты делаешь
> ну для фронта что
reactjs
На самом деле знания лишними не бывают и то что ты шаришь в ансибле скажется на зп положительно. Но расписал стек который наиболее распространен сейчас
Годно спасибо большое отдуши анон, хотя бы есть куда искать теперь и что учить, и не быть дауном на собесе. Никогда не работал в этой области, хочу иметь хотя маленькое представление вообще что это такое и как строится процесс. У меня такое впечателние, приходит начальник - сдела то, не знаю сам что, чтобы делало то не знаю что за неделю. И все. Сидишь, потом встаешь и идешь нахуй.
Да, проебался, пофиксил уже
Не сразу понял, что ты там список создавал, и написал про len, можешь тогда с дальнейшим решением помочь?
Ну давай
print([y for y in filter(lambda x : isinstance(x,int) and x%2==1, ls)])
По простому циклом
for el in ls:
if(isinstance(el,int) and el%2==1):
print(el)
Интереснее циклом
for el in ls:
try:
if)(el%2==1):
print(el)
except:
pass
Или проще
print([x for x in ls if isinstance(x,int) and x%2==1]) фильтр в принципе не обязателен.
А по алгоритмам что посоветуешь? Или дрочить фрейм - этого хватит? Я имею ввиду - юзать уже готовые решения. Или надо будет именно все делать с нуля.
Ты тут по-моему выводишь нечётные по значению элементы списка.
А в задании надо элементы по нечётным номерам в листе( первый, третий, пятый и т д)
или я долбоеб код не понял
>Выведите все нечетные элементы в одной строке.
Я это понял как нечетные числа. Иначе в чем вообще смысл?
написать
for el in range(0,len(ls),2):
print(el)
или
print([ls for i in range(0,len(ls),2)])
?
>Выведите все нечетные элементы в одной строке.
is_int = partial(lambda e, f: isinstance(f, e), int)
res = " ".join(str(e) for e in filter(is_int, rand_list) if e % 2 == 0)
до sum , там генератор со значениями True и False
и как функция sum может складывать логические значения без преобразования?
вроде вкурил, sum работает только с числовыми итерируемыми объектами , а там он генератор как раз потрошит
всем спасибо
> А по алгоритмам что посоветуешь?
задачи самого простого уровня на leetcode, мб среднего
> Или дрочить фрейм - этого хватит? Я имею ввиду - юзать уже готовые решения
Как правило поверх готовых решений ебашишь свое говно. Сложных алгоритмов нет (если ты конечно не попадешь на проект где именно алгоритмы и разрабатывают), в принципе поиск в ширину на графе или общей подстроки это самое сложное с чем может столкнуться веб-макака
Есть у меня байт-строка:
bstr = b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b'
Я её превращаю в строку:
bstr = str(bstr)
>> " b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b' "
Как мне эту строку обрабтно перевести в байты?
Вдогонку тем, кто хочет использовать sum для логики. Есть еще две полезных функции:
In [2]: any([1, 0, 0])
Out[2]: True
In [3]: all([1, 1, 1])
Out[3]: True
У тебя же на картинке все написано есть, дебс.
кто сказал? реализация запрятана где то в сишном коде и там хз чо
но то что принимае True и считает его за 1 говорит о том что таки что то такое есть
Отвечу сам себе.
Из строки нужно убрать b'' и применить команду encode().
В моём случае -
bstr.split("'")[1].encode()
Задача:
Сколько полных часов, минут и секунд содержится в x секундах? Разложите имеющееся количество секунд на сумму из x часов + y минут + z секунд
Мое решение:
s = int(input('введите кол-во секуд: '))
x = int(s/(6060)) # це часы
y = int((s-x6060)//60) # це минуты
z = int((s-(x6060+y60))//60) # це секунды
print(str(x) + ':' + str(y) + ':' + str(z))
Проблема решения:
Код почему-то упорно не желает высчитать z(т.е. оставшиеся секунды) и приравнивает его к нулю. И я упорно не могу понять почему так нахуй. Буду рад вашим мыслям по этому поводу.
Ну тут только переменные, нету логики. Даже не вдаваясь - в этом причина. Нужна логика, алгоритм решения. Те сначала решить, потом закодить. А ты просто объвил переменные сделал контенацию и вывел. Этого мало.
А ты наоборот извлекай, через остатки от деления, тогда и не будет никаких проблем. У тебя деление нацело погрешность вносит.
t = int(input('...'))
ss, t = t%60, (t-t%60)/60
mm, t = t%60, (t-t%60)/60
hh = t
print("{}:{}:{}".format(hh,mm,ss))
conv = lambda x, div: (x%div, (x-x%div)//div)
ss, seconds = conv(seconds, 60)
mm, seconds = conv(seconds, 60)
hh, seconds = conv(seconds, 24)
dd = seconds
Или с лямбда-выражением. Где-то был кусок кода с аналогичной логикой, но разбивающий время до дней.
>У тебя деление нацело погрешность вносит.
Хм, спасибо, попробую по другому. До сих пор не понял что конкретно не так, но наверное да.
minutes, seconds = divmod(remainder, 60)
return '{:02}:{:02}:{:02}'.format(int(hours), int(minutes), int(seconds))
Решил вопрос с задачей тем, что в z перестал ссылаться на переменные x и y, что выглядит максимально уебищно, но хотя бы работает! До сих пор не очевидно что я конкретно сделал не так, но похоже ответ на этот вопрос я так и не найду.
Как-то так это выглядит:
s = int(input('Сколько хотите ссать мне на лицо в секундах?: '))
x = int(s/(3600)) # це часы
y = int((s-int(s/(3600))3600)//60) # це минуты
z = int(s - int(s/(3600))3600 - int((s-int(s/(3600))3600)//60)60) #це секунды
print('Вы хотите ссать мне на лицо: ' + str(x) + ' часов ' + str(y) + ' минут ' + str(z) + ' секунд ')
Меня волновал вопрос что именно я сделал не так в том коде, а не как решить задачу. Решить задачу - хуйня вопрос, а понять чяднт - полезно для понимания.
А, нихуя, я ошибся с формулой в минутах и попутал операции % и //. Карочи я еблан.
s = int(input('Сколько хотите ссать мне на лицо в секундах?: '))
x = int(s/(3600)) # це часы
y = int((s-x3600)%60) # це минуты
z = int((s-x3600-y*60)%60)#це секунды
print('Вы хотите ссать мне на лицо: ' + str(x) + ' часов ' + str(y) + ' минут ' + str(z) + ' секунд ')
ну значит жди пока он такой снимет :D
>>15745
Чутка наебал, мне не просто "очередь с приоритетом" где в PriorityQueue лежат tuple вида:
(приоритет, порядковый_номер, объект)
а засовывать в очередь чистые объекты (без всяких кортежей), а сам объект уже содержит поле priority и чтобы очередь с приоритетом на основе какой-то коллбека или хрен я знает чего определила, куда положить этот объект. По итогу должен быть чистенький список с объектами, лежащими по приоритету, без всякой лишней ебени
Я на работе написал небольшой скрипт, который дергает апишку. Апишка возвращает мне json с нужной информацией.
Проблема в том, что в жсоне возвращается дохуя полей, а мне нужны только нужные.
Среди них - поле 'date' которое содержит дату вида '2020-05-20T20:41:42Z', а еще есть поле 'tags', которое содержит в себе много тегов, и тип у этого поля - list.
Когда я делаю print(results['date']) - то у меня все выгружается красиво в столбик. А когда я пытаюсь выгрузить print(results['tags']), то питон пишет, что у меня KeyError: 'tags'. Собственно я и подозреваю, что это из-за того, что tags идут как список.
Как мне в конечном счете сделать принт только тегов?
Хотя нет, подумал, что чуть другую инфу надо выгрузить, но тоже не получается.
На пикрелейтеде жсон, который я получаю. Мне нужно принтить значения поля created (с этим проблем нет) и поле 360000059967 (там где 'value': 'error'). Как мне это сделать?
filter(lambda obj: obj['id'] == 360000059967, result['ticket']['custom_fields'])
https://pastebin.com/9WdXJiHe
Если что, у меня таких жсонов куча, так что я просто хочу складывать данные по полученным полям в заготовленные переменные через append, выглядит это вот так https://pastebin.com/22D4BDkM. Принтом я просто дебажу.
>>16245
Попробовал втупую это скопипастить, но выдает ошибку KeyError тоже.
>filter(lambda obj: obj['id'] == 360000059967, result['ticket']['custom_fields'])
или
filter(lambda obj: obj['value'] == 'error', result['ticket']['custom_fields'])
хуй знает, что тебе нужно
Value туда разный может присылаться - условно говоря error, problem, report, incident, их довольно дохуя.
айдишник у поля всегда одинаковый, штоле?
Живу в пгт на 10к живых, так вот у меня вопрос, могу ли я допустим отправить резюме в дс, пройти собес удаленно и если успешно пройду, ехать уже туда со 100% уверенностью что у меня работа есть? Просто не могу сейчас ехать и рисковать в дс, и искать работу, так как денег на месяц жизни едва хватит.
Это от работодателя зависит, но да, возможно.
Есть питоновский модуль, там множество как функций так и классов. Хочу чтобы при вызове любой функции оттуда или любого метода класса (кроме специальных) логировалось имя этой функции/метода. Как это сделать? Вангую надо обернуть каждую функцию и каждый метод класса особым образом, но как это сделать на практике?
Подскажите что делает эта функция
def end_one(n):
while n > 6:
n = sum(map(lambda x: int(x)*int(x) ,f"{n}"))
if n == 1:
return True
не понятен второй аргумент в map - f"{n}"
конкретно в данном случае такое написание вогнало тебя в тупик , вообще можешь пробежать глазами по ф-строкам питоновским на какой нить статье
for i in range(0, 11):
Вообще, при любой возможности пытайся избегать циклов с итераторами, если это только не задачки на алгоритмы
при таком открытии файла, он закроется после спискового включения?
вот есть у меня допустим публичный репозиторий на гитхабе, чтобы можно было показать кому-то. А в нем скрипт на питоне, в котором используется Api key сайта. Есть какой-то способ этот api key скрыть от посторонних? Как вообще люди делают?
Ты говоришь про гит-репозитарий, то не умеешь юзать гит?..
>А в нем скрипт на питоне, в котором используется Api key сайта. Есть какой-то способ этот api key скрыть от посторонних? Как вообще люди делают?
Все настраиваемые параметры должны быть в конфигурационном файле. Этот файл тоже является частью проекта, но перед коммитом значения логинов/паролей/ключей нужно удалить.
Просто делаешь конфигурационный файл с пустыми значениями и в описании проекта пишешь, что именно нужно заполнить.
>они в гит не должны быть проиндексированы и хранятся локально
Конфигурацию можно и нужно добавлять в гит, просто надо удалить все значения, оставив только ключи.
Там разве энвы в панеле админа и через консольку настраиваются
https://devcenter.heroku.com/articles/config-vars
> надо удалить все значения, оставив только ключи
Чего блять? Хоть понял, что сказал?
>Конфигурацию можно и нужно добавлять в гит
Удачи
Он имеет ввиду оставить файл типа такого, но затереть значения у определенных ключей
>после опен надо добавить ридлайнс
нахуя? файл сам по себе итерабл
разве что если надо прям сразу в память прочитать
>да, так как ссылки на него не будет
только вот ось может освободить файл хуй знает когда, если его явно не закрывать
У меня подобный реквест. Но я хочу задачи по рил лайф, то что требуется в конторах, офисах, фирмах. Чтобы кодить под определенные задачи. За что именно платят. А не так, решать математические задачи хуй пойми для чего.
Итак, реквест. Какие задачи будут стоять перед питонистом в офисе?
Прочитал про виртульную машину бульдозера для виртуалки, но на оф сайте не могу найти образ, может кто знает? У хауди была ссылка, но не могу найти почему то, или вообще выпилили?
Вот у меня есть такая структура проекта, точка входа находится в ./src/app.py, был добавлен alembic просто в корень.
Далее, при настройке этого алембика пытаюсь сделать импорт нужных штук, как на пике 2, на что при миграции получаю наверное закономерную ошибку импорта.
Видите ли, этот пидорас на находит модуль...
Внутри ./src и всех подпапках импорты работают прекрасно, везде есть __init__.py файлы
Чяднт? Вручную в sys.path добавлять путь(какой?) Неужели алембик криво накатил?
Если начинаешь проект, то добавляешь в гитигнор сразу, если хочешь убрать из трекинга что нибудь потом не удаляя, то git rm --cached твой файл/директори
И это, перекатите уже
спасибо, уже нашел что добавлять cached нужно
Вот допустим такой код для отправки фото в png в телеграм, как было в одном из примеров библиотеки
update.message.reply_photo(photo = open(screenshots_path + screenshot , 'rb'))
на выходе качество получается хуже, чем когда я скинул этот же файл в чат напрямую. Более пикселизированное какое-то.
Ага, пока так и делаю. Просто не оч удобно, если хочется код почитать\проверить.
в офисе:
парсить и перекладывать по локалке экселевские таблички разные, парсить сайты конкурентов в теже таблички,
что-нить мониторить в локалке / на сайтах и мылить уведомления куда надо.
мимо креветка со скилом питониста.
сейчач много куда книг вроде "что-нибудь на Python",
(вебдев, геймдев, криптография, ML DS и прочь.)
правда на англйиском в основном.
Ты можешь написать декоратор, но не для самого класса (чтобы не переписывать класс/переопределять методы), а для экземпляра класса. А потом по ходу выполнения функций логировать нужное с помощью атрибута __name__
Например, модуль requests:
a = requests
a.__name__ # Выведет "requests"
a.get.__name__ # Выведет "get"
Это копия, сохраненная 24 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.