Вы видите копию треда, сохраненную 14 февраля в 01:36.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2800678 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
#######################################
Вопросы-ответы:
— С чего начать изучать питон?
У питона намного лучше официальная документация, чем у большинства других языков. Есть там и учебное пособие для начинающих: https://docs.python.org/3/tutorial/introduction.html , неофициальный перевод на русский язык: https://digitology.tech/docs/python_3/tutorial/introduction.html (для питона версии 3.8, но разницы почти нет)
— Какие книги считаются лучшими?
На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых?
Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
старая версия шапки, треды 90-148 и ранее: https://dumpz.org/bASGKD8cCFDf
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущий исходник: https://goonlinetools.com/snapshot/code/#8gd2g1snu3l8i26k0bc6k9
>Вам не кажется что ООП в питоне какое-то детское что ли?
Оно просто другое потому, что платформа другая с другими возможностями
>всё паттернами обмазано, всё через интерфейсы где надо и где не надо.
Это их дикие костыли из-за ограничений платформ. Иначе очень сложно реализовать в компилируемых языках. Просто подумай, как это всё выглядит на машинном уровне и станет понятно
>А я вот при погрузке жисонов никакими фичами ООП кроме наследования и не пользуюсь по сути.
классическое ООП = инкапсуляция, наследование, полиморфизм
В целом пользуюсь всеми тремя особенностями. Полиморфизм, это когда у тебя функция принимает базовый класс, а дёргает методы этого класса, а в функцию ты передаёшь унаследованные классы, в которых эти методы реализованы по-своему, сильно по-разному. Не всегда это нужно, но вот в проекте на котором я сейчас работаю, это очень активно используется.
modern way способом, то есть без лишней еботни и чтобы все работы и успешно развертывалось на других платформах.
Сама суть приложения очень простая упрощенный склад (табличка в sqlite куда можно добавить продукцию и ее количество, обновлять количество, планировать закупку)
Хочется удобства - один раз сформировать api и чтобы фреймворк сам все подтянул из него.
FastAPI выглядит очень вкусно и он у меня сразу сходу завелся, скорее всего возьму его, что еще порекмендуете? какой самый бест гайд по фасту (кроме документации) нуи по всей обвязке, как быстро разворачивать базу, не вводить постоянно CREATE TABLE и все такое..
Нужна скорость - говно, нужно быстро нашлёпать сервисов - петухон.
Да тут что нравится, наверное. Мне лично говноланг больше нравится из-за компилируемости и лучшей многопоточки.
Но сам сейчас работаю на легаси копролите на питоне. Всякого пиздеца достаточно у нас. Из-за того, что питон интерпретируемый, а не конпелируемый, бывает что стреляет что-то на проде, что влияет на пользователей. И это пиздец. Кто-то не тот параметр передал в функцию, забыл протестировать этот сценарий, и все, пизда. Либо сейчас, либо через 3 года. Старые баги тоже стреляют часто. Причем баги такие, которые можно было бы компилятором отловить.
Три года не программировал, сел делать себе таск-менеджер на неделю, по привычке поставил flask и чот дальше затупил.
Я хочу, чтоб при обращении на /week происходил рендеринг шаблона /templates/week.html с данными data.
Для этого я, во-первых, делаю:
@app.route("/week")
def week(data=data):
return render_template("week.html")
Во-вторых, я делаю jinja2 шаблон week.html с переменной data в папке templates.
Сложности в следующем:
1. Откуда вообще взять простой и масштабируемый html для расписания на неделю? Достаточно совсем-совсем простого, типа как в дневнике школьном. Не самому же его писать
2. Хочу, чтоб помимо переменной data в шаблон подтягивались данные из допустим захардкоженной переменной stable_data, как это всё организовать?
3. Как тестировать потом это вот всё?
Во-первых, в твоём текущем коде твой шаблон сейчас не получает никакие данные, если только они у тебя не статичные и не вшиты в сам шаблон.
Во-вторых, чтобы их туда передавать, тебе в самом шаблоне надо эти данные вставлять через экранирование и некоторые правила:
https://jinja.palletsprojects.com/en/3.1.x/templates/
https://pythonbasics.org/flask-template-data/
В-третьих, захардкоженные переменные ты можешь объявить внутри приложения глобальной переменной/тащить из файла/бд/сети/откуда угодно.
В-четвертых, всё что в твоём приложении можно протестировать в текущем варианте, это твой единственный эндпоинт, который отдаёт шаблон. Мы можешь создать тестовый клиент с этим эндпоинтом и проверять, что он возвращает нужный шаблон:
https://flask.palletsprojects.com/en/2.3.x/testing/
спасибо. А шаблон на неделю где брать? flex template for week schedule пробовал гуглить, чот там много всего лишнего, не разобрался
Да где угодно, верстанием и не занимался и ui-библы не знаю.
https://codepen.io/javiercf/pen/XWXWGZ
Чел там просто в строке 57 ещё одна ошибка
>for w in words3:
надо заменить на
>for w in word_lst:
Очевидно же.
Там где сидят умные люди джуны не нужны кроме как ридми править
>Причем баги такие, которые можно было бы компилятором отловить.
Типизиция + mypy ловят 99% таких багов
Посмотри какие из тулзов которыми ты пользуешься написаны на питоне и подумай какой функционал ты хотел бы добавить к ним мб
>Мне лично говноланг больше нравится из-за компилируемости и лучшей многопоточки.
Многопоточка в го реально крутая, лучше, чем где-либо ещё. Всё остальное на любителя.
Хотя возможность скомпилировать, да ещё в один файл без зависимостей, это тоже круто. И распространять легко, и код не раздавать.
Охуенный преподаватель, но лучше книжки читать. По видосикам только дауны учатся.
Какую задачу вы считаете идеальной? Небольшую, на 5-10 минут. Чтобы проверить прям на собесе кандидата на основы питона. Какую задачу лично бы вы дали чтобы проверить, что кандидат хотя бы понимает базовый синтаксис и может быстро что-нибудь накодить?
Какую нахуй репу? У сеньеров/мидлов с опытом нет обоссаных пет-прожектов. На работе хватает кода. В приличном обществу сейчас никто не спрашивает такого.
Тем более в свою репу никто тебе не мешает натаскать чужих проектов, ага.
А, значит в ПРИЛИЧНО ОБЩЕСТВЕ хрюша тебя просят за 10 минут написать пузырьковую сортировку и таким образом определяет твой уровень. Ясно.
Может сортировку, может посложнее. И вопросами на теорию помучать, опыт посмотреть. Задача это только часть собеса. Никогда не видел чтобы требовали от тебя РЕПУ? Какую блять репу я обязан иметь? Что сука за бред тупорылого джуна.
Джун, спок
Хрюша на собесе? Ты был хоть раз на собесе?
>опыт посмотреть
Какой опыт ты смотреть собрался, если ты сам ни хуя не знаешь, иначе бы в треде не спрашивал. Лол.
Да уже натаскал задач с литкода. Те которые 150 top interview. Выбрал дэтри и хуй вам скажу какие. А то натаскаетесь и придёте на собес.
Всем спасибо, кроме дауна с РИПАЗИТАРИЕМ. Ебучий джун-вкатун даёт свои обоссаные советы. Ещё раз напомню: никому твой сраный репозиторий с пижжеными проектами не всрался, это сродни школьные грамоты принести на поступление в универ.
Если у тебя нет хоть каких-нибудь пет проектов на гитхабе, то ты говно, а не программист. Такого нанимать только в обоссаный яндекс.
>Всем спасибо
Проигрунькал. Тебе же только этот джун-вкатун и отвечал итт хоть как-то.
Представляю ебало синьора-помидора, который послы блестящего выполнения задачи встретится с напыщенной хуйней которая его валит задачками с литкода. Вся суть собесов.
Ещё раз для тебя, недоразвитого. HR технические собесы - не проводят. Ты нахуй о чем вообще? Хоть понимаешь как строится собес?
Уймись уже клоун, иди литкод скачивай.
Ну вот я собесился 1.5 года назад, синьор-помидор(ше) было похуй на мою репу, меня больше по солиду, аркектуре и паттернам ебали, на алгосы было 2 задачи, 1 одна из которых (как потом узнал) была с литкода, ну решил её минут за 15-20, проблемесы?
Если да то примерно сколько изи и сколько мид задач желательно пройти?
Все желательно
i, norm = 1, 0
while i <= len(d)/3:
if float(dictObj.get('normal'+str(norm))[0]) <= 0:
dictObj['normal'+str(norm)][0] = int(-float(dictObj.get('normal'+str(norm))[0])*511)
norm += 1
i += 1
В каждом цикле меняется ключ normal0, хотя должен измениться только один раз.
потому что у тебя вместо кода кусок говна.
Ебать ты пикрил
Тут постят раз в день, какую помощь ты рассчитываешь получить? Не думал, что нагуглить быстрее будет?
Анон, я знаю кунг-фу Питон и немного джанги. Хочу пару пэт-проектов написать: Бот Парсящий, Бот с API Работающий и Джанга Базаюзающая. И для первых двух мне вдохновения не хватает. Подкинь плес идей, что реализовать.
>Подкинь плес идей
Иди на фриланс биржу, найди заказы на ботов. Частый кейс когда нужно взаимодействовать с апи какого-нибудь инстаграмма
Воистину мудрая мысль, спасибо!
сделай бота, который будет кидать хентай по жанру
Давно настолько нечитаемого говна не видел
Сам Пітон - дзіцячая мова, бо стваралася на падставе мовы "АBC" для шкаляроў. Дочаш дарослае ААП - ужывай php.
https://gaudiatech.github.io/pyved-engine/
Чё как стоит ворваться?
Детям игрушки незатейливые писать.
Если прям рогалики рогалики, то https://github.com/libtcod/python-tcod
https://rogueliketutorials.com/tutorials/tcod/v2/
Для ретро-игр вообще есть https://github.com/kitao/pyxel по типу фэнтезийных консолей как PICO-8.
Можно ещё raylib с биндингами - https://www.raylib.com/
https://electronstudio.github.io/raylib-python-cffi/
Ох нихуя! Рейлиб нарядная, а Пухель даже под веб можно.
Спасибо, анон. Пойду читать, ближайшие недели две не ждите моих искромётных шуток про жопу.
Хуя подрыв. Не трясись ты так.
>Не все в наше время могут понять суть своих репозиториев с нахуй никому ненужными "проектам"
1.013 = 1.01
0.30001 = 0.3
Это можно сделать как-то в рамках модификаторов форматирования, а не писать свою функцию?
хочу сделать класс, наследующий от pandas.DataFrame, чтобы наследовал все методы pandas.DataFrame, а также имел свои. при этом у меня есть библиотечные функции, которые возвращают объект pandas.DataFrame, а мне бы хотелось превращать его в объект моего производного класса
В C++ это легко достигается нативными средставми через указатели и виртуальные функции. А что делать в Python? Чат жпт не нашёл адекватного решения. Оно существует?
ну и что - если оно простое и работает
также второе с __new__ хорошее
если я верно понял, то с ним те объекты DataFrame, которые у меня возвращают внешние функции, сразу будут объектами моего производного класса, т.е. конвертация даже не понадобится
я ещё не пробовал, но выглядит как то, что нужно
Есть два класса, А и В.
Есть функция, принимающая один из классов и коллекцию инстсансов этого класса.
Как написать тайпхинты для функции, чтобы в коллекции могли лежать только инстансы именно переданного класса?
Чёт туплю.
1 скрин: чето не пошло
2 скрин: разверну вопрос конкретней - мне нужно из этой папки програму высрать на комп
другую версию пайтона попробуй
To use Stable Diffusion, you'll need to have Python 3.10. 6 installed on your device.
Попробуй с числом меньше нуля.
пробовал. но после старта оно лезет в папку 37 питона, и из-за его отсутствия выдает ошибку в самом начале. какбудто бат этот откалибровался на него. не знаю как перенастроить. я ставил 37 чтобы torch поддерживался.
>оно лезет в папку 37 пытона
Маеш змяніць шлях у пераменных асяроддзя PATH, PYTHONPATH у наладках windows.
Надо что-то типа
T = TypeVar('T')
def f(obj_class: Type[T], collection: Collection[T])
но для нескольких классов, наследственностью не связанных.
Если я правильно понимаю,
T = TypeVar('T', A, B)
def f(obj_class: Type[T], collection: Collection[T])
позволит передать obj_class = A, collection = [B(), B()], а не должен.
Сейчас не время начинать с азов программирования, принципов работы ос и прочего! ГПТ на пятки наступает!
>T = TypeVar('T', A, B)
Это как раз что надо
>позволит передать obj_class = A, collection = [B(), B()], а не должен.
Не позволит. Такое позволит вот это:
>T = TypeVar('T', bound=A|B)
Что с попкой то было? Почему грязная была?
Спасибо, понял.
Есть вот такая конструкция для получения заголовка активного окна:
win32gui.GetWindowText(win32gui.GetForegroundWindow())
Как мне сделать проверку на определенный заголовок на ПОСТОЯННОЙ основе?
Что-то вроде такого:
while win32gui.GetWindowText(win32gui.GetForegroundWindow()) == "Notepad":
print("активно")
else:
print("не активно")
Проверять в цикле раз в n милисекунд?
есть датасет, в котором последовательности запускаемых юзером приложения, необходимо предсказать следующие 10, метрика mAP@10.
ну так ты перебери все модели, которые знаешь и выбери лучшую по этой метрике!
дай свой компухтер, переберу
И вот вопрос бля а где писать-то логику я не понял?
Можете пожалуйста рассказать как у вас архитектура проекта устроена? Пока я вижу её такой:
view -> serializer -> model
Всех заранее целую в пупочек
>Можете пожалуйста рассказать как у вас архитектура проекта устроена? Пока я вижу её такой:
>view -> serializer -> model
Ну да, так и есть
>И вот вопрос бля а где писать-то логику я не понял?
В моделях. В сериализаторах и вьюшках логики должно быть по минимуму
А это разве правильно что у тебя есть один класс в котором и сама модель которая описывает сущность в базе, и бизнес логика и скажем так репозиторий. Как-то гавной пованивает не? Если я бизнес логику вынесу в самописный service и буду его после serializer вызывать это нормальный вариант?
Ну типа вот так:
view -> serializer -> service -> model
Во первых
Я на cock_хольском не розумию, так что переведи через гугл переводчик свою какулю
Во вторых
Иди в жопу тролль
>view -> serializer -> model
Varta razharnuć tvaju schemu da nastupnaha:
>frontview -> backview -> serializer+model
Backview vykonvaje rolu kantrolera, business-logika źmiaščajecca tut. Heta ŭmoŭna adpaviadaje architektury MVP:
>View -> Presenter -> Model
Неправильно, логика должна быть в своём слое, а не в моделях. А называй как хочешь (сервис / интерактор / юзкейс)/
Почаны, нид хелп.
Хочу написать модуль расшифровки дампа траффика.
Есть negotiate от кербероса, модуль поднимает локальный сервер и отправлять гет-запрос (в хэдере authorization + билет крб) на этот сервер.
Продумал структуру, что это будет две три асинхронные функции.
Не могу понять две вещи:
1. мне в гет-запросе хостом чего указывать? Живой контроллер домена или можно рандомную парашу туда указывать?
2. в гет-запросе эндпойнтом будет служить эндпойнт авторизации на контроллере домена или нет?
Очевидно не использовать шиндос.
Волчара, это ты реально решил брать заказы на фрилансе и скидывать вопросы на Двач?
https://freelance.habr.com/tasks/530917
Ну и на что ты и этот типок рассчитывают тогда?
Предсказать можно что угодно. Качества лучше чем у других добиться сложно, а выигрывает только один.
Ссылку кинь лучше.
На работе.
Я лично очень много опыта и знаний получил, когда работал над своим проектом в течение года или даже больше.
Тысячи строк кода написал самостоятельно.
>Про гит конечно я знаю, но не понимаю почему рекомендуют его использовать буквально в каждом проекте,
Для тренировки. Тебе жалко что-ли?
тогда нахуя спрашиваешь как заниматься СОРЕВНОВАТЕЛЬНЫМ ML, вместо того чтобы просто учебники читать?
Стоит покупать?
Зачем ты целочисленное и с плавающей точкой числа объявил строками, чтобы потом заменить их тип? Ты еблан или про нестрогую динамическую типизации не слышал?
Наверно именно поэтому юзатся venv в питоне, скорее всего нельзя
сам питон, какую-нибудь IDE и несколько нужных фреймворков. Библиотек разных можешь установить на будущее, типа тех что с таблицами excel работают и т.д.
docker и qemu-kvm
их ты без админских прав не установишь, тогда как какой-нибудь питон можно локально
а имея докер или виртуальки, ты потом в них сможешь много чего ставить
Установить их с разными алиасами хотя бы,my_package и my_package2, меня бы такой вариант устроил.
Вот есть такая функция:
def test(a, b):
return a+b;
При этом, я хочу вводить a и b с клавиатуры/
Как мне это делать?
А с чего ты так уверен что твой venv это то же самое окружение что тебе иде показывает собственно?
Как-то не ожидал что в пайчарме может быть иначе, он же проект создал уже с окружением и по идее открывает его в нём. К тому же, всё остальное работает. Вообще всё, кроме этой библиотеки.
На всякий случай проверил из этого окружения, библиотека есть.
что за тема?
Сделай обычный импорт или переименуй функцию не по имени модуля.
22-я строка: Это буквально код из документации, да и я пробовал переименовывать, не помогало.
5-я строка: вот я и пытаюсь понять что тут неправильно. Попробую импортировать целиком по совету анона выше
inp = inp.upper()
is_done = True
inp3 = "gavno"
while not is_done:
is_done = True
inp1 = inp.strip(" \'\",.;:%!?$#@[]{}\\'")
if inp1 != inp:
is_done = False
continue
inp2 = inp1.lstrip("ООО").strip(" \'\",.;:%!?$#@[]{}\\'")
if inp2 != inp1:
is_done = False
continue
inp3 = inp2.lstrip("ИП").strip(" \'\",.;:%!?$#@[]{}\\'")
if inp3 != inp2:
is_done = False
continue
st = f"select from fnsclients where sname like '%{inp3}%';"
print (st)
если ставить False - то бесконечный цикл.
Бтв на деньги поначалу похуй, батек даёт 20к в месяц, тян РАБотает учителем, я сейчас кроме как в ВОВ на пиратках пердеть нихуя не делаю. Забугор наверное нахуй нужен, у себя и так нормально, за роскошью не гонюсь. Скорее для меня айти это "думать", а не "зарабатывать". Хотя вот сегодня заработал целых 150 рублей, сделав ебланам одногруппникам лабу на бейсике
>Скажите, реально ли петухон перегрет вкатунами?
Да, он у всех на слуху.
>Хочется писать что-то реально интересное, математическое, полезное
Прости, а с какого хера ты обсираешь веб? Ты так рассуждаешь как будто ты уже 15 лет в вебе, сотню проектов уже запилил. Веб вполне себе интересен и полезен. У тебя пока ещё нет компетенции, чтобы так категорично рассуждать.
>Смогу ли я делать оконные приложухи на пекарню и сложные логики?
А какой в этом смысл... ну это тупо пиздец - писать десктоп приложения со сложной на питоне. Шоп они тормозили и лагали. Писать конечно можно НО ЗАЧЕМ!?
Не хочу я веб, это не мое, и точка. Насчёт десктопа я просто спросил. Я какой язык будет норм для вкатунишки, согласно моим запросам
А что если go, или какой-нибудь еще
Бтв на деньги поначалу похуй, батек даёт 20к в месяц, тян РАБотает учителем, я сейчас кроме как в ВОВ на пиратках пердеть нихуя не делаю. Забугор наверное нахуй нужен, у себя и так нормально, за роскошью не гонюсь. Скорее для меня айти это "думать", а не "зарабатывать". Хотя вот сегодня заработал целых 150 рублей, сделав ебланам одногруппникам лабу на бейсике.
На слуху есть ещё C#, GO и Kotlin(но не уверен насчёт мобилок). Прошу помочь с выбором стула. Заранее благодарю
Сори, хотел в нюфаня-тред отправить
>Не хочу я веб, это не мое, и точка
Ну не твоё и не твоё. Только не говори, что веб не интересен или нет полезных проектов.
>какой язык будет норм для вкатунишки, согласно моим запросам
А причём здесь язык? Любой КОМПИЛИРУЕМЫЙ язык норм. Главное не язык, а мастерство владения им. Что толку тебе давать какой-нибудь С++, если ты будешь использовать его на 5% возможностей.
Язык - это индивидуальный инструмент, со своей собственной философией. Это как выбирать музыкальный инструмент, ты же не спросишь - посоветуйте на чём мне играть, на фортепиано, на скрипке или на барабанах? Кто-то любит ООП, он берёт java. Кто-то любит функциональщину, он берёт elixir. А кто-то любит более специализированный научный язык, он возьмёт r.
Выбирать надо по своему вкусу, может тебе сейчас посоветуют баян, а ты всегда мечтал быть джазовым саксофонистом.
да. вьёб парашка ещё та. говно реальное рвотное.
Ну так вопрос, что более актуальное под мои вопросы, вопрос даже, наверное, не про сложность вката, а про вакухи
>не про сложность вката, а про вакухи
Во всех популярных языках вакансий хватает. Если ты освоил язык и не можешь найти вакансию - проблема в тебе. Либо ты неправильно ищешь, либо не хватает скиллов. Вообще, выбирать язык исходя из рынка труда - тупая идея. Рынок консервативен по натуре. Рынок любит проверенные мейнстримные решения, если условный mysql использовали 20 лет назад, его так и будут использовать ещё 20 лет. Если php использовали 30 лет назад, его и будут использовать ещё 30 лет пока не здохнет. Рынку нет смысла рыпаться в новомодные rust, golang или kotlin. Количество вакансий - это признак мейнстримности, не более того.
> >не про сложность вката, а про вакухи
Ну так, что же будет более релевантным под мои мысли? С#?
.core уже давно кроссплатформенный так-то.
хуя озлобленный
Не позорь господ с репозиториями, долбоеб. Репозиторий может быть решающим фактором, а может человек всю жизнь коммерческий код писал.
// Мимо-8к-старов на своих проектах
На сях и питоне.
Ты можешь обойтись без ДФ или ты учоный (в питоне мочёный)? Штука отличная, но тормозная. Возьми какую-нибудь другую структуру данных. Даже просто в таблицу SQL их записывай — быстрее будет. Питон и так скоростью не отличается.
Прочитал — записал. Прочитал ещё — дописал дальше в базу... И никаких конкатенаций не нужно.
В отдельную доску выделили уже полгода как.
так у тебя скрипт еще не раз упадет с ошибкой или тебя забанят.
лучше сразу каждую новую страницу на диск в CSV пиши.
Ну а ДАТАФРЕЙМ загрузить потом уже дело техническое
У этого класса есть метод, объявленный в каком-то из родителей.
Можно ли узнать, какой именно родительский класс объявил этот метод? Без заглядывания в код.
Что-то вроде:
class Class2:
def method: ...
Class(Class2): ....
c = Class()
c.method.implemented_by ## Class2
Через __mro__
c = Class()
for parent in c.__class__.__mro__:
--if hasattr(parent, 'methodname'):
----print(parent.__name__)
----break
А чо лучше map или () и в чем ваще разница в моем случае?
Очевидно разница в том, что map - это ленивый итератор, а первая конструкция - генератор. И выбор между ними зависит от дальнейшего применения, если serialize это встроенный метод внутри каждого из элемента, то вызывать этот метод через лямбду и применять к каждому элементу - это как дотянуться до уха левой ногой через затылок. Можно, но зачем?
Чатжпт посоветовал fluent python. По оглавлению прям то, что я искал. Что можете насчет этой книги сказать?
Няма, бо PyQT - гэта бібліятэка для стварэння графічнага інтерфейсу для desktop, а не web.
В качестве первой книги сложновато может быть
Cори, отписал и забыл.
Я вообще где-то слышал звон - не знаю, где он, что эти анонимные функции вообще лучше не использовать.
Но в целом, у меня обе операции возвращают примерно одно и то же.
И поулчается единственная разница именно в лямбде и ты только из-за нее написал про ухо и ногу? или есть еще в чем-то разница?
>>880404
Спасибо за ответы, аноны, по-быстрому получилось решение набросать с датафреймами, все работает, но там и объемы данных маленькие - 10к строк. ДФ мне нужен, чтобы данные причесать и потом крутить в анализе, но вообще подкупило то, что тогда не надо хотя бы париться с парсером для джейсонов, а сразу сахарочком чистишь разглаженную табличку. Для саморазвития попробую реализовать запись ответов сервера в csv по мере поступления, чтобы не держать их в оперативке, и просто к этому напишу трансформер, который csv загрузит в датафрейм и после будет обрабатывать.
Хочу чтобы обрамление Frame было, а внутри информация в 2 колонки (поля и текст разный)
разобрался
На степике пройди курсы по питону от института биоинформатики, все остальное сможешь уже сам доучить
>идея освоить питон через платные курсы совсем плохая?
>эта херня типо скиллбокса лажа?
У меня две основных претензии к скиллбоксу. Первая это запредельная цена. Второе это то что они обещают золотые горы. Объясню подробнее. Вся задача курсов - это просто качественно учить, их не должно ебать твоё трудоустройство. Это всё равно что стенфорд или гарвард скажет - либо вы трудоустраиватесь, либо мы вам возвращаем деньги за пять лет учёбы. Время работы по распределению уже прошло. Сейчас уже не СССР. Они вообще не должны ссылаться на то, сколько получает программист. Правда в том, что на "джуниор" вакансию невозможно устроиться. Там конкуренция в районе 500-1000 человек на одно место. У тебя больше шансов попасть на пост директора газпрома чем пробиться на "джуниор питониста". Ну и цена курса в районе 150 тыщ? Или сколько там, не помню. Даже американские курсы в 3 раза дешевле, а по содержанию в 3 раза лучше. Ценность сертификата скиллбоксовского примерно нулевая.
TL;DR короче говоря, если бы скиллбокс стоил в районе 15к, не обещал трудоустройство, не обещал вернуть деньги, не ебал мозги акциями (рассрочки, скидки, прочая хуйня), и давал выборочно учиться - например мне хочется только RabbitMQ изучить. Пожалуйста. Тогда это были бы хорошие годные курсы.
установил питон
пытюась в матплотлиб, посылает нахуй
перерыл весь интернет выдрал все волосы на жопе
спасити
-
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python\Lib\site-packages\matplotlib\__init__.py", line 272, in <module>
_check_versions()
File "C:\Python\Lib\site-packages\matplotlib\__init__.py", line 266, in _check_versions
module = importlib.import_module(modname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Lib\importlib\__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Lib\site-packages\kiwisolver\__init__.py", line 8, in <module>
from ._cext import (
ImportError: DLL load failed while importing _cext: Не найден указанный модуль.
надо было ставить конду. твой матплотлиб уже в комплекте.
вы хуево понимаете что пипка это петонячий пакетный менеджер он не может разруливать зависимости вне питухона, а конда могет
нах вообще ставить че-та? вкатунировать можно в гугл колабе
припадаю к твоим стопам и целую пыль с твоих ботинок!
Два дня ебался((
установил Microsoft Visual C++ Redistributable и заработало!
Чел... Пиздуй изучать 1с или пыху
Почему не удается импортировать тензорфлоу? Я его же инсталлировал в конфиге никсов и pip list показывает, что нужные пакеты установлены.
Проблема в том, что tkinter может быть не установлен вместе с интерпретатором, при этом этого стандартного модуля нет в PyPI.
Как прописать tkinter в install_requires?
Почему pytest тесты вместо 20 секунд вдруг начали исполняться 6 минут? Шо за нах? Как проверить/задебажить что их вдруг так стало тормозить?
PIL.UnidentifiedImageError: cannot identify image file '1.psd'
Это не связано с количеством слоев или незнакомыми шрифтами. точно. В инете создается впечатление что проблема распостраненая и решают ее методом тыка. Но может здесь кто шарит
Это не глюк вс код, это один дебил интерпретатор после установки вэнв не сменил.
Хранить кучу файлов на сервере и отдавать их постоянно хуевая идея в продакшене, пока решил использовать S3.
Админ через админку аплоадит большой файл, я овверайднул форму сохранения, и перенаправляю аплоад на Амазон через Celery задачу, чтоб не грузить основной поток. После аплоада сохраняю url в БД и отдаю его на клиент при GET запросе.
Я так понимаю пока файл все равно будет сначала грузиться на сервер/оперативку, а потом уже летать в облако? Есть ли какие-то другие варианты?
Да никто так не делает. Тут ничё даже выдумывать не надо, есть готовые руководства по реализации https://aws.amazon.com/ru/solutions/implementations/video-on-demand-on-aws/ Видеофайлы надо перекодировать обязательно. Неперекодированные файлы - это гарантия переплаты за диск, тормоза на фронтэнде и т.д. Тем более никто ведерко напрямую не открывает. Надо ведерко подключать напрямую к cdn, чтобы кешировало. Тем более раздавать видеофайлы с s3-ведёрка как правило дороже. Celery - это уже велосипедостроение. Там уже есть готовые eventbridge/sqs/sns. Можно взять любой из них и запилить. По ценам - один доллар за миллион событий ёпт. Хватит с головой на всю жизнь.
О, благодарю. Даже не думал что все так продумано уже. Лет 7 назад помню на сервере через ffmpeg нарезали видео на разные качества, в итоге один аплоад пару часов занимал, а щас уже все намного проще.
Короче ссал на вас, веб-макаки, сам разобрался. Оказывается компания-пидор Hugging Face в очередной раз сделала кусок говнокода в accelerate - пока не передашь ей вообще все модели для подготовки эта пидорасина будет молча рвать граф, причина - потому что пошёл нахуй. Даже если вообще левую модель вызовешь между forward и backward - всему пизда.
>Скажите, реально ли петухон перегрет вкатунами
Не перегрет. Ты же ведь его учишь для для того чтобы вкатиться в датасатаниста/нейросеточника? У тебя есть высшее математическое, англ не ниже B2 и реальные шансы на оффер за кордон? В противном случае не понятно зачем тебе тогда вообще питон. Разве что для общего развития.
>У тебя есть высшее математическое, англ не ниже B2 и реальные шансы на оффер за кордон?
Без опыта он за кардоном нахуй не нужен а для кручения нейронками достаточно инженерного курса матстата
я пытаюсь сделать батник в папке проекта и пишу в него
.\Scripts\activate
python run.py
pause
и что блять я получаю? запускается виртуальная среда и всё, консоль закрывается, до python run.py даже не доходит, а до pause тем более, что за говно, как блять запускать проекты созданные в виртуальной среде? постоянно как долбаёб открывать консоль, активировать среду и запсукать нужный файл? чё за говно ебаное?
Программирование не для тебя, забей.
А по-серьезному, активируй 1 раз и запускай свои скрипты сколько хочешь. Или IDE юзай, они сами терминал открывают сразу в venv-e, если видят его в корне проекта.
Учу Django, в частности Django REST Framework.
Кто-нибудь работал с авторизацией по токенам?
Создал эндпойнт для логина, используя dj-rest-auth, который при успешном входе сохраняет в БД токен для некоторого юзера (как на пике).
Вопрос: как реализовать аутентификацию по токенам? Нужно создавать свой энпойнт, например: api/auth-by-token/, посылать на этот эндпойнт сохраненный у клиента в local storage токен, создавать свой view, который будет связан с этим энпойнтом и уже во view проверять, есть ли такой токен и если есть, то аутентифицировать?
В доке джанги ничего не написано.
>идея освоить питон через платные курсы совсем плохая?
По-моему отличная идея, но все зависит от твоей ситуации. Если есть деньги и мало времени - курсы твой выбор.
Сам я буквально на прошлой неделе закончил курс пайтон-разработчик (бэкенд) на Практикуме. По поводу качества знаний - я был приятно удивлен, дают много полезного. Но дальше все зависит только от тебя. Ты можешь ебашить каждый день, изучать предоставленный материал, посещать еженедельные трансляции наставников, задавать вопросы и т.д. и на выходе с курса получишь сильную базу. Либо ты ебланишь, делаешь по минимуму, а код для контрольных проектов пиздишь с гитхаба (тут может не повезти и тебя спалят на плагиат, тогда либо сам переписываешь, либо отчисление) - на выходе получишь примерно нихуя.
Ничего не имею против самообучения (самообучением придется заниматься даже на курсе), но надо понимать - самообучение требует умения в самоорганизацию, дисциплину. Гораздо выше шанс обосраться и не дойти до конца.
На курсе же - за тебя составили программу люди, знающие рынок, остается только прилагать усилия, для усвоения этих знаний (что тоже бывает непросто). Но за это надо зоплотить.
>Программирование не для тебя, забей
ты прикалываешься? я должен потому что ты не знаешь как, бросить задумку и ничего не делать?
я не хочу каждый раз запускать кучу консолей и в каждой вручную активировать среду для запуска ебанного скрипта на питоне когда мне нужно запустить одновременно много разных проектов, я уже нашёл решение, нужно было прописать в начале активации call чтобы эта параша не перехватывала консоль, а ты просто сам этого не знал, так и скажи
Мож на гитхабе есть уже че готовое, не знаете?
class Huy:
....def f1(self):
........print('f1')
....def f2(self, arg=self.f1):
........arg()
if __name__ == '__main__':
....huy = Huy()
....huy.f2()
> NameError: name 'self' is not defined
В других вариантах ловил другие ошибки. Как это сделать правильно?
>когда мне нужно запустить одновременно много разных проектов
Когда тебе нужно много проектов, ты их запускаешь в кубере, а не ебёшься с этим всем.
Неожиданно, спасибо. Пробовал похожее, но не понял, как побороть
> missing 1 required positional argument: 'self'
но когда увидел код - стало очевидно, почему именно так.
>>891695
В данном случае - функцию для консолидации данных, ей, иногда (в зависимости от места вызова и аргументов), нужны разные чекеры, которые она применяет для анализа входных данных разными способами, при этом алгоритм получения данных одинаковый, так что я вместо того чтобы писать 100500 одинаковых функций с разными проверками написал одну, которая умеет в разные чекеры (включая дефолтный). Очень приятный для поддержки способ, но с классами я как-то споткнулся.
Ладно, сам разобрался. Вот я долбоеб, все очевидно же было.
>сделать анонимного пользователя
Пик
>как на 2ch
Интернет полон примерами гостевых книг на любом фреймворке. Первая строка в Яндексе по запросу "python fastapi +guestbook example":
https://github.com/okteto/guestbook-api
Впрочем, конкретно у фастапи есть нюанс: он собственно хорош для апи, а фронт тебе придётся делать отдельно, например, на кьюте, ткинтере, фласке или джанге.
да я без фронта чисто апишку учусь делать.
Про гостевые книги спс, до этого даже не слышал об этом термине
> до этого даже не слышал об этом термине
Вау. Новое поколение в интернетах. Прикольно. А ведь раньше, когда эти ваши соцсети были в зачаточном состоянии на каждом сайте, чему бы он ни был посвящён, была гостевуха, где можно было высказаться о предмете, почитать чужое мнение и иногда (в зависимости от оживлённости) даже пообщаться, безо всякой регистрации. Золотое было времечко, я вам скажу. Людей в интернетах было меньше, поэтому общение было камернее и ламповее, а разделение на сайты гарантировало общность интересов в рамках конкретного интернет-ресурса.
Точно так же, как на форумах просто вместо ссылки на запись пользователя - хранится логин плейнтекстом.
Например, как тут:
class Entry(Model):
....name: str
....entry: str
....date: Optional[datetime.date] = datetime.date
А балалайкай па срацы?
премного благодарен, сэр
Это старый гонорейный пидор с пролапсом, охотящийся за грязными сраками молодых упругих питонистов ИТТ не первый год. Будь осторожен.
>Бо ты вызначаеш яе на ўзроўні модуля.
Дебс, как ты думаешь, откуда у него один уровень индентации на скрине взялся?
>Мусе быць у клясы.
шарпогоспода/джавагосподин, спок
>откуда у него один уровень индентации на скрине взялся?
Мб там на уровне модуля цикл или условие
The conflict is caused by:
torchvision 0.15.1 depends on numpy
accelerate 0.20.3 depends on numpy>=1.17
transformers 4.28.1 depends on numpy>=1.17
diffusers 0.17.1 depends on numpy
silero-api-server 0.2.9 depends on numpy
chromadb 0.4.10 depends on numpy>=1.22.5; python_version >= "3.8"
sentence-transformers 2.2.2 depends on numpy
openai-whisper 20230314 depends on numpy
tts 0.15.6 depends on numpy==1.22.0; python_version <= "3.10"
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
Что делать-то?
Я бачу несумяшчальнасць тут
>chromadb 0.4.10 depends on numpy>=1.22.5
>tts 0.15.6 depends on numpy==1.22.0
Паспрабуй новую версію tts
pip install TTS==0.16.6
калі не дапаможа, то старэйшыя версіі chromadb, каб працавала з numpy==1.22.0.
Спасбо. Я короче решил вообще TTS не ставить, мне только модуль chromadb нужен был.
>как его запустить дбез ебания в сосноль с активацией среды и только последующим запуском нужного файла?
просто указываешь полный путь к интерпретатору внутри venv
например
/opt/virtualenvs/black_jack_venv/bin/python entrypoint.py
>Дебс, как ты думаешь, откуда у него один уровень индентации на скрине взялся?
>>893727
>Мб там на уровне модуля цикл или условие
Йеп. Там штаное:
> if __name__ == "__main__":
Если ты об этом.
В общем, неинтересно разбираться, вставил на строку:
> # pylint: disable=invalid-name
Я знаю, что это переменная, а то, что линтер не понимает, что она изменяет значения не значит, что нужно править нейминг.
list_of_anons = []
Или так:
ListOfAnons = []
?
Я смотрю, принято писать как в первом варианте, но мне кажется второй как-то более строгий чтоль и красивый. Да и раньше я писал на языке, где так принято, никак переучиться не могу, да и хуй знает стоит ли.
>но мне кажется второй как-то более строгий чтоль и красивый
Деформация от первого языка, пройдет потом
>Посоны, вы как пишете код,
В кодописании есть такая вещи как code style guide. Он регулирует как выглядит код, это важно, чтобы код всего проекта был единообразен, вне зависимости от того, кто является автором каждого конкретного куска,это упрощает код-ревью и тому подобные вещи.
Обычно это внутренняя тема, но для Питона есть специальный общий документ, называется pep8. И он определяет, что:
> Имена функций должны состоять из маленьких букв, а слова разделяться символами подчеркивания — это необходимо, чтобы увеличить читабельность.
> Стиль mixedCase допускается в тех местах, где уже преобладает такой стиль, для сохранения обратной совместимости.
> Имена глобальных переменных
> Будем надеяться, что глобальные переменные используются только внутри одного модуля. Руководствуйтесь теми же соглашениями, что и для имен функций.
> Имена методов и переменных экземпляров классов
> Используйте тот же стиль, что и для имен функций: имена должны состоять из маленьких букв, а слова разделяться символами подчеркивания.
https://pythonworld.ru/osnovy/pep-8-rukovodstvo-po-napisaniyu-koda-na-python.html
Наличие такого документа и следование ему продиктовано дзеном, идеологией питона в целом. В частности этим заповедям:
> Readability counts.
> Special cases aren't special enough to break the rules.
> There should be one-- and preferably only one --obvious way to do it.
>>895425
Это читал?
https://stackoverflow.com/questions/69736380/using-nested-asyncio-gather-inside-another-asyncio-gather
Как лучше всего это делать в питоне?
1) Индивидуально проверять каждый путь на существование в os по мере необходимости?
2) Один раз взять listdir и уже с ним дальше работать?
Кто в подкапоте os знает? Второй вариант это ОДИН запрос к файловой системе через апи или там под капотом к каждому файлу запросы выполняются?
Стандартами питона принят стиль с подчёркиваниями. Спорное решение, мне в целом тоже кажется, что camelCase разумнее и стройнее, и современнее как-то.
Привыкнуть к любому можно. Иногда даже внутри питона используется camelCase, например в модуле logging и unittest. Но при этом в большинстве случаев всё-таки подчёркивания.
А дальше возникает ситуация смешения стилей. Скажем ты использует что-то из библиотеке, в том числе базовые классы, откоторых ты наследуешься, где методы используют подчёркивания. А сам ты делаешь camelCase. Как всё это совмещать?
Ну и ещё на проектах, где ты будешь работать, уже скорее всего какие-то практики сложены и скорее всего они по пеп-рекомендациям.
>мне в целом тоже кажется, что camelCase разумнее и стройнее, и современнее как-то.
Можешь рассказать каким образом это разумнее и современнее чем подчеркивания?
Хутчэй за ўсіх працуе os.scandir().
Мой стайл гайд это
some_variable
SOME_CONSTANT
someFunction
SomeClass
Делаю так везде, где это уместно, этого же принципа по возможности придерживаюсь в других языках.
Ох, парни, поел только что говна когда попытался добавить gunicorn к нашему проекту на uvicorn и fastapi
В общем, все знают что fastapi асинхронный и не поддерживает gunicorn по дефолту, вместо этого его запускают через асинхронный uvicorn. Но тем не менее во многих случаях на продакшене запускается gunicorn по своей привичной prefork-модели и ВНУТРИ него уже запускается uvicorn, в котором крутится fastapi-приложение - чтобы увеличить rps приложухи
Я все сконфигурировал, но начал хавать гавно как только увеличил число воркеров gunicorn больше 1. А все потому что на инициализации приложения fatstapi у нас выполняются некие скуль-команды - создание определенных триггеров и функций постгрес. Серит в логи: <class 'asyncpg.exceptions.InternalServerError'>: tuple concurrently updated
Ну бля, думается надо поставить какой-то лок на эту операцию, но ему пох, что asyncio.Lock что multiprocessing.Lock эффекта не дает. Может как-то подавить эту операцию в других инстансах гуникорна? Че делать-то? Как подобную проблему обычно решают?
Плагин для вордперсса, инди-игру, мобильную игру-дрочильню, какое-нибудь применение generative AI типа генератор фоток для СЗ...
VSCode больше не хочет. Других я просто не знаю
Привет питонистам! Как подучить Django за полдня? Для собеса. Есть может ссылочка у кого на свой любимый читшит-читбук какой-нибудь с основами и бестпрактисами?
Кароче мне очень нужна прога которая парсит сайт rule34,xxx и скачивает с него медиафайлы. Сначала я написал рабочую прогу которая в текстовый файл закидывает ссылки на все нужные мне посты со всех страниц. Потом уже мне нужно было написать вторую прогу которая работает так: переходит по ссылке из текстового файла, и скачивает медиафайл со страницы (каждая ссылка ведёт на пост содержащий либо одну хентайную картинку либо одну анимацию аналогичного характера). И тут я застрял. По итогу программа тупо скачивает разные пнгшки боковых панелей сайта, эмблему-заголовок сайта, и ещё какую-то хуету вместо того чтобы скачать самое главное — картинку/видос, основной контент-то. Подскажите что можно написать чтобы нормально всё работало и скачивалось?
Я использовал bs4, requests, selenium. Может другие какие импорты нужны? Буду сильно благодарен за помощь, очень уж хочется выкачивать весь медок в автоматическом режиме
А, про обучение это я к тому что вроде бы полезные достаточно трудные задачки в курсах этих дают, и я справляюсь с ними, но для решения реальной проблемы, написание кода для собственных бытовых нужд умение решать околоматематические задачки на ЯП ну вообще никакого плюса не даёт
Очень просто - вынеси данную операцию за логику приложения.
Я перед стартом имеджа с приложением запускаю пре-старт-скрипт, который выполняет опеределенные действия и затем уже стартует приложение.
>У сеньеров/мидлов с опытом нет обоссаных пет-прожектов
Ты не прав. Как раз у ждунов зачастую нет пет-проектов.
Пет-проект != код списанный с примера или написанный по аналогии.
Пет-проект очень легко отличить от хуйни и тупого наполнения профиля "репозиториями", любой мидол\сеньер-помидор это легко сделает.
Я работаю бэкэндером, постоянно занимаюсь доп.проектами и поддерживаю 3 пет-проекта-либы(одна свежая, остальным лет 5). Перед собесом предлагаю выполнить небольшое тестовое, либо показать профиль с проектами.
Решать задачки с литкода, наверное, тоже прикольно и на дата-инженеров может и самое то. В моей области такое не прокатит.
Если PyPy то почему в вики написано что самая распространённая это CPython?
>А какая конкретно имплементация питона качается с python.org?
CPython
>Если PyPy то почему в вики написано что самая распространённая это CPython?
Потому что так и есть
>Подскажите что можно написать чтобы нормально всё работало и скачивалось?
>Я использовал bs4, requests, selenium. Может другие какие импорты нужны?
Тут не в импортах дело, импорты сами по себе никак задачу не решают. У тебя в имплементации твоей хуитки ошибка какая-то. Судя по описанию ты неправильно задаёшь селектор для выбора интересующего тебя контента на странице
>>898489
>для решения реальной проблемы, написание кода для собственных бытовых нужд
Просто делай больше петов
Алло, очнись уже нахуй. ChatGPT с минимальным рефакторингом сделает тебе репу за 2 часа. Грамотно только вопросы задавай. Ещё один блять. Твои карманные проекты никому не нужны. Похвастаться таким можешь только в среде задротиков. А белым людям кода хватает на работе.
>Кабаньи тестовые
само по себе спорное явление
вообще, знания-технологии отдельно, опыт работы и разработки отдельно. Одно другое не заменяет.
Какие-то технологии, сам язык программирования, отдельные библиотеки, базы данных, принципы работы сети-сайтов - надо осваивать отдельно, лучше по книгам, обстоятельно. Не на пет-проекте, а именно технологию. Только так что-то полноценно можно освоить.
А учиться писать рабочий код и реальные проекты нужно отдельно. Это просто разные скиллы, их отдельно покачивают.
Пет-проекты у многих есть, но при этом у меньшинства.
Пет-проект это не учебный проект, это что-то реально рабочее, что нужно или тебе самому, или другим. Чаще имеет форму участия в опенсорсе, где над одним проектом много людей работает.
У меня есть тоже свои пет-проекты, они реально работают, но не в открытом коде, показывать их я никому бы не стал.
Ты видел какое говно без логики GPT высирает, одного взгляда на это уродство хватит чтобы понять откуда оно взялось. GPT сейчас это эхокамера, которую можно расценивать только как помощь вкатуну в обучении, как продвинутую версию гугла для поиска по темам на стаковерфлоу и то, то что тебе там найдется надо очень внимательно проверять.
Про ЧатГПТ ты прав, но тот анон же другое имел в виду. Что твой пет-проект ничего не показывает, потому что он легко может быть не твоим.
Тут на доске одно время угорали с таких вкатутов, которые ссылки на свои репозитории оставляли, и у все одинаковый набор "петов", почти как клонированы. Потому что оканчивают курсы, на которых разбирают создание приложения, довольно ёмкого, вкатуны тупо по инструкции реализуют это.
Не то, чтобы они совсем не понимают, но не показатель совсем.
Собственно в древние времена появились рекомендации, что типа хрюши смотрят, если у тебя есть репа, то это очень круто. Наверное так оно и было. Но потом про это стали писать, до всех донесли, и все стали себе делать репы с каким-то мусором, созданным по инструкции. И после этого все эти репы потеряли смысл, лавочка закрылась.
Получается что "петы не нужны" это просто отмазка некомпетентных кадровиков, которые НЕ МОГУТ оценить уровень человека по примеру его работы, которую он выставил им проще по методичке типовые вопросы задать.
Как лучше проверить что передали ей на вход именно some_func, а не вызов some_func() -> None ?
>ChatGPT с минимальным рефакторингом сделает тебе репу за 2 часа
Опять хуйню несешь.
Ты на столько джунский ждун, что не отличишь реальный проект с реальными комитами от говна созданного нейронкой?
Тогда, для тебя и правда лучше по бумажке проводить опрос кандидата. Главное ответы не забывай записывать, чтобы потом погуглить.
+ еще не встречал хрюш, которые бы смотрели репы. За последние года 3 только на 2 собесах репы точно смотрели.
Получается. Но у нас нет других кадровиков
>которые НЕ МОГУТ оценить уровень человека по примеру его работы
В этом просто нет смысла, хотя бы потому, что реальные петы у меньшинства. В основном же или их нет в открытом виде, или там мусор.
Кроме того, оценить проект сложно, надо потратить много времени, сильно больше, чем полноценное собеседование.
Таким образом, оценка пет-проекта может быть разумной на поздней стадии, когда уже прошли первые этапы с вайтбордами и т.п., стадия "близко к офферу". Но не раньше.
Написать сортивровку долбоебом за 1488 секунд.
Задачка на собес, литкодного типа
написать функцию, которая принимает на вход целое число N. Функция должна возвращать максимально возможную сумму чисел A и B таких, что A^4 + B^4 = N^4, или -1, если такой пары нет
В принципе несложная задача
>Функция должна возвращать максимально возможную сумму чисел
в смысле целых положительных чисел, иначе не интересно
Пчел, ты нас теоремой ферма не напугаешь. Мы жуки соевые-научпоперские все отсылочки знаем
Для начала уже неплохо.
Как бы я предложил тебе улучшить:
1. Дебаж локально на ПК
2. Делай пуш в репозиторий
3. После пуша в репозиторий пускай запускается сборщик имеджа из того что ты отправил в репозиторий. У гитхаба\гитлаба\битбакета для это все есть.
4. После билда имеджа клади его или в докер registry или в локальный registry сервиса, если оно там есть(у гитхаба есть точно).
5. На сервере делай докер пулл -имя имеджа-.
6. Запускай его на сервере. Не забудь удалять старый, ибо место закончится быстро.
В принципе этого уже достаточно, можешь ходить по ИП на свое приложение и работать с ним.
Если хочется большего:
1. Купи доменное имя
2. Настрой на это доменное имя Cloudflare. Под настройкой имею ввиду как минимум смену nameserver, привязку ИП к домену(еще поддомен можешь настроить), генерацию сертификата там же.
3. Сделай отдельный имедж с Нжинск. Если нет доп. хотелок - бери уже готовый, иначе придется билдить со своими хотелками, но это не сложно. Добавь туда файл с настройками нжинкса, добавь туда отдельные настройки для домена и поддомена. Домен, к примеру, может вести на главную страницу сайта, а поддомен на АПИ или админку.
4. Оберни эти два имеджа в докеркомпоуз.
5. Разберись с .env файлом и переменными, их секьюрностью.
6. Разберись с тем, как будешь в нжинкс передавать сертификаты полученные в Cloudflare.
7. Настрой CI чуть жирнее - добавь проверку кода и тесты перед билдом имеджей.
8. Все так же складывай имедже в registry.
9. Для автоматизации процесса выкатки обновлений на сервер можешь попробовать - Watchtower, но это не обязательно, можно и руками.
10. Для понимания работы вольюмов в композе - сделай связь между нжинксом и гуникорном через сокет-файл.
11. Можешь сделать несколько веток в репозитории и в зависимости от ветки и действия с ней запускать разные CI скрипты - поможет разобраться в синтаксисе и логике работы этого всего.
Best practices зависят и от бюджета\времени\опыта. То что я описал выше вполне хватит для небольших проектов без бюджета на ДевОпса и десятка серверов. В проектах серьезнее уже требуются всякие сервисы от Амазона\Гугла и прочих, Kubernetes and etc.
Для начала уже неплохо.
Как бы я предложил тебе улучшить:
1. Дебаж локально на ПК
2. Делай пуш в репозиторий
3. После пуша в репозиторий пускай запускается сборщик имеджа из того что ты отправил в репозиторий. У гитхаба\гитлаба\битбакета для это все есть.
4. После билда имеджа клади его или в докер registry или в локальный registry сервиса, если оно там есть(у гитхаба есть точно).
5. На сервере делай докер пулл -имя имеджа-.
6. Запускай его на сервере. Не забудь удалять старый, ибо место закончится быстро.
В принципе этого уже достаточно, можешь ходить по ИП на свое приложение и работать с ним.
Если хочется большего:
1. Купи доменное имя
2. Настрой на это доменное имя Cloudflare. Под настройкой имею ввиду как минимум смену nameserver, привязку ИП к домену(еще поддомен можешь настроить), генерацию сертификата там же.
3. Сделай отдельный имедж с Нжинск. Если нет доп. хотелок - бери уже готовый, иначе придется билдить со своими хотелками, но это не сложно. Добавь туда файл с настройками нжинкса, добавь туда отдельные настройки для домена и поддомена. Домен, к примеру, может вести на главную страницу сайта, а поддомен на АПИ или админку.
4. Оберни эти два имеджа в докеркомпоуз.
5. Разберись с .env файлом и переменными, их секьюрностью.
6. Разберись с тем, как будешь в нжинкс передавать сертификаты полученные в Cloudflare.
7. Настрой CI чуть жирнее - добавь проверку кода и тесты перед билдом имеджей.
8. Все так же складывай имедже в registry.
9. Для автоматизации процесса выкатки обновлений на сервер можешь попробовать - Watchtower, но это не обязательно, можно и руками.
10. Для понимания работы вольюмов в композе - сделай связь между нжинксом и гуникорном через сокет-файл.
11. Можешь сделать несколько веток в репозитории и в зависимости от ветки и действия с ней запускать разные CI скрипты - поможет разобраться в синтаксисе и логике работы этого всего.
Best practices зависят и от бюджета\времени\опыта. То что я описал выше вполне хватит для небольших проектов без бюджета на ДевОпса и десятка серверов. В проектах серьезнее уже требуются всякие сервисы от Амазона\Гугла и прочих, Kubernetes and etc.
>реальные петы у меньшинства
Это ты ты как понял? Хуйня с курсов и спижженое с других гитов может быть только у вчерашнего баристы, который ещё не знает, что он обосрется после первого же вопроса. Я же не утверждаю что интерьвю и тестовые нужно отменить и только на основании петов на галеру брать.
Спасибо, здорово! Я правильно понял, что на первое время просто gunicorn'а достаточно? Я какого-то хайлоада не ожидаю на сайт.
Можешь немного вообще прояснить, если знаком: я прочитал, что нджинкс имеет смысл подключать к gunicorn'у для
1) балансировки (перенаправлению запросов на разные инстансы приложения?)
2) когда хочется уметь отдавать еще и статические страницы (как я понимаю, во фласке даже main page на которой кроме нескольких ссылок может ничего и нет динамически рендерится каждый раз?
> 5. На сервере делай докер пулл -имя имеджа-.
Это я ручками должен делать каждый раз ведь? Это, наверное, как раз из того, когда на сайте появляется табличка "Сайт будет недоступен из-за профилактических работ с такого-то по такое-то"
Выглядит, что да. Иначе бы у пользователей просто сайт рандомно иногда отваливался из-за скрытого обновления. Щас подумал, что это можно делать и незаметно для пользователя, если есть несколько инстансов работающих, но это пока явно не мой случай.
Дочитал вторую часть сообщения, понял, что да
Меня еще интересовало, можно ли чего-то добавить на первом этапе, чтобы было посекьюрнее (какая-нибудь защита от ддоса и тд)
> 2. Настрой на это доменное имя Cloudflare
Можешь в двух словах объяснить, что он дает? Увидел, что как раз защита от ддоса а еще?
> 9. Для автоматизации процесса выкатки обновлений на сервер можешь попробовать - Watchtower, но это не обязательно, можно и руками.
Как раз показалось, что он ведет к проблемам, что я в начале поста описал, но, мб, там есть настройки на это
Сорри, если некоторые вопросы глупые, я никогда до этого с вебом дела не имел
Требуется посчитать длину дуги окружности, однако я почти уверен, что нельзя использовать никакие библиотеки, включая math.
Сейчас я считаю косинус угла между двумя векторами, но не могу найти алгоритм арккосинуса, чтобы подставить.
Есть ли другие варианты?
>Требуется посчитать длину дуги окружности, однако я почти уверен, что нельзя использовать никакие библиотеки, включая math.
Обычно math везде можно.
> Сейчас я считаю косинус угла между двумя векторами, но не могу найти алгоритм арккосинуса, чтобы подставить.
Какая задача? Косинус же можно просто через скалярное произведение найти
> что на первое время просто gunicorn'а достаточно
Его в принципе достаточно. Если есть хайлоад - скейлинг горизонтальный\вертикальный\диагональный.
> что нджинкс имеет смысл
То что ты перечислил - работа для обратного прокси, которым и является нжинкс. Гуникорн или всги тут роли не играет, ибо они прослойка между внешним миром и фласком. А нжинкс уже защищает приложение от агрессивного внешнего мира, выступая "внешним" миром для гуникорна.
> если есть несколько инстансов работающих
Да. но тогда у тебя будут свои проблемы. Если есть деньги то даунтайм сервера можно потушить при помощи платной функции Cloudflare.
> защита от ддоса
Cloudflare
> что он дает
Защита с правилами самописными, кеширование, CDN, стриминг видео, обработка фото, сертификаты, аналитика базовая, работа с геораспределенностью и еще что-нибудь что я забыл, но многое из этого за отдельные $$$.
> что он ведет к проблемам
Не бери на себя сразу слишком много. Вопрос по даунтайму при обновлении это непростая вещь, которая имеет несколько путей решений при твоей ситуации. Но тебе хватит и тех настроек что есть в Watchtower, т.к. там есть и роллинг апдейт и ожидание нормального завершения работы приложения перед обновлением. Если все у тебя норм, то старт контейнера с бэком занимает пару секунд - этого юзеры не заметят.
Вопросы у тебя нормальные, если сможешь все пункты осилить, то у тебя будет очень хороший опыт для работы или своих проектов.
Ок, спасибо большое за развернутые ответы!
Косинус я как раз нашел. Я имел в виду подставить в задачу самописную функцию арккосинуса, чтобы получить угол из косинуса, не используя math
А тупо через ряды Тейлора нельзя?
жесть ты кал высрал.
Обычно чтобы импортировать свой файл в скрипт как модуль добавляем путь в sys.path и делаем импорт.
А если у меня файлы называются "\dir1\a.py, \dir2\a.py,, \dir1\b.py," или как-то иначе, и расположены в разных каталогах, такие имена могут вызвать коллизию с другими именами, но я не хочу их переименовывать. Как мне прописать путь точно до этого файла?
my_module = __import__(r"D:\dir\a.py")
Мне надо как то вот так, но так разумеется не работает.
Импортированный модуль же установлен, чё не так?
Проверь корректность переноса строки, там не должно быть лишних управляющих символов
Я без DE, это скрипт в контейнере
Трэба ўжываць іншыя функцыі з бібліятэкі importlib.util
https://www.online-python.com/ZpIJc5dqug
Молодец, сделал хайлоад на коленке.
У меня возник еще один вопрос по ходу разработки. Пока у меня был один сервис без бд, все было очень удобно. Сделал коммит в репу -> собрался имейдж -> на ремоут сервере сделал докер пулл + докер ран. Когда в этой схеме появляется докер композ, то я должен руками скопировать этот докер композ на ремоут сервер (возможно еще указать путь до имейджа, но допустим там просто :latest). Собственно, мне не очень нравится этап с копированием докер-композ файла на ремоут.
Понимаю, что скорее всего, это разумно не обойти, но мне эта необходимость тащить какой-то, по сути, конфиг на ремоут сервер не дает покоя.
Проси две миски риса в день и один огурчик (свежий).
Для базы дадзеных не патрэбны Compose. Наогул ня трэба замяняць базу дадзеных на сэрвэры, бо яна захоўвае працоўныя дадзеныя. Змяняць структуру БД, дадаваць палі, можна праз прыладу накшталт Alembic - гэта як git, але для БД.
> о я должен руками скопировать этот докер композ на ремоут сервер
У тебя есть гит. На сервер клонируешь репу с гитом и оттуда берешь компоуз. И путь до имеджа ты не указываешь, ты указываешь УРЛ к имедже который сбилдился и лежит в хранилище. :лэйтест - тег имеджа, не имя.
Успокойся насчет компоуза, все ок. Не будешь тягать конфиги по серверам только в кубернетосах, на то они и следующая ступень развития.
>>904140
>Для базы дадзеных не патрэбны Compose
А якім чынам працавать з БД тады? Купляць асобную БД - занадта дорага, канфігураваць па-за межамі кампоуза - навошта? Гэта не прод ды не хайлоад.
>Необходимо написать программу, которая будет считывать последовательности измерений. В каждой последовательности нужно выбрать максимальное значение, а в итоге вывести отсортированный по убыванию список этих макс значений, разделенных символом “;”. Во входных данных в первой строке будет задано целое положительное число – сколько записей нужно обработать, причем самих записей может быть больше чем это число, это нужно учесть. Значения в рамках одной записи разделены пробелом, минимальное число значений в записи – 1. Записи разделены переводом строки.
>Пример 1
>Входные данные:
>3
>1 2 3
>2
>4 5 6 7
>Выходные данные:
>7;3;2
>Пример 2
>Входные данные:
>2
>1 2 3
>2
>4 5 6 7
>Выходные данные:
>3;2
Мой код: https://pastebin.com/nn7mzJXA
Однако получаю ошибку при проверке решения:
>Код ошибки: RE «Runtime Error» — программа завершилась с ошибкой исполнения
>"error": "Traceback (most recent call last):\n File \"/opt/client/solution/main.py\", line 5, in <module>\n while len(c := input().split()) >= 1:\nEOFError: EOF when reading a line\n",
Алсо, в PyCharm всё работает прекрасно, пробовал запустить цикл с for, но он не подходит под условие задачи (т.е. с клавиатуры можно будет ввести только n строк), там ошибка WA (wrong answer) из-за других output.
Как фиксить? Уже час сижу с этой хуйнёй.
>Необходимо написать программу, которая будет считывать последовательности измерений. В каждой последовательности нужно выбрать максимальное значение, а в итоге вывести отсортированный по убыванию список этих макс значений, разделенных символом “;”. Во входных данных в первой строке будет задано целое положительное число – сколько записей нужно обработать, причем самих записей может быть больше чем это число, это нужно учесть. Значения в рамках одной записи разделены пробелом, минимальное число значений в записи – 1. Записи разделены переводом строки.
>Пример 1
>Входные данные:
>3
>1 2 3
>2
>4 5 6 7
>Выходные данные:
>7;3;2
>Пример 2
>Входные данные:
>2
>1 2 3
>2
>4 5 6 7
>Выходные данные:
>3;2
Мой код: https://pastebin.com/nn7mzJXA
Однако получаю ошибку при проверке решения:
>Код ошибки: RE «Runtime Error» — программа завершилась с ошибкой исполнения
>"error": "Traceback (most recent call last):\n File \"/opt/client/solution/main.py\", line 5, in <module>\n while len(c := input().split()) >= 1:\nEOFError: EOF when reading a line\n",
Алсо, в PyCharm всё работает прекрасно, пробовал запустить цикл с for, но он не подходит под условие задачи (т.е. с клавиатуры можно будет ввести только n строк), там ошибка WA (wrong answer) из-за других output.
Как фиксить? Уже час сижу с этой хуйнёй.
Там паритет по производительности
> У тебя есть гит. На сервер клонируешь репу с гитом и оттуда берешь компоуз
ну это и есть "руками". Просто в таких сценариях чувствуется какая-то потенциальная "неконсистентность",
> Не будешь тягать конфиги по серверам только в кубернетосах
да, я нагуглил уже, что в кубах все можно сделать, но они оверкилл для моей задачи. Хотя ради интереса можно будет потом попробовать развернуть.
> И путь до имеджа ты не указываешь
я имел в виду путь = урл + тег. Правда почитал, что latest не рекомендуется указывать.
Есть одна задача яндекса...
Я успешно ее решил и получил отклик - слишком медленно.
Проблема в том, что тут даже не дают проблемный пример - типа сам ищи и тестируй все.
Я порвал жопу и нашел решение со сложностью O(n), безо всяких циклов в цикле, однако времени все еще тратится сликшком много.
Не представляю, как вообще можно было бы еще сильнее все сократить.
Какой алгоритм тут ожидался от меня? Или на чем можно срезать время?
Алсо если кто тоже участвует в тренировках по алгоритмам, пишите.
input()
ratings = input().split()
def zadacha(ratings):
s = 0
aCount = {}
for r in ratings:
a = int(r)
s += a
if(a in aCount):
aCount[a] += 1
else:
aCount[a] = 1
l = len(ratings)
bPrev = s-int(ratings[0])l
akPrev = int(ratings[0])
finB = (' '+str(bPrev))aCount[akPrev]
finB = finB[1:]
n = aCount[akPrev]
for k, cuantity in aCount.items():
if(k == akPrev):
continue
# print(k, cuantity)
bNext = bPrev + (k-akPrev)(2n - l)
finB += (' '+str(bNext))*cuantity
bPrev = bNext
akPrev = k
n += aCount[akPrev]
return finB
print(zadacha(ratings))
Есть одна задача яндекса...
Я успешно ее решил и получил отклик - слишком медленно.
Проблема в том, что тут даже не дают проблемный пример - типа сам ищи и тестируй все.
Я порвал жопу и нашел решение со сложностью O(n), безо всяких циклов в цикле, однако времени все еще тратится сликшком много.
Не представляю, как вообще можно было бы еще сильнее все сократить.
Какой алгоритм тут ожидался от меня? Или на чем можно срезать время?
Алсо если кто тоже участвует в тренировках по алгоритмам, пишите.
input()
ratings = input().split()
def zadacha(ratings):
s = 0
aCount = {}
for r in ratings:
a = int(r)
s += a
if(a in aCount):
aCount[a] += 1
else:
aCount[a] = 1
l = len(ratings)
bPrev = s-int(ratings[0])l
akPrev = int(ratings[0])
finB = (' '+str(bPrev))aCount[akPrev]
finB = finB[1:]
n = aCount[akPrev]
for k, cuantity in aCount.items():
if(k == akPrev):
continue
# print(k, cuantity)
bNext = bPrev + (k-akPrev)(2n - l)
finB += (' '+str(bNext))*cuantity
bPrev = bNext
akPrev = k
n += aCount[akPrev]
return finB
print(zadacha(ratings))
У мяне мая пралада і БД для яго двума асобнымі кантэйнерамі. Калі збіраецца вобраз кантэйнера з прыладай, выконваецца адзіе з наступных загадаў, у залежнасці ад абставін:
docker build --build-arg CONFIG_FILE=settings-developer.py
docker build --build-arg CONFIG_FILE=settings-staging.py
docker build --build-arg CONFIG_FILE=settings-production.py
Адпаведна, у файле з наладкамі settings-developer.py прапісаны
DB_URL = 'postgresql://localhost:5432'
такім чынам ужываецца БД што стаіць на маем кампутары. Для staging - адрас docker кантэйнера што стаіць на тэставым сэрвэры, а для production - адрас асобнага сэрвэра.
>канфігураваць па-за межамі кампоуза - навошта?
Вось і я магу спытацца навошта канфігураваць нешта па-за межамі Dockerfile. Кампоўз непатрэбны.
Что? Ты о чем?
> Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
> https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
> https://dumpz.org/ - можно постить листинги, не требует регистрации
> https://pastebin.com/ - для листингов, регистрация не обязательна
> https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
Спасибо, я этот анон >>898739 Выразил более грамотно мои мысли.
Эта херабора была актуальна лет 7 назад. HR уж точно в репу не полезут. Я в месяц хожу на 2 собеса примерно. За 1.5 часа мне хватает 20 вопросов и 2 задачи чтобы оценить кандидата. Ну прикладывают они свои репы, дальше то что? И кстати, там в репах часто вообще никнеймы, может это вообще репозиторий левого чела. У меня кореш - ведроид разработчик кидал вечно мне свою репу. Сам же признавался что код понапиздил. Ради чего это все?
>>899647
А мне это нахуй не нужно делать заниматься тем чтобы отличать код из какого то репозитория. Чтобы что?
И да, у меня есть репозиторий свой, ещё со времён студенчества туда выгружаю свои прожекты. Но показывать это работодателю - это ебаный бред.
Немагчыма паўтарыць тваю памылку. Удакладні абставіны запуска. Магчыма, несумяшчальнасць MacOS, бо тамака напрыканцы радка CR замест LF. Магчыма, карыстаеш python<3.8, дзе прысвайванне ва ўмовах не падтрымліваецца.
Чел, кроме пастебина две первые не открываются, а последняя тормозит дико.
http://linkode.org/
https://dpaste.org/
Вот, с подстветкой синтаксиса.
>>905470
И ещё рекомендую для красоты оформить картинкой в Карбоне https://carbon.now.sh/ и вставить её в пост.
И в шапку бы это занести. Так чел, задающий вопросы, показывает, что он уважает тех, кому придётся ему отвечать.
>ну это и есть "руками"
Да, но ты это делаешь 1 раз при настройке сервера. Ну и каждый раз если поменяешь настройки компоуза, да.
Попробуй разные варианты и выбери наиболее комфортный для тебя на длинной дистанции. Я в списках выше описывал свой опыт развертывания систем и их опыт поддержки\обновления\автоматизации.
> но они оверкилл для моей задачи
Они оверкил для всего что имеет меньше, условно говоря, 10 серверов с сервисами.
Знания докера и компоуза тебе, как бэкэндеру, будут очень полезные. Куберы бэкэндеру нужны гораздо реже, для них нанимают ДевОпса, но и куберы лучше потрогать - опыт лишним не бывает.
>>905404
Докер ды кампоуз выкарыстоўваюцца у розных мэтах. Гэта як розные узроўні развіцця праекта і яго зручнасці пры падтрымцы.
Безумоўна есць магчымась напісаць выдатную докер-каманду якая будзе на 100 адсоткаў такая як у кампоузе, але гэта будзе ебейшая страка у кансолі\баш-скрыпце з якой будзе не вельмі зручна працаваць у будучыні.
У табе у прыкладзе БД ужо працуе, добра, але калі ў табе не 2 кантейнера, а больш? Як прыклад - першы скрыншот. Мабыць не самы лепшы прыклад, але час ад часу патрэбна кантраляваць парадак старта кантейнераў, мець шмат кантейнераў якія стартуют разам і павінны разам і разгортвацца. Усе гэтя на шмат лягчэй зрабіць у канфіге кампоуза. Ды і людзям якія не знаемы с ім прасцей працаваць с .ямл файлам, чым шукаць адпаведныя каманды для кансолі. На другім скрыншоце .ямл файл, з тым жа праектам, які я рабіў для фронтэнд-распрацоўшчыка, каб працаваць у афлайне.
> как бэкэндеру
я дата саентист, просто интересуюсь
> Куберы бэкэндеру нужны гораздо реже, для них нанимают ДевОпса, но и куберы лучше потрогать - опыт лишним не бывает
Докер и композ довольно понятные даже стороннему человеку, а вот у кубера своя какая-то экосистема, в которую надо конкретно вникать.
Отдельным потоком запускать СЛУШАТЕЛЯ нажатий на клаву.
Сделал через multiprocessing и psutil. Если есть решение получше пишите.
https://pastebin.com/BhxBFPj2
https://goonlinetools.com/snapshot/code/#4aig7b6vpxwnia9vigr4zn
Хорошо, значит вот ссылка на мое решение. Вопрос:
Как можно ускорить эту прогу?
Я разобрался. Оказалось, задача решается на порядок быстрее и экономнее в python 3.11, чем в 3.9, что позволило мне преуспеть.
Захрена там вообще такой вариант компилятора, в котором задачу невозможно решить, я не пойму.
>Зачем тебе докеры тогда?
да докеры всем полезны. Как минимум, собрать какой-нибудь прототип, который запускался бы везде или выкатить демку с веб-мордой
> Удачи, анон
спасибо
Пишу код в vs code в юпитер блокнотах и интерактивном режиме. Когда я запускаю программу в интерактивном режиме, происходит задержка print() вывода. Сообщения появляются позже, сразу скопом. Помогите пожалуйста разобраться почему так происходит.
Пример программы которая работает норм в стандартном IDLE и командной строке, но в vs code происходит задержка:
Программа загадывает число, ты отгадываешь. После того как произвел первую попытку. Она должна сказать - загаданное число больше или меньше. Но вместо этого сразу предлагает снова попытаться угадать. После второго ввода выводит старый и новый вывод сразу
import random
print('Я загадал число от 1 до 20.')
print('Угадайте число!' '\n' 'Всего у вас 6 попыток')
a = random.randint(1, 20)
for i in range(6):
b = int(input())
if a > b:
print('Я загадал большее число')
continue
elif b < a:
print('Я загадал меньшее')
continue
else:
print('Вы угадали!')
break
if i == 5:
print('Вы исчерпали количество попыток')
print(f'Загаданным числом было {a}')
else:
print(f'Количество попыток: {i+1}')
Задал вопрос чату жпт: I write pyton code in vs code. When I run the program interactively, there is a delay before output. Messages do not appear until you enter a new value. Then several conclusions appear at once. How to solve this problem?
Ответ чата в пиках.
Ну и чего тебе от треда нужно? Скорее всего ГПТ всё верно написал.
Стену текста высрал, а понятнее не стало. Хуёвый из тебя аналитик данных получится, раз аналитику не можешь понятный языком расписать.
Призвана решить проблему долбоёбов постящих код. Выкинут раздел с кучей ссылок на говносайты. Добавлен правильный и заметный.
Cпасибо, красивенькие, но ни один из них не позволяет запустить код, как предложенный online-python.com
чот пикчи не грузятся.
а чо ты это говно сгрузил нейромакаке то? для начала научись своей головой решать задачи.
https://online-python.com
Эта хуйня сломанная отступы не сохраняет. Если туда копипастнуть код, взять ссылку то тот кто перейдет по ней увидит гладкую простыню.
Это не та задача которую я считаю нужным решать сейчас.
Я вполне могу обходиться и без vs code, думал проблема частая и юзеры кода подскажут.
не удаётся воспроизвести указанную проблему.
Спасибо попробую. Но я думаю это не выход, т.к. эта херня в каждом коде на vs code и только на нем.
>юзеры кода подскажут
Бариста, тебе же GPT ответил что надо сделать чтобы пофиксить. Что ты ещё от ЮЗЕРОВ КОДА хочешь услышать?
Есть idxs = ('0', '0.1', '0.2', '0.2.1', '0.2.2' ) - это уровни задач/работ
Есть works = ('нет', 'тянку танцевал', 'тянку ресторанил', 'тянку цаловал', 'тянку имел или нет')
Вот как idxs и works - вставить в PySimpleGUI tree правильно?
Короче нужно получить bitmap для символа как это делать, я хз как правильно сформулировать. Ну типа есть символ A или 私 короче типа их карту из 0 1 как их отрисовывать как можно её вытащить?
>куча специальных ключевых слов-модификаторов для объявления классов
Ты про public/private всякие? Нижнее подчеркивание есть. Более строгая инкапсуляция технически тяжело реализуема, потому что язык не компилируемый и кто запрещать обращаться к _ должен -- не понятно, не интерпретатор же.
>всё паттернами обмазано
Так обмажь паттернами в Питоне. Да и половина ООП паттернов в Питоне заменяется стандартными средствами языка и стандартной библиотеки. Паттерны то появились во времена, когда нихуя кроме C++ и Java не было, да и в самих C++ и Java много чего еще не завезли.
>всё через интерфейсы где надо
Protocol и ABC
>в настоящих ООП-языках
Питон это если не более, то уж точно не менее ООП язык, чем Java и C++. Странно из-за отстутствия статической типизации его не считать ООП. Smalltalk -- динамически типизируемый, а уж он то самый настоящий ООП.
>Что такого есть
Тут скорее надо спрашивать, чего такого нет в других языках, потому что в Питоне есть почти что все, кроме эзотерических ФП фич вроде алгебраических эффектов и монад. Даже статическая типизация есть в виде mypy, которым каждая вторая современная библиотека пользуется (FastAPI, например).
У Питона ровно две главные проблемы -- ЖИЛ и скорость, в остальном это швейцарский нож. И то, ЖИЛ возможно выпилят.
print(..., flush=True) попробуй.
>Какую нахуй репу?
Согласен, если это сениор дата сатанисты, спрашивать надо опубликованные паперы.
Слухайте а объясните как вы так учите программирование?
Я просто не понимаю правда, как ты прочитал всего луца всего и не можешь решать задачи с питон тьютора блин??
Я вообще ни одной книжки не читал. Я просто посмотрел гайды на ютубе про условия цыклы классы функции и.д. И пошёл писать код, с того же тьютора например, просто зачем тратить время? У меня тоже валяется книжка про питон там 400 страниц, прикинь глава про условия в 40 стр. Вот что можно писать 40 страниц
Про if () : elif () : else:
Блин ну может я просто тупой и не умею читать. Я понимаю что в лутце дохуя полезных модулей но лучше в примерах поискать в инетике
тут умеют только онлайн-говноподелки делать?? На джанге и фласке???
Пробовал курсы тоже смотреть и в других местах примерно понимал как работают условия, функции. На примерах все понятно, а вот когда сталкиваюсь с практикой сижу и туплю, пытаясь придумать решение
renpy это библиотека
2 часа тупил на этой задаче - Дано положительное действительное число X. Выведите его первую цифру после десятичной точки.
Решение:
from math import
a = float(input())
print(floor((a - int(a)) 10))
Сейчас туплю на этой - В некоторой школе занятия начинаются в 9:00. Продолжительность урока — 45 минут, после 1-го, 3-го, 5-го и т.д. уроков перемена 5 минут, а после 2-го, 4-го, 6-го и т.д. — 15 минут.
Дан номер урока (число от 1 до 10). Определите, когда заканчивается указанный урок.Выведите два целых числа: время окончания урока в часах и минутах.
Вообще в голову не приходит решение задачи. Нет, я могу просто захардкодить нужное решение, но уверен, что это не то, как задумывалось
Выведите его первую цифру после десятичной точки.
Решение:
from math import
a = float(input())
print(floor((a - int(a)) 10))
Смотри как вариант ещё так
int(str(abs(chislo)) [2])
Если мы берем только 2й элемент, то сработает ли решение для числа, например 8800555.3535?
По второй вот так как то, только займёт пробивает до N-1 так? Ибо после последнего урока перемена не нужна по логике
Как ты так быстро нашел решение? Мне в голову вообще ничего не приходило, просто пустота
Из условия
Смотри
1-го, 3-го, 5-го и т.д. уроков перемена 5 минут, а после 2-го, 4-го, 6-го и т.д. — 15 минут.
Что это тебе напоминает?
Что от тебя хотят найти?
Тут только такой патерн мышления нужен. Тащи ещё задачу, я ничего делать не буду просто сам порассуждаешь как тебе составить алгоритм, подскажу если че но сам алг писать не буду
2 следующие задачи они простые в математике я понимаю что нужно и могу их решить, а вот которая вызывает вопросы и непонимание:
Улитка ползет по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь спускаясь на b метров. На какой день улитка доползет до вершины шеста?
Программа получает на вход натуральные числа h, a, b.
Программа должна вывести одно натуральное число. Гарантируется, что a>b.
Понятно, что улитка ползает вверх и вниз, но как это вычислить вообще нет никаких идей
Я тоже с вайлом сделал.
Но ты сказал я почасал репу там одна формула
. давай ты сможешь.
Смотри там железно есть целочисленное деление
Пришло в голову так:
h = int(input())
a = int(input())
b = int(input())
r = h // (a - b)
print(int(r))
Но отрабатывает только на половине примеров
Да типа того
Да типа того
Где-то нужно добавить 1 день, а где-то убрать. Вот примеры для тестов, которые не проходят
10, 3, 2. Правильный ответ 8, результат 10
10, 6, 0. Правильный ответ 2, результат 1
10, 100, 0. Правильный ответ 1, результат 0
20, 5, 4. Правильный ответ 16, результат 20
93, 17, 5. Правильный ответ 8, результат 7
Попробуй запилить такое, все элименты языка попробуешь https://ru.m.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%BC%D0%BE%D0%BB%D0%B5%D0%BA%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B9_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D0%BA%D0%B8
Парни, заметил интересную особенность, я могу делать импорты внутри самого тела класса, они не протекают наружу, но сцук когда я хочу их использовать как в этом примере, то ловлю ошибку, внутри конструктора init например он не видит импортированный math
Это можно как-то поправить? И вообще что это такое? Фича или просто очередной косяк Пистона?
Как в первом варианте не нужно делать никогда, я думаю.
Во втором, в редких случаях каких-то.
Ещё вот так можно.
def paperwork(n, m):
if n < 0:
return 0
elif m <0:
return 0
else:
return m
Почему некоторые числа он перемножает, а некоторые нормально выводит
я так же писал, но там уже почему то когда м меньше 0 он не возвращает
def paperwork(n, m):
if n < 0 and m < 0:
return 0
else:
return m
Ваши одноклассники попросили вас скопировать для них некоторые документы. Вы знаете, что есть "n" одноклассников, а в документах есть "m" страниц.
Ваша задача - подсчитать, сколько пустых страниц вам нужно. Если n < 0 или m < 0 вернуть 0.
Все я сделал, там наоборот надо было умножить, короче затуп на ровном месте
>>914846
В общем час вчера посидел, не смог придумать решение и пошел спать. Утром еще подумал немного, сдался и посмотрел в чужие решения. Вот пример:
from math import ceil
h = int(input())
a = int(input())
b = int(input())
r = ceil((h - a) / (a - b)) + 1
print(int(r))
>>914370
А по решению задач видимо нужно просто вот так брутфорсить задачи, чтобы в целом понимать что хотят и как решать, считай набить руку. Я когда sql учил не понимал теорию join и просто методом подбора понял как работает
Всё время забываю что макаба разметку портит, звездочки .
https://www.online-python.com/RFeoarJNTb
Почему-то проходит 1 тест из 4, пишет wrong answer (а как блядь по-другому посчитать еще среднее чисел?)
прога: https://goonlinetools.com/snapshot/code/#nbibbrywjjeyyjfn0txtn
Почему одну? Я же функцию применяю к каждой введённой строке, после результат кладу в список.
можна выкарыстаць функцыі існуючых бібліятэк. мой варыянт успрымае signed float, -15.555.
https://www.online-python.com/7FmE5XDAUq
О, узнаю платину. Каждые пол года бариста-вкатун сюда её постит. Видимо это с каких-то курсов скилбокса\скилфэктори\хуектори.
А это разве не нейросеть? По крайней мере ответы что он высирает 1к1 нейросетевые.
Какой дегенерат будет месяцами срать в треде на чужом для местных языке?
Это как если бы я завалился на форчанг и начал бы там отвечать всем на русском. Ладно ответил разок, местные подумали бы чудак, проигнорили. Но если бы я там срал месяцами - это уже целенаправленное действие или шизофрения.
Если целенаправленное действие, то нахуя так делать? Внимание на себя обратить? Срачи затевать? Какой бы ни был ответ на этот вопрос - кто так делает - ведет себя с деструктивными намерениями по отношению к коммьюнити в которое он пришел. Антисоциальное, неуважительное поведение. Кто так упорно срет как свинья - тот к себе только такое отношение и заслуживает.
Это модератор наверное.
Вот я открываю файл
>with open("text.txt", "a") as f:
Ставлю курсор в нужную позицию
> f.seek(3)
Пишу что мне нужно
> f.write("&")
А дописывается всё в конец. Я с ключами туплю или в чём проблема?
Да это понятно, но способ какой-то с левой резьбой.
Нахуя тогда этот file.seek() нужен, если нихуя не работает?
Наверняка же есть какой-то адекватный способ.
Нет, дописывать можно только в конец файла.
seek() работает как надо, но он не для вас сделан молодой человек, а для других секретных задач настоящих красноглазых погромистов. чтобы байтики из файла выковыривать.
Пиздос.
А если у меня файл на сто гигабайт, то что, пятьдесят гигабайт до и после копировать?
В этом случае ты можешь открыть файл в бинарном режиме 'r+b' найти нужный байт с помощью seek(), скопировать всё что после него, вставить на место указателя новые байты новой инфы которую добавляешь и затем вставить ту часть файла которую скопировал ранее.
Но я не уверен как это в винде под капотом реализовано. Если нет опыта то ты гарантированно проебешься и файл сломаешь.
Если у тебя файл по сто гигов, то тебе в любом случае надо считвать файл маленькими порцияим и порциями его записывать в новое место.
Да я пока с текстовыми файлами играюсь чтобы хоть примерно понять как это работает.
Буду тогда дальше ковыряться, спасибо за ответы!
>>917235
Ну "сто гигов" в смысле просто большой файл. Но мысль понятна, да.
А как тогда текстовые редакторы работают? Они же не переписывают каждый раз к хуям весь файл, когда я в середину слова букву вставляю? Или реально в оперативе цикл запускают и все символы двигают на +1 позицию?
Чел от программы зависит, буковки которые ты меняешь на экране они в оперативной памяти а не на диске, а сохраняется всё в файл только когда "сохранить" жмешь.
Есть программы которые файл всё время открытым держат и сразу в него пишут, есть другие подходы. Как погромист сделает так и будет, но самый лучший вариант это да заново перезаписывать в момент сохранения.
https://habr.com/ru/articles/301776/
мне надо выполнить это
>buildozer android debug
но cmd ругается что не знает что такое android
как это фиксить?
ohhhh i got it, i can not do that coz i am widows-fagot
каков пиздец
print('\n'.join(reversed(['1', '2', '3', '4', '5'])))
или
def no_space(x):
return("".join(x.split()))
типо я хочу в консоль ввести цифры и соединить их, в 1 вообще работает, но мне надо чтобы 1 2 3 4 5 я в консоль писал, а не тут
а саму задачу забыл, корое есть число -123 надо развернуть -321, работает но есть чувство что это говнокод
Что именно пояснить? Что такое "срез" ты уже знаешь, судя по вопросу. У него есть параметры start, stop, step. По умолчанию step = 1. Если он = -1, значит срез итерируется в обратном направлении, соответственно разворачивает твою строку. А чтобы он не разворачивал "-" для отрицательных чисел, надо остановиться до этого "-", т.к. он является 0 элементом.
аааа блять я понял, я затупил почему у тебя :: а сейчас дошло нач:кон:шаг
блин не пользовался ими никогда просто
Ну а по твоей логике каким образом лидирующий 0 должен интерпретироваться? Целое число не может начинаться на 0.
Если тебе не нужно обратное преобразование в целое число, так не делай его.
Цябе input() патрэбны. Паглядзі вось тут як твой больш прасунуты сябар яго ужывае https://www.online-python.com/7FmE5XDAUq
Долгое время пытался вкатиться во фронтенд, думая, что это мне интересно. Затем в универе проходили базы данных, и мой мир начал переворачиваться — во фронтенд не вкатился. Неинтересно.
Вот, собственно, вопрос - бэкенд на питоне - хороший выбор?
Я ещё немного потыкал pandas, numpy и scikit-learn на уровне визуализации датасетов, логистической регрессии и кластеризации.
Пора уже искать работу, но кажется, будто бы никуда не потяну.
>бэкенд на питоне - хороший выбор
Максимально хуёвый. Тормозной же очень, и с памятью проблемы.
На питоне пишут прототипы, чтобы по-быренькому в общих чертах, пользуясь готовыми библиотеками. Прототип утверждают и пишут на нормальных языках.
требования:
Мы ожидаем, что ты:
> имеешь опыт работы не менее двух лет
> имеешь опыт работы с одним из web фреймворков: Flask/FastAPI/DRF
> разрабатывал ПО в парадигме ООП
> имеешь опыт тестирования своего кода на pytest
> работал с библиотеками pydantic/marshmallow
> имеешь опыт применения ORM SQLAlchemy
> знаешь математическую статистику и теорию вероятности
> понимаешь принципы работы алгоритмов машинного обучения
> способен задать математическую постановку задачи из сложной бизнес-задачи
> способен определить методологию тестирования качества модели с постановкой гипотез и оценкой экспериментов
> владеешь DS стеком на Python (Numpy, Pandas, SciPy, Scikit-learn, TensorFlow/PyTorch, Xgboost/LightGBM/CatBoost)
> имеешь опыт вывода модели в продакшн и управления жизненным циклом ML моделей (MLflow)
> владеешь инструментами для визуализации (seaborn, matplotlib, plotly)
> знаешь теоретические основы алгоритмов и структур данных
> понимаешь микросервисную архитектуру, знаком с Docker/Docker Compose
имеешь опыт работы с системами контроля версий Git/SVN (понимаешь методологии Git-Flow, GitHub-Flow)
> знаешь и понимаешь принципы работы реляционных БД, языка SQL
> понимаешь, что такое трекер задач и как его использовать
> можешь писать код, читать и анализировать его, аргументированно рассуждать о нем
> обладаешь навыками общения с коллегами, руководителями, заказчиками; способен услышать их точку зрения и донести свою
Чем предстоит заниматься:
> Разрабатывать инженерные бэкенд web-приложения на Python, FastAPI / Flask, ClickHouse, RabbitMQ, Docker
> Выполнять исследовательские задачи по возможности применения статистических методов анализа данных
> Покрывать свой код юнит, интеграционными и e2e тестами
> Проводить code review
> Создавать продвинутые пайплайны обучения моделей
> Разрабатывать гибридные модели – объединять статистические модели со знанием предметной области
> Участвовать в разработке архитектуры ML сервисов
> Проводить аналитику табличных данных, временных рядов
> Погружаться в предметные области, работать с заказчиками
> В составе кросс-функциональной команды работать по методологиям Agile
> Участвовать в проектной и сервисной деятельности
требования:
Мы ожидаем, что ты:
> имеешь опыт работы не менее двух лет
> имеешь опыт работы с одним из web фреймворков: Flask/FastAPI/DRF
> разрабатывал ПО в парадигме ООП
> имеешь опыт тестирования своего кода на pytest
> работал с библиотеками pydantic/marshmallow
> имеешь опыт применения ORM SQLAlchemy
> знаешь математическую статистику и теорию вероятности
> понимаешь принципы работы алгоритмов машинного обучения
> способен задать математическую постановку задачи из сложной бизнес-задачи
> способен определить методологию тестирования качества модели с постановкой гипотез и оценкой экспериментов
> владеешь DS стеком на Python (Numpy, Pandas, SciPy, Scikit-learn, TensorFlow/PyTorch, Xgboost/LightGBM/CatBoost)
> имеешь опыт вывода модели в продакшн и управления жизненным циклом ML моделей (MLflow)
> владеешь инструментами для визуализации (seaborn, matplotlib, plotly)
> знаешь теоретические основы алгоритмов и структур данных
> понимаешь микросервисную архитектуру, знаком с Docker/Docker Compose
имеешь опыт работы с системами контроля версий Git/SVN (понимаешь методологии Git-Flow, GitHub-Flow)
> знаешь и понимаешь принципы работы реляционных БД, языка SQL
> понимаешь, что такое трекер задач и как его использовать
> можешь писать код, читать и анализировать его, аргументированно рассуждать о нем
> обладаешь навыками общения с коллегами, руководителями, заказчиками; способен услышать их точку зрения и донести свою
Чем предстоит заниматься:
> Разрабатывать инженерные бэкенд web-приложения на Python, FastAPI / Flask, ClickHouse, RabbitMQ, Docker
> Выполнять исследовательские задачи по возможности применения статистических методов анализа данных
> Покрывать свой код юнит, интеграционными и e2e тестами
> Проводить code review
> Создавать продвинутые пайплайны обучения моделей
> Разрабатывать гибридные модели – объединять статистические модели со знанием предметной области
> Участвовать в разработке архитектуры ML сервисов
> Проводить аналитику табличных данных, временных рядов
> Погружаться в предметные области, работать с заказчиками
> В составе кросс-функциональной команды работать по методологиям Agile
> Участвовать в проектной и сервисной деятельности
Как меня вымораживает псевдоаргумент про скорость языка и память. Куда ты спешишь блять в 2023 году, дед? Просто добавь сервер, в век облаков вообще смех. Питон база для бэкенда.
>Максимально хуёвый. Тормозной же очень, и с памятью проблемы.
Всем похую чел. Мы вообще на монолите с фласком живем уже 6 лет, полет отличный.
Единственное, что хуевое в питоне - это динамическая типизация и отсутствие нормальных потоков. Все остальное заебись и четко.
>Просто добавь сервер
Дебил никогда не имел базу больше 10к записей... пиздец. Разработчик ботов казино и криптоинвестиций чёт кукарекает.
Возьми нормальную базу с 10–100 миллиардами записей, да ещё чтобы поля разных типов. Потом клювик открывай... Сервер добавь... пиздец просто. Даже по сути, бля, не одупляет, макака, обученная буковки писать.
Чел, ващет по тейкам про переписывание на НОРМАЛЬНЫХ ЯЗЫКАХ сходу детектятся вкатыши, нахуй ты таким отвечаешь вообще.
>на монолите с фласком живем уже 6 лет
Ну если там бот продаж косметики города Кинешма, то вообще похуй, хоть на паскале.
>100 миллиардами
Дружище, я вот другой анон, можешь пояснить в чем проблема питона относительно этого момента..
Я так понимаю ты имеешь в виду то, что чем больше записей в базе, тем медленнее питон с ними работает т.е. ищет нужную запись например, чтобы к ней обратиться?
Но в чем разница между 10к записями и 10000000000 миллиардами записей для бинарного поиска? Алгоритм бинарного поиска же, который диды ещё при царе горохе придумали одинаково быстро ищет в таких обьемах?
>Я так понимаю ты имеешь в виду то, что чем больше записей в базе, тем медленнее питон с ними работает т.е. ищет нужную запись например, чтобы к ней обратиться?
Так за это не бидон отвечает, а субд. Язык тут почти никакой роли не играет, а играет орм и драйвер к бд.
И на условной алхимии в питоне твой запрос отработает также как и на энтити фреймворке в шарпе, разница будет только в весе загружаемых в память объектов, которые орм внутри сессии создаст.
Но даже если у тебя селект на сотни мильёнов строк, почти всегда эта подгрузка ленивая и драйвер не фетчит сразу все данные, там есть батчи.
Поменьше слушай таких синек, у которых проблемы языка это мильёны записей в бд с разными типами полей, лол.
Разница в реализациях библиотек, при помощи которых питон будет обращаться к таким БД (организовывать очереди, мультипоточность, асинхронность и так далее). На чистом питоне без них ты в принципе не сможешь организовать работу. А они будут написаны на c/с++, скорее всего. С учётом принципов работы Питона. И потому будут тормознее своих реализаций просто на другом языке без учёта Питона.
>На чистом питоне без них ты в принципе не сможешь организовать работу
Подключение к бд это просто подключение через сокет. Что такого особенного в сокетах не питухоне, что сделано сильно лучше в других языках?
Очереди celery (который под капотом rabbit или redis), ну или опять же кафка, ребит или редис в том или ином виде.
Многопоточность тут да, посос, но что есть, то есть.
>Разница в реализациях библиотек, при помощи которых питон будет обращаться к таким БД
Так а в чем конкретно бутылка? Слишком долго запросы к бд обрабатывает, слишком много памяти занимает? Ты как-то слишком обобщенно ответил "ну там реализация библиотек плохая". Библиотеки в конце концов можно открыть и исправить, если знать где узкое место.
Нужно определить есть ли в тексте ссылка с определенными символами и если после этих символов определенное количество символов, вернуть true
Например, есть ссылка https://amogus.aboba/XX123456789
Если после ХХ 9 символов, то возвращаем true, если другое количество, то false. Сама ссылка может быть другой и соответственно другой длины, поэтому тупо проверить длину ссылки не получится.
Я так понимаю, нужно выделить в отдельное слово все символы после ХХ и посчитать его длину, как это сделать?
>>919193
Спасибо
Я правда уже решил как умею, может криво https://www.online-python.com/JfpIOeg7yb
Я почему-то сначала подумал, что через split это не сделать
Правильно я понимаю, что [^/] и {9,9} ($|/) это регулярные выражения?
Калі org_string='https://google.com/XX123456789/' ты атрымаеш False. Паспрабуй так https://www.online-python.com/WnSp0wEaRJ
Я думал просто добавить проверку на последний символ и если это "/", то сбросить его и считать уже после этого.
>>919210
Только у меня не только цифры, но и буквы могут быть, 123456789 я для примера написал (наверное неправильно), твой код я так понимаю возвращает тру только если 9 символов это цифры (я не разобрался еще, потому что и питон, и польский язык плохо розумию). Да и у меня такие ссылки, что вряд ли там что-то будет после этих символов, максимум /
>re.MULTILINE|re.UNICODE|re.IGNORECASE
Польско-латышская нейросеть обезумела. С ней уже не совладать.
Так, там толькі для лічбаў. Вось для лічбаў і літар
https://www.online-python.com/HjEGOnyeJg
Гэта беларуская.
А какое у тебя образование? Если "вышка нинужна", тогда только Джанго, и то не вкатишься. Если физмат, или инженерное хотя бы, тогда лучше машоб, перспективнее
Напоминаю перекатчику про новую шапку.
Возник вопрос у непрограммиста.
Каким способом можно подогнать элементы массива, условие в духе AB+CD=0, где A и B - известные массивы?
Даны массивы A и B. Известно, что AB+CD=0. Надо найти массивы C и D. Не могу сообразить, как можно обозначить функцию для аппроксимации с таким условием. Скорее всего, я предполагаю, это через мнк делается, но если ошибаюсь, прошу поправить.
Раньше сталкивался максимум с аппроксимацией обычных зависимостей типа y(x) с помощью curve_fit, а тут что-то мне подсказывает, что в def через while можно сделать, но придумать не получается.
4 курс информационных систем и технологий
*не подъеб, а реально интересно
Это из серии, что сказать "айтишники, как у вас с конкуренцией? сейчас с детского сада учат с компами работать"
Питон лишь инструмент. В школе учат, но никто питон не знает. Ну типа знают, а написать простейший генератор не могу. Не говоря уже про контекстный менеджер или декоратор.
Хотя знать питон недостаточно.
На днях просто смотрел ещё вакансии по ключам python, django и т.д.
Откликов тьма, поэтому стало интересно, как у вас с трудоустройством
если кому интересно - проблема была в повороте вы такие же безмозглые и бесполезные как чатгпт
95% откликнувшихся это вкатуны в самом плохом смысле. Из серии я пошел на курсы пусть меня научат. За полгода выучившие основы языка и слабо представляющие как работает змея под капотом, с минимальным знаем оопэшэчки, написавшими пару петов в стиле сервис рассылок. Если ты входишь в оставшиеся 5%, которые реально задрачивают змея во все свое свободное время и постоянно учатся то вэлкам.
Какая конкуренция, о чем ты? Ты же не думаешь, что любого можно научить программированию? Любого можно научить только синтаксису.
> Втр 22:22:53
Ну ладно
Смотри мне тут чат распарсил жсончик, там матрица, классы всегда разные, но кохирентные, я так понял это через siamese nn решается по ансупервайзед схеме, да?
>>922870
никому твоя низушная дрочка нахуй не упала, ты формошлем обыкновенный, абсолютно все твои задачи типовые, а те додики у которых чсв в яндексе играет, потом после выезда сосут хуи, потому что никто нахуй в этих ебанных дохуя айкью велосипедах не может разобраться
проще будь и не трать время на бесполезный луцедрочь
Только я смотрю на вкатунов на нашей галере. Все в нулину. Элементарщины не знают. Как клонированные блять. Дохуя они че-то простые.
>Если ты входишь в оставшиеся 5%, которые реально задрачивают змея
Да в общем то задрачивание не очень нужно само по себе. Это скорее показатель того, что ты в состоянии под капот лезть, в кишках разбираться. Вот этот скилл критичен, а не знание конкретно питона.
Это надо, чтобы человек мог думать, как программист, понимал IT в целом и т.п. Вот это годами нарабатывается. А иначе, чел типа синтаксис знает, а дальше труба. И реально 90% откликов будут такие.
> клонированные
> вкатунов на нашей галере
если они вкатились - значит всех кроме душнилы тебя все устраивает
> Элементарщины не знают
джангодрисня уебищная, через месяц-два все приколюхи освоят и будут ебашить как биороботы
>>923441
> этот скилл критичен
ДА ДЛЯ КОГО ОН БЛЯДЬ КРИТИЧЕН КРИТИН ТЫ ЕБАННЫЙ !?
ну вот тебе всратый тессеракт
>>922428
и хуле? ты чо полезешь разбираться в алгосах и фиксить? да хуй кто тебе заплатит за проебанный тайм, да и твоей вышки из под стобальной помойки с отсталыми дидами внезапно не хватит, будешь полгода сидеть дрочить говно вместо того чтобы спросить у чата воркэраунд на похуй
В ci пайплайне надо гонять тесты, это делается так - билдится контейнер а потом на нем вызывается "python -m pytest ." - но вот приложуха просто дохнет ожидаемо, т.к. не может подключиться к базе и к кешу (которых нет). Как это контрить? У меня есть несколько вариантов но все по-своему хуйня
> Как это контрить?
подключиться к базе и к кешу или писать дамми дейта самому и подтыкать, какие еще варианты то могут быть блядь
scipy.optimize.curve_fit
Юнит тесты для слабаков?
Либо возьми подними приложуху да прогони там нужные тесты. ЧО сложного то?
Дайте пару советов бегиннерсу. Щас пока тока поставил вскод и собсна питон на работе пока вспоминаю синтаксис и просто иду по python crash course и еще нашел челика code with harry, искал инструкцию как на тилибон установить вскод.
Или не выебываться и идти нахуй, какие мне блять советы еще, бери да учи по книжке да по всей хуйне, правильно?
дед 37
>Дайте пару советов бегиннерсу.
1. Правда! Живи по правде!
2. Береги честь с молоду, коли с детства не сумел.
Собственна никаких секретов тут нет, просто садишься за комп без задней мысли и кодишь
Спасибо, братишка, взаимно.
HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi/typing-extensions/4.7.1/json (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fe3e789ebb0>: Failed to resolve 'pypi.org' ([Errno -3] Temporary failure in name resolution)"))
Шо за нахуй? С компа из терминала pip install работает, как только собираю зависимости в докере - сосу хуй. Что с ним блять такое?
Тут что-то с dns похоже, но как понять какоц dns я использую и какой нужно?
Гопал пориджей и отбирал телебоны
Хуйней, в основном.
620x720, 0:11
у меня арчик обновился и тоже пакет поломался, я форсанул пипу и взлетело, а на следующий день уже хотфикс прилетел, роллинг релиз топ а ты жри говно и страдай хуле
>>924780
>>926497
анончик как думаешь через сколько десятилетий этот безмозглый сблёв с интеллектом собаки приблизится к чатгпт 3.5 ?
То как экстенд работает, ждал что pop() выкинет всё из b и оставит его пустым, а оказалось что есть ньюанс.
Как и append, т.е. добавляет элемент в конец списка. Только extend принимает аргумент в виде итерируемого объекта.
>ждал что pop() выкинет всё из b и оставит его пустым
Потому-что ты модифицируешь список внутри цикла for. Для понимания работы твоего for, посмотри на цикл на скриншоте.
Получается что каждый pop() сокращает длину твоего списка и на каждой итерации происходит сравнение i с длиной нового списка.
Извиняюсь, забыл про elem. Но в твоем случае это не критично, ты не пользуешься этим элементом.
О, кажется дошло. В моём случае я ждал что итераций будет 6 но с каждым разом их становилось на 1 меньше потому что удалялся элемент, итого вышло 3.
>джанго, джанго рест
Начинает пованивать легаси и там джуны особо и не нужны
>аиограм
Нахуй не нужно
>SQL, docker
Единственные полезные навыки помимо питона
>скрепинг через bs4 с записью в бд или csv
Нужно 2.5 конторам
>с записью в бд или csv
Ничоси
>могу сверстать простенький некрасивый лендинг на бутстрапе
Нахуй не нужно [2]
>Долбоеб я или да
Да, вообще, твой стек напоминает какие-то курсы
Да даже если я fast api выучу, не думаю что это трудно, все равно вакансий нет. Бляяяя а что учить то надо было?
Гит, базовая работа с линухом, фаст апи, понять что такое рест и в целом виды взаимодействия с фронтом, брокеры сообщений типа реббита, задрочить SQL по мускулю/постргесу
Гит знаю
Линукс знаю
Rest примерно представляю
Rabbitmq знаю как запустить в докере, хз видимо это не считается
MySQL Postgres знаю нормально
Фаст апи выучить не проблема, но нигде не вижу чтоб кому то было надо
>Линукс знаю
Ну вот базовые знания типа симлинки, stdout/stderr, различные сигналы, в чем разница между тредом и процессом (и в целом про процессы в линухе), а так же как рестартовать сервисы и закрывать программы через командную строку.
Сможешь про это без гугла рассказать?
Зачем нахуя это мне? Я ж не иду в девопсы, не уверен что и работающие питонисты это знают
А куда логи у тебя пишутся например? Или что делать если соединение по ssh с серваком надо рестартануть? Этим не девопсы будут заниматься, а ты.
Твоя задача состоит в том, что бы показать, что ты максимально состоятельная единица и не сильно охуеешь от того, что тебе придется делать на работе.
Update: когда с домашней сетки подключаюсь - все собирается, когда в офисе это делаю - иду нахуй
Объясните нубу в этих ваших микросервисах, что такое API Gateway и Service Discovery, и чем они отличаются.
Предположим, что в docker-compose у меня есть сервис на FastAPI с роутерами, который через rabbitmq триггерит другой сервис-воркер, который слушает rabbitmq и в начинает выполнять какую-то тяжёлую CPU-bound задачу. В этом примере апи-сервис - это API Gateway, потому что это единая точка входа в приложение и это же одновременно Service Discovery, потому что знает, в какую очередь положить сообщение, чтобы нужный сервис тригернулся.
Или Service Discovery вообще не существует, потому что в докере все сервисы находятся в одной network и по своим именам могут друг с другом общаться и так напрямую. Если это развернуть в кубах, то там ситуация такая же. Значит, Service Discovery придумали до кубов и докера или что?
Последнее: ингрес в кубах - это что-то типо прокси-сервера, который служит единой точкой входа во внутреннюю систему кубера из сервисов, так? Считается ли это API Gateway.
Заранее извините за сумбур.
Cannot find implementation or library stub for module named "rpc_host.better.base"
Как видите это мои же импорты, где я из модуля rpc_host проваливаюсь в модуль better и затем в base. Что ему блять надо? Почему он не может найти мои же импорты? Обычно эта ошибка вылезает на сторонние либы, может ему че-то в опциях указать? Раньше таких проблем не было, запускал из корня через: mypy . - и оно работало
пишу курсовую, календарь в боте тг который отправляет сообщения по расписанию, хочу чтоб изымал id пользователя и отправлял всем, а не только тем кто в коде забит
\\\\\\\\
стабильная версия
\\\\\\\\\\
def scheduled_job(context):
today = datetime.today().date()
send_holi_day_info(today, context.job.context)
def schedule_thread():
while True:
schedule.run_pending()
time.sleep(1)
job = schedule.every().day.at("09:00").do(scheduled_job, context="6239016784")
job.context = "000000000000"
scheduler_thread = threading.Thread(target=schedule_thread)
scheduler_thread.start()
\\\\\\\\\
\\\\\\\\\
мои потуги
\\\\\\\\\\\\\
global_user_id = ""
@bot.message_handler(commands=['start', 'menu'])
def main(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button_info = types.KeyboardButton("кнопка")
markup.add(button_info)
global_user_id = message.from_user.id
def scheduled_job(global_user_id):
today = datetime.today().date()
send_holi_day_info(today, global_user_id)
def schedule_thread():
while True:
schedule.run_pending()
time.sleep(1)
job = schedule.every().day.at("20:45").do(scheduled_job, global_user_id= global_user_id)
job.global_user_id = global_user_id
пишу курсовую, календарь в боте тг который отправляет сообщения по расписанию, хочу чтоб изымал id пользователя и отправлял всем, а не только тем кто в коде забит
\\\\\\\\
стабильная версия
\\\\\\\\\\
def scheduled_job(context):
today = datetime.today().date()
send_holi_day_info(today, context.job.context)
def schedule_thread():
while True:
schedule.run_pending()
time.sleep(1)
job = schedule.every().day.at("09:00").do(scheduled_job, context="6239016784")
job.context = "000000000000"
scheduler_thread = threading.Thread(target=schedule_thread)
scheduler_thread.start()
\\\\\\\\\
\\\\\\\\\
мои потуги
\\\\\\\\\\\\\
global_user_id = ""
@bot.message_handler(commands=['start', 'menu'])
def main(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button_info = types.KeyboardButton("кнопка")
markup.add(button_info)
global_user_id = message.from_user.id
def scheduled_job(global_user_id):
today = datetime.today().date()
send_holi_day_info(today, global_user_id)
def schedule_thread():
while True:
schedule.run_pending()
time.sleep(1)
job = schedule.every().day.at("20:45").do(scheduled_job, global_user_id= global_user_id)
job.global_user_id = global_user_id
просто программирование не твое, забей хуй
Откуда ты извлекаешь id юзера? Из кнопки или сообщения? Это имеет значение. Если кнопка то callback.from_user.id и проверяй через принт какой там id каждый раз как извлёк. Узнай свой юзер id и так и чекай
Зависит от компании и позиции, меня в циане и иннотехе самые простые задачки на логику спрашивали.
извелкаю из сообщения, комманы start menu
странно, раньше мне выдавало ошибку что job. не может быть str или none, сегодня оно просто не работает
Почему тогда школьники после 8-го как ты говоришь класса не идут сразу мидлом в биг дата или сбер? Ну они же питон знают))
Что не так?
Самому стать таким специалистом, чтобы обходить их хитрости. Гайды устаревают, защита на месте не стоит.
Посоветуй как расти дальше?
У меня нет вышки пограмисткой, только инженерная, работаю жанго пограмачом уже 3 года, вроде начали давать тяжелые задачки, и даже на ревью не особо ебут, но как дальше расти - не понятно. Сейчас зп 150 и вроде все устраивает, но что-то неймется.
Если есть роад мап (актуальный) на сеньоритность или куда там дальше расти, или курсы какие то не бестолковые ака скилфингербокс, и прочие. посоветуйте плз.
Или пилить свой пет и на нем оттачивать новые навыки? как быть то ребят? м?
ты завидуешь что ли? Не завидуй.
Тогда, на питоне надо шлёпать через функционалку только?
Как вообще что-либо учить?
1) Через силу по диагонали/или нет читаешь, смотришь, напрягаешь все усилия воли и концентрацию, чтобы что-то запомнить, при этом эмоционально не паникуешь, всё сразу выучить никогда не выйдет. Главное в первом этапе просто дойти до конца, чтобы было базовое представление о материале, который учишь. Это как выучить оглавление.
2) Дальше садишься что-то делать, но у тебя в голове уже есть оглавление и ты знаешь, на каую страницу книги тебе нужно зайти, чтобы узнать то, что тебе нужно. Заходишь и узнаёшь.
3) Повторяешь второй пункт 30 раз.
4) Повторяешь пункт 1 ещё раз, уже вдумчиво и с рефлексией, учитывая накопленный опыт.
5) Повторяешь снова третий пункт, потому что в прошлый раз ты полно говна накидал.
6) Повторяешь пункт 1 ещё раз, для закрепления.
7) Повторяешь второй пункт до бесконечности.
читаешь и учишь в первом пункте сразу всё.
https://pastebin.com/EvPK4qgP
Почему если при нажатии "похуй" в диалоговом окне что "да", что "нет", программа вылетает. Даже если просто закрыть это окно.
И еще 1 вопрос: как можно сделать, чтобы надписи на кнопках в этом окне были на русском. Типо, не "Yes" и "No", а "Да" и "Нет"
Нет, чтобы вырасти нужно не только жанга, нужно еще понимать в БД и не поверхностно и многие другие технологии помимо простых крудов внутри жанги.
Вот про оглавление этих технологиев я и хотел узнать в треде. Но тут только вкатуны - гречниевые тертые.
>завидуешь
>ограниченному жанго-дебилу
ну это только ты определяешь объекты твоей зависти, если для тебя даже дебилы недосягаемые, то ну чел, ну короче, типа ты еще ниже, понимаш?
и есть трабла с обработчиком register_next_step_handler
Общий концепт такой - пользователь нажимает кнопку в боте - ему приходит сообщение от бота - он отвечает на это сообщение - бот проводит изменения в соответствии с сообщением
Сам код выглядит так:
def handle_edit_name(call):
chat_id = call.message.chat.id
old_selection_name = call.data.split('#')[1]
print(f"Old selection name: {old_selection_name}")
old_selection_names[chat_id] = old_selection_name
msg = bot.send_message(chat_id,
"Введите новое название подборки или отправьте 'Отмена' для сохранения текущего названия.")
bot.register_next_step_handler(msg, lambda message: handle_new_name(message, old_selection_name))
def handle_new_name(message, old_selection_name):
chat_id = message.chat.id
new_selection_name = message.text.strip()
if new_selection_name.lower() == 'отмена':
bot.send_message(chat_id, "Изменение отменено.")
return
if len(new_selection_name) > 18:
bot.send_message(chat_id,
"Новое название слишком длинное. Максимальная длина - 18 символов. Введите новое название")
return
if db.check_selection_exists(new_selection_name):
bot.send_message(chat_id, "Подборка с таким названием уже существует. Введите новое название")
return
print(f"Updating selection name from {old_selection_name} to {new_selection_name}")
db.update_selection_name(old_selection_name, new_selection_name)
print("Selection name updated!")
bot.send_message(chat_id, f"Название подборки успешно изменено на: {new_selection_name}")
Сейчас бот успешно присылает мне сообщение из функции handle_edit_name, но на ответное сообщение никак не реагирует. В консоли никаких ошибок нет - видимо он тупо не попадает на вызов handle_new_name
и есть трабла с обработчиком register_next_step_handler
Общий концепт такой - пользователь нажимает кнопку в боте - ему приходит сообщение от бота - он отвечает на это сообщение - бот проводит изменения в соответствии с сообщением
Сам код выглядит так:
def handle_edit_name(call):
chat_id = call.message.chat.id
old_selection_name = call.data.split('#')[1]
print(f"Old selection name: {old_selection_name}")
old_selection_names[chat_id] = old_selection_name
msg = bot.send_message(chat_id,
"Введите новое название подборки или отправьте 'Отмена' для сохранения текущего названия.")
bot.register_next_step_handler(msg, lambda message: handle_new_name(message, old_selection_name))
def handle_new_name(message, old_selection_name):
chat_id = message.chat.id
new_selection_name = message.text.strip()
if new_selection_name.lower() == 'отмена':
bot.send_message(chat_id, "Изменение отменено.")
return
if len(new_selection_name) > 18:
bot.send_message(chat_id,
"Новое название слишком длинное. Максимальная длина - 18 символов. Введите новое название")
return
if db.check_selection_exists(new_selection_name):
bot.send_message(chat_id, "Подборка с таким названием уже существует. Введите новое название")
return
print(f"Updating selection name from {old_selection_name} to {new_selection_name}")
db.update_selection_name(old_selection_name, new_selection_name)
print("Selection name updated!")
bot.send_message(chat_id, f"Название подборки успешно изменено на: {new_selection_name}")
Сейчас бот успешно присылает мне сообщение из функции handle_edit_name, но на ответное сообщение никак не реагирует. В консоли никаких ошибок нет - видимо он тупо не попадает на вызов handle_new_name
решил я значит раскидать свою консольную программку по отдельным файлам для прикола. и вот такая хуйня получается.
есть функция в main.py (менюшка короче). Вот я нажимаю 1, например, вызывается функция из options.py Тут своя менюшка последний пункт которой выйти назад (вызываем взад менюшку из main.py) Но так делать нельзя, типо циклический импорт хуе-мое. А как тогда делать?
У тебя очень хуевая логика в приложении получается. Ещё, если ты в тред прибежал совет спрашивать значит никаких изъянов в своей логике ты не видишь, и хочешь какой-то волшебной универсальной подсказки. Это всё в сумме значит что у тебя в голове неправильное понимание логики приложух, это не фиксится.
Что до совета - ну хз - импортируй все файлы в начале main py.
Вы видите копию треда, сохраненную 14 февраля в 01:36.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.