24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Здравствуйте, может кто-то с этим помочь? Дана последовательность символов латинского алфавита и пробелов. Группу символов, разделенную с одной или обеих сторон пробелами и не содержащую внутри себя пробелов, назовем словом. Поменять порядокследования букв на обратный в тех словах, которые начинаются с заданного символа. Подсчитать количество таких слов import string stroka = input('Введите строку: ') count = 0 symbol = input('Введите символ: ') razdel = stroka.split() mytable = string for i in range(len(razdel)): for s in range(len(razdel)): if(stroka==symbol): count+=1 mytable="".join(razdel) break else: mytable = "".join(razdel) print(mytable, count)
>>2568276 На каждый пук всё это дёргается? Инициализируй тогда уже объект один раз, ну и можно все эти локализации отдельными классами. Алсо, зачем _? Его в любой момент можно похерить, это для нинужных переменных.
Короче нубский вопрос по автодокуметации. Как работают три кавычки? Где и когда их ставить? Пишу на пичарме но не понять ничего. Есть какая-то комбинация клавиш для вставки шаблона автодока?
>>2568276 Оно должно быть чувствительно к регистру или нет? Локализация наоборот (из руснявого в инглиш) предусмотрена? Если я пропустил дефис например то все - не прокатит? Почему нет поддержки регулярок?
ты не совсем понимаешь, как работает локализация. это не переводчик тудема-сюдема, у тебя всегда есть фраза на нативном языке (в случае анона это русский), для которой ты ищешь перевод в таблице
любые регистры, дефисы и прочее приведут к ошибке, и это правильно
Народ, всем привет, ай нид хелп. Нужно заполнить данными(отсутствующие значения) таблицу, как во второй, пробег и пробел остаточный. Python pandas Пробег должен == 0, Пробег остаточный == 160000 Как это сделать, идей вообще нет
>>2568047 (OP) ну ахуеть , почитал книжку , выучил библиотеку с PEP 8 и иди пиши имиджборду , ты раз взялся анонов учить успешному программированию , то распиши нормально , что как и после чего учить
Шесть месяцев назад я нашёл в Интернете книжку "Dive into Python". Странная книжка, толстая, да ещё на не русском языке. Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял. Но что-то не отпускало меня - я пошёл на python.org и стал изучать стандартную библиотеку, старательно, скурпулёзно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру, где было написано про PEP8. То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке безумия бросился зубрить эту конвенцию по написанию питоньего кода. У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё это время - и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди глубокой ночи.
Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.
Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как-то ожидал большего и был немного разочарован.
Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!
Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.
Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к обработке данных, как map-reduce.
Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.
За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм. Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.
>>2568274 Помнится, один чувак рассказывал про тестовое задание на собесе, которое должно было развернуть юникодный текст задом наперёд. И в его случае мало кто справлялся потому, что он использовал всяческие фишки юникода, как то: модификаторы символов (например, символ ударения https://ru.wikipedia.org/wiki/Знак_ударения ), эмодзи (а они теперь часть юникода на секундочку), при чём эмодзи тоже имеют модификаторы цвета и бывают составными (тут много текста с примерами: https://habr.com/ru/company/itelma/blog/549366/ , рекомендую заглянуть и в каменты, там есть интересное).
В общем, на первый взгляд банальное задание разлилось у него в такое море кода... Ух, просто!
>>2569232 Ну всякие нормализации-денормализации это известная тема. А эмодзи сразу нахуй идут. Я всё жду, когда уже появятся анимированные и со звуком.
Возникла такая идея - хочу сделать мультиплеерный 2д платформер для 4-8 игроков. Насколько сложно это будет сделать на питоне и что для этого лучше всего на питоне подходит? Pygame это может?
>>2569400 С учётом того, что ты по всей видимости совсем без опыта программирования - сделать будет сложно, неподъёмно сложно. Впрочем это не только про питон.
>>2569400 пайгейм это обработка устройств ввода, рендеринг спрайтов и звука. нетворкинг придется делать с нуля
> Насколько сложно это будет сделать на питоне на порядок сложнее чем на движке, т.к. всё придется написать и отладить самому с нуля. с другой стороны, если это самоцель и делается для саморазвития - почему нет?
Помогите нубасу. Можно ли как-то отсортировать файлы которые пронумерованы иероглифами (一、二、……、 十四、……)? В юникоде они идут не в правильном порядке (1, 7, 3, 9 и т.д.), в ручную переименовывать на арабские цифры не вариант тоже.
>>2569660 В целом это даже не сложно сделать. Просто создаёшь одну строку со всеми иероглифами в нужном тебе порядке и через цикл проходишь, добавляя их все в словарь в нужном порядке.
Смешно даже. Попытался загрузить модуль word2number Нету на сайте. Ок, просто скопировал весь модуль перед функцией и решил. Это не самое сложное задание, но писанины просто много
>>2569763 ты носишься с ней как дурак и выдаёшь решения простых задачек и при этом вряд ли сможешь понять,если решение выдали кривое, неработающие и неоптимальное
>>2569763 Скрин с китайскими иероглифами полностью хуйня, если что. Он не просто выдал код, который ничего толком не делает, но даже дал неправильное описание как питон работает.
>>2569025 >mutation >pd.Series превращается pd.Series >квадратные скобки в след квадратных скобок, вместо loc >коментарии в каждой строчке ебать код у тебя, где так учат паграмировать? >Как это сделать, идей вообще нет fillna(0) в "пробеге", fillna(160000) в "Пробег остаточный"
>>2568047 (OP) Коданы, что у меня сломалось? При попытке установить интерпритаторы через pyenv выдаёт: > /home/username/.pyenv/plugins/python-build/bin/python-build: line 819: make: command not found
Последние строчи лога выглядят так: Last 10 log lines: config.status: creating pyconfig.h creating Modules/Setup.local creating Makefile
If you want a release build with all stable optimizations active (PGO, etc), please run ./configure --enable-optimizations
Питоны, есть куча директорий и каждую нужно заархивировать (в отдельные архивы, а не в единый архив) и сложить в папку. Вроде задача простая, но я хуй его как на Питоне такое адекватно реализовать (притом что на Баше делается в пару строк). С тем же os.make_archive и простым циклом for не получается.
Подскажите, дайте совет, добрые люди, как проще такое реализовать? К душнилам на Стак идти за советом не хочется
>>2570016 Не получается через shutil. Пытался пройти циклом for по всем директориям вложенным в основную директорию: for baks in bak_dir: shutil.make_archive(различные комбинации параметров) Ничего толкового не выходит
>>2568762 Даунская задачка для даунов. Бот очевидно смог ее решить. И очевидно в очередной раз как бэ намекает всем что алгоритмодроч и литкододроч не являются хот ьсколько-нибудь важными признаками адекватного программиста
Пусть решит вот такие задачки: Понять почему постгря на проде внезапно жрет минимум 70 гигов памяти из 90 доступных Прикрутить кейклоак авторизацию к этому проекту 8 летней давности на Торнадо Перевести поиск в проекте с LIKE на elasticsearch Понять почему при переходе с celery 4 на 5 таски рандомно начали сдыхать
>>2570077 >алгоритмодроч и литкододроч В галере есть коллега который без устали дрочит литкод и постоянно меня да окружающих спрашивает, решили ли мы сегодняшний челлендж. Каждый раз как говорю что такой хуйней не занимаюсь, он теряет дар речи будто я какое-то богохульство отпустил
>>2570110 >bak_dir это что? Директория куда сваливать бэкапы
>from pathlib import Path > >p = Path('.') >subdirs = [x for x in p.iterdir() if x.is_dir()] >for subdir in subdirs: >... Спасибо, попробую использовать
в начале задается путь до пакета с пакетами и путь до папки, куда архивы сваливать. в этом случае это папка 'Archives' рядом с пакетом с пакетами
и да, перед тем, как модифицировать что-то на своём диске, убедись, что всё корректно. через принты, например. и лучше на 1 файле сначала попробовать (добавив break в конец цикла), чтобы случайно не удолить все файлы на своём компуктере
>>2570110 >я очень похожее недавно делал Игорь, ты? Кирилл мне сказал к тебе обратиться по поводу keycloak, якобы ты "все уже сделал", а ты мне нихрена толком не помог, самому пришлось это говно править
Регулярные выражения могут быть сложными для чтения и отладки, особенно если они длинные или сложные. Они могут быть неэффективны в плане времени исполнения, особенно если используются неоптимально. В некоторых случаях они могут вообще не работать правильно.
Аноны, вопрос может и не совсем питонический, но итт как известно сидит элита раздела, авангард программирования на острие технологий, так что у кого ещё спрашивать как не у лучших из лучших.
Есть ли у приложений и окон ОС виндоус какое-то такое вот волшебное API, которое позволяло бы другим программам читать его окна. Вот например открывается окно в нем три радио кнопки, два чекбокса, поле ввода, скрол бар, список файлов. И вот такое апи которое бы передавало эту инфу и например координаты этих элементов или даже возможность давать по ним сигналы, нажатия.
Сравнение конечно дурацкое, но вот веб страница получает разметку с UI и браузер эту размету рендерит, но мы можем взять весь ДОМ страницы и растащить его по элементами и давать потом по кнопкам сигналы с помощю АПИ, например селениума
>>2570397 на джаве была какая-то прога, которая использует распознавание изображений кнопок. а по-другому-то никак, мало ли кто как ректы кнопочек рендерит и какой фреймворк использует, ДОМу страницы до такого зоопарка фреймворков и велосипедов далеко
>>2570419 написать приложение на flask (ориентировочное время выполнения - 24 часа) Описание приложения: приложение разрабатывается с помощью фреймворка flask, работает с базой данных SQLite, имеет API и веб интерфейсы. Цель приложения: каталогизация и структурирование информации по различным веб-ресурсам. 1. API-интерфейс. Приложение принимает GET и POST запросы: a. POST запрос №1 должен содержать в теле ссылку на какой-либо веб-ресурс. Приложение должно обработать полученную ссылку, разложить ее на протокол, домен, доменную зону и путь. Если в ссылке присутствуют параметры - преобразовать их в словарь. Полученные данные нужно сохранить в таблице базы данных, присвоив уникальный идентификационный номер (uuid). Возвращать пользователю ответ в формате json с разложенными данными и статусом обработки. Если пользователь прислал не ссылку - сообщать ему об этом в ответе. b. POST запрос №2 должен содержать в себе csv файл с перечнем ссылок (формат файла - каждая новая строка одна ссылка). Все ссылки нужно обрабатывать по образцу POST запроса №1, а также обработка должна выполняться в фоновом режиме. В ответ добавить общий статус обработки файла (количество обрабатываемых ссылок, количество ошибок, количество ссылок, направленных на сохранение в БД). c. GET запрос №1 должен выводить все сохраненные ссылки из БД (добавить возможность выборки по доменной зоне, id, uuid). d. GET запрос №2 возвращает последние 20 строчек лога (см. п.2). 2. Логирование. Приложение должно проводить логирование своей работы с ротацией лог-файлов при достижении определенного размера файла (1 мегабайт). Необходимо логировать все полученные запросы и ответы приложения, а также информацию о добавлении в БД новой записи. 3. Веб-интерфейс. Требуется реализовать 3 веб-страницы для приложения. При вёрстке страниц требуется использовать фреймворк Bootstrap5. Постараться выдержать единый концепт оформления страниц. a. Страница 1. Реализовать веб-страницу, содержащую формы для добавления в приложение новых веб-ресурсов. Формы должны добавлять веб-ресурсы как поштучно, так и загрузкой CSV файла. Формат CSV файла тот же, что и для API интерфейса. b. Страница 2. Реализовать веб-страницу с таблицей, отображающую все ссылки из базы данных с разбивкой на страницы (пагинация, по 10 элементов на страницу). Также веб-страница должна содержать элементы управления - поиск по доменному имени, возможность фильтрования по доменной зоне, а также удаление конкретного элемента из таблицы и базы данных соответственно. c. Страница 3. Реализовать веб-страницу, отображающую строки из лог-файла. Отображение должно быть динамическим (при обновлении файла - обновляется и содержимое веб-страницы). Если вы владеете знаниями JavaScript - добавьте интерактивные уведомления на веб-страницах по результату выполнения каких-либо действий. Иначе используйте для коротких уведомлений функционал flask flash. 4. Авторизация (Необязательное, бонусное задание). Добавить в приложение авторизацию пользователей по токенам, дописать необходимые эндпойнты и шаблоны для авторизации и завершения сессии, функционал, описанный в пунктах 1-3 сделать доступны только для авторизованных пользователей. Логировать авторизацию, завершение сессии и попытки несанкционированного доступа. 5. Дистрибуция и контейнеризация. Код приложения должен упаковываться в docker-контейнер и автоматически запускаться при старте контейнера. Приложение должно быть залито на github. В проекте должен быть файл README с описанием проекта, эндпойтами и пошаговой инструкцией по разворачиванию и запуску проекта.
>>2570428 Типо рвешь жопу, делаешь за 24 часа в тестовом задании софт который команда разработчиков за месяц делает, его у тебя "принимают", "мы вам перезвоним", твое задание отдают тестируют и заказчику и новых лохов идут искать?
Писать многопоточный и тем более многопроцессорный код на питоне это совсем хуёвая идея? Они там собираются как-то заменять костыли из стандартной библиотеки или пора перекатываться в другой язык?
>>2570585 Говланг не подходит мне с точки зрения его ограниченных перспектив. Ржавого можно потом использовать в сторонних, низкоуровневых вещах. Есть некоторые задумки.
>>2570596 У тебя проще. Плюс половина это "дополнительные баллы", а у анона вон, всё обязательное, кроме АВТОРИЗАЦИИ. Плюс, у тебя действительно похоже на тест, а у анона столько специфических требований, что кажется как будто на него просто чужой спринт скинули.
И вообще давать сутки на такую хуйню это полное блядство и свинство. Чтобы это за сутки сделать надо нормальный опыт иметь да и то работать не будет всё равно без тестов, а уж если опыта нет, то человек себя прости изведет в попытке высрать этот кирпич. Такие сроки только мразь дать могла соискателю, т.е. человеку который может отчаянно нуждается.
>>2570643 Хотя нет, сорян, перепутал с округлением бухгалтерским (там есть разница). Впрочем, вопрос остается преждним - с какого ляда подобная методика округления именно в питоне по умолчанию? Единственный язык, в котором я это встретил.
>>2570428 написал что в срок не сделаю, скинул 2 другие части тестового, (это третья, лол, ну первые две тупо задачки) спрашивает а сколько тебе нужно чтобы доделать? имеет смысл ДОДЕЛЫВАТЬ?
Если есть аналитики в треде, то, пожалуйста, посоветуйте куда смотреть после прохождения начальных курсов по питону. Знакомиться с библиотеками, решать ситуационные задачи?
>>2570543 Кому нужны долго живущие галеры? Это же еще зп платить. А так собрал ждунов на месяц, параллельно кандидатов тестируешь. Прошел месяц, ИП+=rand() и по новой.
>>2570837 Грамотный джун должен трезво оценивать свои возможности. Если человек без возражений принимает задание на месяц с временем выполнения в сутки, то он либо совсем ничего не понимает в оценке сложности задачи, либо надеется где-то своровать уже готовый код. И первый, и второй вариант негативно характеризуют собеседуемого.
>>2570842 Двачаю. Когда вкатывался, 2 раза подряд напоролся на такие галеры. Соответственно 2 месяца в трубу, а надзиратели вместе с моей зп пропали в неизвестном направлении. Самый лул, что недавно один из них приглашал на работу в очередную лодку-однодневку с уставным капиталом 10к и временем существования 5 дней.
>>2570428 >При вёрстке страниц требуется использовать фреймворк Bootstrap5 Беги оттуда! Уже фласк должен быть наводить на мысли, а если бутстрап, то беги!
>>2570848 Это задание не на месяц, тут по идее стандартные вещи. Но за день это перебор, если заготовки не использовать.
Ну и вообще не адекватно, потому что время нужно, чтобы разобраться с какими-то вещами.
По приколу можно попробовать себе такой челлендж устроить и сделать. Чисто для тренировки, не планируя всерьёз устраиваться. А если вдруг предложат работу, запросить сразу нормальную джун+ зарплату, ну там соточку например для начала.
>>2570862 Никак не ответил. Отправил в трудовую инспекцию актуальные координаты наёбщика Артёма (ныне Владислава). Проблема в том, что они фирмы регают на ноунеймов, т.е. формально он не при делах.
>>2570879 Как-то сомнительно. Много рисков, клиентов искать сложно, качество софта говно, а вертишься как при нормальной работе. Тут что-то другое должно быть или ты пиздишь.
>>2570848 Почитаешь эти истории с собесов когда челам там КАВЕРЗНЫЕ ВОПРОСЫ задают как будто они не на работку пришли проситься, а в передачу Своя Игра попали: протестируйте карандаш, что тяжелее пуд сена или пуд железа, вилкой в глаз или в жопу раз.
Драститя. Есть маленький сервис на джанге, который даёт определённые права на определённые действия зарегистрированным и запросившим хуям. Структура: две таблицы А - данные о хуях В - данные о жопах (внешний 1кМ ключ к хуям)
Когда хуй регается в системе, в таблицу А заносятся данные о нём и выдаётся жопа, которую он может взять(1) или забить(2) на потом. Если он взял, то всё в порядке, в таблицу В заносятся данные о жопе, но если он забил (закрыл вкладку, не подтвердил действия и тд), то образуется мусор в таблице А, у которого нет отношения. Мне хуи без жоп не нужны, я решил замутить мироскрипт на ликвидацию одиноких хуёв, а именно: в url прописал паттерн, который первым запускает скрипт очистки, потом переходит на страницу регистрации. Вопрос про скрипт - как можно оформить его короче например через exclude? Иными словами, как по-другому (и главное где, кроме костыля с паттерном url) можно его применить? Какой метод можно переопределить в модели или в классах во вьюхах, чтобы в будущем не пердолиться и не изобретать велосипед? Спасибо.
Есть xlsx файл с 3к записями. Файл представляет из себя столбец с: уникальным id, месяцем(январь-декабрь), статус(12 разных). Нужно взять id и прогнать через rest запрос, получив в ответ true/false. С этим проблем нет. Проблема в том, что я не могу придумать, как это все адекватно раскатать в табличку вида количество значений в определенный месяц с определенным статусом с ответом true/false. Как примерно должно выглядеть прикрепил. Мне в голову приходит только или ручной подсчет через фильтры в экселе и создание кучи переменных, или заделывание словарей с дальнейшим парсингом. В общем нужна помощь, как это просто сделать без костылей
>>2571578 Полная хуйня. Проверил только что. Если пустых записей > 200, то таймскейл респонза возрастает десятикратно. Это можно будет ронять сайт через скриптик генерации имен, пиздец. Чо делать-то?
>>2570262 >>2570297 Я, конечно, больной ублюдок и вот это вот всё, но вариант со сплитом по-моему лучше соответствет питоновской идеологии. Ведь явное лучше неявного, а регулярки это...
Если смущают пробелы в сплите, то можно что-то типа > "А = Б".split('=')[0].strip()
>>2570313 Регулярки на самом деле очень легко пишутся. И чем дальше, тем сложнее читаются. Даже не очень скилловый спец может написать что-то такое: https://emailregex.com/ Но нужно быть профи и/или потратить уйму времени, чтобы правильно понять, что там написано.
Если коротко, то главное понять концепцию: находишь якоря, которые будут характерны для твоей строки, выделяешь закономерности и описываешь, как твоя строка может изменяться. Уловил? Читай подробнее: https://habr.com/ru/post/565726/ И ОЧЕНЬ ВНИМАТЕЛЬНО читаешь первый комментарий - о том, почему регулярки это зло. Например, мне очень долго один сервис отказывался слать письма (при этом пускал в систему по мылу, блджад!) потому, что я использовал плюшки RFC 5233 ( https://www.rfc-editor.org/rfc/rfc5233 ). И это ещё достаточно обычный кейс, а всяких других "ОСОБЫХ" сценариев может быть вообще немеряно, например, с поддержкой пьюникода в URI (а, значит, например, и в e-mail) можно засунуть что угодно, от иероглифов, до сраных ЭМОДЗИ: https://habr.com/ru/company/productivity_inside/blog/547456/ .
>>2571771 ЗЫ! Насчёт емейла! Я быстро не нашёл, но был регексп для 100% определения корректности адреса, размером с печатную строку. Кажется, это был какой-то RFC, но найти его быстро не получилось.
>>2570397 Луркай AutoIT, в нём есть и пипетка, определяющая ТТХ элементов и жмакалка автомагическая, админы его используют, чтобы писать автоматизацию всяких установщиков.
Кароче есть такой скрипт https://pastebin.com/ii6FPHV7, типа обертка на venv. В общем я делаю один(-F) exeшник в pyinstaller, и проблема в том, что скрипт не работает если я использую exe файл (не создает venv нормальную просто пустые папки), по если вызвать скрипт по обычному, то все нормально. пик 1 exe, пик 2 по обычному. в гугле нихуя...
>>2571034 А ты расшарил и ждал откликов, или адаплтировал и резюме под вакансии и рассылал во все места? Потому что первый вариант прокатит только если ты реально представляешь из себя что-то. Я, правда, никогда не работал кодером... И работу искал только дважды, в прошлый раз - 10 лет назад, с тех пор новые места (уже трижды) меня сами находили. Но это скилл, помноженный на репутацию со связями.
>>2570428 >ориентировочное время выполнения - 24 часа Три рабочих дня, наверное, а не сутки, как почему-то подумали местные Антуаны... Теоретически, если опыт есть, то реально делается. Но это нужен прям опыт решения такого, без него даже считать бесполезно. Не очень джуновое задание.
А нормальная ли практика создавать в проекте условный conf.py и там создавать переменную ROOT_DIR, которая содержит путь до корня проекта Path(__file__).resolve().parent? (не джанга)
>>2570640 Ну, я прямо сейчас переписываю API, общающееся JSON'ами с клиентом с Flask на FastAPI, получается удобно, особенно благодаря Swagger UI, можно даже без клиента работать.
>>2571182 >Марка Лутца Его многие не любят. По-моему зря. Сам я вкатывался вообще по https://pythonworld.ru/samouchitel-python , но с оговоркой, что это далеко не первый мой язык и мне нужно было только понимание отличий от других языков, чтобы начать. А Лутца читал для большего понимания. > по питону 2.6 и 3.0. Найди свежее. Там в 3.6+ были приятные фишки. Подробнее не вспомню и без них жить можно, но с ними - приятнее. Одна аннотация типов ( https://docs.python.org/3/library/typing.html New in version 3.5) чего стоит! > или лучше купить книгу для новых версий питона от других авторов? Я бы сейчас попробовал это: https://goalkicker.com/PythonBook/ по крайней мере другие книги с этого сайта, которыми пользовался, были просто агонь.
Почему ООП является де-факто стандартом коммерческой разработки? Почему нельзя писать проекты тупо на функциях? Любая программа выполняет бизнес-процесс, почему его нельзя реализовать в виде процедурно-функционального кода?
>>2571834 >Почему нельзя писать проекты тупо на функциях? Можно, в дата-сатанизме. Там ты исходные данные преобразуешь рядом функций и получаешь результат.
Но не везде надо проделывать манипуляции с набором исходных данных. Где-то надо тупо обрабатывать состояния, например.
>>2571869 Ну не знаю. Я вот по работе написал аппу-шаблонизатор для жс-кода. Там и коннекты к мускулю, и кеш в редис, и фастапи, и все на свете. Все на функциях.
>>2571834 Если ты работаешь на галере, по гайдлайнам, то спроси у своих авторов гайдлайнов, зачем.
В некоторых случаях ООП очевидно удобен, если у тебя много похожих объектов со своими характеристиками каждый, при чём они могут быть разные сами по себе например, шутан с монстрами, которые описываются одним общим классом, в котором у тебя будет спаун, смерть, хиты и прочее, а в классах-наследниках будут конкретные виды с их особенностями.
Если у тебя такого нет и ты ни с кем не связан, делай, как хочешь.
Для внешних связей (например, если у тебя продукт выступает как модуль, доступный публично) ещё иногда пригодится инкапсуляция, чтобы некоторые из твоих методов отрабатывали только внутри класса и не были доступны снаружи (в Питоне она, правда, не абсолютная). Хотя на мой вкус это сомнительный плюс, ведь созданный по твоему импортированному классу объект будет в чужом коде и это уже не твоя головная боль.
Ну и полиморфизм... У меня однажды был кейс для него, но поскольку задача была довольно искусственной я не уверен, что это полезная штука.
>>2571907 Впрочем, есть подозрение, что тут: https://pythonworld.ru/osnovy/inkapsulyaciya-nasledovanie-polimorfizm.html неправильно определили инкапсуляцию. А я именно сюда залез за определениями. Так-то я просто помню, что три святых коровы ООП это наследование, инкапсуляция и полиморфизм. И хорошо помню только про первую и последнюю.
Хули у вас так сложно в питоне пакеты делать? Сделай __main__ функцию, сделай __main__ модуль, сделай entry_points и только после этого можно запускать из консоли.
>>2571834 Потому что в тырпрайзе ты оперируешь сложными структурами, которые имеют свойство гулять по коду и при этом иметь состояние, а такое поведение проще описать через объекты классов, а не плодить замыкания.
Ну полезный сайт. Даёт задания на темы, которые мелком знаю, но никак не доходили руки углубиться. Теперь хоть понимаю, что в этих каракулях написано. Из всех на которых пробывал делать задания этот больше всего понравился
>>2571886 Выёбываться можно, никто не запрещает. Как поддерживать?
Ну и потом, а ты уяснил философию функционального программирования? Для чего оно и почему? Спойлер: исходные данные остаются неизменными, функциями ты извлекаешь из них требуемое тебе. В ООП наоборот: исходные данные подвергаются многократным манипуляциям и не хранятся в исходном виде, везде промежуточные результаты.
А теперь подумой, такое уж у тебя ФП или просто неподдерживаемые извращения от неумения применить ООП, когда оно нужно.
когда просто функции вместо классов лепишь это вроде бы называется процедурное программирование, функицональное это что-то про стейты или типа того извините я крудошлеп
Помогите пж, в гугле искал, и если правильно понял, в первом вопросе он так отправляет файлы для того, чтобы балансировать нагрузку и блокировать ненужные запросы. Для второго вообще ничего не нашел внятного
>>2571982 > в тырпрайзе ты оперируешь сложными структурами, которые имеют свойство гулять по коду Кстати, в 2к23 это уже не совсем так. Сейчас тыр-тыры стремятся делать маленькие оконченные кусочки и выставлять наружу не код, а REST, потом запихнуть это в контейнеры и запускать их оркестратором (K8s или вообще Serverless). И вот тут с одной стороны появляются накладные расходы (потому что HTTP это оверхед для простого общения, а там ещё в коде нужно реализовать сериализациею-десериализацию хотя бы в JSON и ладно бы на пистоне это делается парой строк, но на крестах каких-нибудь...), с другой стороны стандартизация, удобство MQ, балансировки и т.п. И вот тут главное реализуй хорошее API, а использовал ли ты для этого классы -- проблема только твоего подразделения.
>>2572340 Ну вот у тя джва реста между собой общаются, причем первый является продолжительным клиентом второго, т.е. дёргает один эндпоинт, получает данные, че-то с ними делает, дёргает второй эндпоинт, получает данные, че-то с ними делает, всё мёржит и хранит где-то или отдаёт в третий рест. Ты на каждое такое дёрганье будешь вызывать функцию с requests.get, создавая свою сессию с своим пулом?
>>2571985 Забавное. А на остальные ролики будет ссылка? >>2571992 Ага, а это видел? >>2572340 >запихнуть это в контейнеры В образы, пофиксил тебя, не благодари. >>2572364 Именно так! Такова философия API: запрос-ответ это конечное действие, API не сохраняет внутри себя результаты запросов. Код же вообще отделён от данных, пока в контейнерах крутятся аппликухи на самых разных языках сами данные лежат отдельно - в Постгресе, ЕТЦД, Монго, Редисе или ещё где.
>>2572384 >сами данные лежат отдельно - в Постгресе, ЕТЦД, Монго, Редисе или ещё где Промежуточное их состояние незачем хранить где-то, кроме как в памяти. Но хуй с ним. Опять же на каждую запись/чтение данных в/из бд/редиса/етц ты будешь вызывать функцию, внутри которой будешь инициализировать новое соединение с новым курсором и т.п.?
>>2572390 > Промежуточное их состояние незачем хранить где-то, кроме как в памяти. Что тебе непонятно в этой фразе: > запрос-ответ это конечное действие Там нет и не может быть никаких промежуточных состояний, или ты делаешь что-то не так. > Опять же на каждую запись/чтение данных в/из бд/редиса/етц ты будешь вызывать функцию, внутри которой будешь инициализировать новое соединение с новым курсором и т.п.? Да. Архитектор уже подберёт более подходящее в конкретном месте. Где-то это будут сверхбыстрые Ин-мемори ДБ, где-то что-то ещё, вплоть до КликХауса, ГринПлама и других ОЛАП. Работа с in-memory очень быстрая, подключиться к ней и прочитать/записать быстрее, чем прочитать/записать что-то с диска при установленном заранее соединении.
Кстати, про серверлесс слышал? Там всё вообще круто: когда к ресурсу обращаются после паузы он СОЗДАЁТСЯ из ниоткуда (запускается из образа, лежащего поблизости, но самого процесса в момент обращения при этом нет), а когда отработает -- контейнер выключается и не существует до следующего обращения.
Какие там могут быть промежуточные состояния? Да, промежуточные вещи и сохранения чего-то между сессиями это вопрос к клиенту, такое может возникнуть у него. Например, азы: гет-запрос авторизации, передал логин-пароль, получил сессионный ключ, потом передаёшь гетом для получения данных определение нужного тебе объекта, приложив к нему сессионный ключ. Вот тут есть промежуточное хранение, но оно не происходит на сервере.
>>2572414 >Там нет и не может быть никаких промежуточных состояний, или ты делаешь что-то не так. На валидацию данных/жвт-токена/хэдеров ты хуй положил? Ок, храни их в бд/редисе, и прикрути ещё сторонний под этой сервис. И также похуй на бизнес-логику, когда в зависимости от конфига обрабатываемого тобой флоу тебе надо в одном случае следовать одной ветке с своими методоами, а в другом другой, тут конечно же тоже нет состояния и на бэке это не делается. Ок.
>Там нет и не может быть никаких промежуточных состояний, или ты делаешь что-то не так. Так а че сразу блобы не гоняются по сети, зачем все эти сериализации/десериализации, жсоны/хмлы/протобафы. Хуярь сразу в память/бд неотформатированные данные, навесь ещё пару сервисов/хранимок, которые это будут обрабатывать внутри всего этого.
>Да. Архитектор уже подберёт более подходящее в конкретном месте. Скажет что память на нодах забилась от ваших ебаных подключений и всё по пизде пошло, а новый сервер/новую планку поставить нет возможности, т.к. бюджет уже свёрстан, уже проходили.
>Кстати, про серверлесс слышал? Там всё вообще круто: когда к ресурсу обращаются после паузы он СОЗДАЁТСЯ из ниоткуда Ну да, и создаётся нигде и никакие мощности и время не тратятся на это, у нас же всё бесконечно масштабируется! И сеть у нас везде гигабитная и сервера не ломаются.
>Например, азы: гет-запрос авторизации, передал логин-пароль, получил сессионный ключ, потом передаёшь гетом для получения данных определение нужного тебе объекта, приложив к нему сессионный ключ. Вот тут есть промежуточное хранение, но оно не происходит на сервере. Обычно это какой-то оаутх2.0 с внешним кейклоаком, а не твоя локальная штрибанина. И ключ ты получаешь через редиректы и тебе его надо хранить на клиенте, но срок его действия тебе надо чекать уже на бэке, или для тебя это происходит атомарно и без промежуточного состояния? Ок.
>>2572499 >>2572502 Простите, илита питухон-треда, расскажите за правильную терминологию, логику и уж тем более работу, а то во всё это только вы можете, а остальные дебилы и второй сорт.
>>2572522 Пока я только вижу сноба, который использует разные терминологии для описания своего непонимания. Ты в одну гребёнку сливаешь "мутное мышление" и "не владение терминологией", это вообще разные вещи, которые не обязательно вытекают друг из друга. Это классика. Учить других как надо понимать, ведь как они понимают, это непонимание, а вот как я понимаю, то это понимание.
>>2572535 Один скажет "передвинь этот стол под окно", у тебя же похоже на "заебент эту хуйню под ту пизду". Явно, что тебе это понятнее, но это не говорит о том, что это правило для всех распространяемое.
>>2572535 >Ты в одну гребёнку сливаешь "мутное мышление" и "не владение терминологией", это вообще разные вещи, которые не обязательно вытекают друг из друга.
Ого, чувак, а ты умеешь мыслить образами или мыслишь-таки словами? Только не говори, что мыслишь какими-то другими радужными словами из мира фей, а не вот этим вот «ебать флоу азы-газ стейты хуйнём».
>>2572452 Болезный, тебя заносит. Кончено, на бэке есть логика и многое другое. У тебя есть условная функция, скажем, @app.post('/api/v.0.1./register', status_code=status.HTTP_201_CREATED) async def register(request: dict = Body()): # some code returtn {"result": "OK"}
Она принимает JSON, возвращает в случае успеха заголовок с кодом 201 и тело с ЖСОНом '{"result": "OK"}' Внутри неё может быть овер-дохуя всего. что угодно: зайти в БД, обратиться по API к отдельному сервису, и так далее, в ней может быть ветвление и проверка нескольких разных сервисов и ещё чёрт-знает-что. Но это функция. Данные о новом юзере - передала в какую-то базу, данные о неудачном логоне - в систему логирования/безопасности и т.п. Но когда отработал райз/ретурн - она забыла все состояния. Всё, этим история кончилась и никакого объекта на сервере не хранится. Объекты тут вообще не нужны.
> Так а че сразу блобы не гоняются по сети, зачем все эти сериализации/десериализации, жсоны/хмлы/протобафы. Странный вопрос в эпоху победившего потреблядства. Потому что "а зачем?", ведь стандартное решение просто балансировать, тестировать, проще строить очереди и т.п. Через тот же свагер можно тестить АПИ вообще через браузер, без клиента. Вот раньше, да, когда считали каждый такт процессора никому не приходило в голову оборачивать всё в текст, а потом ещё и оборачивать в хтмл.
>>2572622 Долбоёб, я тебе говорю про промежуточное состояние данных, с которыми ты работаешь внутри своей функции. Ты эти данные можешь обрабатывать как хочешь, агрегации считать, передавать в другой слой, в другого клиента или другой апи, и будешь ждать от него ответа. И передавать ты можешь хоть строкой, хоть списком, хоть словарём, хоть кастомным объектом или моделью пайдантика - мне похуй, ты везде (в концепции питона) передаёшь объект. >когда отработал райз/ретурн - она забыла все состояния Но пока у тебя до этого момента не дошло, то данные у тебя висят в памяти, которые по итогу могут не попасть ни в бд, ни в кэш, ни в лог.
Что тут непонятного? Никакого хранения промежуточного стейта нет, но промежуточные данные ты держишь в памяти во время отработки функции.
>Странный вопрос в эпоху победившего потреблядства. Так это тебе вопрос, дебил. Пришел тебе жсон одной структуры, которая у тебя описана в сваггере, через пайдантик она валидацию прошла. Далее эти данные улетают в другой слой, а там свой дто и в бд у тебя другая схема, либо вообще самописный балк-инсерт, и тебе эти данные надо замаппить перед записью в бд. Пока твоя функция не отработала, всё это висит в памяти.
>>2572586 >>2572593 Я всё ещё не понял, в чём ваще непонимание, поэтому дальше просто скипну, читать все эти доёбы про какой-то не такой язык и не такую терминологию лень.
>>2572679 Пошёл в пизду, хуесос, ты сам влез в разговор с претензиями ко мне за мои терминологии и мутное мышление, при этом так и не написал, что конкретно непонятного я написал, а только своё ебло раскрыл, хранитель сакральных знаний хуев.
>>2572683 Вообще-то это я влез, пидорас ты тупой, зелёный кусок говна с надменностью как у золотого слитка, пишешь хуйню налево и направо, но как только тебе показали, что ты пишешь хуйню - обидка и игнор. Я хуею с этих девочек.
>>2572698 Да мне похуй, кто из вас двоих/троих влез, ебанат. Тебя/вас спокойно попросили написать, что не так, но вы до сих пор ничего не разъяснили, кроме пустой демагогии, ещё и в надменные меня записали, охуеть конченные.
Нужно сложить друг с другом две строки с числами. Инт использовать нельзя. Потому что цифры в примерах такие длинные, что инт просто не будет с ними работать.
По коду проверяем сначала не пустые ли строки получили потом делаем строки равными, заполняя нулями. Дальше смотрим наиболее длинный отрезок строки, который мы можем взять для превращения в инт, что бы они были равными. Притом с числом выше 10000 код начинает работает ещё медленее,
Ну а дальше складываем строки и проверяем не появилось ли лишней единицы в конце, если допусти 99+1 складываем Если да, единицу запоминаем. Если цикл закончился, а единица осталась, её нужно добавить в начала цикла.
Возможно, тут есть какие-нить серьёзные утечки производительности, которые легко отпмизировать.
Может надо лучше разрезать строку на список и уже по нему проходить, а то явно он много времени тратит на прохождение по индексу каждой строки.
>>2572942 А вот оптимальное моё решение, но оно работает куда медленее, хоть и тест проходит, чем mpz, ну для такой фигни явно и нужно модули использовать для большей скорости, что на C написаны
Аноны вот создает вложенный словарь словарей, значение - список: nested_dict = dict((k,[]) for k in ('key1', 'key2')) Потом добавляем в список что-нибудь. nested_dict['key2'].append('bar')
Чому в списке 'key1' тоже не появился 'bar', он появился только в списке куда я его аппендил. Я же помню что тут была такая ебатнина что каждый список использованный в генераторе указывал на один обьект. Ну вы поняли? на самом деле это должен быть один список. Я вот отчетилво помню что так и было и я долго баттхертин из за токой логики. Прошел месяц я опять юзаю этот генератор и всё работает нормально. Как так.
>>2573080 Да не гори ты. Я понимаю, что без этого слайся получится дикт из одного элемента, а именно - ключ в виде тапла, но как это решает данный слайс [1:-1] - не понимаю.
>>2573089 Спасибо, так понятнее. Никогда не сталкивался со слайсами строки в рамках работы с eval. Всегда думал, что -1 - это априори последний элемент итератора. Т.е. [0] - это скобка (, соответственно [:-1] тоже должна была бы быть скобкой ).
>>2573031 >Я же помню что тут была такая ебатнина что каждый список использованный в генераторе указывал на один обьект. Это не в генераторе, это если бы ты делал l = [[] * 8] тогда бы появлялось во всех
Аноны, вот я делаю ярлык для файла скрипта питона .ink , как мне сделать, чтобы при запуске этого ярлыка скрипт получал путь расположения именно этого ярлыка. __file__ , sys.argv[0], os.getcwd() Это всё возвращает путь до самого файла программы, а не до ярлыка.
>>2573031 Че несёшь охуеть, какой словарь словарей, ты создаешь один словарь с 2 ключами, значения которых пустые списки, т.е. каждому ключу соответствует свой список в памяти. И ты по индексу обращаешься к отдельному списку и в него аппендишь. Схуяли у тебя список, доступный по key1, должен ссылаться на список, доступный по key2? Это джва разных объекта в памяти, айдишники хотя бы сравни.
>>2573215 Так разъясни, гений, о чём речь. Он создаёт 2 разных списка, когда делает (k, []), а не создаёт сначала список через условный a = [], а потом использует ссылку на него в (k, a). И генераторное выражение типа nested_dict = {k: [] for k in ('key1', 'key2')} тоже самое вернёт.
>>2573229 Блядь какой ты душный, ещё и визжишь непонятно с какого хуя, будто тебе лично хуйню сделали. Что у тебя блядь случилось. на собесе хуем по лбу настучали, что ты на двач прибежал на анонов срываться.
>>2573341 >>2573344 Красивый у вас в Японии язык, всё-таки. Но ты предлагаешь прописывать воркинг дир руками. Это не решение. Может мне ещё внутри скрипта прописать путь до него. Ладно я уже понял что средствами одного питона это не сделать.
>>2573283 То что ты написал это вообще другой способ создания словаря через классметод, где второй необязательный параметр по-умолчанию ссылается на один и тот же объект, если он изменяемый, это и в доке написано: https://docs.python.org/3/library/stdtypes.html?highlight=fromkeys#dict.fromkeys Свои хуиные мечты себе в очко засунь, маня, я так и не увидел пример создания того, что он хотел через конструктор словаря.
>>2568047 (OP) Пытаюсь решить трансцендентное уравнение для векторной функции размерностью 875 на 1. При вызове root пишет, что ValueError: The array returned by a function changed size between calls Что я делаю не так? За питон шарю исключительно в контексте того что прочитал в документации.
>>2573615 У функции почему-то меняется размер выхода. Почему - непонятно. Попробуй добавить в функцию печать размера, может, поможет понять, при каких параметрах такое происходит.
Реквестирую книги по разработке ПО на Python. Типа, если я знаю язык, но интересует то как в масштабе это делать. Что-то типа "Чистый код", но только на питоне. Сейчас читаю "Clean Code in Python" Mariano Anaya - пока вроде норм. Еще из такого читал "Design Patterns in Python - Common GOF (Gang of Four) Design Patterns implemented in Python" - тоже неплохая, чисто по паттернам.
>>2568047 (OP) здрасьте, я тут новенький, ткните носом где ваще нормально понять как работает asyncio? Есть ли что-то кроме официальной документации, что позволит не ломая голову проследить как она работает? позязя
>>2573952 >сам виноват Нет, это ты идешь на хуй, клоун. Если тебе мозгов не хватает понять что требует заказчик (я), то будешь переделывать или уволен. Твоё нытье что ты так задачу понял ни кого не волнует.
Аналогия. Задача: как человеку в пустыне получить координаты своего местоположения средствами компаса. Ответ от клоуна: ЫЫЫ да проста развирнуть компас там ссади написаны кардинаты ыыы мы их туда раньши записали.
>>2574014 Просто я сам "ищу себя" так сказать. Хочу понять как ПРАВИЛЬНО писать чтобы быть как все, чтобы не засмеяли. И когда я вижу программу, которую можно в одном файле на 10 строках уместить, в таком как у тебя виде - в виде 20 файлов и 10 модулей, то у меня возникает легкое недопонимание. Я думаю что это я чего-то не знаю и не понимаю, может ты по умным книгам всё делал и там Жак Фреско поведал, что таков стандарт индустрии, надо вот так вот писать.
>>2574141 Название функции - стандарт, так геттекст имортируют. Название аргумента можно и поменять, но строка и так длинная, так что я не стал этого делать.
>>2574173 У меня сейчас другое на уме. Как сделать чтобы либа, которую я собираю через setuptools, включала файл i18n.json (с этим вроде разобрался, через data_files) и как его потом загрузить в коде? У меня один модуль, а не пакет, и подозреваю, что из-за этого все проблемы.
>>2574192 Ты ведь здесь >>2574072 всё равно косвенно устанавливаешь ограничение на точность вычисления, значит вместо этого можно просто использовать round, для этой же цели только быстрее и проще.
>>2574054 Может, насчёт уёбищной чувак и перегнул... Но отдельный файл под каждый метод... По 2 строки в половине файлов. Ты мог бы свести всё в один файл, получил бы там лучшую читаемость. Вот я не склонировал твой прожект и мне пришлось очень-очень-очень дохуя кликать.
Дальше можно пройтись по деталям, например, > from . import tokenCreator эквивалентно более простой и явной записи > import tokenCreator from тут имел бы смысл, если бы ты сделал > from tokenCreator import create as create_token Тогда везде, где по коду встречается "tokenCreator.create" можно просто писать "create_token".
Кстати, PEP8 говорит, что "Модули должны иметь короткие имена, состоящие из маленьких букв. Можно использовать символы подчеркивания, если это улучшает читабельность", ну то есть используемый тобой mixedCase противопоказан. Ну, то, что ты его даже не открывал видно уже по отступам. Собственно, это первая строка в документе: "Используйте 4 пробела на каждый уровень отступа".
> print('To quit, enter \'quit\' or \'q!\' \n') 100% эквивалентно > print("To quit, enter 'quit' or 'q!' \n") но опять же читается лучше. Если что \n в конце строки он поставит и сам (это поведение по-умолчанию и оно настраивается). Добавлять свой \n нужно, если хочешь пустую строку отступить.
> if expression == 'q!' or expression == 'quit': break эквивалентно могут быть микросекундные расхождения в скорости, не ХЗ, в чью пользу более лёгкой записи > if expression in ('q!', 'quit'): break
Ещё, например, я добавил бы шебанг обязательно: ты ж не в браузере запускаешь, а в системе,а её надо откуда-то знать, что в файле и чем его открыть.
И да, я не выкачивал, не тестировал и вообще не анализировал работу кода, я исхожу из того, что кодить рабочие вещи ты умеешь.
В общем, ты явно тянешь бесполезные (а местами и вредные) привычки из других языков. Но пиши дальше, хуже от этого не будет.
>>2573982 > Но я до сих пор не понял, зачем мне нужен питон, если я знаю JS. Решил его выучить, только чтобы помочь с курсовой подруге Ну, мне, например, Пайтон нравится тем, что это один из очень немногих по-настоящему универсальных языков, на которых можно написать вообще что угодно (наверное, второй такой это шарп, но у ж очень он вендовый). Тот же JS этим может похвастаться довольно условно. Ну и тут столько синтаксического сахара по сравнению с тем, что я учил раньше, что у меня того и гляди начнётся синтаксический диабет. Всё остальное - про идею языка, удобство как языка прототипирования и тому подобное, это как спор кита и слона.
>>2574192 Это штатное поведение для чисел с плавающей точкой, повторяемое абсолютно везде, где float/real это float (был даже сайт, где приведены выхлопы на нескольких десятках языков и почти везде это поведение идентично, но я его давно потерял). В питоне, кстати, тоже: > ~ $ py 127 > Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> 0.1+0.2 > 0.30000000000000004 > >>> 0.3+0.3+0.3+.1 > 0.9999999999999999 Кто придумал их называть "неточными"?
Искаропки дробные числа это int с выделенной дробной частью разве что в 1С (по понятным причинам: в 99,9% случаев в 1С дробное число это некая сумма денег). Ну и, вроде, в Паскалях была фишка, позволявшая так определить тип, но я её быстро не вспомню.
>>2573979 о, а подскажи, пожалуйста, нужно ли использовать asyncio: 5+ аккаунтов отправляют запросы пачками по 5 штук, при этом между пачками рандомные искусственные задержки, чтобы не триггерить флуд детектор сервера.
Я сначала юзал обычный цикл с таймерами, а сейчас хочу расшириться и заюзать asyncio. Но чет читаю книгу и начинаю думать что это "из танка по воробьям"
>>2572768 >>2572769 >>2572772 Душил я ентого вашего пистона.... Странно, сейчас всё заработало. Как так??? Может с кэшированием интерпретатора было что-то.. Только пробел поставил между i и s - заработало..
>>2574775 Заебись. Писатели pep8 будут вертеться в гробах. Есть расширение, которое знаменяет операторы питона на русские альтернативы. Будет: из sys доставить argv, класс, функ, для, в, и, вернуть и т.п.
>>2574951 Можно, из исходников. Переделывать дохрена текста (лексичекие анализаторы) +учесть оптимизации логики (а она вся заточена под ASCII скорее всего) + переделать колпилятор + линкер )))
Аноны, хочу на питоне ворваться в геймдев. Я знаю что он медленный и будет мало фпс, но я задумал нетребовательный проект - смесь rpg как to the moon и визуальной новеллы, надеюсь тут проблем с фпс не возникнет. Возможно ли реализовать такое на pygame, renpy? Или лучше сразу делать в юнити? Я в юнити не шарю
>>2575129 вкатывайся сразу в юнити. велосипедить игры с нуля - это не для вкатывающихся, а для скучающих миддлов-сеньоров. на порядок сложнее, чем на движке
>>2575219 на питоне то тоже можно писать и даже не хиленькие игры, хоть и не графонистые, но C# позволит всё то же самое и даже больше. И ипаться как в С++ так же не надо.
>>2575129 Выбирая язык для игр стоит ориентироваться в первую очередь на движки, которые наиболее тебе подойдут.
На питоне в первую очередь с движками проблема. Поэтому возможно придётся очень много своих велосипедов изобретать и это настолько напряжно может быть, что проще было бы реально в С++ вкатиться.
Кроме юнити есть и куча других движков для инди игр, которые можно использовать.
Лучше сначала погуглить это тему, посмотреть какие языки эти движки используют и в них уже врываться.
Движок это как огромная библиотека, которая сильно тебе упрощает работу. Поэтому даже сложный низкоуровневый язык, но с хорошими движками будет использовать намного проще, чем более простой язык, но без оных.
Геймдев в принципе те ещё говнокодеры и ничего, с++ используют
>>2574775 Я видел такой код и он даже в целом бывает ничего... Но как-то... Имена примитивов по-прежнему английские. Некоторые переменные ("файлы_docx") даже внутри себя на разных языках... Вряд ли это упрощает работу.
> for строка in строки: М-м... Вот тут возникает проблема, о которой я уже упоминал в отношении 1С, даже изначально на русском языке конструкция "новый строка" коробит. Если на английском > strings = f.readlines() > for string in strings: это почти нативный текст, но на русском это выглядит так: > строки = ф.прочитатьстроки() > для строка в строки: Хотя нативно должно быть что-то типа: > для строки в строках: Что нереализуемо. Я вообще рад бил бы писать и читать всё на русском, очень рад. Но это будет коробить всегда. >>2575059 В принципе согласен, но только отчасти. Читаемость всё-равно ограничена тем, что я упомянул выше, а переводить отдельные слова на английский и назад всё-равно приходится. Пусть даже ограничиваясь for, print и т.п.
>>2575204 Тогда список. И город хотя бы (можно предположить, что Мск, конечно). Но вообще учиться кодить по книгам в 2023 противопоказано. Есть неминуемый лаг: книга написана, отредактирована, получены лицензии и согласия, книга переведена, отредактирована на русском, передана в печать, отпечатана, развезена по магазинам, попала на полки. Так вот, между "книга написана" и "книга на полке" уже вышла 1-2 новые версии языка. А тут ещё и полежала у анона. Единственное, что, наверное, актуально это официальная документация, которую авторы писали плюс-минус одновременно с интерпретатором.
>>2575129 >Я знаю что он медленный и будет мало фпс Мдя. Сразу: "медленнный" не означает именно "медленный", в 95% случаев это значит, что другая реализация будет быстрее, но это совершенно не связано с FPS. Потому что графикой будет заниматься Vulkan/Metal, а они рисуют быстро. >смесь rpg как to the moon и визуальной новеллы RPG-Maker тебе в помощь на самом деле. Хотя можешь и Ren'Py попробовать. Тут даже Unity2D это перебор. >>2575227 >на питоне то тоже можно писать и даже не хиленькие игры, хоть и не графонистые Насколько я знаю, основной код нынешних Sims написан на Python. Ясен орган, что это про логику в core-части, а графон сделан отдельно и ничего. Сейчас не времена Кармака, никто не пишет графику сам. >>2575234 >Шарп/кресты для прикручивания 3д нужны. Не нужны. Ты подключаешь либу и просишь её отрисовать графику, вызовы будут одни и те же для всех языков.
>>2575606 > >>> x=2 > >>> y=2 > >>> z=2 > >>> arr = [[['0' for i in range(x)] for j in range(y)] for k in range(z)] > >>> arr > [[['0', '0'], ['0', '0']], [['0', '0'], ['0', '0']]]
>>2576036 Это изврат, не стоит таким заниматься. Курите nunpy.
Работа с массивами через стандартные методы питона это не просто крайне больно, но и крайней-крайне-крайне неэффективно.
Лучше потратить пол денька на чтение документации nunpy и просмотра видео и лишить себя этой головной боли раз и навсегда, не считая того, что её осваивать всё равно обязательно
>>2576046 Блядь, заебал. Язык умеет дохуя всего искаропки и умеет удобно и безо всякого "курения". Если есть аргументы и код, давай их сюда, тогда будет, что обсуждать. А вот это вот "нитак делавете" безпруфное -- засунь себе в жопу.
>>2576050 И если кодить из под коробки на питоне, то он будет раз в 50-100 медленнее, чем С++ Если использовать модули типа нанпая и прочие, написанные на С, то можно сократить оставание аж до в 5-10 раз медленнее
>>2576076 >И если кодить из под коробки на питоне, то он будет раз в 50-100 медленнее, чем С++ Это не совсем правда, только численных операций. Чем выше уровень того, с чем ты работаешь, тем меньше разница. А ещё есть numba и pypy, с pypy иногда питон-код может быстрее C/C++ в режиме -O3 стать. Реально. Но обычно чуть слабее.
>>2576076 Замерил, как быстро питон искаробочными решениями решает судоку 30×30. > py sudoku.py 0,27s user 0,00s system 99% cpu 0,274 total Четверть секунды. (12×12 за 0,040с) За это время происходит уйма всего, в числе прочего - неизбежный охуялиард проходов по всей таблице в разных направлениях. Визуально же это выглядит как почти мгновенно появившиеся после нажатия Enter две таблицы.
На самом деле я уверен, что переписывание на numpy в принципе ничего кроме геморроя не даст.
А, если, например, речь о бэкэнде, то вообще любые вычисления вообще -- спрячутся за сетевыми задержками.
Я за оптимизацию, но категорически против оптимизации и горожения огородов только ради оптимизации.
>>2576252 С нампаям намного проще работать на самом деле. Переписать можно просто ради практики, что бы отработать nunpy. Но там такие вещи как переворот массива, его разделение, нахождение данных допустим по диаганали решается намного проще и в плане кода, ну и влане скоростей на порядки выше
>>2576308 если в питоновском массиве пытаться найти чисто числа по координатам [2] условно, то это будет работать просто через жуткие костыли. в numpay это [:,2] И он из массива 0 1 2 3 4 5 6 7 8 9 0 1 быстро выпишет 260
>>2576146 Да, на питоне без импортов нет массива. Создание матрицы через list хоть и можно использовать как массив, но это именно, что его эмуляция. list в питоне это упорядоченная коллекция. Они хороши, когда тебе что то туда нужно положить и после сверху же взять, тогда будут работать быстро. Но использовать их как массив это как крайне плохой эмулятор, когда у тебя игры на денди будут лагать на 4090
Вопрос такой, собираюсь сделать проект для себя, фронт выбрал vue, а вот с беком думаю между джангой и fastapi, опыт с питоном есть, а фреймворков нет, проект по сути блог, там будет сайт с игрульками, то есть пост про игрульку, ее описание, ссылка на скачивание и тд, что лучше использовать?
>>2576377 Так поэтому блядь и ровно 5, потому что у тебя int, балбес. Прибавь к полученному единицу и заверни в int. Если после этого не поймёшь, то мы вам перезвоним.
>>2576377 float не является точным способом вычесления и у него всегда могут быть погрешности в 0.00000000000001 мало, могут оказывать сильное влияние на подобные коды. У меня на пейчаре работает нормально и ровно 5.0, но у меня 3.10, а на сайте 3.6. С разными версиями могли внести правки.
Но с флоат всегда такие ошибки могут встречаться, это связанно с самим float при этом, а не языками
>>2576332 > с беком думаю между джангой и fastapi > по сути блог, там будет сайт с игрульками, то есть пост про игрульку, ее описание, ссылка на скачивание и тд При таком выборе - Джанга. Полюбому. Можно ещё Фласк посмотреть в принципе, но для сайта-блога он плюшек не даст считай. FastAPI даст выхлоп, если ты решишь добавить промежуточное звено и бэк отделить от клиента (в этом случае ты смог бы написать общий бэк и разных клиентов к нему, например, сайт и отдельно мобильное приложение). Но это усложнение на ровном месте.
Если так, то я в своё время сделал по манам из интернетов связку из supervisor и gunicorn и поместил их за nginx (nginx взял на себя SSL и статику), тогда это считалось эталоном. Но времени прошло немало, я тот проект уже давно не поддерживаю (хотя конфиги и связка сохранились, если надо).
Сейчас я пишу на FastAPI, запускаю его через uvicorn, который запихиваю в Docker, когда продукт будет готов к проду -- размещу его в serverless-облаке, пусть об остальном у облака голова болит.
>>2576461 Спасибо за инфу. Было бы любопытно и полезно посмотреть, закинь, плиз, на почту creepy_[email protected] либо гит либо ту дату, которую сочтешь приемлемой.
Гайс, вкатываюсь в программирование, просто учить - скучно. Хочется сделать что-то интересное для себя. У меня есть идея для пет-проджекта - сделать прогу, сохраняющую сообщения с чата твича, после чего можно будет анализировать их.
Так как я полный нуб, то сложность составляет в т.ч. оптимизация рабочего процесса, в какой последовательности выполнять, чтобы вероятность перегореть от непоняток/бардака была минимальна.
Пока набросал для себя такой план (см. пикчу)
Будет ли норм, если что-то я буду подворовывать/подсматривать в других проектах, или лучше самому пытаться долбиться до конца?
Сначала наработай базу: dto, работа со списками (найти, скипнуть, сгруппировать, преобразовать), лямбды, исключения, форматы даты и времени (соберешь граблей), потоки, а потом уже лезь наверх (сеть, сериализация и тэпэ)
Сколько я пытался пройти и всегда попадались какие то страные пару неправильных ответов на 200 рандомных тестов и я хз в чём могла быть ошибка. Ну почитал комменты и многие на это жаловались, надо было тыкать, пока не сработает проверка рандома. Надо в таких случаях почаще в комменты лезть
>>2576544 >>2576545 Напрягая булки и пытаюсь ПОНЯТЬ лямбду, пока, как видите, не особо получается. В данном случае я пихаю лямбду во все дырки какие могу вспомнить в целях обучения боем, так сказать, в данном случае я хотел чтобы лямбда мне прибавляла единичку к каждому значению из list1
С FastAPI всё куда проще и лаконичнее, даже возиться в пастами лень: > $ cat Dockerfile > FROM python:3 > COPY . /pr/ > WORKDIR /pr/ > RUN pip3 install --requirement requirments.txt > EXPOSE 8000 > CMD uvicorn main:app --host 0.0.0.0 > $ cat requirments.txt > fastapi > uvicorn
Вынужден предупредить, что это всё прям ни разу не было обязано держать хайлоад, так что настройки уровня "норм работает". Потом его могли ещё тюнить админы.
>>2574480 Рискну предположить что второй .filter делает отдельный join и соответственно перемножает декартово результаты первого фильтра второй раз. А вообще можешь сам посмотреть SQL и не ебать жсоноукладчикам мозг.
>>2576555 >Ну ясно. Всё равно как вижу лямбду в чужом коде ловлю бсод ирл.
любая лямбда может быть выражена как def пук(аргументы_лямбды): return тело лямбды строчкой выше и использованием функции пук как переменной, где ожидается функция
Меня давно и очень сильно интересует, накой они нужны. И видел уйму примеров и в целом понимаю, как они работают, но в моём коде их так ни разу и не появилось и причина тому - то, что я не понимаю, когда они дадут профит!
>>2576588 Например, тут вместо лямбды ровно с тем же успехом можно было бы объявить обычную функцию. Да и понять бы, что оно делает было бы проще, я пока несколько раз не прогнал не понял, как это работает, что всегда недостаток, но для питона ещё и умножение на ноль его естественных преимуществ.
>>2576626 Они не нужны, но иногда удобно если функция короткая и ей нет смысла придумывать отдельное название. Типичный пример sorted(dict.items(), key=lambda kv: -kv[1])
>>2576626 >накой они нужны map reduce filter В пистоне с 3.2(?) уже не особо нужны, когда компрехеншены добавили и самые популярные юзкейсы для редьюс, типа sum(). Редьюс после этого вообще в функтулс сослали.
>>2576552 > Лямбда это просто однострочная функция, ... , просто инструмент, который иногда может быть удобен. >>2576639 > Что бы не писать функции однострочные, захламляя им код.
Аноны, будьте так любезны, если не сложно, пришлите небольшой кусок более-менее продуктового кода, в котором вы использовали лямбды с пояснением, почему именно тут и именно так было сделать удобнее.
>>2576634 >map reduce filter Генераторы и итераторы понял давно, а вот с map и filter не всё так легко. Сделаю ещё один наскок... завтра же.
>>2576650 Работа с некоторыми фишками просто начинается с "Озарения". Если не знаешь где их использовать и не чувствуешь, что они тебе необходимы, ну оставь пока-что. Если сейчас активно учишься, то всё равно есть лимит знаний который можешь переварить за определённое время. Потом разок увидишь, что тут лучше лямбду использовать, потом у кого-то подсмотришь и увидешь, что он через лямбды реализовал твой алгоритм просто намного красивее и тут же придёт в голову где в своём коду их прописать. А так пока можешь запомнить как их использовать в map-freduce-filter и не париться дальше.
>>2576650 Просто бывают функции в стандартной библиотеке и в других местах, где одним из аргументов передается функция. Иногда эта функция очень простая и ее удобнее записать лямбдой. Можно не писать лямбдой, а придумать имя и написать def строкой выше. Это тупо вопрос форматирования кода.
эвент менеджер, регистрирующий коллбэки через weak references events.subscribe('back', lambda: print('pook')) лямбда удалится после выхода из events.subscribe
>>2576316 Хочешь в задротские игры поиграть? Что значит "когда тебе что то туда нужно положить и после сверху же взять"? Если возьму "не сверху" будет плохо браться?
>>2576763 https://pastebin.com/3qz0p7Ge Вот накидал хуйню с коллбеками, у меня при вызове показало все 4, включая ту которую я добавлял через отдельную функцию (TWO). Что сделать чтоб сборщик мусора ебнул лямбду?
>>2576953 > вызове показало в Лямбда освобождает память после вызова. Ты в своём коде посмотри ID лямбд и покрути их в своём окружении, каждый раз новая ячейка памяти.
>>2568047 (OP) Посоветуйте какой-нибудь интерпретатор адекватный под винду, чтобы в консольке к примеру автокомплишн работал. Я знаю что есть у красноглазиков много такого есть, но я то спермохлёб. Суть в том что я очень часто пользуюсь консолькой чтобы проверить как что-то работает в питоне. Просто потому что мне лень пользоваться идешкой для такого и через консольку кажется что будет быстрее. Просто жму win+r -> cmd -> py -> в бой.
Но очень сильно не хватает автокомплишена. Хочу прямо в консольке интерактивной напрямую исследовать какие у меня опции есть для библиотеки к примеру, чтобы в идешке под это не создавать отдельный файл муторно. Вот чтобы я хотя бы методы мог посмотреть и их описание небольшое. Есть такое расширение под cmd?
Vim'ом не хочу пользоваться, он какой то ебанутый абсолютно. Я не знаю какой больной мудак придумывал ему хоткеи.
>>2576706 >weak references А теперь попробуй без weak Потому что в питоне всё построено на счётчиках ссылок. Если ты куда-то передаёшь лямбду, пока ты на неё можешь сослаться, то она существует в виде ссылки, соответствующий счётчик ненулевой, объект не может быть удалён.
Эта логика работает со всеми объектами вообще.
Если ты их хранишь в WeakSet разных, ты злой буратино. Weak объекты как раз для того, чтобы можно было удалить то, что в них хранится. Их специально так делали, чтобы память не текла.
>>2577564 Вкурсе про них, но вскод еще и запустить надо. Мне просто доставляет легковесную консольку открыть просто потому что моча в голову ударила, а не сидеть с вскодом открытым всегда даже когда я ничего не пишу. А если еще и какой-то проект у вскода был открыт до этого, то придется каждый раз ждать пока он прогрузится, venv, git, вся хуйня, в общем время займет.
>>2577552 И ещё вопрос: можно ли "одноразовый" venv использовать в питоне? К примеру я хочу затестить библиотеку, но не хочу создавать отдельную папку, накатывать venv туда, устанавливать внутрь эту библу. Но и глобально не хочу устанавливать. Есть ли инструмент для одноразовой установки и теста библиотек? К примеру чтобы с перезапуском консоли/компа все что ты накачал удалилось?
>>2577576 Я бы сделал мусорный тестовый venv через poetry. Активировал окружение, протестил либу, удалил либу и иди дрочи налево и направо. Очень странные вопросы. Олсо погугли disposable venv, там ссылка на гит есть.
Я написал парсер на пайчарме , предварительно создав проект в Virtuallenv. Теперь мне необходимо запустить его вне пайчарма.
Сначала пробовал просто через установленный интерпретатор.
Потом попробовав запустить через консоль и увидел пикрил.
Почесав жёпу , я вспомнил что модули проектов Virtuallenv устанавливаются "локально" , для каждого проекта своя оболочка.
Пробовал ради интереса, закинуть в переменную PATH путь к библиотекам - ожидаемо соснул
Пробовал создать из файла екзешник - ожидаемо соснул x2 Так вот вопрос : Неужели все Virtuallenv проекты можно запустить только через IDE? Или есть другой вариант?
P.S. Если только через IDE , то нахуй virtuallenv вообще нужен?
Пацаны, есть таблица в БД где указано имя файла (путь где его найти на диске) и время его создания, все пути по идее валидны. Крон раз в день ходит по этой таблице и удаляет из нее все записи которые старше 1 недели. Естественно помимо записей он должен и удалить сами файлы, чтоб не лежали мертвым грузом на диске, но как это правильно сделать?
Вот допустим я сначала почистил записи в БД и пошел удалять файлы, но тут хуякс - и какая-то ошибка, очевидно я сделаю rollback на транзакцию и выйду. Либо можно сначала удалить файлы а потом идти удалять записи, но тогда как сделать rollback? Хер там. Как в принципе подобные задачи решать?
>>2578181 Ну да , разве что хотелось бы решить проблему с путями , типо когда скрипт через ярлык запускаешь , в командах надо указывать абсолютный путь ,а он на разных пк различается
>>2578206 У тебя первый вариант самый правильный, если атомарная транзакция по чистке записей отношения завершилась успешно, то тогда запускается скрипт по удалению файлов. Можешь временно перед удалением удаляемые пути заносить куда-нибудь в лист или дикт, чтобы по нему потом пройтись.
Подкиньте идею, плиз. Есть таблица. Через микксин ListViewгенерируется станичка со списком данных записей, одно из значений поля я обрабатываю респонзами (поле ip) и накидываю в jinja через context. Поймал себя на мысли, что я долбоеб, т.к. каждый заход на страницу со списком у меня response пробегает по всему полю ip и страница грузится от 10секунд. Что можно сделать, кроме очевидного расширения количества полей, анонсы?
>>2578084 О. Чувак освоил лямбды, но всё ещё не словил второго озарения программиста... Первое, эйфорическое и весьма интимное, ловишь, когда "ух ты, компьютер исполняет мои приказы! Я написал и он сделал, что я прошу!!!" А второе -- куда более печальное, когда понимаешь "Компьютер делает не то, что я хочу, а то, что я прошу... Оказывается, просить нужно правильно, а это сложно".
>>2578243 Есть print() и есть отладчик IPDB. Отладчиком пользоваться так: import ipdb; ipdb.set_trace() Вставляешь эту строку в нужном месте в скрипт. Скрипт остановится в этом месте и выпадет в отладчик. Дальше можно смотреть локальные переменные и много чего еще.
Есть проект с виртуальной оболочкой и установленной в неё библиотеками. Заказчик не хочет устанавливать библиотеки через pip install -r requirements.txt , хочет чтобы все открывалось двумя щелчками. Так вот вопрос:
Как создать екзешник который сразу же запустит venv и скрипт?
Поясните вот за какую хуйню. Удаляю EXIF информацию с помощью подушки, копируя только данные самого изображения, но на выходе изображения сильно теряют в размере - с 5 Мб до 600 Кб.
Какого хуя? Я же просто беру данные из одного файла и помещаю их в другой. На каком этапе у меня потеря качества идет?
>>2579029 >С метаданными иначе работают, сейчас не скажу как. Как? Даже есть какие-то другие способы удалить метаданные, то тебе по итогу все равно надо будет сохранять изображение, которое пожмется.
Поясните, нахуй нужно использовать pathlib, если я могу указать путь просто от корня приложения? Хоть оно у меня на локалке крутится, хоть в кубере - абсолютные пути от корня аппа не меняются же.
Как перестать писать непонятный костыльный код? Понимаю назначение переменных и смысл циклов только пока программирую, стоит проверить задание/отойти на минуту - хуй пойму, что я накодил. Вот задачка и моё решение, нормально, или полное говно? https://www.codewars.com/kata/54e6533c92449cc251001667/train/python
Как скачать файл с помощью requests? Я не программист, поэтому плохо представляю, как все это работает. Отследил запросы и понял, что в итоге мне надо получить clientIp и sessionId. Дошел до этого момента, все отлично. Логинюсь и тд. Потом в браузере я жму на кнопку для скачки файла и происходят post запросы. Как я понимаю, клиент запрашивает отчет за указанный в полях период. Сервер генерирует файлик excel и путем циклического запроса о состоянии его готовности. Здесь тоже все нормально. В итоге я получаю "1" в response, что говорит о том, что файл готов к скачиванию. После этого происходит get запрос (пик1). В теле появляется ссылка вот такого вида (пик2). Потом появляется окно выбора пути для сохранения файла. Больше ничего не происходит на вкладке network, сайт просто пингуется, т.к. время сессии ограничено. Если повторить этот последний запрос на python, то выдает ошибку 500. Здесь мне уже ничего непонятно. Нет никакой привычной урл вида /download/file.xlsx, чтобы можно было получить ее. Я погуглил и понял, что это динамический blob ссылка, но не понял, как мне получить ее в python теперь. Возможно ли это в принципе? С Selenium все работало через эмуляцию нажатия на кнопку загрузки, но я хочу использовать только requests. Плиз, помогите
>>2579299 Так эт специально, чтобы не бросалось в глаза. Я настолько параноик, что переживаю, что здесь могут сидеть разработчики которые еще больше окуклятся потом. Они недавно убрали апи.
>>2578994 Дам три варианта. Все три будут работать, даются в порядке увеличения всратости. 1. Современно, модно, православно: упакуйся в Docker. Конечно, на том конце запускать тоже надо будет через какой-нибудь Docker, но это уже мелочи. 2. Хороший рабочий вариант. Сделай скрипт с таким содержанием: > #!/usr/bin/env bash > mkdir env > python3 -m venv env > source env/bin/activate > pip3 install -r requirements.txt > python main.py && deactivate
3. Пиздец страшный, я его тестировал, когда на той стороне предполагались клинические идиоты без доступа к интернетам. В CI сделал так: > mkdir env > python3 -m venv env > source env/bin/activate > pip3 install -r requirements.txt > deactivate > sed -i "s|$(pwd)/ansible_env|blahblah/ansible_env|" ansible_env/bin/
А в скрипте-запускаторе - так: > #!/usr/bin/env bash > sed -i "s|blahblah/ansible_env|$(pwd)/ansible_env|" ansible_env/bin/ > . ansible_env/bin/activate > python main.py > deactivate
Оно сработало, но в прод, слава ЛММ, не пошло. Там ПМы допизделись до поднятия зеркала в каком-то DMZ или что-то типа и прошёл второй способ (первый не подходил по арзитектуре: докер хуёво умеет в ).
>>2579284 Кажется, до меня дошло, что в ответе на последний get запрос приходит закодированный в base64 zip файл (пик1), который надо раскодировать. Я так понял, что это несложно. Вот только я не могу получить этот ответ таким же запросом в python. Ошибка 505. Пик2 - повторяю запрос в браузере, получаю файл в ответе. Пик3 - повторяю запрос в python - ошибка. Что я делаю не так?
>>2579210 В первую очередь не старайся решить как можно больше задач за одно и то же время. Лучше решить одну за несколько дней, попутно изучив поглубже смежный материал или даже различные библиотеки, которые подходят к тебе задания, чем попытаться как можно быстрее что то написать и отправить ответ.
Что-то я копался, копался и код никак не работал, решил проверить сам граф и проблема оказалась в нём. И всё вроде верно идёт, но под самый конец он ломается и там где должно быть 0, 2 появляется 0, 0 и я хз как он может появиться.
Хотя, не, отбой. Как начал писать сразу же заметил в чём облажался. 0 вместо Y был
Всё же на третий день домучил. Алгоритм я понял на первый же. Два дня считай, исправлял "баги". Буквально там ноль вместо игрик, тут игрик с иксом надо переставить местами. Такие мелочи, а искать их офигеть как долго. Хотя за эти пару дней я в голове и лучше уложил алгоритм поиска проблемы в коде. Не стоит только ориентироваться на строку, которую выдаёт пайчарм >>2579634 Пора бы уже перекатывать
В недавнем времени освоил парсинг и написание ботов , думал немного поднять лаве на фрилансе. ХУЙ ТАМ ПЛАВАЛ СУКА.
ПОЧЕМУ БЛЯТЬ ТАК ТРУДНО ВЗЯТЬ ЗАКАЗ СУКА. И ДАЖЕ ПРОБЛЕМА НЕ В ТОМ ЧТО - БЫ ВЫПОЛНИТЬ.НИХУЯ.ЕГО ПРОСТО ТРУДНОНЕРЕАЛЬНО ВЗЯТЬ.Я БЛЯТЬ ОТКЛИКОВ 12 ОТПРАВИЛ.ЗАРЕГАЛСЯ НА 4 БИРЖАХ.ЗАПОЛНИЛ СУКА ПРОФИЛТ , ВСЕ ПО ГАЙДАМ , ОТКЛИК ТОЖЕ НОРМ ОСТАВЛЯЛ , ЦЕНУ ЗАКАЗАМ ДО 500 Р ВЫКРУЧИВАЛ И ВСЕ В ПУСТУЮ.ПИЗДЕЦ.
Решилп попробовать применить chatgpt в работе в качестве альтернативы гуглу. Спросил вроде довольно простой вопрос - вот у меня датакласс в питоне, хочу валидацию типов полей делать. Высрал сказки про магический агрумент validate у dataclass.field(), тип можно лямбду передать в которой можно проверить тип поля например isinstance()-ом. В реальности нихуя такого агрумента не существует, придется видимо аки холопу вручную бойлерплейтом в __post_init__ проверку делать. Суть в чем, до замены людей этой хуйне еще далеко
>>2580092 chatGTP это именно, что замена гуглу. И пока что не очень даже.
Но сейчас он стал ещё хуже чем при запуске, его сильно понерфили, что бы он перестал быть расистом и учить делать бомбы, но это сказалось и на всей генерации в целом явно.
Ну а как этим заменить людей, с таким же успехом можно дать синьёру гугл и сказать, что он вместо джунов будет теперь. Но гуглом и так все пользуются. При это никаких физических сил не хватит, что бы этот код потом фиксить или поправлять, особенно, когда ты даже не можешь нормально спросить, что он этим говнокодом сделать хотел и где баги то искать.
Вполне вероятно, что подобные ИИ-помощники будут примерно там же где и летающие машины. В теории сделать можно, на практике это тупо из-за огромной растраты ресурсов, которая не оправдывает результат
>>2580110 Я не очень много вопросов практичных задавал. Очень хорошо и точно отвечает на часть вопросов, которые хрен нагуглишь. Но через раз несёт адский бред.
Причём может очень завуалированный бред нести, компилирует ведь из других ответов. В итоге ответит тебе как для одной технологии, но подставив в другую, где это уже совсем не работает.
Это в принципе непригодно для реальной разработки. Как только тебе надо делать что-то новое, а не гуглить сто раз написанное решение.
>>2580126 Некоторые ответы даже при кривом коде могут быть годными и лучше чем гугл. Потому что могут тебе быстро подсказать куда двигаться дальше и что лучше использовать. А там уже и загуглить можешь даже подробнее. Особенно, если сталкиваешься с задачей к которой не знаешь как подойти и даже как загуглить
>>2580136 Но это именно, когда учишься. При работе то такого быть уже не должно, ибо даже если джуну дадут работать над тем, что он не трогал ещё ему всё равно укажут где документацию и прочее курить
>>2580144 >При работе то такого быть уже не должно Как раз постоянно при работе возникает что-нибудь.
Правда чат не может анализировать код, только мелкие примеры. А при работе, если тебе код надо анализировать, это здоровенные проекты. Тебе надо понять, почему какая-то херня в коде, зачем что-то делается, но это огромный объём, а ещё ИИ вообще не умеет понимать смысл. Ты никогда не получишь ответ "зачем что-то делается". В принципе текущая архитектура ИИ на это не способна.
Но зато система тебя может проконсультировать по каким-то сложным вопросам, плохо задокументированным. Причём ы формулируешь вопрос на нормальном языке. Конечно может и бред тебе ответить, но всё равно помощь.
В реальной работе тебе надо разобраться с тем, что надо сделать, зачем сделано так, как сделано, как можно реализовать, как состыковать с тем, что есть, какие проблемы будут из-за этого. Вот тут уровень, а не чтобы накодить какую-нибудь функцию. А это как раз то, к чему ИИ даже не прикасались ещё.
>>2579354 Боже, я наконец-то разобрался! Тупо моя невнимательность. Забыл добавить к имени файла его расширение в параметрах. Я в ахуе, у меня получилось
>>2580032 Рейтинг какой у аккаунтов? На биржах дроч на рейтинг. Ищи путь повысить рейтинг. Можно купить готовый акк с накрученным рейтингом. Предлагай работу за отзыв и рейтинг. Договаривайся со знакомыми, чтобы они размещали простые заказы, а ты их выполнял за символическую цену или бесплатно, а они тебе рейтинг за это.>>2580032
>>2580032 >ЦЕНУ ЗАКАЗАМ ДО 500 Р ВЫКРУЧИВАЛ И ВСЕ В ПУСТУЮ Вот здесь, думаю ошибка. Слишком низкая цена не привлекает, а отпугивает. Максимум ты абсолютно неадекватного заказчика найдёшь, который тебе ещё в минус рейтинг уведёт.
Если оптимизацией заниматься серьёзно, то наверное надо сделать ещё аккаунт заказчика, разместить заказ и самому его исполнить. Через друзей организовать, например. Потеряешь комиссию, но приобретёшь заказ, а ещё что-то про конкурентов узнаешь.
И не пытайся по 500 рублей исполнять заказы. Поставь цену, которая смотрится реальной, ну типа 5тр. Это тоже демпинг, но хотя бы для заказчика уже смотрится реальной суммой.
>>2580375 А на каких сайтах можно посмотреть это? Не хочется бросать основную работу, но как тренировку скилла\интересные задачки было бы круто посмотреть что требуется
Братцы, есть скрипты, которые надо выполнять круглосуточно, ПК включённым держать не хочу. Куда можно залить их, чтобы они сами выполнялись, делали дела, сохраняли данные?
Хочу по совету ОПа написать имиджборду (ну или другой сайт) , какой стек технологий для этого нужен. Прочитал что знания верстки и Django необходимы , но по мимо этого что то еще нужно?
>>2580619 Ну так ты вводные дал такие, будто тебе надо крутить скрипты на своём ПК и данные сохранять на свой ПК. Нам за тебя архитектуру продумывать? Скрипты могут крутиться удалённо, на своём серваке/на выделенном серваке/хероку/авс/я.клауд/етц, данные могут сохраняться на диск/в бд/в гуглшитс/в облако. Реши, что тебе из этого надо и подумай, что надо сделать с твоими скриптами для реализации твоей задачи.
>>2580469 >но как тренировку скилла\интересные задачки Будешь кодить незаконные или тупейшие вещи, от которых отказались или которые никому из контор не нужны. 1. Парсинг (незаконен) 2. Боты финпирамид 3. Боты продажи порнухи 4. Ебейшие идеи восьмиклассников с оплатой «ну когда твоя прога заработает мне миллион, я отстегну» 5. Боты продажи всякого говна, включая наркоту
Здравсвутйе, я рмтшник-доширачник очень хочу написать бота для игры. изучение питона мне с этим поможет? можно начинать с книжек в оп посте или лучше начать с учебников информатики с 5 по 11класс?
>>2580666 Есть такое представление интуитивное, что на ФЛ есть рынок ботов для телеграма. Вполне легальных. Очень многие хотят себе сделать, бизнесу нужны, альтернатив нет. Как раз работа для фриланса.
>>2580720 Питон в любом случае хороший язык для обучения с нуля особенно. Потому что он с одной стороны очень простой, как раз для школьного уровня, но и достаточно глубоко с ним можно зайти при этом, не меняя язык.
В теории то написать можно что угодно, вопрос в производительности. Ну и нужно тебе будет это рмт, если нормально язык освоишь, что сможешь написать бота за которого тебя не забанят быстро
>>2580934 Очень старый бизнес, но в последнее время туда набежало куча народа. Да и некоторые трудности ввиду ограничения платёжек для РФ. Ну и сезонное занятие побольше. В среднем лучше в пятёрочку идти и меньше заморочек, но под выход некоторых игр в начале можно было по 2-4 штуки баксов в месяц делать. Но сейчас и народа стало больше рмтшить, да и санкции. Так что оно того особо и не стоит уже в принципе.
>>2580666 С 1 по 3 пункты очень интересно! Так где это найти? И кстати, а почему парсинг незаконен, че за бред. Я понимаю продажу говна с 5го пункта - это реально конч, а парсинг-то чем не угодил.
>>2581161 >а почему парсинг незаконен, че за бред. С 1 марта 2021 года всё стало просто: чтобы законно собирать персональные данные из интернета, нужно получить согласие каждого человека, чьи данные собираются. То, что человек сам разместил свои данные в открытом доступе, больше не имеет значения.
Хауди-хо друзья, вкатун свитчер на связи! Поясните как правильно развиваться для поиска работы, ситуация такая что вкатываться надо куда получится, вот я заполняю резюме ссылками на свой репозиторий с разными проектиками, получается солянка, типо -вот тырнет-магазин на джанге; -вот бложик на фласке; -вот телеграмм бот на фаст-апи; и чувствую себя дурачком который никому не нужные проекты в стол дрочит, думаю лучше бы это время на дрочку алгоритмов потратил, подскажите как правильно поступить? может написать туду лист который нахуй никому не нужен и на собесе пиздеть как ими пользуются все мои друзья?
Аноны, вот у меня есть ООООЧЕНЬ большой и грузный словарь (парсинг трехмерной сцены которая передается в json, там всё включая координаты вершин) весом мегабайт 100 например, там буквально сотни тысяч ключей с массивом в значении {'key':[]}.
Я делаю некие калькуляции и добавляю в эти ключи некие данные. Много много раз, тысчи раз в тысячах циклов. НО редко случается такое, что ключа нет в словаре, примерно в 1-5% случаев.
И вот я думаю, каждый раз проверять в этом ООООГРОМНОМ словаре наличие ключа 1) if 'key' in "big_dic" получится миллионы проверок в пустую т.к. ключ обычно есть или 2) использовать try except.
Какой путь более питонический? Как правильно сделать по всем стандартам? Может быть есть ещё варианты? Вообще размер словаря влияет на скорость поиска ключа в нем или может в питоне работает какая-то бинарная магия которая делает этот процесс пренебрежительным для любого обьема ?
Привет ребятки, вопрос следующего характера: Хочу написать прогрумму, чтобы она определяла кругляшки, квадратики, треугольники и ещё несколько значков на экране, и тыкала по ним мышкой.
При запросе в гугле "питон распознавание обьектов" - он выдает однотипные ролики про распознавание лиц и номеров машин, с какими то заранее оттеринированными весами, или типа того.
Посоветуйте гайд или стотью в интернете или книгу, которая мне поможет в данном вопросе.
>>2590713 короче мне надо вот такие значки различать, как на пике. Мне для этого надо YOLOv4 обучать собственным моделям или есть более простые варианты?
Вопрос такой - как быть если удобно иметь в словаре какой-то not serializable объект, если периодически нужно дампать весь словарь в json?
Пока что приходится временно вынимать объект из словаря, дампать а потом вставлять обратно, но это пиздец костыли, хотелось бы чтобы json сам понимал что это не текст и что его можно просто пропустить.
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.