Это копия, сохраненная 7 февраля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
https://pygame-web.github.io
Страницу проекта не читаем, дурак писал, смотрим сразу Игры:
Великолепный сай-фай шутер: https://tank-king.itch.io/bug-invaders
Вампайр сувайворс с собакой: https://legentil42.itch.io/doggo-ascent
Космический сурвайвол хоррор: https://tonikgames.itch.io/necrostation
Прочие шедевры:
https://itch.io/c/2563651/pygame-wasm
https://itch.io/games/tag-pygbag
Выкатывайтесь из Джанги своей, вкатывайтесь в браузерный геймдев на Питоне!
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)
а зачем ты таблицу стрингов подчеркиванием назвал?
обычно этим геттер стрингов из этой таблицы называют: _("я люблю облизывать яйца")
На каждый пук всё это дёргается? Инициализируй тогда уже объект один раз, ну и можно все эти локализации отдельными классами.
Алсо, зачем _? Его в любой момент можно похерить, это для нинужных переменных.
правда не понимаю в чем проблема, счетчик выдает правильно 2 для "мама мыла раму"
ответ "раму 2"
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(razdel==symbol):
mytable = " ".join(razdel[::-1])
count+=1
break
else:
mytable = " ".join(razdel)
break
print(mytable, count)
Задача подразумевает списки, подразумевает знание, что есть индексакция строк, ты же занимаешься какой-то хуитой. Думой.
так сплитом создал массив razdel
А зачем он тут и как его применять то.
Хотел четенько решить ресубом, но чет нет подходящих хуков для разрешения имен или фатальных эксепшенов, хмм. Разве что в байткод лезть.
Я охуел с того, какое это говно, и даже альтернатив не нашел.
Я охуел с того, какое это говно, и даже альтернатив не нашел.
Как работают три кавычки?
Где и когда их ставить?
Пишу на пичарме но не понять ничего.
Есть какая-то комбинация клавиш для вставки шаблона автодока?
Три даблквоты, ентер и будет автофиниш докстринга по пеп. Если нет, то ctrl alt s и ищи docstring.
Поиск в меню настроек для хоткей.
Оно должно быть чувствительно к регистру или нет?
Локализация наоборот (из руснявого в инглиш) предусмотрена?
Если я пропустил дефис например то все - не прокатит?
Почему нет поддержки регулярок?
>Великолепный сай-фай шутер: https://tank-king.itch.io/bug-invaders
>управление стрелками
>стрелка вниз скроллит страницу вниз
Охуенно, братан, контент в кайф.
Эта штука имеет все шансы убит гугл по мере развития, а на кодерство похуй, это всё равно 95% времени хуйня а не профессия.
Братцы, помогите настроить vscode, я заебался.
Как убрать лишний мусор из подсказок ctrl+space (IntelliSense) в VsCode?
Пик 1 - vscode
Пик 2 - pycharm
Хз, в лисе всё пашет. Там фулскрин есть для хромогеев.
ты не совсем понимаешь, как работает локализация. это не переводчик тудема-сюдема, у тебя всегда есть фраза на нативном языке (в случае анона это русский), для которой ты ищешь перевод в таблице
любые регистры, дефисы и прочее приведут к ошибке, и это правильно
куда регулярки пихнуть собрался? некуда
Нужно заполнить данными(отсутствующие значения) таблицу, как во второй, пробег и пробел остаточный. Python pandas
Пробег должен == 0, Пробег остаточный == 160000
Как это сделать, идей вообще нет
ну ахуеть , почитал книжку , выучил библиотеку с PEP 8 и иди пиши имиджборду , ты раз взялся анонов учить успешному программированию , то распиши нормально , что как и после чего учить
Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.
Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как-то ожидал большего и был немного разочарован.
Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!
Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.
Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к обработке данных, как map-reduce.
Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.
За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм. Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.
Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду. Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css, но там всё оказалось совсем не сложно.
Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом. Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду. Я как-то ожидал большего и был немного разочарован.
Гугл, снова гугл. Десятки статей и тем на форуме... Довольно быстро я заметил, что люди часто пишут про какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?! Это же, это просто гениально, чёрт меня побери!
Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в строчки кода. Я просто не мог остановиться. Чашка кофе... Ещё чашка... Мой небольшой кусочек софта приобретал кристалльную чистоту, я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи.
Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к обработке данных, как map-reduce.
Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и незнакомых концепций. Я летел вперёд, оставляя за спиной ступень за ступенью.
За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм. Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на себе завистливый взгляд. Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти, презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве. И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался построить замок из навоза.
Помнится, один чувак рассказывал про тестовое задание на собесе, которое должно было развернуть юникодный текст задом наперёд. И в его случае мало кто справлялся потому, что он использовал всяческие фишки юникода, как то: модификаторы символов (например, символ ударения https://ru.wikipedia.org/wiki/Знак_ударения ), эмодзи (а они теперь часть юникода на секундочку), при чём эмодзи тоже имеют модификаторы цвета и бывают составными (тут много текста с примерами: https://habr.com/ru/company/itelma/blog/549366/ , рекомендую заглянуть и в каменты, там есть интересное).
В общем, на первый взгляд банальное задание разлилось у него в такое море кода... Ух, просто!
>В общем, на первый взгляд банальное задание разлилось у него в такое море кода... Ух, просто!
И все впустую.
ну кроме того что вместе с ним придётся портировать openssl и хуй знает что ещё...
Ну всякие нормализации-денормализации это известная тема.
А эмодзи сразу нахуй идут. Я всё жду, когда уже появятся анимированные и со звуком.
С учётом того, что ты по всей видимости совсем без опыта программирования - сделать будет сложно, неподъёмно сложно. Впрочем это не только про питон.
Вопрос в том куда копать, а дальше разберусь по ходу.
пайгейм это обработка устройств ввода, рендеринг спрайтов и звука. нетворкинг придется делать с нуля
> Насколько сложно это будет сделать на питоне
на порядок сложнее чем на движке, т.к. всё придется написать и отладить самому с нуля. с другой стороны, если это самоцель и делается для саморазвития - почему нет?
635x471, 0:08
вот тебе для вдохновения пример игры на чистом питоне на 2к строк. в зависимостях только пайгейм и модернгл
https://dafluffypotato.itch.io/hue-flowing
Можно ли как-то отсортировать файлы которые пронумерованы иероглифами (一、二、……、 十四、……)? В юникоде они идут не в правильном порядке (1, 7, 3, 9 и т.д.), в ручную переименовывать на арабские цифры не вариант тоже.
https://stackoverflow.com/questions/32094525/morse-code-to-english-python3
попробуй переделать это под свои задачи
А почему должен быть порядок не по юникоду?
А если нужна какая то своя сортировка, то тут надо создавать свой словарь скорее всего.
В целом это даже не сложно сделать.
Просто создаёшь одну строку со всеми иероглифами в нужном тебе порядке и через цикл проходишь, добавляя их все в словарь в нужном порядке.
Попытался загрузить модуль word2number
Нету на сайте. Ок, просто скопировал весь модуль перед функцией и решил. Это не самое сложное задание, но писанины просто много
Но вот это решение мне нравится больше всего. Через словари и думал решать сначала, пока просто по приколу не решил весь модуль скопировать
та я ваще в танке, я не кодер просто:/
Но сейчас ии только даёт возможность хикканам спиздить работу у синьоров.
так нет же, я в треде по нужде, а не по желанию
там через почту у меня даже на почту ммска пришла, зарегался, но эксес денайд, скачиваю тор
ты носишься с ней как дурак и выдаёшь решения простых задачек и при этом вряд ли сможешь понять,если решение выдали кривое, неработающие и неоптимальное
Скрин с китайскими иероглифами полностью хуйня, если что. Он не просто выдал код, который ничего толком не делает, но даже дал неправильное описание как питон работает.
лол, делается за 5 минут, Ахметова
>mutation
>pd.Series превращается pd.Series
>квадратные скобки в след квадратных скобок, вместо loc
>коментарии в каждой строчке
ебать код у тебя, где так учат паграмировать?
>Как это сделать, идей вообще нет
fillna(0) в "пробеге", fillna(160000) в "Пробег остаточный"
Коданы, что у меня сломалось? При попытке установить интерпритаторы через 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
819-820 строчки python build:
> { "$MAKE" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS} "${!PACKAGE_MAKE_OPTS_ARRAY}" } >&4 2>&1
Подскажите, дайте совет, добрые люди, как проще такое реализовать? К душнилам на Стак идти за советом не хочется
пик-рандом
Внезапно его переустановка помогла
https://docs.python.org/3/library/zipfile.html
Ну идешь по папкам создаешь для каждой архив пихаешь в него файлы. Расширение ты не указал поэтому считаю что зип.
Не получается через shutil. Пытался пройти циклом for по всем директориям вложенным в основную директорию:
for baks in bak_dir:
shutil.make_archive(различные комбинации параметров)
Ничего толкового не выходит
Даунская задачка для даунов. Бот очевидно смог ее решить. И очевидно в очередной раз как бэ намекает всем что алгоритмодроч и литкододроч не являются хот ьсколько-нибудь важными признаками адекватного программиста
Пусть решит вот такие задачки:
Понять почему постгря на проде внезапно жрет минимум 70 гигов памяти из 90 доступных
Прикрутить кейклоак авторизацию к этому проекту 8 летней давности на Торнадо
Перевести поиск в проекте с LIKE на elasticsearch
Понять почему при переходе с celery 4 на 5 таски рандомно начали сдыхать
>алгоритмодроч и литкододроч
В галере есть коллега который без устали дрочит литкод и постоянно меня да окружающих спрашивает, решили ли мы сегодняшний челлендж. Каждый раз как говорю что такой хуйней не занимаюсь, он теряет дар речи будто я какое-то богохульство отпустил
>Прикрутить кейклоак авторизацию к этому проекту 8 летней давности на Торнадо
О, я очень похожее недавно делал не сделал
В целом согласен с тобой, но говна на вентилятор накидывать не прекращу.
>>70028
bak_dir это что?
from pathlib import Path
p = Path('.')
subdirs = [x for x in p.iterdir() if x.is_dir()]
for subdir in subdirs:
...
>bak_dir это что?
Директория куда сваливать бэкапы
>from pathlib import Path
>
>p = Path('.')
>subdirs = [x for x in p.iterdir() if x.is_dir()]
>for subdir in subdirs:
>...
Спасибо, попробую использовать
>>70028
там просто кто-то сильно нашутил с синтаксисом, сделал такой мини-пазл-квест с загадками в документации
держи рыбу, нахуй удочки:
https://www.online-python.com/uEsvDMKVzU
в начале задается путь до пакета с пакетами
и путь до папки, куда архивы сваливать. в этом случае это папка 'Archives' рядом с пакетом с пакетами
и да, перед тем, как модифицировать что-то на своём диске, убедись, что всё корректно. через принты, например. и лучше на 1 файле сначала попробовать (добавив break в конец цикла), чтобы случайно не удолить все файлы на своём компуктере
>я очень похожее недавно делал
Игорь, ты? Кирилл мне сказал к тебе обратиться по поводу keycloak, якобы ты "все уже сделал", а ты мне нихрена толком не помог, самому пришлось это говно править
Не подскажете, как с помощью numpy считать файл в 3 вектора, с учетом того что данные отформатированы через экспоненту?
совершенно нормальный код. можешь покороче сделать:
> dict_strings = dict(kv.split(' = ') for kv in strings)
лучше б у тебя глаза с названий переменных типа "dict_strings" вытекали
бля, как элегантно. надо попробовать
Вкатиться в помойную контору занятую парсингом сайтов
Как из этого сделать констрейнт с if ['=' in kv for kv in strings]?
Дано list2 = [(0, 'Боевик'), (1, 'Вестерн'), (2, 'Детектив'), (3, 'Драма'), (4, 'Комедия')]
Вопрос. Есть простой способ разделить без явного прохода цикла сделать:
i = [0,1,2,3, ....] или (), и
s = ['Боевик', ....] или ()
Если просто напечатать, то понятно, что можно типа:
for i, s in list2: print (i, s)
Не надо. Не используй это говно. Да тебя в норм конторе ещё и принудят не использовать.
Спасибо!!
А то писал только
i = [x[0] for x in b]
s = [x[1] for x in b]
что не очень как-то выглядит )
Зачем, скотам типа тебя не положено.
Регулярные выражения могут быть сложными для чтения и отладки, особенно если они длинные или сложные. Они могут быть неэффективны в плане времени исполнения, особенно если используются неоптимально. В некоторых случаях они могут вообще не работать правильно.
>В некоторых случаях они могут вообще не работать правильно
Если ты, макака, их написал неправильно
Вряд ли, перепроверь через него ли траффик идет, и да потом еще номер телефона попросит. У меня впн немецкий
> OpenAI
> анально огороженная параша
Спасибо! Ошибки сыплются, но попробую разобраться что-к-чему
У меня сейчас не хочет работать, пишет, что перегружен. Раньше работал.
Есть ли у приложений и окон ОС виндоус какое-то такое вот волшебное API, которое позволяло бы другим программам читать его окна.
Вот например открывается окно в нем три радио кнопки, два чекбокса, поле ввода, скрол бар, список файлов. И вот такое апи которое бы передавало эту инфу и например координаты этих элементов или даже возможность давать по ним сигналы, нажатия.
Сравнение конечно дурацкое, но вот веб страница получает разметку с UI и браузер эту размету рендерит, но мы можем взять весь ДОМ страницы и растащить его по элементами и давать потом по кнопкам сигналы с помощю АПИ, например селениума
Тебе к байтоёбам.
на джаве была какая-то прога, которая использует распознавание изображений кнопок. а по-другому-то никак, мало ли кто как ректы кнопочек рендерит и какой фреймворк использует, ДОМу страницы до такого зоопарка фреймворков и велосипедов далеко
тебе к джавистам
написать приложение на 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 с описанием проекта, эндпойтами и пошаговой инструкцией по разворачиванию и запуску проекта.
написать приложение на 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 с описанием проекта, эндпойтами и пошаговой инструкцией по разворачиванию и запуску проекта.
Там только размеры окна, координаты на столе и статус (свернут развернут).
Типо рвешь жопу, делаешь за 24 часа в тестовом задании софт который команда разработчиков за месяц делает, его у тебя "принимают", "мы вам перезвоним", твое задание отдают тестируют и заказчику и новых лохов идут искать?
вроде не, час собесили до того)
почему хуевая? Пиши. если у тебя много старой логики и нужно ее взгромоздить на сервер.
Вообще, заебали на Двач сваливать свои проебы. Лишь бы не думать самостоятельно
Ты пользовался threading, multiprocessing? Это же пиздец полный. Жуков потом заебёшься отлавливать.
Я каждый день пользуюсь, а че.
Вообще смотрю на Rust. Единственный популярный язык, где многопоточность из коробки и без лишней ебли.
Там еще и на рякте просили фронт.
Пришлось выучить.
А что поделаешь такова жизнь такой вкат в 2023...
Говланг не подходит мне с точки зрения его ограниченных перспектив. Ржавого можно потом использовать в сторонних, низкоуровневых вещах. Есть некоторые задумки.
До ближайшего чётного. Там есть какие-то обоснования и плюсы, я не помню уже.
Гугли bankers rounding, кароч.
Речь про .5, остальные как привычно.
У тебя проще. Плюс половина это "дополнительные баллы", а у анона вон, всё обязательное, кроме АВТОРИЗАЦИИ.
Плюс, у тебя действительно похоже на тест, а у анона столько специфических требований, что кажется как будто на него просто чужой спринт скинули.
И вообще давать сутки на такую хуйню это полное блядство и свинство. Чтобы это за сутки сделать надо нормальный опыт иметь да и то работать не будет всё равно без тестов, а уж если опыта нет, то человек себя прости изведет в попытке высрать этот кирпич. Такие сроки только мразь дать могла соискателю, т.е. человеку который может отчаянно нуждается.
Не-а. При банковском округлении должно быть минимум два знака после запятой (точки).
Хотя нет, сорян, перепутал с округлением бухгалтерским (там есть разница).
Впрочем, вопрос остается преждним - с какого ляда подобная методика округления именно в питоне по умолчанию? Единственный язык, в котором я это встретил.
написал что в срок не сделаю, скинул 2 другие части тестового, (это третья, лол, ну первые две тупо задачки) спрашивает а сколько тебе нужно чтобы доделать?
имеет смысл ДОДЕЛЫВАТЬ?
Кому нужны долго живущие галеры? Это же еще зп платить. А так собрал ждунов на месяц, параллельно кандидатов тестируешь. Прошел месяц, ИП+=rand() и по новой.
Грамотный джун должен трезво оценивать свои возможности. Если человек без возражений принимает задание на месяц с временем выполнения в сутки, то он либо совсем ничего не понимает в оценке сложности задачи, либо надеется где-то своровать уже готовый код. И первый, и второй вариант негативно характеризуют собеседуемого.
Двачаю. Когда вкатывался, 2 раза подряд напоролся на такие галеры. Соответственно 2 месяца в трубу, а надзиратели вместе с моей зп пропали в неизвестном направлении. Самый лул, что недавно один из них приглашал на работу в очередную лодку-однодневку с уставным капиталом 10к и временем существования 5 дней.
Невозможно понять сколько времени займет то что раньше никогда не делал. Это просто В ПРИНЦИПЕ НЕ РАЗРЕШИМАЯ задача.
>При вёрстке страниц требуется использовать фреймворк Bootstrap5
Беги оттуда! Уже фласк должен быть наводить на мысли, а если бутстрап, то беги!
Как трайал пойдёт, месяц потупит без оплаты в проде, потом следующим про полгода будет пиздеть.
>если весь день этим не занимаешься
Так он же безработный, так что резонно запросить пять, а то и неделю на фул-день. Нормальный срок.
Это задание не на месяц, тут по идее стандартные вещи. Но за день это перебор, если заготовки не использовать.
Ну и вообще не адекватно, потому что время нужно, чтобы разобраться с какими-то вещами.
По приколу можно попробовать себе такой челлендж устроить и сделать. Чисто для тренировки, не планируя всерьёз устраиваться. А если вдруг предложат работу, запросить сразу нормальную джун+ зарплату, ну там соточку например для начала.
Никак не ответил. Отправил в трудовую инспекцию актуальные координаты наёбщика Артёма (ныне Владислава). Проблема в том, что они фирмы регают на ноунеймов, т.е. формально он не при делах.
Безработному весь день кодить не получится, тоже дела есть - надо поспать до обеда, потом аниме посмотреть, почитать.
Хз. Наверное, что за работу платить не надо, а на репутацию и качество похую. Новая фирма, новая репутация.
Про 10 часов капчевания не забывай.
Как-то сомнительно. Много рисков, клиентов искать сложно, качество софта говно, а вертишься как при нормальной работе. Тут что-то другое должно быть или ты пиздишь.
>Это двач. Кто здесь не сеньор?
Я. Мне 18 лет, я ещё юная, хочу на подработку устроиться программисткой, учусь сейчас.
Почитаешь эти истории с собесов когда челам там КАВЕРЗНЫЕ ВОПРОСЫ задают как будто они не на работку пришли проситься, а в передачу Своя Игра попали: протестируйте карандаш, что тяжелее пуд сена или пуд железа, вилкой в глаз или в жопу раз.
Сиськи с супом в тред, шлюха
тащемто ничего сложно то тут нету.
но ебатни конечно дофига.
я бы слал лесом если тестовый больше 2 часов на выполнение
устраивайся. разрешаем
Сделал вот так
Актуальна ли она в наше время, или лучше купить книгу для новых версий питона от других авторов?
например?
Мне вот эта в своё время зашла. Не знаю, есть ли новые издания
для справки
для серьезности
Есть маленький сервис на джанге, который даёт определённые права на определённые действия зарегистрированным и запросившим хуям.
Структура: две таблицы
А - данные о хуях
В - данные о жопах (внешний 1кМ ключ к хуям)
Когда хуй регается в системе, в таблицу А заносятся данные о нём и выдаётся жопа, которую он может взять(1) или забить(2) на потом.
Если он взял, то всё в порядке, в таблицу В заносятся данные о жопе, но если он забил (закрыл вкладку, не подтвердил действия и тд), то образуется мусор в таблице А, у которого нет отношения.
Мне хуи без жоп не нужны, я решил замутить мироскрипт на ликвидацию одиноких хуёв, а именно: в url прописал паттерн, который первым запускает скрипт очистки, потом переходит на страницу регистрации.
Вопрос про скрипт - как можно оформить его короче например через exclude? Иными словами, как по-другому (и главное где, кроме костыля с паттерном url) можно его применить? Какой метод можно переопределить в модели или в классах во вьюхах, чтобы в будущем не пердолиться и не изобретать велосипед?
Спасибо.
Файл представляет из себя столбец с: уникальным id, месяцем(январь-декабрь), статус(12 разных).
Нужно взять id и прогнать через rest запрос, получив в ответ true/false. С этим проблем нет.
Проблема в том, что я не могу придумать, как это все адекватно раскатать в табличку вида количество значений в определенный месяц с определенным статусом с ответом true/false.
Как примерно должно выглядеть прикрепил.
Мне в голову приходит только или ручной подсчет через фильтры в экселе и создание кучи переменных, или заделывание словарей с дальнейшим парсингом.
В общем нужна помощь, как это просто сделать без костылей
pandas groupby/pivot
Полная хуйня. Проверил только что.
Если пустых записей > 200, то таймскейл респонза возрастает десятикратно. Это можно будет ронять сайт через скриптик генерации имен, пиздец. Чо делать-то?
Очевидно не заносить данные о хуях, пока не будут данные о жопах, а временно хранить их в сессии
>Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки.
Я надеюсь, не зря читаю про черепашку...
обучишь нейросеть и будешь туртлем рисовать великолепные картины
но мне лень
>>70297
Я, конечно, больной ублюдок и вот это вот всё, но вариант со сплитом по-моему лучше соответствет питоновской идеологии. Ведь явное лучше неявного, а регулярки это...
Если смущают пробелы в сплите, то можно что-то типа
> "А = Б".split('=')[0].strip()
>>70313
Регулярки на самом деле очень легко пишутся. И чем дальше, тем сложнее читаются. Даже не очень скилловый спец может написать что-то такое:
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/ .
У тебя какая-то хуйня в логике.
ЗЫ! Насчёт емейла! Я быстро не нашёл, но был регексп для 100% определения корректности адреса, размером с печатную строку. Кажется, это был какой-то RFC, но найти его быстро не получилось.
Луркай AutoIT, в нём есть и пипетка, определяющая ТТХ элементов и жмакалка автомагическая, админы его используют, чтобы писать автоматизацию всяких установщиков.
пик 1 exe, пик 2 по обычному.
в гугле нихуя...
Спасибо за развёрнутый ответ. Обязательно прочитаю завтра
А ты расшарил и ждал откликов, или адаплтировал и резюме под вакансии и рассылал во все места?
Потому что первый вариант прокатит только если ты реально представляешь из себя что-то.
Я, правда, никогда не работал кодером... И работу искал только дважды, в прошлый раз - 10 лет назад, с тех пор новые места (уже трижды) меня сами находили. Но это скилл, помноженный на репутацию со связями.
>ориентировочное время выполнения - 24 часа
Три рабочих дня, наверное, а не сутки, как почему-то подумали местные Антуаны...
Теоретически, если опыт есть, то реально делается. Но это нужен прям опыт решения такого, без него даже считать бесполезно.
Не очень джуновое задание.
Ну, я прямо сейчас переписываю API, общающееся JSON'ами с клиентом с Flask на FastAPI, получается удобно, особенно благодаря Swagger UI, можно даже без клиента работать.
>>71182
>Марка Лутца
Его многие не любят. По-моему зря. Сам я вкатывался вообще по 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/
по крайней мере другие книги с этого сайта, которыми пользовался, были просто агонь.
В предпредыдущем треде уже это обсуждали.
Ошибаешься, в современном виде её ввели в 3.5
>Почему нельзя писать проекты тупо на функциях?
Можно, в дата-сатанизме. Там ты исходные данные преобразуешь рядом функций и получаешь результат.
Но не везде надо проделывать манипуляции с набором исходных данных. Где-то надо тупо обрабатывать состояния, например.
Ну не знаю. Я вот по работе написал аппу-шаблонизатор для жс-кода. Там и коннекты к мускулю, и кеш в редис, и фастапи, и все на свете. Все на функциях.
Извинись, дурень .
Если ты работаешь на галере, по гайдлайнам, то спроси у своих авторов гайдлайнов, зачем.
В некоторых случаях ООП очевидно удобен, если у тебя много похожих объектов со своими характеристиками каждый, при чём они могут быть разные сами по себе например, шутан с монстрами, которые описываются одним общим классом, в котором у тебя будет спаун, смерть, хиты и прочее, а в классах-наследниках будут конкретные виды с их особенностями.
Если у тебя такого нет и ты ни с кем не связан, делай, как хочешь.
Для внешних связей (например, если у тебя продукт выступает как модуль, доступный публично) ещё иногда пригодится инкапсуляция, чтобы некоторые из твоих методов отрабатывали только внутри класса и не были доступны снаружи (в Питоне она, правда, не абсолютная). Хотя на мой вкус это сомнительный плюс, ведь созданный по твоему импортированному классу объект будет в чужом коде и это уже не твоя головная боль.
Ну и полиморфизм... У меня однажды был кейс для него, но поскольку задача была довольно искусственной я не уверен, что это полезная штука.
Впрочем, есть подозрение, что тут: https://pythonworld.ru/osnovy/inkapsulyaciya-nasledovanie-polimorfizm.html
неправильно определили инкапсуляцию. А я именно сюда залез за определениями. Так-то я просто помню, что три святых коровы ООП это наследование, инкапсуляция и полиморфизм.
И хорошо помню только про первую и последнюю.
bump.....
ппц как сложно
смотря какой контекст.
я пишу 50 на 50 ооп и процедурка.
просто потому что в моих случаях так удобнее.
можешь про DDD загуглить
Потому что в тырпрайзе ты оперируешь сложными структурами, которые имеют свойство гулять по коду и при этом иметь состояние, а такое поведение проще описать через объекты классов, а не плодить замыкания.
Да я понял. Джангодебилы мечтают использовать css в консольке.
Но, вообще-то, это бесполезная хуйня .
А ты не смотри другие видео, задание лучше сделай.
Из всех на которых пробывал делать задания этот больше всего понравился
Выёбываться можно, никто не запрещает. Как поддерживать?
Ну и потом, а ты уяснил философию функционального программирования? Для чего оно и почему? Спойлер: исходные данные остаются неизменными, функциями ты извлекаешь из них требуемое тебе. В ООП наоборот: исходные данные подвергаются многократным манипуляциям и не хранятся в исходном виде, везде промежуточные результаты.
А теперь подумой, такое уж у тебя ФП или просто неподдерживаемые извращения от неумения применить ООП, когда оно нужно.
Двачую адеквата
что за безграмотное говно это писало? ты устраиваешься к киберкриминалу?
не устраивайся к ним.
Не, это вопросы к экзамену в вузе, это препод просто на отъебись накидал, что он спросит может
> в тырпрайзе ты оперируешь сложными структурами, которые имеют свойство гулять по коду
Кстати, в 2к23 это уже не совсем так. Сейчас тыр-тыры стремятся делать маленькие оконченные кусочки и выставлять наружу не код, а REST, потом запихнуть это в контейнеры и запускать их оркестратором (K8s или вообще Serverless).
И вот тут с одной стороны появляются накладные расходы (потому что HTTP это оверхед для простого общения, а там ещё в коде нужно реализовать сериализациею-десериализацию хотя бы в JSON и ладно бы на пистоне это делается парой строк, но на крестах каких-нибудь...), с другой стороны стандартизация, удобство MQ, балансировки и т.п.
И вот тут главное реализуй хорошее API, а использовал ли ты для этого классы -- проблема только твоего подразделения.
Ну вот у тя джва реста между собой общаются, причем первый является продолжительным клиентом второго, т.е. дёргает один эндпоинт, получает данные, че-то с ними делает, дёргает второй эндпоинт, получает данные, че-то с ними делает, всё мёржит и хранит где-то или отдаёт в третий рест. Ты на каждое такое дёрганье будешь вызывать функцию с requests.get, создавая свою сессию с своим пулом?
Ооо, спасибо огромное! Что за сайт/приложение такое?
Забавное. А на остальные ролики будет ссылка?
>>71992
Ага, а это видел?
>>72340
>запихнуть это в контейнеры
В образы, пофиксил тебя, не благодари.
>>72364
Именно так! Такова философия API: запрос-ответ это конечное действие, API не сохраняет внутри себя результаты запросов. Код же вообще отделён от данных, пока в контейнерах крутятся аппликухи на самых разных языках сами данные лежат отдельно - в Постгресе, ЕТЦД, Монго, Редисе или ещё где.
>сами данные лежат отдельно - в Постгресе, ЕТЦД, Монго, Редисе или ещё где
Промежуточное их состояние незачем хранить где-то, кроме как в памяти. Но хуй с ним. Опять же на каждую запись/чтение данных в/из бд/редиса/етц ты будешь вызывать функцию, внутри которой будешь инициализировать новое соединение с новым курсором и т.п.?
> Промежуточное их состояние незачем хранить где-то, кроме как в памяти.
Что тебе непонятно в этой фразе:
> запрос-ответ это конечное действие
Там нет и не может быть никаких промежуточных состояний, или ты делаешь что-то не так.
> Опять же на каждую запись/чтение данных в/из бд/редиса/етц ты будешь вызывать функцию, внутри которой будешь инициализировать новое соединение с новым курсором и т.п.?
Да. Архитектор уже подберёт более подходящее в конкретном месте. Где-то это будут сверхбыстрые Ин-мемори ДБ, где-то что-то ещё, вплоть до КликХауса, ГринПлама и других ОЛАП.
Работа с in-memory очень быстрая, подключиться к ней и прочитать/записать быстрее, чем прочитать/записать что-то с диска при установленном заранее соединении.
Кстати, про серверлесс слышал? Там всё вообще круто: когда к ресурсу обращаются после паузы он СОЗДАЁТСЯ из ниоткуда (запускается из образа, лежащего поблизости, но самого процесса в момент обращения при этом нет), а когда отработает -- контейнер выключается и не существует до следующего обращения.
Какие там могут быть промежуточные состояния?
Да, промежуточные вещи и сохранения чего-то между сессиями это вопрос к клиенту, такое может возникнуть у него. Например, азы: гет-запрос авторизации, передал логин-пароль, получил сессионный ключ, потом передаёшь гетом для получения данных определение нужного тебе объекта, приложив к нему сессионный ключ. Вот тут есть промежуточное хранение, но оно не происходит на сервере.
Работает
b = list(a)
i,s = zip(b)
а если i,s = zip(list(a)) - хуй показывает, говорит
ValueError: not enough values to unpack (expected 2, got 0)
Там же однохуйственно тип "list" ...
>Там нет и не может быть никаких промежуточных состояний, или ты делаешь что-то не так.
На валидацию данных/жвт-токена/хэдеров ты хуй положил? Ок, храни их в бд/редисе, и прикрути ещё сторонний под этой сервис.
И также похуй на бизнес-логику, когда в зависимости от конфига обрабатываемого тобой флоу тебе надо в одном случае следовать одной ветке с своими методоами, а в другом другой, тут конечно же тоже нет состояния и на бэке это не делается. Ок.
>Там нет и не может быть никаких промежуточных состояний, или ты делаешь что-то не так.
Так а че сразу блобы не гоняются по сети, зачем все эти сериализации/десериализации, жсоны/хмлы/протобафы. Хуярь сразу в память/бд неотформатированные данные, навесь ещё пару сервисов/хранимок, которые это будут обрабатывать внутри всего этого.
>Да. Архитектор уже подберёт более подходящее в конкретном месте.
Скажет что память на нодах забилась от ваших ебаных подключений и всё по пизде пошло, а новый сервер/новую планку поставить нет возможности, т.к. бюджет уже свёрстан, уже проходили.
>Кстати, про серверлесс слышал? Там всё вообще круто: когда к ресурсу обращаются после паузы он СОЗДАЁТСЯ из ниоткуда
Ну да, и создаётся нигде и никакие мощности и время не тратятся на это, у нас же всё бесконечно масштабируется! И сеть у нас везде гигабитная и сервера не ломаются.
>Например, азы: гет-запрос авторизации, передал логин-пароль, получил сессионный ключ, потом передаёшь гетом для получения данных определение нужного тебе объекта, приложив к нему сессионный ключ. Вот тут есть промежуточное хранение, но оно не происходит на сервере.
Обычно это какой-то оаутх2.0 с внешним кейклоаком, а не твоя локальная штрибанина. И ключ ты получаешь через редиректы и тебе его надо хранить на клиенте, но срок его действия тебе надо чекать уже на бэке, или для тебя это происходит атомарно и без промежуточного состояния? Ок.
На самом деле, дебилы они. Не владеют терминологией и используют жаргон второго сорта.
Внезапно соглашусь, тут идёт борьба знаний терминологии, но не логики и уж тем более не работы.
Чел, мутный язык означает мутное мышление и несистемное образование. Это классика.
Пока я только вижу сноба, который использует разные терминологии для описания своего непонимания. Ты в одну гребёнку сливаешь "мутное мышление" и "не владение терминологией", это вообще разные вещи, которые не обязательно вытекают друг из друга. Это классика. Учить других как надо понимать, ведь как они понимают, это непонимание, а вот как я понимаю, то это понимание.
Один скажет "передвинь этот стол под окно", у тебя же похоже на "заебент эту хуйню под ту пизду". Явно, что тебе это понятнее, но это не говорит о том, что это правило для всех распространяемое.
>Ты в одну гребёнку сливаешь "мутное мышление" и "не владение терминологией", это вообще разные вещи, которые не обязательно вытекают друг из друга.
Ого, чувак, а ты умеешь мыслить образами или мыслишь-таки словами? Только не говори, что мыслишь какими-то другими радужными словами из мира фей, а не вот этим вот «ебать флоу азы-газ стейты хуйнём».
Болезный, тебя заносит.
Кончено, на бэке есть логика и многое другое. У тебя есть условная функция, скажем,
@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 к отдельному сервису, и так далее, в ней может быть ветвление и проверка нескольких разных сервисов и ещё чёрт-знает-что. Но это функция. Данные о новом юзере - передала в какую-то базу, данные о неудачном логоне - в систему логирования/безопасности и т.п. Но когда отработал райз/ретурн - она забыла все состояния. Всё, этим история кончилась и никакого объекта на сервере не хранится. Объекты тут вообще не нужны.
> Так а че сразу блобы не гоняются по сети, зачем все эти сериализации/десериализации, жсоны/хмлы/протобафы.
Странный вопрос в эпоху победившего потреблядства.
Потому что "а зачем?", ведь стандартное решение просто балансировать, тестировать, проще строить очереди и т.п. Через тот же свагер можно тестить АПИ вообще через браузер, без клиента. Вот раньше, да, когда считали каждый такт процессора никому не приходило в голову оборачивать всё в текст, а потом ещё и оборачивать в хтмл.
Долбоёб, я тебе говорю про промежуточное состояние данных, с которыми ты работаешь внутри своей функции. Ты эти данные можешь обрабатывать как хочешь, агрегации считать, передавать в другой слой, в другого клиента или другой апи, и будешь ждать от него ответа. И передавать ты можешь хоть строкой, хоть списком, хоть словарём, хоть кастомным объектом или моделью пайдантика - мне похуй, ты везде (в концепции питона) передаёшь объект.
>когда отработал райз/ретурн - она забыла все состояния
Но пока у тебя до этого момента не дошло, то данные у тебя висят в памяти, которые по итогу могут не попасть ни в бд, ни в кэш, ни в лог.
Что тут непонятного? Никакого хранения промежуточного стейта нет, но промежуточные данные ты держишь в памяти во время отработки функции.
>Странный вопрос в эпоху победившего потреблядства.
Так это тебе вопрос, дебил. Пришел тебе жсон одной структуры, которая у тебя описана в сваггере, через пайдантик она валидацию прошла. Далее эти данные улетают в другой слой, а там свой дто и в бд у тебя другая схема, либо вообще самописный балк-инсерт, и тебе эти данные надо замаппить перед записью в бд. Пока твоя функция не отработала, всё это висит в памяти.
>>72586
>>72593
Я всё ещё не понял, в чём ваще непонимание, поэтому дальше просто скипну, читать все эти доёбы про какой-то не такой язык и не такую терминологию лень.
Ты с какими-то претензиями пидор, вообще... Не нравится — просто не читаешь, хули лезешь-то?
Пошёл в пизду, хуесос, ты сам влез в разговор с претензиями ко мне за мои терминологии и мутное мышление, при этом так и не написал, что конкретно непонятного я написал, а только своё ебло раскрыл, хранитель сакральных знаний хуев.
Вообще-то это я влез, пидорас ты тупой, зелёный кусок говна с надменностью как у золотого слитка, пишешь хуйню налево и направо, но как только тебе показали, что ты пишешь хуйню - обидка и игнор. Я хуею с этих девочек.
Никто тебе никуда не влезал, анально контуженный. Брезгую.
Писал я не тебе вообще. Ступай к хуям на помойку, козёл.
Да мне похуй, кто из вас двоих/троих влез, ебанат. Тебя/вас спокойно попросили написать, что не так, но вы до сих пор ничего не разъяснили, кроме пустой демагогии, ещё и в надменные меня записали, охуеть конченные.
Скройся, ослина спидозная.
Инт использовать нельзя. Потому что цифры в примерах такие длинные, что инт просто не будет с ними работать.
По коду проверяем сначала не пустые ли строки получили
потом делаем строки равными, заполняя нулями.
Дальше смотрим наиболее длинный отрезок строки, который мы можем взять для превращения в инт, что бы они были равными. Притом с числом выше 10000 код начинает работает ещё медленее,
Ну а дальше складываем строки и проверяем не появилось ли лишней единицы в конце, если допусти 99+1 складываем
Если да, единицу запоминаем. Если цикл закончился, а единица осталась, её нужно добавить в начала цикла.
Возможно, тут есть какие-нить серьёзные утечки производительности, которые легко отпмизировать.
Может надо лучше разрезать строку на список и уже по нему проходить, а то явно он много времени тратит на прохождение по индексу каждой строки.
всё проходит, только по времнени нет
sys я импортировал, но данной функции в нём нет
А вот оптимальное моё решение, но оно работает куда медленее, хоть и тест проходит, чем mpz, ну для такой фигни явно и нужно модули использовать для большей скорости, что на C написаны
В смысле не моё, а оптимальное решение того, что я пытался сделать
nested_dict = dict((k,[]) for k in ('key1', 'key2'))
Потом добавляем в список что-нибудь.
nested_dict['key2'].append('bar')
Чому в списке 'key1' тоже не появился 'bar', он появился только в списке куда я его аппендил. Я же помню что тут была такая ебатнина что каждый список использованный в генераторе указывал на один обьект. Ну вы поняли? на самом деле это должен быть один список. Я вот отчетилво помню что так и было и я долго баттхертин из за токой логики. Прошел месяц я опять юзаю этот генератор и всё работает нормально. Как так.
> >>> 'Всё понятно, но почему слайс такой? Объясни, пожалуйста'[1:-1]
> 'сё понятно, но почему слайс такой? Объясни, пожалуйст'
Да не гори ты. Я понимаю, что без этого слайся получится дикт из одного элемента, а именно - ключ в виде тапла, но как это решает данный слайс [1:-1] - не понимаю.
Спасибо, так понятнее. Никогда не сталкивался со слайсами строки в рамках работы с eval. Всегда думал, что -1 - это априори последний элемент итератора.
Т.е. [0] - это скобка (, соответственно [:-1] тоже должна была бы быть скобкой ).
[:-1] это весь сиквенс без последнего элемента. [:-2] это весь сиквенс без двух последних элементов. и так далее
>Я же помню что тут была такая ебатнина что каждый список использованный в генераторе указывал на один обьект.
Это не в генераторе, это если бы ты делал
l = [[] * 8]
тогда бы появлялось во всех
__file__ , sys.argv[0], os.getcwd()
Это всё возвращает путь до самого файла программы, а не до ярлыка.
Че несёшь охуеть, какой словарь словарей, ты создаешь один словарь с 2 ключами, значения которых пустые списки, т.е. каждому ключу соответствует свой список в памяти. И ты по индексу обращаешься к отдельному списку и в него аппендишь. Схуяли у тебя список, доступный по key1, должен ссылаться на список, доступный по key2? Это джва разных объекта в памяти, айдишники хотя бы сравни.
Так разъясни, гений, о чём речь.
Он создаёт 2 разных списка, когда делает (k, []), а не создаёт сначала список через условный a = [], а потом использует ссылку на него в (k, a).
И генераторное выражение типа nested_dict = {k: [] for k in ('key1', 'key2')} тоже самое вернёт.
Блядь какой ты душный, ещё и визжишь непонятно с какого хуя, будто тебе лично хуйню сделали. Что у тебя блядь случилось. на собесе хуем по лбу настучали, что ты на двач прибежал на анонов срываться.
output = dict.fromkeys(('a', 'b', 'c'), [])
output['b'].append('foo')
>>73282
Мусіш зрабіць дзве рэчы. Змяніць каталёг запуску ў якасцях ярлыка, выклікаць os.getcwd().
https://www.online-python.com/f3BM1E0WoV
То что ты написал это вообще другой способ создания словаря через классметод, где второй необязательный параметр по-умолчанию ссылается на один и тот же объект, если он изменяемый, это и в доке написано:
https://docs.python.org/3/library/stdtypes.html?highlight=fromkeys#dict.fromkeys
Свои хуиные мечты себе в очко засунь, маня, я так и не увидел пример создания того, что он хотел через конструктор словаря.
>Но ты предлагаешь прописывать воркинг дир руками. Это не решение.
прекрасно решает поставленную тобой ИТТ задачу. не нравится - научись формулировать, что тебе нужно
Пытаюсь решить трансцендентное уравнение для векторной функции размерностью 875 на 1. При вызове root пишет, что
ValueError: The array returned by a function changed size between calls
Что я делаю не так? За питон шарю исключительно в контексте того что прочитал в документации.
У функции почему-то меняется размер выхода. Почему - непонятно. Попробуй добавить в функцию печать размера, может, поможет понять, при каких параметрах такое происходит.
Только я не понимаю чего-то. У тебя значение функции - вектор, а аргумент - одно число? Как ты ноль собрался искать?
Спасибо, я чет тоже задумался и понял, что ему надо было на вход давать x0 в виде вектора той же размерности что и функция
здрасьте, я тут новенький, ткните носом где ваще нормально понять как работает asyncio? Есть ли что-то кроме официальной документации, что позволит не ломая голову проследить как она работает? позязя
>запиши сначала путь руками в ярлык, тогда питон его сможет оттуда брать
Да я понял что у тебя с логикой проблемы.
всё как ты просил. соответствует ТЗ. не нравится - сам виноват, что не можешь донести свою задачу
>сам виноват
Нет, это ты идешь на хуй, клоун. Если тебе мозгов не хватает понять что требует заказчик (я), то будешь переделывать или уволен. Твоё нытье что ты так задачу понял ни кого не волнует.
Аналогия. Задача: как человеку в пустыне получить координаты своего местоположения средствами компаса.
Ответ от клоуна: ЫЫЫ да проста развирнуть компас там ссади написаны кардинаты ыыы мы их туда раньши записали.
https://github.com/vertically-challenged/python-calc
Не знаю, я не читал, мне хватило этого:
https://www.youtube.com/playlist?list=PLlWXhlUMyooawilqK4lPXRvxtbYiw34S8
Но я до сих пор не понял, зачем мне нужен питон, если я знаю JS. Решил его выучить, только чтобы помочь с курсовой подруге
1 Есть миллиард модулей и библиотек на все случаи жизни.
2 Проще синтаксис - можно кататься ебалом по клаве и всё равно получится софт.
Таким образом питон это воплощение мечты анона выраженной в максиме: "Ничего не делаешь - а всё есть".
игры разрабатывать
Кататься ебалом по клаве и всё равно получится софт - это про перл, а не про питон. Питом - все можно написать только единственным способом.
Нет, просто переписал свою же программу, когда-то написанную на JS: https://www.youtube.com/watch?v=eTXrGfVAydA&t=52s
А что особенного в структуре?
Чем уебищная?
>Artic Code Vault contributor
>Нуль полезных программ.
Паша, зачем тебе Гитхаб? Ты понимаешь что ты навечно унижен будущими поколениями историков, которые будут ухахатываться с wannabe-программистишки?
Просто я сам "ищу себя" так сказать. Хочу понять как ПРАВИЛЬНО писать чтобы быть как все, чтобы не засмеяли. И когда я вижу программу, которую можно в одном файле на 10 строках уместить, в таком как у тебя виде - в виде 20 файлов и 10 модулей, то у меня возникает легкое недопонимание. Я думаю что это я чего-то не знаю и не понимаю, может ты по умным книгам всё делал и там Жак Фреско поведал, что таков стандарт индустрии, надо вот так вот писать.
Название функции - стандарт, так геттекст имортируют. Название аргумента можно и поменять, но строка и так длинная, так что я не стал этого делать.
гитхаб без спросу это сделал. историки будут жалеть жертв слива из прошлого
хз
Это борьба с неточными вычислениями, что не так?
У меня сейчас другое на уме. Как сделать чтобы либа, которую я собираю через setuptools, включала файл i18n.json (с этим вроде разобрался, через data_files) и как его потом загрузить в коде? У меня один модуль, а не пакет, и подозреваю, что из-за этого все проблемы.
Теперь я понял, зачем нужен питон
Ты ведь здесь >>74072 (Del) всё равно косвенно устанавливаешь ограничение на точность вычисления, значит вместо этого можно просто использовать round, для этой же цели только быстрее и проще.
неадекват, я тебя в отдельном порядке это спросил. сука, закомплексованные долбоёбы неврастеники набежали
Может, насчёт уёбищной чувак и перегнул... Но отдельный файл под каждый метод... По 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
Ещё, например, я добавил бы шебанг обязательно: ты ж не в браузере запускаешь, а в системе,а её надо откуда-то знать, что в файле и чем его открыть.
И да, я не выкачивал, не тестировал и вообще не анализировал работу кода, я исхожу из того, что кодить рабочие вещи ты умеешь.
В общем, ты явно тянешь бесполезные (а местами и вредные) привычки из других языков. Но пиши дальше, хуже от этого не будет.
>>73982
> Но я до сих пор не понял, зачем мне нужен питон, если я знаю JS. Решил его выучить, только чтобы помочь с курсовой подруге
Ну, мне, например, Пайтон нравится тем, что это один из очень немногих по-настоящему универсальных языков, на которых можно написать вообще что угодно (наверное, второй такой это шарп, но у ж очень он вендовый). Тот же JS этим может похвастаться довольно условно. Ну и тут столько синтаксического сахара по сравнению с тем, что я учил раньше, что у меня того и гляди начнётся синтаксический диабет. Всё остальное - про идею языка, удобство как языка прототипирования и тому подобное, это как спор кита и слона.
Может, насчёт уёбищной чувак и перегнул... Но отдельный файл под каждый метод... По 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
Ещё, например, я добавил бы шебанг обязательно: ты ж не в браузере запускаешь, а в системе,а её надо откуда-то знать, что в файле и чем его открыть.
И да, я не выкачивал, не тестировал и вообще не анализировал работу кода, я исхожу из того, что кодить рабочие вещи ты умеешь.
В общем, ты явно тянешь бесполезные (а местами и вредные) привычки из других языков. Но пиши дальше, хуже от этого не будет.
>>73982
> Но я до сих пор не понял, зачем мне нужен питон, если я знаю JS. Решил его выучить, только чтобы помочь с курсовой подруге
Ну, мне, например, Пайтон нравится тем, что это один из очень немногих по-настоящему универсальных языков, на которых можно написать вообще что угодно (наверное, второй такой это шарп, но у ж очень он вендовый). Тот же JS этим может похвастаться довольно условно. Ну и тут столько синтаксического сахара по сравнению с тем, что я учил раньше, что у меня того и гляди начнётся синтаксический диабет. Всё остальное - про идею языка, удобство как языка прототипирования и тому подобное, это как спор кита и слона.
этот пепает
Это штатное поведение для чисел с плавающей точкой, повторяемое абсолютно везде, где 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С дробное число это некая сумма денег). Ну и, вроде, в Паскалях была фишка, позволявшая так определить тип, но я её быстро не вспомню.
В фортране ещё такое есть.
о, а подскажи, пожалуйста, нужно ли использовать asyncio:
5+ аккаунтов отправляют запросы пачками по 5 штук, при этом между пачками рандомные искусственные задержки, чтобы не триггерить флуд детектор сервера.
Я сначала юзал обычный цикл с таймерами, а сейчас хочу расшириться и заюзать asyncio. Но чет читаю книгу и начинаю думать что это "из танка по воробьям"
Заебись. Писатели pep8 будут вертеться в гробах. Есть расширение, которое знаменяет операторы питона на русские альтернативы. Будет: из sys доставить argv, класс, функ, для, в, и, вернуть и т.п.
Либ там не было, но может уже добавили.
Ну, в целом норм, глаз не рвёт. Немного непривычно только, да раскладку, поди, заёбывает переключать.
Вангую гигапроблемы с аской.
Можно, из исходников. Переделывать дохрена текста (лексичекие анализаторы) +учесть оптимизации логики (а она вся заточена под ASCII скорее всего) + переделать колпилятор + линкер )))
мимо писал когда-то компиляторы + интерпретаторы
Или лучше сразу делать в юнити? Я в юнити не шарю
возможно. На любом языке программирования.
вкатывайся сразу в юнити. велосипедить игры с нуля - это не для вкатывающихся, а для скучающих миддлов-сеньоров. на порядок сложнее, чем на движке
Логику можешь описывать на любом языке. Проблема фпсов исключительно в 3д графонии, который насаживают на эту логику.
Если хочешь игры делать не требовательные, то лучше наверное в С# вкатываться.
на питоне то тоже можно писать и даже не хиленькие игры, хоть и не графонистые, но C# позволит всё то же самое и даже больше. И ипаться как в С++ так же не надо.
Выбирая язык для игр стоит ориентироваться в первую очередь на движки, которые наиболее тебе подойдут.
На питоне в первую очередь с движками проблема. Поэтому возможно придётся очень много своих велосипедов изобретать и это настолько напряжно может быть, что проще было бы реально в С++ вкатиться.
Кроме юнити есть и куча других движков для инди игр, которые можно использовать.
Лучше сначала погуглить это тему, посмотреть какие языки эти движки используют и в них уже врываться.
Движок это как огромная библиотека, которая сильно тебе упрощает работу. Поэтому даже сложный низкоуровневый язык, но с хорошими движками будет использовать намного проще, чем более простой язык, но без оных.
Геймдев в принципе те ещё говнокодеры и ничего, с++ используют
> to the moon
Посмотрел. Если игра будет вся такая из квадратных анимированных спрайтов то думаю на pygame потянет.
numpy библиотека
чому шапка в треде проебалась?
Я видел такой код и он даже в целом бывает ничего... Но как-то...
Имена примитивов по-прежнему английские.
Некоторые переменные ("файлы_docx") даже внутри себя на разных языках... Вряд ли это упрощает работу.
> for строка in строки:
М-м... Вот тут возникает проблема, о которой я уже упоминал в отношении 1С, даже изначально на русском языке конструкция "новый строка" коробит.
Если на английском
> strings = f.readlines()
> for string in strings:
это почти нативный текст, но на русском это выглядит так:
> строки = ф.прочитатьстроки()
> для строка в строки:
Хотя нативно должно быть что-то типа:
> для строки в строках:
Что нереализуемо. Я вообще рад бил бы писать и читать всё на русском, очень рад. Но это будет коробить всегда.
>>75059
В принципе согласен, но только отчасти.
Читаемость всё-равно ограничена тем, что я упомянул выше, а переводить отдельные слова на английский и назад всё-равно приходится. Пусть даже ограничиваясь for, print и т.п.
Тогда список. И город хотя бы (можно предположить, что Мск, конечно).
Но вообще учиться кодить по книгам в 2023 противопоказано. Есть неминуемый лаг: книга написана, отредактирована, получены лицензии и согласия, книга переведена, отредактирована на русском, передана в печать, отпечатана, развезена по магазинам, попала на полки.
Так вот, между "книга написана" и "книга на полке" уже вышла 1-2 новые версии языка. А тут ещё и полежала у анона.
Единственное, что, наверное, актуально это официальная документация, которую авторы писали плюс-минус одновременно с интерпретатором.
>Я знаю что он медленный и будет мало фпс
Мдя.
Сразу: "медленнный" не означает именно "медленный", в 95% случаев это значит, что другая реализация будет быстрее, но это совершенно не связано с FPS. Потому что графикой будет заниматься Vulkan/Metal, а они рисуют быстро.
>смесь rpg как to the moon и визуальной новеллы
RPG-Maker тебе в помощь на самом деле. Хотя можешь и Ren'Py попробовать. Тут даже Unity2D это перебор.
>>75227
>на питоне то тоже можно писать и даже не хиленькие игры, хоть и не графонистые
Насколько я знаю, основной код нынешних Sims написан на Python. Ясен орган, что это про логику в core-части, а графон сделан отдельно и ничего. Сейчас не времена Кармака, никто не пишет графику сам.
>>75234
>Шарп/кресты для прикручивания 3д нужны.
Не нужны. Ты подключаешь либу и просишь её отрисовать графику, вызовы будут одни и те же для всех языков.
> >>> 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']]]
Или тебе надо что-=то ещё?
Можно пример приложения с кодом? Хотелось бы понять, как оно в жизни и где работает.
Например, можно ли написать мультиязычный Qt-гуй?
Есть несколько двумерных массивов разных размеров. Вот это нужно обьеденить в один большой трехмерный массив.
для работы с массивами нужно осваивать nunpy.
это во первых многое упрощает, во вторых гораздно быстрее, ибо nunpy на С работает
>>> x=2
>>> y=2
>>> arr1 = [['0' for i in range(x)] for j in range(y)]
>>> x=3
>>> y=4
>>> arr2 = [['0' for i in range(x)] for j in range(y)]
>>> arr=[]
>>> arr.append(arr1)
>>> arr.append(arr2)
>>> arr
[[['0', '0'], ['0', '0']], [['0', '0', '0'], ['0', '0', '0'], ['0', '0', '0'], ['0', '0', '0']]]
Такое? Возможно, можно написать лаконичнее.
Это изврат, не стоит таким заниматься. Курите nunpy.
Работа с массивами через стандартные методы питона это не просто крайне больно, но и крайней-крайне-крайне неэффективно.
Лучше потратить пол денька на чтение документации nunpy и просмотра видео и лишить себя этой головной боли раз и навсегда, не считая того, что её осваивать всё равно обязательно
Блядь, заебал.
Язык умеет дохуя всего искаропки и умеет удобно и безо всякого "курения". Если есть аргументы и код, давай их сюда, тогда будет, что обсуждать. А вот это вот "нитак делавете" безпруфное -- засунь себе в жопу.
https://proproprogs.ru/modules/numpy-obedinenie-i-razdelenie-massivov
>>76050
На питоне из под "коробки" массивов тупо нет. Списки эммулируют их работу, и эммулирают крайне неэффективно. nunpy это всё тот же питон из под коробки, которые добавляет в него именно, что массивы. Есть ещё модуль array.
И если кодить из под коробки на питоне, то он будет раз в 50-100 медленнее, чем С++
Если использовать модули типа нанпая и прочие, написанные на С,
то можно сократить оставание аж до в 5-10 раз медленнее
На втором скрине пример. Просто локализуемые строки оборачиваешь в _() и все.
>На питоне из под "коробки" массивов тупо нет. Списки эммулируют их работу, и эммулирают крайне неэффективно
Хоть понял шо сказал?
>И если кодить из под коробки на питоне, то он будет раз в 50-100 медленнее, чем С++
Это не совсем правда, только численных операций. Чем выше уровень того, с чем ты работаешь, тем меньше разница. А ещё есть numba и pypy, с pypy иногда питон-код может быстрее C/C++ в режиме -O3 стать. Реально. Но обычно чуть слабее.
Замерил, как быстро питон искаробочными решениями решает судоку 30×30.
> py sudoku.py 0,27s user 0,00s system 99% cpu 0,274 total
Четверть секунды. (12×12 за 0,040с) За это время происходит уйма всего, в числе прочего - неизбежный охуялиард проходов по всей таблице в разных направлениях. Визуально же это выглядит как почти мгновенно появившиеся после нажатия Enter две таблицы.
На самом деле я уверен, что переписывание на numpy в принципе ничего кроме геморроя не даст.
А, если, например, речь о бэкэнде, то вообще любые вычисления вообще -- спрячутся за сетевыми задержками.
Я за оптимизацию, но категорически против оптимизации и горожения огородов только ради оптимизации.
>судоку
Где решается этот судоку? В десктопном приложении на компе клиента или на сервере?
Если на сервере то какая там нагрузка (rps)?
все познается в сравнении
С нампаям намного проще работать на самом деле.
Переписать можно просто ради практики, что бы отработать nunpy.
Но там такие вещи как переворот массива, его разделение, нахождение данных допустим по диаганали решается намного проще и в плане кода, ну и влане скоростей на порядки выше
если в питоновском массиве пытаться найти чисто числа по координатам [2] условно, то это будет работать просто через жуткие костыли.
в numpay это [:,2]
И он из массива
0 1 2 3
4 5 6 7
8 9 0 1
быстро выпишет 260
Да, на питоне без импортов нет массива.
Создание матрицы через list хоть и можно использовать как массив, но это именно, что его эмуляция.
list в питоне это упорядоченная коллекция.
Они хороши, когда тебе что то туда нужно положить и после сверху же взять, тогда будут работать быстро. Но использовать их как массив это как крайне плохой эмулятор, когда у тебя игры на денди будут лагать на 4090
np.stack()
на пейчаре 5 элементов.
Имхо джангу ковыряй.
так там нету нихуя после точки, 125 в степени 1/3 это ровно 5.0, и еще плюс единица
Так поэтому блядь и ровно 5, потому что у тебя int, балбес.
Прибавь к полученному единицу и заверни в int.
Если после этого не поймёшь, то мы вам перезвоним.
float не является точным способом вычесления и у него всегда могут быть погрешности в 0.00000000000001
мало, могут оказывать сильное влияние на подобные коды.
У меня на пейчаре работает нормально и ровно 5.0, но у меня 3.10, а на сайте 3.6. С разными версиями могли внести правки.
Но с флоат всегда такие ошибки могут встречаться, это связанно с самим float при этом, а не языками
Никому, в сложное время живем.
С 3.9 вроде бы это исправили
Тебе надо алгоритм переписать полностью или закостыль раунд или сейл после инта int(round(expression))
> с беком думаю между джангой и fastapi
> по сути блог, там будет сайт с игрульками, то есть пост про игрульку, ее описание, ссылка на скачивание и тд
При таком выборе - Джанга. Полюбому. Можно ещё Фласк посмотреть в принципе, но для сайта-блога он плюшек не даст считай.
FastAPI даст выхлоп, если ты решишь добавить промежуточное звено и бэк отделить от клиента (в этом случае ты смог бы написать общий бэк и разных клиентов к нему, например, сайт и отдельно мобильное приложение). Но это усложнение на ровном месте.
В смысле чем её раннить?
Если так, то я в своё время сделал по манам из интернетов связку из supervisor и gunicorn и поместил их за nginx (nginx взял на себя SSL и статику), тогда это считалось эталоном. Но времени прошло немало, я тот проект уже давно не поддерживаю (хотя конфиги и связка сохранились, если надо).
Сейчас я пишу на FastAPI, запускаю его через uvicorn, который запихиваю в Docker, когда продукт будет готов к проду -- размещу его в serverless-облаке, пусть об остальном у облака голова болит.
Спасибо за инфу.
Было бы любопытно и полезно посмотреть, закинь, плиз, на почту creepy_
У меня есть идея для пет-проджекта - сделать прогу, сохраняющую сообщения с чата твича, после чего можно будет анализировать их.
Так как я полный нуб, то сложность составляет в т.ч. оптимизация рабочего процесса, в какой последовательности выполнять, чтобы вероятность перегореть от непоняток/бардака была минимальна.
Пока набросал для себя такой план (см. пикчу)
Будет ли норм, если что-то я буду подворовывать/подсматривать в других проектах, или лучше самому пытаться долбиться до конца?
toohadrd2you
Сначала наработай базу: dto, работа со списками (найти, скипнуть, сгруппировать, преобразовать), лямбды, исключения, форматы даты и времени (соберешь граблей), потоки, а потом уже лезь наверх (сеть, сериализация и тэпэ)
list1 = [1,2]
list2 = [lambda x: x+1 for x in list1]
Эта хуйня возвращает список функций лямбды. Как сделоть?
Разве x+1 без лямбды это не есть та самая лямбда, которая просто писать не надо? Так-то выходит, что ты вызываешь лямбду от лямбды
>>76545
Напрягая булки и пытаюсь ПОНЯТЬ лямбду, пока, как видите, не особо получается.
В данном случае я пихаю лямбду во все дырки какие могу вспомнить в целях обучения боем, так сказать, в данном случае я хотел чтобы лямбда мне прибавляла единичку к каждому значению из list1
Да это я уже делал, я думал в генераторе [] можно.
>>76552 (Del)
Ну ясно. Всё равно как вижу лямбду в чужом коде ловлю бсод ирл.
Ахуеть, оно живое.
По крайней мере на локалхосте, где всё тестировалось до деплоя.
https://goonlinetools.com/snapshot/code/#yrhp5stg5ujvnbitu41jom
С 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
Вынужден предупредить, что это всё прям ни разу не было обязано держать хайлоад, так что настройки уровня "норм работает". Потом его могли ещё тюнить админы.
list2 = [(lambda x: x+1)(x) for x in list1]
Рискну предположить что второй .filter делает отдельный join и соответственно перемножает декартово результаты первого фильтра второй раз.
А вообще можешь сам посмотреть SQL и не ебать жсоноукладчикам мозг.
>Ну ясно. Всё равно как вижу лямбду в чужом коде ловлю бсод ирл.
любая лямбда может быть выражена как def пук(аргументы_лямбды): return тело лямбды строчкой выше и использованием функции пук как переменной, где ожидается функция
Спасибо, няша. Как дома буду - обязательно посмотрю.
Да, добавлю. Команд для управления Jango, увы, не сохранилось, так что я не помню, как оно там что собирает.
Уехало это когда-то поднятое в таком виде, с тех пор я проекта в глаза не видел. Ни до, ни после Джангу не трогал, не пришлось.
В данном случае тебе нужно понять разницу между функцией и выражением. И что из них ожидает увидеть синтаксис в конкретном месте.
Даже ещё, разницу между определением функции и её вызовом.
Кстати, присоединюсь!
Меня давно и очень сильно интересует, накой они нужны. И видел уйму примеров и в целом понимаю, как они работают, но в моём коде их так ни разу и не появилось и причина тому - то, что я не понимаю, когда они дадут профит!
>>76588
Например, тут вместо лямбды ровно с тем же успехом можно было бы объявить обычную функцию. Да и понять бы, что оно делает было бы проще, я пока несколько раз не прогнал не понял, как это работает, что всегда недостаток, но для питона ещё и умножение на ноль его естественных преимуществ.
Они не нужны, но иногда удобно если функция короткая и ей нет смысла придумывать отдельное название. Типичный пример
sorted(dict.items(), key=lambda kv: -kv[1])
>накой они нужны
map reduce filter
В пистоне с 3.2(?) уже не особо нужны, когда компрехеншены добавили и самые популярные юзкейсы для редьюс, типа sum(). Редьюс после этого вообще в функтулс сослали.
> Лямбда это просто однострочная функция, ... , просто инструмент, который иногда может быть удобен.
>>76639
> Что бы не писать функции однострочные, захламляя им код.
Аноны, будьте так любезны, если не сложно, пришлите небольшой кусок более-менее продуктового кода, в котором вы использовали лямбды с пояснением, почему именно тут и именно так было сделать удобнее.
>>76634
>map reduce filter
Генераторы и итераторы понял давно, а вот с map и filter не всё так легко. Сделаю ещё один наскок... завтра же.
Работа с некоторыми фишками просто начинается с "Озарения".
Если не знаешь где их использовать и не чувствуешь, что они тебе необходимы, ну оставь пока-что. Если сейчас активно учишься, то всё равно есть лимит знаний который можешь переварить за определённое время.
Потом разок увидишь, что тут лучше лямбду использовать, потом у кого-то подсмотришь и увидешь, что он через лямбды реализовал твой алгоритм просто намного красивее и тут же придёт в голову где в своём коду их прописать. А так пока можешь запомнить как их использовать в map-freduce-filter и не париться дальше.
ну и в ключах ещё
>Меня давно и очень сильно интересует, накой они нужны.
в 97,5% случаев использую в качестве аргумента key для функции сортировки
> sorted(student_objects, key=lambda student: student.age) # sort by age
>Что бы не писать функции однострочные, захламляя им код.
проблема лямбд в том, что их очень любит кушоть сборщик мусора, и передавая куда-то лямбду часто вместо лямбды передаётся хуй за щеку
Просто бывают функции в стандартной библиотеке и в других местах, где одним из аргументов передается функция. Иногда эта функция очень простая и ее удобнее записать лямбдой. Можно не писать лямбдой, а придумать имя и написать def строкой выше. Это тупо вопрос форматирования кода.
эвент менеджер, регистрирующий коллбэки через weak references
events.subscribe('back', lambda: print('pook'))
лямбда удалится после выхода из events.subscribe
Так лямбда отработает в твоём примере, а анон просит пример в соответствии с твоим утверждением, что лямбда передаст хуй вместо отработки.
Хочешь в задротские игры поиграть?
Что значит "когда тебе что то туда нужно положить и после сверху же взять"? Если возьму "не сверху" будет плохо браться?
https://pastebin.com/3qz0p7Ge
Вот накидал хуйню с коллбеками, у меня при вызове показало все 4, включая ту которую я добавлял через отдельную функцию (TWO). Что сделать чтоб сборщик мусора ебнул лямбду?
> вызове показало в
Лямбда освобождает память после вызова. Ты в своём коде посмотри ID лямбд и покрути их в своём окружении, каждый раз новая ячейка памяти.
> Что сделать чтоб сборщик мусора ебнул лямбду?
например вот это:
https://www.online-python.com/hySUJr4PQI
Посоветуйте какой-нибудь интерпретатор адекватный под винду, чтобы в консольке к примеру автокомплишн работал. Я знаю что есть у красноглазиков много такого есть, но я то спермохлёб.
Суть в том что я очень часто пользуюсь консолькой чтобы проверить как что-то работает в питоне. Просто потому что мне лень пользоваться идешкой для такого и через консольку кажется что будет быстрее. Просто жму win+r -> cmd -> py -> в бой.
Но очень сильно не хватает автокомплишена. Хочу прямо в консольке интерактивной напрямую исследовать какие у меня опции есть для библиотеки к примеру, чтобы в идешке под это не создавать отдельный файл муторно. Вот чтобы я хотя бы методы мог посмотреть и их описание небольшое. Есть такое расширение под cmd?
Vim'ом не хочу пользоваться, он какой то ебанутый абсолютно. Я не знаю какой больной мудак придумывал ему хоткеи.
>weak references
А теперь попробуй без weak
Потому что в питоне всё построено на счётчиках ссылок. Если ты куда-то передаёшь лямбду, пока ты на неё можешь сослаться, то она существует в виде ссылки, соответствующий счётчик ненулевой, объект не может быть удалён.
Эта логика работает со всеми объектами вообще.
Если ты их хранишь в WeakSet разных, ты злой буратино. Weak объекты как раз для того, чтобы можно было удалить то, что в них хранится. Их специально так делали, чтобы память не текла.
Вкурсе про них, но вскод еще и запустить надо. Мне просто доставляет легковесную консольку открыть просто потому что моча в голову ударила, а не сидеть с вскодом открытым всегда даже когда я ничего не пишу. А если еще и какой-то проект у вскода был открыт до этого, то придется каждый раз ждать пока он прогрузится, venv, git, вся хуйня, в общем время займет.
И ещё вопрос: можно ли "одноразовый" venv использовать в питоне? К примеру я хочу затестить библиотеку, но не хочу создавать отдельную папку, накатывать venv туда, устанавливать внутрь эту библу. Но и глобально не хочу устанавливать. Есть ли инструмент для одноразовой установки и теста библиотек? К примеру чтобы с перезапуском консоли/компа все что ты накачал удалилось?
всё равно вскод
открываешь в чистой папке через контекстное меню проводника → креэйт энвайронмент (venv/conda) → терминал → pip install pooksrenk → new (python/notebook) file → играешься
это секунды делается
Тогда просто jupyter и запускай через локалхост и пусть висит, понадобится - поработаешь, не понадобится - выключится с комплуктером.
Я бы сделал мусорный тестовый venv через poetry. Активировал окружение, протестил либу, удалил либу и иди дрочи налево и направо. Очень странные вопросы.
Олсо погугли disposable venv, там ссылка на гит есть.
но я не сру на питон. но спасибо за ценный совет не использовать то, что мне нужно использовать
Я написал парсер на пайчарме , предварительно создав проект в Virtuallenv. Теперь мне необходимо запустить его вне пайчарма.
Сначала пробовал просто через установленный интерпретатор.
Потом попробовав запустить через консоль и увидел пикрил.
Почесав жёпу , я вспомнил что модули проектов Virtuallenv устанавливаются "локально" , для каждого проекта своя оболочка.
Пробовал ради интереса, закинуть в переменную PATH путь к библиотекам - ожидаемо соснул
Пробовал создать из файла екзешник - ожидаемо соснул x2
Так вот вопрос :
Неужели все Virtuallenv проекты можно запустить только через IDE? Или есть другой вариант?
P.S. Если только через IDE , то нахуй virtuallenv вообще нужен?
а если необходимо запустить через рабочий стол? Ну или через любое другое место на диске , не юзая консоль?
Ну так сделай ярлык или бат-файл, в нём пропиши базовый путь, активируй венв и запускай скрипт.
Вот допустим я сначала почистил записи в БД и пошел удалять файлы, но тут хуякс - и какая-то ошибка, очевидно я сделаю rollback на транзакцию и выйду. Либо можно сначала удалить файлы а потом идти удалять записи, но тогда как сделать rollback? Хер там. Как в принципе подобные задачи решать?
Ну да , разве что хотелось бы решить проблему с путями , типо когда скрипт через ярлык запускаешь , в командах надо указывать абсолютный путь ,а он на разных пк различается
Напиши скрипт, который будет искать твой путь.
У тебя первый вариант самый правильный, если атомарная транзакция по чистке записей отношения завершилась успешно, то тогда запускается скрипт по удалению файлов. Можешь временно перед удалением удаляемые пути заносить куда-нибудь в лист или дикт, чтобы по нему потом пройтись.
Есть таблица. Через микксин ListViewгенерируется станичка со списком данных записей, одно из значений поля я обрабатываю респонзами (поле ip) и накидываю в jinja через context.
Поймал себя на мысли, что я долбоеб, т.к. каждый заход на страницу со списком у меня response пробегает по всему полю ip и страница грузится от 10секунд. Что можно сделать, кроме очевидного расширения количества полей, анонсы?
О. Чувак освоил лямбды, но всё ещё не словил второго озарения программиста...
Первое, эйфорическое и весьма интимное, ловишь, когда "ух ты, компьютер исполняет мои приказы! Я написал и он сделал, что я прошу!!!"
А второе -- куда более печальное, когда понимаешь "Компьютер делает не то, что я хочу, а то, что я прошу... Оказывается, просить нужно правильно, а это сложно".
Есть print() и есть отладчик IPDB.
Отладчиком пользоваться так:
import ipdb; ipdb.set_trace()
Вставляешь эту строку в нужном месте в скрипт. Скрипт остановится в этом месте и выпадет в отладчик. Дальше можно смотреть локальные переменные и много чего еще.
Есть проект с виртуальной оболочкой и установленной в неё библиотеками. Заказчик не хочет устанавливать библиотеки через pip install -r requirements.txt , хочет чтобы все открывалось двумя щелчками. Так вот вопрос:
Как создать екзешник который сразу же запустит venv и скрипт?
Какого хуя? Я же просто беру данные из одного файла и помещаю их в другой. На каком этапе у меня потеря качества идет?
По идее метод save перекодирует. Ты же можешь вообще в любой формат сохранить.
С метаданными иначе работают, сейчас не скажу как.
>С метаданными иначе работают, сейчас не скажу как.
Как? Даже есть какие-то другие способы удалить метаданные, то тебе по итогу все равно надо будет сохранять изображение, которое пожмется.
https://www.codewars.com/kata/54e6533c92449cc251001667/train/python
Полное говно, даже если это работает.
я по названию функции и аргумента понимаю, что она делает. для меня это хороший код
абстрактный код часто нечитаем. а матан всякий еще нечитаемей
куда проще, когда код делает что-то конкретное. просто адекватно именуешь переменные, и сразу понятно, что делает код
так, падажжи! дерьмо код!
я думал, что он возвращает сиквенс уникальных значений в сиквенсе, сохраняя порядок (т.е. не тупо делает set(sequence))
тогда я бы назвал функцию как-то типа remove_repeating_items
Так эт специально, чтобы не бросалось в глаза. Я настолько параноик, что переживаю, что здесь могут сидеть разработчики которые еще больше окуклятся потом. Они недавно убрали апи.
Дам три варианта. Все три будут работать, даются в порядке увеличения всратости.
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 или что-то типа и прошёл второй способ (первый не подходил по арзитектуре: докер хуёво умеет в ).
Дам три варианта. Все три будут работать, даются в порядке увеличения всратости.
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 или что-то типа и прошёл второй способ (первый не подходил по арзитектуре: докер хуёво умеет в ).
Кажется, до меня дошло, что в ответе на последний get запрос приходит закодированный в base64 zip файл (пик1), который надо раскодировать. Я так понял, что это несложно. Вот только я не могу получить этот ответ таким же запросом в python. Ошибка 505. Пик2 - повторяю запрос в браузере, получаю файл в ответе. Пик3 - повторяю запрос в python - ошибка. Что я делаю не так?
500* фикс
Они почкованием размножаются.
Как-то так это делается...
В первую очередь не старайся решить как можно больше задач за одно и то же время. Лучше решить одну за несколько дней, попутно изучив поглубже смежный материал или даже различные библиотеки, которые подходят к тебе задания, чем попытаться как можно быстрее что то написать и отправить ответ.
Хотя, не, отбой. Как начал писать сразу же заметил в чём облажался. 0 вместо Y был
Алгоритм я понял на первый же. Два дня считай, исправлял "баги". Буквально там ноль вместо игрик, тут игрик с иксом надо переставить местами. Такие мелочи, а искать их офигеть как долго. Хотя за эти пару дней я в голове и лучше уложил алгоритм поиска проблемы в коде. Не стоит только ориентироваться на строку, которую выдаёт пайчарм
>>79634
Пора бы уже перекатывать
В недавнем времени освоил парсинг и написание ботов , думал немного поднять лаве на фрилансе. ХУЙ ТАМ ПЛАВАЛ СУКА.
ПОЧЕМУ БЛЯТЬ ТАК ТРУДНО ВЗЯТЬ ЗАКАЗ СУКА. И ДАЖЕ ПРОБЛЕМА НЕ В ТОМ ЧТО - БЫ ВЫПОЛНИТЬ.НИХУЯ.ЕГО ПРОСТО ТРУДНОНЕРЕАЛЬНО ВЗЯТЬ.Я БЛЯТЬ ОТКЛИКОВ 12 ОТПРАВИЛ.ЗАРЕГАЛСЯ НА 4 БИРЖАХ.ЗАПОЛНИЛ СУКА ПРОФИЛТ , ВСЕ ПО ГАЙДАМ , ОТКЛИК ТОЖЕ НОРМ ОСТАВЛЯЛ , ЦЕНУ ЗАКАЗАМ ДО 500 Р ВЫКРУЧИВАЛ И ВСЕ В ПУСТУЮ.ПИЗДЕЦ.
сори что не в тот тред ибо фриланс тред мертв
Дорогу осилит идущий.
Суть в чем, до замены людей этой хуйне еще далеко
chatGTP это именно, что замена гуглу. И пока что не очень даже.
Но сейчас он стал ещё хуже чем при запуске, его сильно понерфили, что бы он перестал быть расистом и учить делать бомбы, но это сказалось и на всей генерации в целом явно.
Ну а как этим заменить людей, с таким же успехом можно дать синьёру гугл и сказать, что он вместо джунов будет теперь. Но гуглом и так все пользуются. При это никаких физических сил не хватит, что бы этот код потом фиксить или поправлять, особенно, когда ты даже не можешь нормально спросить, что он этим говнокодом сделать хотел и где баги то искать.
Вполне вероятно, что подобные ИИ-помощники будут примерно там же где и летающие машины. В теории сделать можно, на практике это тупо из-за огромной растраты ресурсов, которая не оправдывает результат
Я не очень много вопросов практичных задавал. Очень хорошо и точно отвечает на часть вопросов, которые хрен нагуглишь. Но через раз несёт адский бред.
Причём может очень завуалированный бред нести, компилирует ведь из других ответов. В итоге ответит тебе как для одной технологии, но подставив в другую, где это уже совсем не работает.
Это в принципе непригодно для реальной разработки. Как только тебе надо делать что-то новое, а не гуглить сто раз написанное решение.
Некоторые ответы даже при кривом коде могут быть годными и лучше чем гугл. Потому что могут тебе быстро подсказать куда двигаться дальше и что лучше использовать. А там уже и загуглить можешь даже подробнее. Особенно, если сталкиваешься с задачей к которой не знаешь как подойти и даже как загуглить
Но это именно, когда учишься. При работе то такого быть уже не должно, ибо даже если джуну дадут работать над тем, что он не трогал ещё ему всё равно укажут где документацию и прочее курить
Бэмп.
Видимо правильно, уже не помню, но у меня есть симка иностранная. А почта gmail-российская
>При работе то такого быть уже не должно
Как раз постоянно при работе возникает что-нибудь.
Правда чат не может анализировать код, только мелкие примеры. А при работе, если тебе код надо анализировать, это здоровенные проекты. Тебе надо понять, почему какая-то херня в коде, зачем что-то делается, но это огромный объём, а ещё ИИ вообще не умеет понимать смысл. Ты никогда не получишь ответ "зачем что-то делается". В принципе текущая архитектура ИИ на это не способна.
Но зато система тебя может проконсультировать по каким-то сложным вопросам, плохо задокументированным. Причём ы формулируешь вопрос на нормальном языке. Конечно может и бред тебе ответить, но всё равно помощь.
В реальной работе тебе надо разобраться с тем, что надо сделать, зачем сделано так, как сделано, как можно реализовать, как состыковать с тем, что есть, какие проблемы будут из-за этого. Вот тут уровень, а не чтобы накодить какую-нибудь функцию. А это как раз то, к чему ИИ даже не прикасались ещё.
Боже, я наконец-то разобрался! Тупо моя невнимательность. Забыл добавить к имени файла его расширение в параметрах. Я в ахуе, у меня получилось
Рейтинг какой у аккаунтов? На биржах дроч на рейтинг. Ищи путь повысить рейтинг. Можно купить готовый акк с накрученным рейтингом. Предлагай работу за отзыв и рейтинг. Договаривайся со знакомыми, чтобы они размещали простые заказы, а ты их выполнял за символическую цену или бесплатно, а они тебе рейтинг за это.>>80032
без ссылки на рисовач в углу
>ЦЕНУ ЗАКАЗАМ ДО 500 Р ВЫКРУЧИВАЛ И ВСЕ В ПУСТУЮ
Вот здесь, думаю ошибка. Слишком низкая цена не привлекает, а отпугивает. Максимум ты абсолютно неадекватного заказчика найдёшь, который тебе ещё в минус рейтинг уведёт.
Если оптимизацией заниматься серьёзно, то наверное надо сделать ещё аккаунт заказчика, разместить заказ и самому его исполнить. Через друзей организовать, например. Потеряешь комиссию, но приобретёшь заказ, а ещё что-то про конкурентов узнаешь.
И не пытайся по 500 рублей исполнять заказы. Поставь цену, которая смотрится реальной, ну типа 5тр. Это тоже демпинг, но хотя бы для заказчика уже смотрится реальной суммой.
Просто человек смотрит так. У этого
А на каких сайтах можно посмотреть это?
Не хочется бросать основную работу, но как тренировку скилла\интересные задачки было бы круто посмотреть что требуется
Желательно без затрат)
В роутер залей.
на сервак залей , в инете полно бесплатных
Хочу по совету ОПа написать имиджборду (ну или другой сайт) , какой стек технологий для этого нужен. Прочитал что знания верстки и Django необходимы , но по мимо этого что то еще нужно?
ПК шумит слишком сильно. Меня устроит просто самый оптимальный вариант по соотношению цена/функционал. Просто не знаю какие оптимальные.
Ну так ты вводные дал такие, будто тебе надо крутить скрипты на своём ПК и данные сохранять на свой ПК. Нам за тебя архитектуру продумывать?
Скрипты могут крутиться удалённо, на своём серваке/на выделенном серваке/хероку/авс/я.клауд/етц, данные могут сохраняться на диск/в бд/в гуглшитс/в облако.
Реши, что тебе из этого надо и подумай, что надо сделать с твоими скриптами для реализации твоей задачи.
есть такое. есть колбаса за 250 рублей, но такую даже своей собаке стрёмно покупать
VPS купи. цена вопроса 3-4к в год
кулеры нормальные купи и скорость их работы настрой, если шумит
>но как тренировку скилла\интересные задачки
Будешь кодить незаконные или тупейшие вещи, от которых отказались или которые никому из контор не нужны.
1. Парсинг (незаконен)
2. Боты финпирамид
3. Боты продажи порнухи
4. Ебейшие идеи восьмиклассников с оплатой «ну когда твоя прога заработает мне миллион, я отстегну»
5. Боты продажи всякого говна, включая наркоту
Есть такое представление интуитивное, что на ФЛ есть рынок ботов для телеграма. Вполне легальных. Очень многие хотят себе сделать, бизнесу нужны, альтернатив нет. Как раз работа для фриланса.
Остальное всё либо сложно, либо не нужно.
Питон в любом случае хороший язык для обучения с нуля особенно. Потому что он с одной стороны очень простой, как раз для школьного уровня, но и достаточно глубоко с ним можно зайти при этом, не меняя язык.
В теории то написать можно что угодно, вопрос в производительности. Ну и нужно тебе будет это рмт, если нормально язык освоишь, что сможешь написать бота за которого тебя не забанят быстро
платят за указанную услугу . наеба нет. наебщиков быстро банят на рмт площадке.
Очень старый бизнес, но в последнее время туда набежало куча народа. Да и некоторые трудности ввиду ограничения платёжек для РФ. Ну и сезонное занятие побольше. В среднем лучше в пятёрочку идти и меньше заморочек, но под выход некоторых игр в начале можно было по 2-4 штуки баксов в месяц делать. Но сейчас и народа стало больше рмтшить, да и санкции. Так что оно того особо и не стоит уже в принципе.
С 1 по 3 пункты очень интересно!
Так где это найти? И кстати, а почему парсинг незаконен, че за бред. Я понимаю продажу говна с 5го пункта - это реально конч, а парсинг-то чем не угодил.
Анон хуйню просто написал, забей.
>а почему парсинг незаконен, че за бред.
С 1 марта 2021 года всё стало просто: чтобы законно собирать персональные данные из интернета, нужно получить согласие каждого человека, чьи данные собираются. То, что человек сам разместил свои данные в открытом доступе, больше не имеет значения.
https://habr.com/ru/post/544788/
https://xmldatafeed.com/zakon/
Ты чё полыхаешь-то, придурок? Пролапс в трусы выпал?
Вроде не должно
Поясните как правильно развиваться для поиска работы, ситуация такая что вкатываться надо куда получится, вот я заполняю резюме ссылками на свой репозиторий с разными проектиками, получается солянка, типо
-вот тырнет-магазин на джанге;
-вот бложик на фласке;
-вот телеграмм бот на фаст-апи;
и чувствую себя дурачком который никому не нужные проекты в стол дрочит, думаю лучше бы это время на дрочку алгоритмов потратил, подскажите как правильно поступить?
может написать туду лист который нахуй никому не нужен и на собесе пиздеть как ими пользуются все мои друзья?
вот если питон 4.0 выйдет, то тогда да
def func(arg:"foo"):
pass
Что вот это такое "arg:foo" ? Что оно делает?
Пробовал словарь передавать с ключом "foo", но это не оно.
это type annotation. подсказывает твоей IDE, что функция func ожидает arg с классом foo
> class Pook: ...
> def srenk(arg: Pook): ...
наличие кавычек означает type annotation forward reference. нужно для таких случаев:
тут тайп чекер ругается, потому что Pook еще не существует:
> def srenk(arg: Pook): ...
> class Pook: ...
forward reference это специальный костыль для этих случаев:
> def srenk(arg: "Pook"): ...
> class Pook: ...
Я делаю некие калькуляции и добавляю в эти ключи некие данные. Много много раз, тысчи раз в тысячах циклов.
НО редко случается такое, что ключа нет в словаре, примерно в 1-5% случаев.
И вот я думаю, каждый раз проверять в этом ООООГРОМНОМ словаре наличие ключа
1) if 'key' in "big_dic"
получится миллионы проверок в пустую т.к. ключ обычно есть
или
2) использовать try except.
Какой путь более питонический? Как правильно сделать по всем стандартам? Может быть есть ещё варианты? Вообще размер словаря влияет на скорость поиска ключа в нем или может в питоне работает какая-то бинарная магия которая делает этот процесс пренебрежительным для любого обьема ?
Отаночо, спасибо.
да всё используется, всё питонично. есть еще:
метод some_dict.get('pook', None), чтобы вместо ошибки вернулся второй аргумент (None)
defaultdict. вместо кей еррора сделает новую запись с чистым объектом указанного тобой типа
Имеет, случается, даже довольно часто. Из-за выпиливания depricated штук всяких в основном.
Да.
Плюс к этому господину - тоже хочется рмтшить, но как вкатиться в эту тему вообще непонятно
Хочу написать прогрумму, чтобы она определяла кругляшки, квадратики, треугольники и ещё несколько значков на экране, и тыкала по ним мышкой.
При запросе в гугле "питон распознавание обьектов" - он выдает однотипные ролики про распознавание лиц и номеров машин, с какими то заранее оттеринированными весами, или типа того.
Посоветуйте гайд или стотью в интернете или книгу, которая мне поможет в данном вопросе.
Заранее спасибо и с новым годом!
короче мне надо вот такие значки различать, как на пике.
Мне для этого надо YOLOv4 обучать собственным моделям или есть более простые варианты?
прив ребятки и девчатки.
Вопрос такой - как быть если удобно иметь в словаре какой-то not serializable объект, если периодически нужно дампать весь словарь в json?
Пока что приходится временно вынимать объект из словаря, дампать а потом вставлять обратно, но это пиздец костыли, хотелось бы чтобы json сам понимал что это не текст и что его можно просто пропустить.
Это копия, сохраненная 7 февраля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.