Вы видите копию треда, сохраненную 12 декабря 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2372998 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
Помогите, пожалуйста, понять где туплю.
>Возможно ли создать общий модуль? То есть если 2 программы его импортируют, одна что-то меняет внутри, то вторая это видит.
Если ты делаешь внутри одной программы, то есть когда два модуля импортируют другой, то именно так и происходит. Импорт идёт один раз, и у тебя полный доступ к этому модулю на запись. Это некая проблема для энтерпрайз-приложений, безопасность и всё такое.
Если две разные программы, то нельзя, потому что это два разных процесса, у каждого своё пространство памяти, друг к другу они доступа не имеют.
Ну и не понятно зачем это вообще надо.
> parser.add_argument('read_log', type=get_last_line)
type это не имя функции, а тип значения переменной, которую ты из командной строки получаешь. Вообще в доке есть пример того, что тебе надо, прикреплено
https://docs.python.org/3/howto/argparse.html#introducing-optional-arguments
Ты получаешь так значение, а потом в виде параметра передаёшь его в свою функцию.
Не пизди, на улице 12 градусов
Зато зимой вроде тепло, можно в труханах ходить, но лето пиздец. Либо другую хату искать, либо мини кондер брать, я хз.
Язык Программирования И Доставки Операцонно Рационализированных Алгоритмических Символов - 2022
Вот, точно, Питун хорошее название, патриотическое.
И вместо украинской желто-голубой символики нужны цвета триколора.
Так нормисы не сидят на дваче. У них свои пикабу, хабры и т.д.
Да... Да... Ты начинаешь понимать.
РосКод
Сходил чая попил, дописал костыль в виде слипа на 50мс и все стало ок. Больше костылей богу костылей!
Аноны, реквестирую ТГ каналы всяких сеньиоров , ультра компетентных людей, у которых подписчиков дай бог пару тысяч, очень хочу читать таких людей, а найти удалось лишь пару
Но ведь тебя не должно волновать что там у меня работает, что там нет, тебе че жалко поделиться хорошими авторами? Ну да, отчасти мне бы было тоже жалко
Да можно и в жсон хуйнуть, а потом записать в файл. но да, зачем, если для этого придумали бд?
Что бы твои высеры здесь не читать
Никакого. Все нормальные проекты не находятся в открытом доступе. А те что находятся написаны максимально убого
Так я и разбираюсь, пару дней назад начал
Оборачивать весь контекс обработкой ошибок.
Короче, пикрил пока самый норм вариант
Не надо закрывать файл, если используешь контекстный менеджер (with). Он это за тебя делает.
Боюсь там не только это. Там ведь ещё двойной цикл, и на каждой внутренней итерации он сначала читает файл с константным именем, а потом записывает в него же данные.
Короче полный ад, анон просто не понимает, что хочет, логику, которую хочет реализовать.
Тут всё хитрее. sqlite в данной задаче скорее не нужен, хотя всё зависит от объёма данных.
Я не понимаю, зачем ты на каждой итерации открываешь файл и перезаписываешь его. Тебе можно открыть файл один раз, или хотя бы открывать его во внешнем цикле, а потом ты просто обновляешь данные и сохраняешь этот файл с большим объёмом данных.
Если у тебя несколько процессов одновременно данные заполняют, тогда есть проблема синхронизации данных, но тут в любом варианте могут быть проблема, и в случае sqlite, к слову, тоже, тогда уже нормальная БД нужна.
sqlite давно перешел рубеж в 2 Тб на бд.
Это ктянет на джуна или хотя бы на стажера?
Вы ещё ос свою напишите.
Ваши пет проекты - хуйня подзаборная. На неё обратят внимание, если она будет приносить деньги, т.е, висеть на продакшене.
Все что нужно от джунов - исполнительность и не задавать тупые вопросы. Всё, вы работник месяца.
Ну и как? Нагибал всех?
Хай, Return возвращает кастомной значение функции Def.
По уебански он работает. Посмотри на условия ключей, значение и вывод из дикта.
Кучу ненужных движений делает и плодит мусор в памяти.
>>2376311 →
>>2375864 →
Вот у меня функция проверки активности, которая вызывается каждые N минут. Мне нужно хранить предыдущие значения для сравнения. Где как не в глобальных переменных?
Без сложных слов плиз, я полный нуб.
While loop и переменная внутри функции где есть луп. Хранить состояния вне функции, но внутри кода практика не очень хорошая. Если у тебя цикл, то while достаточно, если вызов по желанию левой пятки, то бд/файл.
Да ни в чём, это сойбои используют маленькие буквы. Норм поцы пишут только капсом
телега @kirastel
Ответили?
В общем, максимум - 500.
Омерзительно работает, никогда так не делай.
Если это допрос, я ничего не скажу
Какие-то ебанутые синтаксические конструкции для крайне редких кейсов использования, нон-стоп сует огромные коды в трех вариациях и под каждым пишет "но это хуйня, до изучения классов все равно полную картину не оценить", что вызывает какое-то внутреннее недовольство, учитывая, что классы он вынес аж во второй том.
Походу, пора передышку брать на практику и осмысление того, что уже узнал, но хотелось бегло сначала по всему курсу пробежаться, чтобы иметь представление о большей части кода.
Мимо новичочек
Есть объект io.BytesIO(), в который пишется картинка.
Эта картинка заливается в S3 через boto3 методом upload_fileobj. Метод закрывает объект .close() после того как отправляет картинку, а мне ещё нужно её по-процессить далее по коду. Ну и при попытке сделать с ним что нибудь я получаю любимую "valueerror: i/o operation on closed file".
Вижу в качестве решения только копию, но жопой чую есть решение покрасивше получше.
>А нахуя ты его закрываешь и что ты ожидаешь получить после этого?
метод upload_fileobj в boto3 закрывает объект после отправки.
А я его процессить дальше хочу
Очевидно, не используй фреймворк, который не подходит под твою задачу.
пиздец уёбищное решение, конечно, со стороны авторов фреймворка
boto3 очень странный и уебищный фреймворк. Лучше вообще не используй его.
Селери работает с ним. Когда очередь находится в aws и там висит условно 100 тасков, он каким то хером запрашивает их с некоторым интервалом в 0.3-1с. И нет, дело не в настройках селери, это именно бото странно обрабатывает запросы.
>>383884 (Del)
Решил проблему созданием копии объекта перед отправкой.
file = copy.copy(image_bytes)
s3.upload_fileobj(file)
Да костыльно, но что поделать
Согласен, надо поискать альтернативу. Мне только s3 нужен, boto3 оверкилл для такого, ещё и неудобный.
Есть меню из трех кнопок.
После нажатия add нужно обработать два входящих от пользователя два следующих сообщения двумя разными способами (записать в две переменные и внести в бд).
После нажатия del пользователю показывается что он может удалить и он пишет, что ему удалить (соответственно другое действие - удалить из бд)
Не совсем понимаю, что указать вместо pass, ведь обработчик сообщений от пользователя то один, а значит и варик тоже, через условия в обработчике вроде хуй распишешь. Возможно дико туплю, но объясни, плес
Взял minio, just works.
Лутца не читал, но слышал много хорошего про него. Думаю, что дело в том, что ты просто читаешь Лутца. А нужно не читать, а на читать и практике применять информацию. Генераторы просто контекст обратно возвращают, а так обычные функции. Я практически уверен, что ты не разобрался с обычными функциями еще
Обосрался
if call.data == "add":
----вызываешь функцию для add
elif call.data == "del":
----вызываешь функцию для del
....
в answer записываешь нужный текст.
В функциях может происходить все что нужно (редактироваться сообщение, меняться кнопки)
Спасибо, чет затупил.
Вопрос еще, как запоминать message.text от предыдущих сообщений?
допустим у меня цепочка запросов, в итоге все ответы должны пойти одной строкой в бд в одном запросе, но технически оно одним сообщением не отправляется. Конечно как варик юзать глобальную переменную, но это же хуйня решение если будет больше двух пользователей, не?
Не очень понял что именно тебе нужно, но такое чувство что тебе нужен класс, если не хочешь глобальную переменную. Либо вообще в редис это всё сохранять
if a == "one":
a = 1
if a == "two":
a = 2
....
или
a = {"one":1, "two":2...}.get(a,a)
Второй вариант выглядит удобнее, но кажется, первый быстрее. Как быть?
А. Самый тупой вариант - сделать дикт, в котором будет такая структура:
{
-----id_пользователя(берется из message): "собранная строка",
-----id_другого_пользователя: "другая собранная строка",
-----.....
}
И в принципе можешь делать этот дикт глобальным. Но лучше в классе это делать, конечно, особенно если планируешь делать бота большим. За счёт того что ты хранишь id пользователя - той проблемы которую ты написал не будет.
Первый ещё и памяти меньше ест.
И можно юзать elif, после первого if.
Но если памяти не жалко, и у тебя задача такая же как ты написал, можно дикт составить через enumerate
Да уж, удобно пиздец. Ладно, первый так первый.
все проще, можно передавать txt аргументом.
Для 100 записей тебе джейсонов за глаза хватит.
Для тестового варианта сделал так чтобы каждые 10 секунд новый лог создавался, но он мне PermissionError выдаёт. Типо если во время работы приложения таким образом подождать 10 секунд и залогировать что-то, то посылает нахуй. Я вообще не понимаю уже что делать.
Есть мысль обновлять логгер когда такая ошибка встречается, но это странно будет выглядеть, типо создать функцию-обертку которая будет принимать текст сообщения, типо writelog_debug(text: str) которая каждый раз внутри себя будет проверять на исключение PermissionError и в случае такого обновлять полностью логгер, так что-ли?
Была ли у вас похожая задача?
Да он мне говорит что используется logfile.log. Но какого хуя вообще, разве TimedRotatingFileHandler не должен следить за ротацией адекватной, как мне тогда закрыть его? Как-то перезапускать когда такая ошибка вылезает? Тогда обертку придется делать, я не знаю, адекватно ли это.
Не понял, а почему у тебя используется logfile.log? И каким образом создаются файлы с логами на скрине? Короче думаю у тебя в настройках ошибка. Я сам просто интересовался этой ротацией логов, но не пробовал. Думаю, что костыль писать будет плохо
Я ему явно указал шаблон и путь имени файла для которого будут создаваться логи разделенные по времени. Но такое ощущение что он тупо в logfile все подряд пишет а потом оттуда достает и по другим файлам таскает. Правда после того как 10 секунд пройдет он адекватно уже ничего не будет делать, конечно же. Шиза полная.
Дааа, непонятно как это работает. Нужно понять что оно там пытается переименовать, то есть там где бросается исключение. Попробуй принт поставить в этом файле перед rename
lib\logging\handlers.py
и вывести source и dest
уже есть один, аналог джава скрипта
source: D:\proj\python\example\logs\logfile.log, dest: D:\proj\python\example\logs\logfile.log.2022-06-20_18-41-00
Как и думал, сначала складирует в логфайл, потом по другим файлам тащит. Через 10 секунд он не закрывает файл что ли и пытается его второй раз открыть? Странная хуйня. Иначе почему такая ошибка.
>Как и думал, сначала складирует в логфайл, потом по другим файлам тащит.
В смысле? Он пишет в файл, имя которого ты указал, дальше переименовывает его согласно правилу которое ты указал. Но так как этот файл не закрыт, он не может его переименовать. Хз, как-то так наверное.
Я ща кстати на своём проекте всё-таки попытался запустить тоже такой логгер, только RotatingFileHandler, и с backupCount=5, так вот он всё пишет в один файл. То ли лыжи не едут, то ли я...
>os.rename(source, dest)
А, да, я даун, переименовывает. Но так даже хуже, наверное.
>только RotatingFileHandler
Попробуй ради интереса class=handlers.TimedRotatingFileHandler поставить с маленьким интервалом, любопытно как у тебя пройдет это.
Есть несортированная 3d матрица внутри которой будет помещен полуконус. Полуконус будет нарастать. Нужен алгоритм сортировки ячеек матрицы как показано на пикче. Извиняюсь, нарисовал как сумел.
Радиус полуконуса на любой высоте известен, угол тоже.
Ну вот задана некая точка с координатами которые располагаются в ячейке под номером один. С этой ячейки начинает "расти" полуконус. Он захватывает сначала ячейку #2 и #3, потом #4, #5, #6 и поднимается верхушкой на второй слой, захватывая ячейку #7 ну и т.д. На пикче я изобразил три слоя по оси z (высоте). Ячейки пронумерованы в порядке необходимой сортировки.
От угла полуконуса будет зависеть порядок сортировки ячеек в слоях. Типа если угол будет острее, то полуконус будет более плоский.
Хз, или я не отдупляю или у тебя условие малец кривое.
Найти расстояние от точки, центральной к матрице, которая осью является просто, если угол известен, это противолежащий катет, надеюсь шаг тебе известен и высота конуса для каждой итерации. Далее по расстоянию противолежащего катета, как я понял, это индескы матрицы, ты можешь отобрать все индексы, начиная хз откуда, пусть сверху, по уравнению окружности, в зависимости от индекса ты можешь определить, лежит ли ячейка с индексами x, y внутри радиуса.
Так ты получишь все ячейки, которые нужно отсортировать. Сортируешь, расставляешь и следующая итерация
Если в нумпае это делается в один вызов, то лучше пусть профильный кто-нибудь скажет
Не, наверно что-то не то. Слишком много вложенных циклов получается. Особенно определяя окружности от центра до радиуса
Ну json-ом, если ты про БД именно, потому что это не от Джанги больше зависит. Только если тебе по этим значениям не нужно фильтровать и т.д
Какая реальная задача стоит за этим полуконусом? Ты хочешь получить индекс ячейки матрицы при "подъеме" этого полуконуса?
У меня с этим хэндлером норм работает вроде. Как я понял, он пишет сначала в файл с именем которое ты указал, потом по истечении интервала, если были записаны логи, переименовывает его, подставляя суффикс. Так что проблемы реально у тебя. Посмотри всё вообще, где у тебя открыт файл logfile.log, попробуй вообще vscode закрыть и запустить из консоли.
И кстати, что делает опция delay=True? Документацию не читал. Я без этой опции запускал.
> Мамин борщ не вечен.
я у мамы охотник - так что всё норм котей =^-^=
эх, вот и пролетели 10 дней! что то я нихуя не отдохнул ебать, обычно через 4 дня безделия мозг отчаянно хватается за абсолютно любую хуйню, но щас чето домашние дела так прогружали качественно, что нихуя не почилил =(
ну делать нехуя, надо кумбекаться, страну кто то должен поднять с колен :э
как вы тут без меня выживали котятки :? кто куда вкотился, как чо вообще?)
>>2377172 →
> Типикал JS-ребенок
я датасаентист ты чорт охуевший
> играюче
показывай
> Не ври
пруф ми вронг
> Которая тащит за собой целый браузер блядь
допизды. нищюк плз, мое время дороже памяти
> нативные контролы ОС
уебищное индусскохуеглотское паскудство, каложоры должны иметь возможность прикоснуться к прекрасному.
Нужно построить модель рассыпания некоего материала. Для этого нужно заполнять ячейки матрицы как-то последовательно чтобы на каждом этапе получался правдоподобный полуконус.
В бд хранятся ячейки у которых есть объём. При очередной итерации насыпания я забираю из бд матрицу и пытаюсь досыпать в нужные ячейки материал. Для этого нужно их отсортировать предварительно (возможно есть какой-то другой способ где сортировка необязательна, но я пока не придумал) чтобы итерироваться по ним и заполнять материалом ячейку если она пустая.
Так вопрос как раз в том как эти ячейки отсортировать. А получить все ячейки которые пересекаются конусом это не проблема. Спасибо за помощь!
дестрашен модел на любой вкус уже давно все высрали и пересрали десятки раз
если ты чсвешный даун и хочешь изобретать велосипед - то иди нахуй, и не еби голову питоняшкам
которые максимально продуктивно и эффективно пиздят вел эстаблишд код, который вилизывали топчики годами да дохулиарды зелени
а тут ты пришол такой додик и решил зделоть лучшеее!))) нуну сука..
типичная низушная рашкоублюдская тема, где всех пиздорылых даунов с децва трахают крестами в помоешной стобальной шараге, и потом эта блядота кукарекает про зашквар от использования свободных наработок, а сама эта никчемная чмоня нихуя не может, нет амбиций, нет полета мысли, за свои обоссанные два мрота в убогом офисе за столом из опилок...
двачик есть вопрос по поводу Джанги
допустим я написал форму для добавления параллельных текстов с переводами все на js при отправке формируется json c отредактированными текстами и мапами с сответствиями оригинальных слов и переводами плюс мапы с переводами для отдельных слов. для шаблона
как мне теперь отправить из js скрипта все это на сервак на django? я не понимать пока
Какой хинт правильнее для неё указывать - None или NoReturn?
даун
Нихуя себе. С чего вдруг этого так разорвало. Что за бессвязная злобная хуита в ответ на безобидный пост.
потому что ты не пытаешься решить задачу, ты пытаешься подрочить и выебать питоняшкам голову (сука мразь)
я категорически против этого.
Да нет, я как раз пытаюсь решить очень конкретную задачу. И нет, я не занимаюсь 3d моделированием или играми, у меня веб-приложение на петоне. Мне не подойдут готовые инструменты вроде блендера или чего ты там предлагал, потому что как я их применю к своей ситуации? Потрошить код блендера чтобы выдрать оттуда алгоритм который занимается построением нужной мне 3d модели? Я слишком тупой для этого)
В жданге так же, как в любом другом веб-фреймворке - через html форму с помощью POST запроса (предпочтительный вариант).
https://docs.djangoproject.com/en/4.0/topics/forms/
я наверноее не так написал ну или я нубяра с нулевый уровнем да
это пронятно что post прото я не вдупляю как мне написать
так как я хочу передать данные не из полей формы а из переменной в js-скрипте я немного погуглил походу мне нужен ajax то есть я ввел в форму текст оригинала и перевод потом раскидал на них соответствия и у меня получился новый <p></p> в котором на каждое слово навешены span с id-шниками и мне нужно эту хрень отпраить в сервак чтобы он ее подставил в шаблон. но я хз как в этом случае делать тобишь я хочу передать сгенерированный html код для шаблона
> как я их применю к своей ситуации?
ты реально такой тупой?
> Я слишком тупой для этого)
тогда ладно)
отсутствие манямира и мужество чтобы быть честным перед самим собой и окружающими - достойно уважения.
я это кидал к тому что в графон и всякий датасаенс раздела computer vision - проще и нагляднее всего заходить через геймдев
и блендер ( ТОП ) идеально подходит для рнд и экспериментов, потому что вся апишка в нем питоняшная, и если очень захотеть его можно вытащить в рантайм
а потрошить код я тебе предлагал уеча)))) если пролезешь через их говноублюдский код на крестопаскудных макросах - то ты выйграешь.
однако ты все равно занимаешься хуйней, полуконусами сука никто не считает, очевидно поэтому ты и не можешь нагуглить код и спиздить, потому что во всем мире не нашлось второго такого же идиота...
и если у тебя есть сечения, то это уже 2д задача по работе с полукругом, ин эни кейс ц изи таск на вечер под ретбульчик и дарк днб
Пробую подключиться через ssh к своему локальному серверу, VS Code пишет, что удаленная система не поддерживает такое. На сервере Дебиан 11 без гуя.
о, шнобель вернулся. я уже думал, что ты умер от собачьего триппера
доебан очевидная хуета для даунов, чуть лучше говнобунты, ставь арчик или кентось ( а потом два дня ебись с ключами ыыы )
местный шиз, уже десять лет не может вкатиться в айти и поехал крышей на этой почве.
Блин, хрен его знает, но на мой нубский взгляд нужно смотреть на модель нормального распределения и как-то ее разворачивать в обратную сторону что ли. https://youtu.be/ay7tapOGVAg
Зачем мне твоя картинка, если она не несет абсолютно никакой полезной нагрузки?
> не несет абсолютно никакой полезной нагрузки
потому что ты слишком тупой чтобы понять информацию которую она несет
> Зачем
чтобы ты ощутил свою ничтожность и начал с этим что то самостоятельно делать, а не ждать пока тебе подотрут твое обосранное срачло аноны
>>385512
> большого разрешения
> 3440х1440
лол
тупой нищий додик - это минимально возможное разрешение для продуктивной работы без ущерба для здоровья
Дублирование поста из >>2385555 →
Интересно мнение с вашей колокольни
Сап. Есть всратая wifi сеть где из-за конченной настройки DHCP время от времени отлетает доступ в интернет. Фиксится перезагрузкой роутера на другом конце, но каждый ебучий раз лезть в него через браузер и всё вводить уже заебало. Давным-давно кодил на питоне и плюсах, но по работе ушел в дизайн и не вернулся. Хочу ебнуть скрипт, который сам, за меня, при потере интернета мог бы подключится к нужному IP, через нужный порт, ввести логин/пароль и дождавшись ответа "прокликать" web-интерейс роутера до заветной кнопочки "перезагрузить".
Как это сделать? Есть Python 3 / C++ и навыки джуна в обоих. Пишу в IDE и запускаю всё на винде (ибо работаю с Adobe).
Пока вот нашел, что нужно написать скрапер. Скорее всего, его будет проще сделать на Python, чем на плюсах. Но хуй знает, может в vstudio портировать библиотеки так же просто как пайчарме - анон подскажи, т.к. личные проекты у меня были лишь на питоне. Данные из скраппера нужно будет сопоставлять и в зависимости от них - запускать тот или иной сценарий действий (участок кода). Можно ли это ебануть на С++ для быстродействия? Не хотелось бы сливать 500мб ОЗУ просто на скриптик перезагрузочки роутерушки.
Алсо: можно ли без разборки прошивать роутеры и модемы? Интересует Tp Link WR-* и Eltex 1402G-W. Пока нашел только Openwrt, но мне не нужна целая ось на роутере. Просто пару скриптов дописать в прошивку, чтоб катки в рейтенге не сливать. Для этого надо открыть файлы прошивки, а вот это прям совсем новое для меня. Хз даже как гуглить.
Ротацию сетей запилить, чтоб в случае проблем с одной - сразу подключался к другой и танк не слился, пока хил ебётся со своим конченным интернетом.
p.s.
питонус, не разочаруй, на тебе же автопилот так ахуенно было писать
> отлетает доступ в интернет. Фиксится
покупкой микротика
можно было не высерать шизостену текста которую один хуй асилят только бесполезные душнилы..
я админю гостинку загородом, рыл 50 (может больше, лиаз лень смотреть) держит четыре микротика (три из которых с вафлей)
так что твои обиженные пиздорыло-додиковские предъявы не в кассу от слова совсем
лол, шнобель ещё и админом-сетевиком в 2018ом подрабатывал))))
реально и жнец, и чтец, и датасаентист, и игродел, и на хуе игрец
прочитай инструкцию к своему роутеру, если у него есть SSH или Telnet доступ, то будет проще перезагружать его из сосноли, чем городить браузерокликалку. гугли в сторону "python ssh expect" или "python telnet expect"
а если нету, то или покупай нормальный роутер (мокротык - не нормальный), или гугли в сторону "python selenium webdriver"
>22 SSH
>80 HTTP
>1900 upnp
Благодарю за ответ, анон. Если позволишь, хочу ещё пару деталей уточнить. Процесс авторизации через telnet/SSH такой-же как через веб? То есть в строку нужно будет вводить логин, разделитель, пароль? ...и только после этого можно будет накидывать команды.
Если из опций только web, что гуглить? Это скорее вариант на чёрный день, но я разными сетями пользовался и всякое бывало. Интересно изучить другие пути, хотя бы в теории.
А почему ты считаешь, что там кликалка нужна будет? Скорее всего кликать не надо, надо только авторизоваться одним запросом, а потом перезапустить другим. А парсить ничего не надо. Это я так предполагаю.
> Процесс авторизации через telnet/SSH такой-же как через веб? То есть в строку нужно будет вводить логин, разделитель, пароль?
примерно так, только намного проще, чем в вебе.
в случае telnet/SSH сервер выдаёт простые строки текста типа "Login:" (и это всё), а в случае веба высирает десятки-сотни килобайт HTML кода, который надо распарсить (например, вытащить из параметров формы CSRF куку, если есть)
для упрощения парсинга telnet/SSH есть либа expect.
> Если из опций только web, что гуглить?
> >гугли в сторону "python selenium webdriver"
это софтина для эмуляции действий юзера в браузере. то есть как раз для того, чтобы "открыть веб админку, ввести логин и пароль, открыть нужную страницу, нажать кнопку ребут"
> А почему ты считаешь, что там кликалка нужна будет? Скорее всего кликать не надо, надо только авторизоваться одним запросом, а потом перезапустить другим. А парсить ничего не надо. Это я так предполагаю.
я назвал Selenium "кликалкой" потому что он этим и занимается - "кликает" на кнопки, эмулируя дейтсвия юзера.
>пикрил
Мы не одинаковы
>это софтина для эмуляции действий юзера
Мне казалось могут быть более "изысканные" решения, которые можно было бы всунуть хоть в малинку, хоть в смартфон, хоть в контроллер. Какой-нибудь универсальный парсер который можно было бы просто подгонять под новые модели, дописывая в коде нужную часть, для новых прошивок или моделей. Но я уже нашел статью на хабре, где разбирают ssh вариант и там всё как ты и описал.
https://habr.com/ru/post/342194/
Разве что JS момент смутил. Но ведь хэш можно и питоном посчитать, для получения токена? Дальше прям в скрипте отправляем токен в запрос и всё должно перезагрузится. В случае проёба с хэшем, будет таймаут как при подключении в сеть? как это работает в WPA2
Selenium это и есть "универсальный парсер"
> ssh вариант
наркоман? это веб вариант, а не SSH.
хз что именно там за токен, не вникал, но подозреваю, что какой-нибудь аналог CSRF куки/токена.
помимо этого у особо умных роутеров для входа в в веб админку ещё и капчу с картинки ввести нужно, и вот именно из-за этих токенов и капч лучше пользоваться телнетом или ссш, ибо там всё намного проще.
> А почему ты считаешь, что там кликалка нужна будет? Скорее всего кликать не надо, надо только авторизоваться одним запросом, а потом перезапустить другим. А парсить ничего не надо. Это я так предполагаю.
вообще да, в древних роутерах можно было отправить два запроса - авторизоваться, выдрать куку из ответа, и вторым запросом отправить команду ребута.
но в современных роутерах там всякое яваскриптовое говно, для которого может понадобиться эмуляция браузера.
ошибся ссылкой
"Изысканные" решения это просто вызвать router.reboot()? А в чем "изысканность", если внутри такой либы будут стопицот строк кода под капризы всех рутеров?
Ну да, делаешь json из своих данных и передаёшь на бекенд ajax'ом
Например
https://stackoverflow.com/questions/10078085/how-to-send-multiple-data-with-ajax-jquery
Вместо "welcome.php" пишешь свой роут, на который будешь отправлять данные. Ну и на бекенде в жданге принимаешь по этому роуту свои данные и делаешь с ними что тебе нужно.
Универсальность. Волшебная кнопочка "сделать красиво так чтоб всё работало". Только за последние пол года меня приглашали фиксить всратые сети трижды. Причем, во второй раз было комбо из старенького Eltex и ебучего яблочного роутера. Благо, решить удалось иначе. До этого поднимал мост на двух тплинках, которые для этой роли не очень годились.
Был момент когда надо было перенастроить модем dhcp в нём, но документов с логином/паролем к нему не было, а от провайдера никто не приезжал, мол "работает - значит проблем нет, идитенахуй". Там приходилось его аппаратно перегружать и если он отрубался часа в 4 утра, приходилось ждать ещё 4 часа пока владелец проснётся, прочтёт инструкцию и сам всё сделает.
Крч это пиздец. Я хуй знает... До кали руки не доходят, а осваивать целую ось ради того, что делать можно скриптом - как-то не оч перспектива.
Проверь что всё правильно сделал по этому гайду
https://code.visualstudio.com/docs/remote/ssh
Чтоб была универсальность, надо чтоб роутеры были универсальными, а они всех цветов радуги
спасибо няша
Пошел нахуй, причем здесь питон?
Совсем пидорасы обленились на питоне и на сайт сваггера не могут зайти
Если можешь видеть, что инет крякнул, то скрипт можно затолкать в supervisor и при отвале инета он будет запускать твою кликалку.
тоже заметил замечательные картинки
Анон я вроде что-то написал для проверки, оно проходит, но не выводится. как мне понять, что я получаю то, что я отправляю?
пиздец ты долбоёб.
во-первых, GET-ом данные передают только мудаки
во-вторых, request.open("GET", url + data);
оффни свой шнобель, ты сам линукс чуть больше трёх лет используешь (и ещё не факт, что без винды в дуалбуте)
Я не согласен.
бля наебнулся немного
переправил все на POST все отправляется но в консоль не выводит. почему7
если POST тогда верни request.open("GET", url) как и было, вместо url+data
подозреваю, что надо раскомментировать строку с заголовком Content-Type form-urlencoded
я и не изменял сразу на post переставил
request.onreadystatechange норм срабатывает значит все ушло на сервер. но django нихрена не хочет отображать в консоли. значит я творю хуйню там
и ещё, насколько я понимаю, ты педоном выводишь переменную с названием "json_data", но в запросе таких переменных не передаёшь.
вместо неё у тебя там тупо шлётся строка данных без каких-либо названий.
попробуй
request.send( "json_data=" + "[{\"key\":\"hello\"}]" )
>request.send( "json_data=" + "[{\"key\":\"hello\"}]" )
не нихрена не помогает
бля я заебался уже третий день ебусь с этой хуйней
как я понял у меня не срабатывает функция на сервере. но почкму?
ты походу ослеп (и отупел) от ублюдской белой темы
Нет, стандартным плагином ВС подключаюсь. Ща по туториалу еще раз пройдусь, может там не все так очевидно.
Во-первых, забудь уже про XmlHttpRequest. В 2022 уже давно есть fetch https://learn.javascript.ru/fetch
Лучше будет если ты из консоли браузера будешь тестировать отправку запросов - так гораздо эффективней.
Во-вторых, отправляешь ты запрос на вьюху AddText, а принт у тебя в ShowText. Как оно по-твоему должно работать?
В-третьих, исключи пока из цепочки шаблон AddText.html (кстати, что там у тебя?). Пока просто принтом выводи в консоль то, что с клиента отправляешь.
По какому туториалу делаешь? На сайте джанги, надеюсь?
Для начала попробуй подключиться к своему серверу через консоль, не используя vscode вообще
ssh user@host:port
>Во-первых, забудь уже про XmlHttpRequest. В 2022 уже давно есть fetch
Гемора с использованием фетча в итоге будет на порядок больше, чем с xhr, а пользы никакой.
Асинк элементарно сделать и на базе xhr, 10 строк всего один раз написать.
Затем что у тебя сервис может не отвечать и это надо как-то контролировать.
По-моему буквально недавно уже были срачи на эту тему на этой доске, но в другой теме.
Но ведь сохраняющая функция тоже ничего не возвращает.
Получается в любом случае def save_smth(path, data) -> None: ?
Спасибо.
Посоветуйте, пожалуйста, книгу по алгоритмам. Пока прочитал статью на вики о сортировках, статью по big O notation, реализовал сортировки и хэшмапу.
По-проще взять что-то типа Шеня или сразу продвинутые книги типа Кормена и Elements of programming interviews in Python? Графы и матешу хорошо знаю, цель - в Яндекс/ФААНГ без проблем проходить алгоритмические секции, само собой практиковаться буду на литкоде, книга нужна чтоб въехать в основные объекты и методы.
>просто для читаемости
Это.
Придется кому-то еще твой говнокод ковырять, чтобы меньше вопросов было.
Но зачем, если нормальная иде сама показывает что она может вернуть?
>>386635 (Del)
Я уж подумал что он нужен для оптимизации работы. Для тайпчекера хз, у меня все функции однозначные, либо что-то, либо none. Обычно указываю тип когда возвращается какая-то конкретная модель. Для просты типов не пишу, но для параметров указываю тип всегда.
У меня проекты в среднем на 3к строк кода, делаю один. Смотреть и проверять никто не хочет, да и не может, питонистов нет. Работают и ладно.
Битбакет
Выведи принтом просто request.POST без get и прочей ебалы и посмотри что там у тебя.
Спосибо антоша я уже пофиксил. Надо было вместо post вынимать json из request.body
>Выведи принтом просто request.POST
Кстати эсти так делать там было что то типа: (query_хуйня ())
А вот body как раз json выдаёт
Короче немного въехал в эту залупу на полшышечки
С html-формами намного проще
Учусь этому вашему программированию и нуждаюсь в дельном совете, с меня как всегда
Есть одна тян функция пик 1. В ней цикл for выполняется 1 раз и закрывается пик 2. Если этот же цикл я достану из функции, то он будет работать и прогонит все 5 позиций (т.е. задаст вопросы 5 раз и запишет результаты) Как фиксить функцию?
У тебя questions = () - кортеж, который есть не изменяемый тип.
поэтому он и содержит только одно значение из твоего цикла
import random
import requests
class Question:
def __init__(self, q_text, difficulty, correct_answear):
self.q_text = q_text
self.difficulty = difficulty
self.correct_answear = correct_answear
self.q_asked = False
self.user_answear = None
self.points = 0
def get_point(self):
"""Возвращает int, количество баллов."""
difficulty_list = ["1/5", "2/5", "3/5", "4/5", "5/5"]
for point in difficulty_list:
if point == self.difficulty:
points = (self.points + int(point[0])) * 10
return points
def is_correct(self, user_answear):
"""Возвращает True, если ответ пользователя совпадает
с верным ответов иначе False.
"""
if user_answear == self.correct_answear:
return True
return False
def build_question(self):
"""Возвращает вопрос в понятном пользователю виде"""
return f"Вопрос: {self.q_text}\n Сложность: {self.difficulty}"
def build_feedback(self):
"""Возвращает верно или неверно отвечен вопрос"""
if self.is_correct(user_answear) is True:
return f"Ответ верный, получено {self.get_point()} баллов"
else:
return f"Ответ неверный, верный ответ - {self.correct_answear}"
response = requests.get('https://jsonkeeper.com/b/JZXI')
response = response.json()
random.shuffle(response)
def create_questions(response):
"""Создание и вывод списка questions"""
questions = []
for element in response:
q_text = element['q']
difficulty = element['d'] + "/5"
correct_answear = element['a']
questions.append(Question(q_text, difficulty, correct_answear))
return questions
def statistic(questions):
"""Запись и вывод статистики"""
summ_point = 0
summ_correct_answear = 0
if questions.is_correct(user_answear) is True:
summ_point += questions.get_point()
summ_correct_answear += 1
return summ_point, summ_correct_answear
questions = create_questions(response)
print(questions.build_question())
user_answear = input("Ответ:")
print(questions.build_feedback())
summ_point, summ_correct_answear = statistic(questions)
print("Вот и всё!")
print(f"Отвечено {summ_correct_answear} вопроса из {len(response)}")
print(f"Набрано баллов: {summ_point}")
import random
import requests
class Question:
def __init__(self, q_text, difficulty, correct_answear):
self.q_text = q_text
self.difficulty = difficulty
self.correct_answear = correct_answear
self.q_asked = False
self.user_answear = None
self.points = 0
def get_point(self):
"""Возвращает int, количество баллов."""
difficulty_list = ["1/5", "2/5", "3/5", "4/5", "5/5"]
for point in difficulty_list:
if point == self.difficulty:
points = (self.points + int(point[0])) * 10
return points
def is_correct(self, user_answear):
"""Возвращает True, если ответ пользователя совпадает
с верным ответов иначе False.
"""
if user_answear == self.correct_answear:
return True
return False
def build_question(self):
"""Возвращает вопрос в понятном пользователю виде"""
return f"Вопрос: {self.q_text}\n Сложность: {self.difficulty}"
def build_feedback(self):
"""Возвращает верно или неверно отвечен вопрос"""
if self.is_correct(user_answear) is True:
return f"Ответ верный, получено {self.get_point()} баллов"
else:
return f"Ответ неверный, верный ответ - {self.correct_answear}"
response = requests.get('https://jsonkeeper.com/b/JZXI')
response = response.json()
random.shuffle(response)
def create_questions(response):
"""Создание и вывод списка questions"""
questions = []
for element in response:
q_text = element['q']
difficulty = element['d'] + "/5"
correct_answear = element['a']
questions.append(Question(q_text, difficulty, correct_answear))
return questions
def statistic(questions):
"""Запись и вывод статистики"""
summ_point = 0
summ_correct_answear = 0
if questions.is_correct(user_answear) is True:
summ_point += questions.get_point()
summ_correct_answear += 1
return summ_point, summ_correct_answear
questions = create_questions(response)
print(questions.build_question())
user_answear = input("Ответ:")
print(questions.build_feedback())
summ_point, summ_correct_answear = statistic(questions)
print("Вот и всё!")
print(f"Отвечено {summ_correct_answear} вопроса из {len(response)}")
print(f"Набрано баллов: {summ_point}")
Отступы поехали
Попробовал через append хуйня пока получается
Если надо выйти из цикла пиши break или как там, если вызвать return нет возможности.
Работаит, пасеба
>>386930 (Del)
Да блять я месяц назад только ступил на этот тернистый путь, че ты начинаешь
>>386955
Все написано лично мной идите нахуй, а по поводу ныть, я до этого вечер убил на поиски решения без спрашивания советов, не помогло к сожалению
сохранил html вставки в базе данных но jinjia ебашит их в шаблон как текст. как фиксится?
понял нужно |safe
Вроде можно было как-то прямо в строчке коннекта к БД напрямую задать драйвер для коннекшна, например asyncpg, как это сделать тут скажем:
postgresql://postgres@localhost/test
?
Получить внимание конечно же. На подтираче любят маленькие конфочки, там легче всего внимание заиметь.
> Получить внимание
додиков которые не умеют гуглить?
постясь на дваче у тебя есть шанс поджечь жепку ленивой питоняшке и побудить её на жепной тяге ворваться в сложное дерьмо ради тестов и попытки уязвить поддержать спор с оппонентом
а в тг или дискорде это будет просто помойка и чят который смоет с экрана через минуту, и будет лишь мешать сосредоточиться
конфобляди хуже червя-пидора, не зря так говорят.
Аутентификацию запилил через middleware. Везде советуют напрямую в роут писать что-то типа:
token: HTTPAuthorizationCredentials = Depends(auth_scheme)
Но блять, нахуя мне это добавлят ьв каждый роут если у меня по дефолту это везде юзается?
Но с пермишнами пока не знаю че делать
Читайте уже доки наконец, а?
Не, это норм проходит. Я почему и хочу ИДЕ использовать, потому что заколебался с Вимом)
Работаю на виртуалке через ssh. Подключение изначально было через логин/пароль, потом сделал ключи.
Подключение идёт только по ip без порта.
В конфиге что-то вроде
Host 1.2.3.4
HostName 1.2.3.4
User root
IdentityFile sshkey
Если последнюю строку на писать, то будет просить пароль. Использую плагин remote ssh
sshkey это файл с rsa ключами. Туда можно несколько адресов прописать
Вызови его для начала из шела, так он наследует все переменные среды этого шела.
И закончился он тем, что сервер должен закрывать соединение при таймауте, а не клиент костылить это через вырвиглазные проперженные интерфейсы.
так в питоне слишком сложные регулярки надо писать для функции read_csv, она тупо валится на моих данных. Но в R я обнаружил набор удобных пакетов!
весь код на питоне на эту тему доступный в Гугле - полный отстой!
к сожалению, в R я знаю буквально азы.
Ну как так? почему количество не переходит в качество?
во-первых, перечитай сообщение.
в read_csv нужно написать обратную регулярку для разделителя.
Классическая схема, когда вставляешь ворованную из инета регулярку и в цикле читаешь файл - будет тормозить.
Кроме того, даже если получится, в read_csv engine='python' тормозит не меньше.
Просто какой-то масштабный датасаентиский фейл с энтим питоном
Регулярки сами по себе медленные
Вот допустим у меня есть лист, хочу его проверить а не пустой ли он? Нагуглил метод count или еще че-то, хер пойми что он возвращает, какой параметр на вход и тп. Я гуглю опять этот метод и на мутных сайтах разбираюсь.
Что я делаю не так? Где-то есть развёрнутая документация официальная.
Наверняка я занимаюсь залупой и гуглить как проверить лист на пустоту неправильно, а можно открыть где-то лист и посмотреть все его методы и свойства.
Допустим у тебя есть лист container.
>проверить а не пустой ли он
if container:
---print("ne pustoi")
или
if len(container) > 0/ if len(container):
---print("ne pustoi")
>посмотреть все его методы и свойства
dir(container)/dir(list) - если ты в консоли питона
>Где-то есть развёрнутая документация официальная.
Где-то есть. Возможно даже в шапке треда! У питона самая лучшая дока из всех языков.
Я это не пробовал, но вроде бы VSCode позволяет удалённый запуск, то есть ты работаешь примерно как с сетевой файловой системой, но всё-таки не совсем, то есть код на сервере запускается и всё такое.
Не пробовал и не изучал, как это работает.
>>387691
Собственно вот тут описание
https://code.visualstudio.com/docs/remote/ssh
но я не пробовал, хотя может стоит потратить время и научиться. Пока по привычке работаю через vim, когда так надо
Попробовал, просто элементарно запускается. Но это под линуксом, все ключи давно прописаны в authorized_keys и т.п.
Пизда просто, что за инвалиды. Иди паскаль учи, опездол
Книг по алгоритмам куча, поэтому тут главное не распыляться. Возьми одну - того же Шеня, например, и проработай основательно. Есть ещё такого же уровня книги Окулова (например, "Программирование в алгоритмах"). Кормен (~1500 стр.) в этом отношении - это скорее справочник (но дотошный). Параллельно решай задачки на литкоде и смотри в обсуждениях к задачам лучшие решения (там есть голосовалка). Авторы таких решений зачастую сопровождают их толковыми объяснениями. Можно многому научиться.
да видно что ты давно не занимался.
какой нормальный человек будет это писать в виде пет-проекта, если есть airflow и superset ?
абсолютно провальная в маркетинговом смысле идея.
Писать надо что-то востребованное.
Нет, без.
Работает отлично. Можно открывать папки как в обычном vscode. В окне виджета можно выбирать к кому подключаться, плюс сохраняет историю подключений по адресам и папкам.
> небольшой пет размять кости
> коко маркетинг кудахтах бизнесу ненужна это провал кокок
понял тебя дружище
Ну так-то он прав, такой пет будет иметь очень малую весомость. Смысл от того что ты будешь копировать чужие идеи и код.
>такой пет будет иметь очень малую весомость
Весомость для кого? Это в прод не поедет, в резюме не вставится. Просто сделать с нуля проект, продумать архитктуру, настроить CI/CD задеплоить на какой-нибудь сервак и забыть с чувством удовлетворения.
>Смысл от того что ты будешь копировать чужие идеи и код
Ты не разделяешь техническую реализацию и востребованную идею, мне только первое интересно.
душнила плз
Шаблон то может один (микросервисная залупа), но реализовать ее можно кучей разных способов, например, даже для RPC можно использовать различный протоколы и подходы к реализации и передаче моделей данных.
Люди просто запутались во всех этих залупах, уже наверняка все всё попробовали. Нужно просто выбрать самый оптимальный и не ебать друг другу мозги.
>Нужно просто выбрать самый оптимальный и не ебать друг другу мозги
Для этого нужно что бы программирование стало настоящей инженерной специальностью, а не как сейчас
мимо
Кое-как отыскал, почему VS Code не запускался. И это, блеать, потому что у меня на сервере стоит 32-битная версия Дебиан.
Спасибо, так и сделаю.
лол, я видел этот мост и уже тогда подумал какие же муриканцы тупые, но то что это на 100% тянский мост я не знал)))
> мамкины максималисты
это срет обиженный крестодаун, никто не дает ему переизобретать стрингу или гк за 300кнс как питоняшкам которые просто импортируют сишные либы и ебашут вещи.
>>388031
+++
На второго питона можно было перейти нщё в 2020, когда он окончательно стабилизировался.
А автокомплит работает? Code видит твой питон и виртуальное окружение на удаленном сервере?
Виджеты отдельно устанавливаются на виртуалку, выбираешь нужные, какие включить, а какие нет. Так что там работает всё.
Там кстати и виджет для докера работает исправно.
Че за интсрумент?
Но ведь так и происходит, практические везде где я работал с микросервисами пилили свои охуенные костыли для RPC поверх какого-нибудь протокола и свою костыльную сериализацию/десериализацию, один ебанутые даже через Postgres это сделали. Если сравнивать со схемотехикой, то ты действительно каждый раз пилишь свой транзистор потому что единого стандарта нет. Более того, материалов по запиливаюнию универсальных очередей тоже нихуя нет, в книжках каждый приносит свой личный опыт уровня "примерно почуствовал".
Важен тот факт, что они приняты как стандарт, благодаря которому ты можешь не писать еще один костыль, а пилить бизнес-логику. Строитель не должен изобретать свои марки бетона, а строить здание.
Они приняты потому что проект выстрелил, не более. Пару лет назад выкладывали твичевский говнокод, от которого даже джуны фейспалмы ловили. Он тоже должен быть стандартом?
> почему вы выбрали питон?
кек звучит как будто жёнку на всю жизнь выбираешь
продолжаю охуевать от здешних вкатунцов
Начал выбирать язык в 10-11 классе где-то, что бы в вузе уже что-то было к началу обучения. С жабой не сложилось потому что сразу пошел на джавараш и разочаровался когда узнал что он платный. С сишкой тоже были проблемы, так как была ебля с Visual Studio и код просто не запускался. Пистон был прост как палка и позволял быстро решать задачки в ЕГЭ. Так и продолжил, сейчас дополнительно ГО педалю еще.
>Почему ты считаешь, что я так считаю?
Потому что ты задаёшь такие вопросы.
Я вкатывался поздно, и знал уже 4 языка=) просто не работал программистом.
> Потому что ты задаёшь такие вопросы.
А не потому ли, что решил выпендриться 4 языками, пропустив мимо суть и контекст моего вопроса? :3
Так в итоге что? Вот ты вкатился, но сидишь в питон треде. Сейчас на работе какими языками/стеками пользуешься как основными? Если была возможность выбирать, то почему на этих остановился? Или как у тебя это происходит, новый проект - новый стек? кек Давай рассказывай, раз уж хвастаешься, чего как из жопы кота серпантин тянуть приходится.
Выбрал вначале потому что была вакансия и я был с ней поверхностно знаком. Как коммерческий язык в вебе.
А так я много чего пробовал. Си, плюсы, джаву, матлаб (работал), го, ну и вузовские типа делфи, паскаля и ассемблера. Так же языки плк, работал на них.
Вообще, хотелось бы работать на го, но с учетом опыта на питоне, придётся очень много наверстать, т.к на го нет такой гибкости, там всё делается однозначно по одному шаблону, плюс горутины работают по другому.
Джаву не хочу, тк слишком много ооп, не заходит такой стиль.
Но если надо будет в проекте освоить что-то новое - освою, куда деваться. А личные предпочтения вот такие.
Я не сижу в питон треде=) ток мимо проходил. Питун использую для скриптиков, кодогенерации и т.п., не как основной.
В работе приходится использовать Шарп, кресты, сишку, жс и кучу дсл, даже свой компилятор писал.
Доволен?
Есть проект Pyjion. Это JIT-компилятор, который компилирует код на Python в код, который исполняется на .NET 6, если кто не знает. Вопрос, можно ли с его помощью корректно скомпилить и запустить проект на Django?
https://www.trypyjion.com/
https://github.com/tonybaloney/pyjion
>Pyjion does not currently support "with" blocks.
>This is on the roadmap (and related to try..except).
Пчел...
Не работал с фастапи, думаю обосрусь с ходу
То есть, в одной функции все переменные в одном месте, а чтобы с этими переменными в разных функциях работать, нужно их передавать из одной функции в другую.
А на вопрос ответить?
Спасибо
Если какая-то строка кода выполняется только в одном месте, то смысла делать из неё функцию нет.
Если эта строка несёт в себе определённую логику, отдельную от логики соседних строк, то часто будет правильнее вынести её в отдельную функцию. Часто бывает такое, что в итоге эту строку нужно будет задействовать где-нибудь ещё
На самом деле замедляет. Вызов каждой функции создаёт отдельный фрейм со своим пространством имен и пистон не очень эффективно их менеджит, что хотят поправить в следующих релизах. С другой стороны, если в твоей программе такие задержки критичны, то лучше выбрать другой ЯП
Это называется абстракция, и это нормально. Все кто пишут что то против - дебилы, и работали только с laba1.cpp.
Все кто так делают - дауны с окр, которые всё по полочкам по порядочку ставят вместо того чтоб работать.
Каждую строку в функцию оберни ещё, чтоб стишок получился.
>Ещё раз. Если они больше нигде не используется и не планируется использование ни завтра, ни через сто лет, то выносить её за пределы в отдельную функции смысла нет.
Есть. Хотя бы для того, чтобы протестировать.
Что ж поделать, таков путь
>не планируется
а оно никогда не планируется, потому что то что планируется - сразу вынесено.
инструментом реюза является не столько вынесение кода в функции, сколько объявление этих функций публичными за пределами модуля
изначально же код выносится в функции ради большей выразительности. сюда относятся и названия, и сигнатуры функций. например
```
type Meter = int;
type SquareMeter = int; // для языков с номинативной типизацией
fn lenin_area(length Meter, width Meter) -> SquareMeter
{
length * width
}
fn format_lenin(area SquareMeter) -> String
{
"Найдена площадь Ленина: #{area} m2"
}
fn main(args)
{
print format_lenin(lenin_area(args.length, args.width));
}
```
У format_lenin и lenin_area - разные задачи, и они не смешиваются.
>не планируется
а оно никогда не планируется, потому что то что планируется - сразу вынесено.
инструментом реюза является не столько вынесение кода в функции, сколько объявление этих функций публичными за пределами модуля
изначально же код выносится в функции ради большей выразительности. сюда относятся и названия, и сигнатуры функций. например
```
type Meter = int;
type SquareMeter = int; // для языков с номинативной типизацией
fn lenin_area(length Meter, width Meter) -> SquareMeter
{
length * width
}
fn format_lenin(area SquareMeter) -> String
{
"Найдена площадь Ленина: #{area} m2"
}
fn main(args)
{
print format_lenin(lenin_area(args.length, args.width));
}
```
У format_lenin и lenin_area - разные задачи, и они не смешиваются.
Зависит от бизнес-требований
Ну бывает один сервис факапит очень редко. А второй факапит всегда из-за специфических параметров в запросе, например, он падает при запросе конкретного id, но это не критично. А для первого критично.
Разные обработчики им прикручивать? У меня он один, навороченный, повторные запросы при дисконнекте со стороны сервиса, правильная реакция при 429 и до кучи всего.
И ещё бывает что сервис фактически обработал запрос, но не даёт ответа, повторный запрос уже лучше не делать. Так что пока хз как.
Делаю запросы на кучу апи разной степени паршивости. Забить хер не прокатит, таймаут это не ошибка я думаю, по крайней мере с моей стороны. Лучше повторные сделаю.
Никак, потому что хуй ты формализируешь, что такое глагол. Это естественный язык, а не формальная грамматика. Хочешь разбирать русский язык на морфемы - либо изобретай свои эвристики и ешь говно, либо пользуйся сторонними либами типа pymorphy2
удваиваю
Как вы видите будущее в этой федерации?
Если не наладят поставку серверного б/у железа из китая - все очень плохо, как и для других высокоуровневых языков. Ценность железки станет выше стоимости человекочасов, как раньше и снова на первый план выйдут высокопроизводительные вещи типа плюсов или раста. Скорее всего полностью спрос удовлетворить даже при удачном исходе не удастся. Если нет планов переезжать и россиюшки, то на горизонте +5 лет при сохранении текущей линии партии питон не лучший выбор.
Если один фетч реквест, то тогда просто: if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
А если несколько фетчей разных? Заголовки какие-то придумывать или как?
Типа много будет работы для плюсовиков или растаманов. На родных 200 нм или тайваньских чипах до 25 мгц в целом много не построишь.
Зависит от будущего самой федерации. Если тут будет не сильно хуже, чем в Сомали, то и питон, наверное, будет.
А что с ним нет так? Это если МС уйдёт, то шарпистам не очень хорошо будет, вроде как потребность в стеке снижается. А питон на открытых технологиях.
Или ты тот анон, которого цвета шведского флага в лого возбуждают? Да всем похуй. Тем более все знают, что мы против сша-англии спецоперируем, а у них цвета флага бело-сине-красные.
Ты примитивно рисуешь все эти санкционные истории.
Для бытовой техники, бытовых ноутов, проблемы нет. Эта техника свободна будет доступна в любом случае, если не рассматривать сценарий Сомали-Ливии и других им подобных.
Проблема для топ железа, индустриального, для серверов, особенно для железа поддержки мобильной связи и т.п. Что просто так в магазине не купишь и не привезёшь.
Или там гугол-эпл могут отключить себя в федерации и все эти мобильные сервисы вроде такси, банков и др. перестанут существовать. Но их и сейчас не на питоне реализовывают.
>Слишком много жрет для железа, которое на весь золота будет
Это актуально только для хайлоад серверов. Для нетбуков с дешёвыми целеронами производительности уже с запасом под питон.
Я слушаю, что по РБК говорят, на Хабре пишут, что говорят во всяких конфах в тг. По РБК вот буквально только что сказали, что у нас не только американские и европейские фирмы уходят, но и Хуавей, только тихо и незаметно. И люди ищут возможность купить бу оборудование в Африке (передача была про операторов сотовой связи).
О каком IT будет идти речь, если у нас инет откатится хотя бы до уровня dial up эпохи?
>Для нетбуков с дешёвыми целеронами производительности уже с запасом под питон.
Ага, представил кластер из говноноутов на которых рутуб будет крутится.
С серверным железом уже проблемы, причем серьезные. Заплатить х2 за плюсовика уже выгоднее, чем докупить пару стоек в датацентре. Речь уже идет не о скорости разработки и выхода на рынок, а о самой окупаемости айти-отрасли.
О самом существовании отрасли.
Проблема для операторов мобильной связи есть. Потому что там очень специфичное железо, которое в магазинах не продаётся.
Но с процессорами такой проблемы нет, это куда более массовое железо, ликвидное.
Хуавей может тихо уходит, но пока его сетевое корпоративное оборудование в русских магазинах доступно, как и сиськи.
Если мобильный инет будет откатываться, то причём тут питор? Питон жрёт ресурсы сервера, а не ресурсы канала связи.
>Но с процессорами такой проблемы нет, это куда более массовое железо, ликвидное.
Пользовательское - да, серверное - нет.
Декоратор с пробросом аргументов функции?
>С серверным железом уже проблемы, причем серьезные.
Зашёл на сайты русских хостеров, что дают в аренду выделенные сервера. Цены очень даже низкие. Я не вижу, где проблемы. ПОКА проблем нет.
>Пользовательское - да, серверное - нет.
Обычные сервера это тоже довольно массовый сегмент, что продаётся в магазинах, купить и ввезти большой проблемы не составляет. Ну может будет в итоге 2x в цене, это не game change изменение.
Всё равно труд разработчика первичен. Или принципиальная возможность на железке что-то запустить.
Ты не путай проблемы мобильной отрасли и обычное железо, даже серверное. Оборудования для базовых станций в свободной продаже нет, всё на прямых контрактах.
Люди в целом будут потреблять меньше инета (за счет уменьшения моб трафика), меньше новых сервисов и меньше поддержка старых, меньше емкость рынка труда для прогеров. Хотя бы даже так грубо если смотреть.
functools.partial
Допустим, но причём тут питон?
Возможные проблемы с отраслью не ослабляют позиции питона относительно других языков.
>Обычные сервера это тоже довольно массовый сегмент, что продаётся в магазинах, купить и ввезти большой проблемы не составляет. Ну может будет в итоге 2x в цене, это не game change изменение
>>389957
>Возможные проблемы с отраслью не ослабляют позиции питона относительно других языков.
https://www.ixbt.com/news/2022/04/25/servery-kupit-nevozmozhno-dazhe-na-vtorichnom-rynke-krupnejshie-itkompanii-prosjat-pravitelstvo-rossii-najti-im.html
Железа УЖЕ нет, все, конец, доедаем остатки. Все что будет потреблять больше условных 10 мегабайтов оперативы пойдет в утиль. На этом фоне низкоуровневые языки будет на порядок предпочтительнее, чем питон, жс, жаба, шарп.
А тут уже речь не про Питон, а в целом про отрасль. Я думаю, что Питон не ослабнет хотя бы как скриптовый вспомогательный язык или что-то для тестирования. Детей опять же в школах учить и в кружках.
Так, а Раст под кем ходит в плане авторов языка? Чот не охота С и С++ учить.
Смотри сам сайты магазинов.
Купить сервер Dell сложно, переплата будет в 5-10 раз относительно цены в США. Это бренд. У них какой-нибудь R540 стоит условно 3000 долларов, у нас больше миллиона рублей просят.
Собрать стоечный вариант на базе SuperMicro, сколько помню нормальный бренд, уже какие-то адекватные деньги будет. Дороже, но адекватно. И некоторых других брендов.
Если ты завязан на Dell, тогда надо вот как-то проблему решать. Но это для крупных контор, где сотни-тысячи серверов, сервера в сложных локациях и т.п. Dell, насколько помню, расширенные фишки позволяет по удалённому управлению сервером. Но ХЗ, надо у тех, кто этим занимается, спрашивать.
питон в таких отраслях не используется. Условно тебя должны начинать беспокоить вопросы производительности, если ты не влезаешь в один сервер, в смысле питон-часть туда не влезает, но это уже очень крупные проекты должны быть.
Короче это второстепенная проблема на фоне массы других, которые есть.
>Короче это второстепенная проблема на фоне массы других, которые есть.
Ты про айти или вообще?
"Вообще" влияет и на айти, обещанная глубокая трансформация не может не задеть ИТ отрасль.
Но ХЗ как чего будет, нет смысла прогнозы строить вообще.
Как же хочется сейчас лежать на жопастой армянке и смотреть на красивые горы за окном, дышать горным воздухом, а не вот это все...
Даже ебучий Узбекистан с такими темпами будет более айтишным, чем РФ. Ну Казахстан точно.
>Условно тебя должны начинать беспокоить вопросы производительности, если ты не влезаешь в один сервер, в смысле питон-часть туда не влезает, но это уже очень крупные проекты должны быть.
Еще как используется в таких местах, сам работаю во вчерашнем стартапе, где питон нужен был для proof of concept и скоростной выкатки фич. Все уже выстрелило и сейчас часть сервисов переписываем на Go как раз по причине того, что покупка стойки для масштабирования выходит уж больно дорого. И это не Россия, а компания в ЕС, что тут будет мне в целом не хочется представлять.
И ходил по митапам когда жил в РФ, тут достаточно много крупных проектов использует питон как основной язык примерно по тем же причинам, сейчас все это посыпится из-за недостатка железа.
Если бы сразу хотели перфоманса и заботились о сохраности жезелок, то нашли бы плюсовиков, которые бы за x4 по времени сделали бы тоже самое.
Рынок был другой.
Короче жду тогда совета от анонов, какой сейчас язык самый норм в плане зп, сложности обучения и как раз вот этого оптимального использования ресурсов железа.
Выбор у нас только из Раста и Го, если уж совсем наследие предков в виде языков семейства С и Джавы не рассматривать - так?
>уже выстрелило и сейчас часть сервисов переписываем на Go как раз по причине того, что покупка стойки для масштабирования выходит уж больно дорого. И это не Россия, а компания в ЕС
А очень дорого это сколько?
Железо у них довольно дешёвое, а если арендовать у провайдеров, так вообще почти бесплатное.
Мне кажется, если не хватает вычислительных мощностей, то скорее косяк в архитектуре-проектировании. На чём конкретно сгорает производительность, был ли анализ этого? Горлышко из-за чего, на каких операциях?
Язык выбирают под задачи.
>Раста
Нет такого коммерчески востребованного языка программирования. По крайней мере ниша с питоном никак не пересекается вообще, ХЗ, может там конкуренция с Си за микроконтроллеры.
>Мне кажется, если не хватает вычислительных мощностей, то скорее косяк в архитектуре-проектировании. На чём конкретно сгорает производительность, был ли анализ этого? Горлышко из-за чего, на каких операциях?
Да анализ был, если грубо, то самое жирное это преобразование одних жсонов в другие с кучей правил, чуть матана и чуть сетевых нагрузок. И ускорение в виде замены дефолтных сериализаторв жсонов уже было и применение альтернативных интрепретаторов типа PyPy тоже и даже Cython тоже юзали очень ограниченная залупа к слову Ну не может питон конкрурировать по производительности с компелируемыми языками.
>>389998
>По крайней мере ниша с питоном никак не пересекается вообще
Это пока не пересекается, как только стоимость железа станет критичной для бизнеса, то все высокоуровневое вылетит на мороз, даже если говорить про условные CRUDы.
>Это пока не пересекается, как только стоимость железа станет критичной для бизнеса, то все высокоуровневое вылетит на мороз, даже если говорить про условные CRUDы.
Это какие-то наигранные домыслы.
Подавляющее большинство реальных задач не вылезает из одного сервера, один средний сервер может обслуживать очень-очень много клиентов. В смысле application server один, там условно БД или кеши разумно, что отдельно выносятся.
Проектов, где одновременно в онлайне сотни тысяч пользователей сидят очень и очень немного.
Потом именно на питон часть кода не самая большая нагрузка идёт. У тебя жрут внешние сервисы вроде БД, либо какие-то внешние либы.
Короче притянуто сильно.
>то самое жирное это преобразование одних жсонов в другие с кучей правил
Отдельный лол, как вот такие задачи придётся на го решать.
Нет, есть задачи для го, где питон просто сливает, но вот не здесь.
Питон крайне сильно жрет память, это было основной причиной, любой питонячий контейнер выглядит как в этой статье
https://medium.com/swlh/dog-fight-python-vs-golang-vs-rust-for-json-processing-33c1ffe15ab9
Смотри статью внимательнее.
Во-первых в ней наглядно показано, что производительность питона, раста и го на этой задаче примерно одинаковая, меньше чем в два раза разница. Причём для раста и го он использовал специальные оптимизированные библиотеки по работе с json, а на питоне стандартную. Хотя для питона есть более быстрые библиотеки на самом деле.
Второе, замер используемой оперативной памяти он не производил. На скрине размер докер-контейнера, что чуть другое. Причём не очень понятно, как он собирал. У меня стандартные докер-контейнеры питона около 900 мб (внутри контейнера даже компилятор gcc упаковали), но это виртуальный размер, надо помнить про докер, его слоистую структуру и т.п., реально слой питона занимает совсем немного.
Потребление оперативки будет очевидно больше, потому что в памяти интерпретатор. Но не такое большое, нужен всего один интерпретатор на процесс, а процессов не так много.
Не, я не спорю, что есть случаи, когда вот питон совсем не подходит, из-за производительности. Но это другие задачи. Как раз в задачах по обработке данных питон очень хорошо себя показывает и на другие платформы переходить совсем глупая затея.
>Потребление оперативки будет очевидно больше, потому что в памяти интерпретатор. Но не такое большое, нужен всего один интерпретатор на процесс, а процессов не так много.
Зависит от задачи, у нас на каждого кастомера свой процесс для обеспечения отказаустойчивости и применения своих правил для отдачи жсонов (и от каждого кастомера куча запросов от пользователей), а ещё они имеют свой внутренний стейт и размер питонячьих объектов сильно проигрывает тем же данным, которые описываются в Go, в итоге эта часть проекта начала жрать абсолютно неадекватное количество оперативки.
ты когда файл на запись открываешь в режиме 'w', у тебя все удаляется. Используй 'a'. Если и читать хочешь, тогда плюсик добавь 'a+'
харкачую этого.
чтобы нагрузить даже сраный Xeon v3 десятилетней давности, нужно очень сильно постараться или быть выпускником курсов гикбрейнс
в большинстве задач основная нагрузка в сервере на I/O, а не на проц/оперативу.
У того анона max({sp}), а не max({sp}). В первом случае, если в sp есть повторяющиеся символы, область поиска для будет меньше. Правда, для распаковки всё равно придётся итерировать через всю строку, но видимо BUILD_SET_UNPACK работает довольно резво, что даёт небольшой выигрыш.
https://ideone.com/o07YwB
Спасибо, тогда ещё вопрос, в pymorphy2 можно парсить предложениями? Или только по словам? А то на всех сайтах что встречаю описывается установка и парсинг одного слова
А что ты собрался парсить? Нужно сплитать слова и каждое по отдельности проверять
Как уже написал другой анон, естественные языки формальной грамматикой не опишешь. К тому же из-за омонимов есть сильная контекстная зависимость -- отдельно взятое слово может быть как глаголом так и другой частью речи ("пасть", "печь", "мой", "рой", "три" и т.п.)
Кобра и точка
Анонсы, как перенести либы из одного интерпретатора в другой?
>пикрил
Есть ли конфа в тележке для мелких вопросов? У меня хуёвый интернет и капча часто вообще не грузится.
Можно через
pip freeze > some_file.txt
из одной репы сохранить все зависимости
а потом в другой репе
pip install -r some_file.txt
Хотя если подходить ответственно, то надо руками составлять, а не через freeze
причем bankers rounding? вообще мимо же
>>390375
а хули 4 должно быть? не понял логику.
5%2 = 1 (2 2 = 4, 5 - 4 = 1)
2%5 = 2 (5 0 = 0, 2 - 0 = 2)
надеюсь логика понятна, т.о. каждый раз когда у % знаменатель больше делимого получаем делимое т.к. целую часть там выделить нельзя и все идет в остаток.
а еще можно съехать со спермы индуса, которая постоянно забивает весь канал своими зондами
и поставить вскод, который просто охуенно работает, и если что по нему изи нагуглить любую хуйню, в отличии от этого убогово куска говнища
У этого чела ещё было одно слово, которое он так произнёс что меня аж передёрнуло
Я ЛАКЕЦ, КСТА
Есть dataclass с несколькими полями, у всех есть дефолтные знчения. Я при инициализации класса заполняю часть полей. Вопрос:
Подскажите, есть ли какой-нибудь элегантный, некостыльный метод для того, чтобы при дальнейшей работе с экземпляром датакласса определить, какие поля имеют недефолтное значение, чтобы потом пройтись по ним итеративно?
есть
Я к тому что люди сразу лезут с вопросом, вместо того чтоб сначала найти решение своими силами.
Вышка нинужна, ага, там как раз этому и учат: правильно составить задачу, т.к она уже содержит в себе половину решения.
>Вышка нинужна, ага, там как раз этому и учат: правильно составить задачу, т.к она уже содержит в себе половину решения.
Там не учат этому
мимо с вышкой
>Учат самостоятельно изучать материал
Ты учишь материал самостоятельно только если препод не умеет его доносить, что уже говорит о шаражном уровне, у тех кто умеет хватает конспектов и семинаров.
>искать решения нетривиальных задач.
Большинство задач в ВУЗе абсолютно тривиальные
Ответственность за интерпретацию знаний лежит на ученике. Каким бы учитель не был психологом, он объяснит лишь свою точку зрения, ввиду ограничений языка и возможностей на визуальную передачу знаний.
Если бы ученики копировали своих учителей, никакого прогресса бы не было.
Всем привет
Хочу немного держать мозг в тонусе, посоветуйте какие-то сайты, на которых есть задачи на питон с ответами для самопроверки. Наверное, в идеале даже с каким-то объяснением
Гугл выдавал мне подборки таких сайтов, даже на хабре была такая и не одна, но мало ли местные аноны могут посоветовать что-то конкретное, спалят годноту, так сказать.
Степик, Коедварс.
сисярпа не хватает
pythontutor.ru, algoprog.ru
>Ответственность за интерпретацию знаний лежит на ученике
Если бы это было так, то достаточно было бы раздать всем Зорича и отпустить по домам до начала сессии, а нет, зачем-то проводят лекции и семинары.
>Каким бы учитель не был психологом, он объяснит лишь свою точку зрения, ввиду ограничений языка и возможностей на визуальную передачу знаний.
Если одни учителя могут объяснить одну и ту же тему, а другие нет, значит те, кто не могут объяснить это хуевые учителя. Собственно, у нас вела курс линала одна преподша, которая объясняла как для дебилов и у нее все всё понимали и грантоед на дискретке, который в рот ебал преподавание и объяснял все так будто мы уже аспиранты и весь поток потом смотрел на ютубе отдельные лекции на по теме, что бы хоть что-то выяснить.
>Если бы ученики копировали своих учителей, никакого прогресса бы не было.
Это хорошо, когда речь идет о авангардных темах, а не стабильной базе на бакалавриате.
мимо анон
Одна из целей обучения в том, чтобы понять логику предмета, как там устроено, как работает, подходы к решению задач, подходы к доказательствам и т.п.
Предметы разные и логика у них разная.
Вот это довольно серьёзно прокачивает мозги, потому что вырабатываются разные паттерны решения задач, понимание всего и вся и т.п.
В программировании и CS аналогичная логика работает. Ты изучаешь алгоритмы, разные языки программирования, разные технологии, изучаешь, как реализованы разные проекты и как там проблемы решаются, и уже сам в состоянии придумывать разные варианты, понимая плюсы и минусы.
Почти дочитал "Укус Питона" на инглише. Есть что-то почитать, чтобы сразу правильно поставить мозги в направлении => написание кода сразу с юнит-тестами (судя по книге "тестирование в Гугл", это промышленный стандарт)?
Мне кажется, для QA будет грамотно увидеть работу с POV программиста, да и интересует меня развитие в области, поэтому автоматизация, поэтому питон (и машин лёрнинг с биг датой тоже привлекают).
Пацаны, объясните вкатуну, модные ssr фреймворки типа некста, нукста, свелт кит потеснят джангу или это фреймворки, решающие разные проблемы?
Суть: Есть старенький новут, решил на него накатить линух, и таскать на работу- изучать питоний. Решил написать бота в телегу. Но данный скрипт не хочет запускаться на этом ноуте.
Скрин ошибок прикрепил.
В чем, сопсна, вопрос: что это может быть? система 32, всякие пителеграмапибот пип вроде как поставил. Сам скрипт на других машинах завелся, что под виндой, что под линухом, единственное отличие- там 64 бита стоят системы. Я просто не знаю с чем это еще связать.
>В программировании и CS аналогичная логика работает. Ты изучаешь алгоритмы, разные языки программирования, разные технологии, изучаешь, как реализованы разные проекты и как там проблемы решаются, и уже сам в состоянии придумывать разные варианты, понимая плюсы и минусы.
Все это изучается на очень посредственном уровне, ты толком не щупаешь технологию, а максимум сдаешь лабу по ней. Для такого уровня достаточно квик старт/туториал из документации пройти. Да и в целом выбор технологий очень ограничен и действительно нужные вещи типа брокеров сообщений или ведение своего проекта хотя-бы год с периодическими проверками полностью отсуствует.
Задача учителя в вузе - дать краткий обзор имеющихся знаний и пояснять некоторые неочевидные моменты.
Если ученику надо всё разжевывать до самых мелочей, то он рано пришёл в вуз и ему бы школьную программу освоить. В школе как раз ведут воспитательную работу и школьные учителя должны всё разжевать. В вузе учителя же другие.
>Задача учителя в вузе - дать краткий обзор имеющихся знаний и пояснять некоторые неочевидные моменты.
И в итоге получаем людей, которые не могут устроится даже на начальные позиции в местах, которые требуют указанную специальности. напоминаю, что именно в этом суть бакалавриата, которого у нас на самом деле никогда не было в том виде, в котором он задумывался "Учение учиться" это отмазка преподаветельского состава, который не может дать необходимые компетенции и при этом хочет отправить отчет в МинОбр о том, что выпустило на рынок столько-то качественных специалистов.
>Если ученику надо всё разжевывать до самых мелочей, то он рано пришёл в вуз и ему бы школьную программу освоить.
ЕГЭ сдано, аттестат есть, все, больше ничего не требуется. Если преподаватель не может объяснить свою тему на базе имеющейся стандартизированной школьной программой, то преподаватель говно.
В математических ВУЗах ты логику науки постигаешь на куче разных предметов.
С технологиями в универах уже хуже, однако у физтехов и это есть, есть куча видео курсов оттуда, и все эти MQ, виртуализация и прочая хрень.
>>392002
>напоминаю, что именно в этом суть бакалавриата
В этом суть колледжа, а не бакалавриата.
>Если преподаватель не может объяснить свою тему на базе имеющейся стандартизированной школьной программой, то преподаватель говно.
Здесь согласен. Преподавателю надо суть своего предмета донести, его логику. Если он не может, значит он со своей работой не справляется и он просто не нужен. А книжки можно и без преподавателя читать.
>В математических ВУЗах ты логику науки постигаешь на куче разных предметов.
Я читал программы мехмата и ВШЭ и МГУ, там "куча разных предметов" заканчивается на поверхностном программировании и физике. Сама математика как язык науки абсолютно бесполезна без прикладных дисциплин (если не говорить про дальшенее окукливание в акадамической среде) в которых эта самая математика в программах вузов отвратительно интегрированна.
>В этом суть колледжа, а не бакалавриата.
Нет, именно бакалавриата, причем сами ВУЗы в брошурах любят указать про успешность выпусников на рынке труда. Одна из целей болонского процесса это ориентация квалификаций на рынок труда. Считать ВО вещью в себе с непонятными критериями успешности - скатывать массовое образование в полное говно. Наука начинается с только с аспирантуры и иногда с магистрататуры.
Университеты всегда были ориентированы на то, чтобы повышать базу учеников, а не на конкретные практические знания. Общий принцип такой, что ты формируешь крутого чела, с мозгами, способного учиться, с широким кругозором, пониманием и наук, и технологий, а уж с этим бэкграундом он потом может заниматься чем надо.
А непосредственно прикладными вещами занимаются учебные заведения попроще, колледжи.
И такая схема везде. Это в СССР пытались делать образование более прикладным, готовить специалистов. В итоге столкнулись с тем, что в тех местах, где упор шёл на практическую специальность, очень страдало и качество образования, и сама специальность не соответствовала реальным запросам, потому что устаревание учебных планов-технологий и много другого.
В то время как выпускники универов, серьёзных, где не такая сильная прикладная часть, были куда более успешны, и у нас, и на экспорт.
>Я читал программы мехмата и ВШЭ и МГУ, там "куча разных предметов" заканчивается на поверхностном программировании и физике
В базовой программе много вычислительного на самом деле, но очень далёкого от индустрии, всё-таки вся прикладная математика, сеточные методы эти и т.п. мало нужны, если ты только конкретной вычислительной наукой не занимаешься. А в прикладных сферах тебе уже надо с готовыми пакетами-библиотеками работать, всё уже написано. Но там есть и общие алгоритмы всякие. А ещё есть дополнительные спецкурсы по выбору, и там довольно много чего.
Возможно меньше, чем надо для настоящего CS спеца, но оно есть.
>Университеты всегда были ориентированы на то, чтобы повышать базу учеников, а не на конкретные практические знания. Общий принцип такой, что ты формируешь крутого чела, с мозгами, способного учиться, с широким кругозором, пониманием и наук, и технологий, а уж с этим бэкграундом он потом может заниматься чем надо.
Это неправда, есть замечательный пример, медвузы. Работают и на базу и на практические навыки, при этом выпуская готовых специалистов для работы. Хирургу или стоматологу ты не скажешь, что ему не нужна прикладная релевантная практика. Так и должно быть с другими специальностями.
С медиками сложнее. У них на самом деле довольно приличная фундаменталка идёт по очень широкому спектру, поэтому они очень долго учатся. Сначала фундаменталка, потом уже уход в специальность. Причём практика идёт не в ВУЗе, а после вуза, ординатуры разные. Ты сам посмотри программы медицинских ВУЗов, какой объём там предметов.
Это и наша практика, и западная.
Примерно аналогично должно быть и в другом образовании. Сначала общие вещи, фундаментальные, широким фронтом, а потом, когда общий уровень уже есть, тогда специальность.
Проблема в том, что в школе знаний слишком мало даётся, не готовы ни ученики, ни средний уровень школ не позволяет обычно. Недостаточный уровень, чтобы быть каким-то мало-мальски адекватным специалистом.
Пытаюсь вот вкатываться в этот ваш путхон. Читаю книжку Марка Лутца, прорабатываю примерчики там, дрочу интерактивную консольку. Когда пройду хотя бы большую часть функционала, буду пытаться уже что-то писать посерьезнее.
И вот есть два человека, батя и друг.
Батя советует учиться по книгам, практику всякую тоже делать, конечно, но в целом говорит, что нужно понимать, какие возможности есть у языка, даже если не знать это наизусть, и поэтому книги очень полезны.
С другой стороны друг говорит, что книги хуйня, вкатываться надо на одной лишь практике, и мотивирует это тем, что сам ничего не читал, а просто дрочил всякие пет-проекты несколько лет, так в итоге и вкатился.
Кто из них прав и как же все-таки лучше вкатываться?
Кому ты без опыта нужна, маня.
потом прочитал доку и нихуя не понял (потому что она пидарская)
> n_colorsint, optional
> Number of colors in the palette. If None, the default will depend on how palette is specified. Named palettes default to 6 colors, but grabbing the current palette or passing in a list of colors will not change the number of colors unless this is specified. Asking for more colors than exist in the palette will cause it to cycle. Ignored when as_cmap is True.
а потом визуализировал датасет и понял что обосрался
как сгенерить ебучую палетку ин гармони с хай намберс оф калор айтемс сука?
почему все палетки скукоженные до 8 цветов или типа того!?
так ведь стот так же третий питоний. и через него я запускал так же.
уебок тупорылый типизация в 3.10
ты жрешь протухшее дерьмище на своей паскудной уебищной уебунте
ну и пошел я нахуй тогда, хотел помощи спросить, а тут, походу, еще токсичнее чем в б.
поплачь еще.. даунов нигде не любят, особенно убунудаунов без когнитивных функций...
А вот серьезно, есть ли нейросеть, в которую можно загрузить пару гигов диалогов с двача, подождать пока она самообучится и наслаждаться тем, как она переписывается с додиками с параши?
Ну он говорил, что типа просто идея какая-то есть, а дальше он пытался ее реализовывать и гуглил, если что-то непонятно.
тебя мой пайплайн ебать не должен ничтожество
если нечего сказать по телу вопроса - завали ебасосину и уебывай.
Я спрашиваю, почему оператор == приоритетнее оператора and. Мне интересно, чем руководствовались люди, установившие такие правила. Это вопрос дополнительной информации, знания, оно у меня магическим образом не появится за ночь.
Конструкция (a == b) and (c == d) встречается чаще, чем (a and b) == (c and d), вот и все, просто чтобы было меньше писанины.
всмысле почему ептус? У тебя слева и справа от and условие, которое должно посчитаться прежде, чем будет произведено сравниие true\false. Как ты себе иначе представляешь вообще работу этой хуйни тогда?
батя: хороший программист, не умеет зарабатывать
друг: умеет зарабатывать, плохой программист
choose your destiny
Ну смотри, вот обычный коннект к базе, под коннекшном имеется ввиду новая сессия котораяя юзается через контекстный менеджер
>просто дрочил всякие пет-проекты несколько лет
Ну я а вкатился меньше чем за год. Потому что помимо дрочива петов еще и читал книги/смотрел туторы
Во всём нужно находить баланс. Оба подхода имеют смысл на существование. Если чисто для вката в петухон - то книжка лутца норм. Но на ней сильно не обостряй внимание, я ни разу не делал все эти упражнения. А хотя не, делал, но это была K&R. Ну в общем для такого лёгкого языка как петухон это не имеет особого смысла, ты только теряешь время. Лучше сразу наметь какой-нибудь пет проект, и практикуйся на нём. И читай официальную доку языка, она довольна неплоха.
А книги важно уметь выбирать, а выбирать нужно хорошие. По самому языку, когда ты уже что-то умеешь, книги читать смысла нет. А вот про различные подходы, архитектуры и инструменты это да.
Поставь python 3.9 минимум
Батя еще как умеет зарабатывать, он сеньор в забугорной компании, плюс шарит за бизнес-процессы и прочую хуету. Про зарплату хз, но явно сильно повыше чем у друга. С другой стороны, батя работает уже дохуя лет, с начала нулевых в ойти. А друг вкатился года два с чем-то назад, а вкат начал в 15-16 годах гдет
>>392714
>>392722
Хм, ясно... Ну штош, тогда буду думать, какие бы мне пет-проекты запилить. Пока что идей нет
>типизация в 3.10
Вообще модуль typing завезли ещё в 3.5 и основной функционал в 3.5.2 уже есть. Но что-то добавляли и позже.
Довольно много добавили в 3.8, ещё что-то заметного добавили и в 3.9
Лучше ставить последний питон, если возможность и нет привязки к старым версиям по каким-то причинам.
Разумный минимум я бы советовал в виде версии 3.8.
С версиями вроде 3.9 в каких-то применениях могут быть проблемы, скажем если тебе нужна поддержка Win7, и подобные нюансы бывают. Но это нюансы промышленной разработки, а не обучения.
Умение зарабатывать и умение что-то делать пересекаются, но не сильно. Это сделать vs продать.
Практический вопрос в том, зачем быть хорошим программистом, если не зарабатывать на этом.
Типичный собес типичного "адепта петов":
- В чем сила генераторных выражений в питоне?
- Ну я че-то не особо это все использовал, понимаете я проект на джанге пилил
- Объясните почему эта асинхронная функция не даст выигрыша в производительности
- А я тип не юзал такое, я ж фласк в основном и джангу гонял. Нинужно кароч
- Как будете оценивать, нужен ли индекс в данной колонке базы?
- Да хз ваще. Я миграции запускал как по тутору сказано и она работало вроде
- Как логирование используете? Прямо вызовы в бизнес-логику вставляете?
- эмм пук бизнес-что?
>В чем сила генераторных выражений в питоне?
Ленивость
>Объясните почему эта асинхронная функция не даст выигрыша в производительности
Нет блокирующих IO операций
>Как будете оценивать, нужен ли индекс в данной колонке базы?
Если по данному полю будет вестись поиск
>Как логирование используете? Прямо вызовы в бизнес-логику вставляете?
Да, епта
>- Ну я че-то не особо это все использовал, понимаете я проект на джанге пилил
Вообще им с самого начала учат и в том числе в джанге-практиках используют
>Объясните почему эта асинхронная функция
Если чел не изучал асинхронку, то значит не изучал
>Как будете оценивать, нужен ли индекс в данной колонке базы?
Куда жёстче, "можете оценить, сколько SQL запросов будет произведено вот на этой вьюшке"? "Да ХЗ, я же ОРМ использую, зачем мне SQL запросы"
>Нет блокирующих IO операций
Не обязательно будет кейсом на самом деле. Тут лучше на реальном примере все-таки показывать
>Если по данному полю будет вестись поиск
Лол
>Да, епта
Иногда профитно, иногда - нет. Какие альтернативы предложите?
>Иногда профитно, иногда - нет. Какие альтернативы предложите?
Обосрать все декораторами, которые будут ловить ошибки и уведомлять о статусе выполнения, настроить дополнительные логеры типа sentry для перехвата ошибок и стейта
>Если по данному полю будет вестись поиск
>Лол
Хуйна блядь, первая фраза в любой книжке по бд в главе об индексах. Их не нужно делать в этом случае, только если селективность будущего запроса никакущая.
Подскажите лит-ру или сайты, где можно почитать о связке Питон+wx +postgres,
хочу почитать об именно _проектировании_ десктоп-гуи приложений на питончике.
Будет standalone-приложуха, типа центра ЦТО-шника.
1) Как именно БД, wx связать вместе?
2) Как множество формочек (Frame) связать вместе?
3) И вообще примеры гуи-десктоп +БД имеются где-то
пысы. Везде видел только отдельные разработки на tkinter, это не то.
извините, заспамил старые стреды. я идиот
Литературы не знаю, к сожалению. Сам бы сейчас почитал.
Если сложное приложение, то надо думать об архитектуре, где код всё-таки отделён от интерфейса, вот все эти MVC принципы. И скорее подход такой, что содержательная логика работает в отдельном потоке, а между gui потоком и потоком, где логика реальная, работа с БД и т.п. уже межтредовое взаимодействие.
Для этого вполне годятся wx-сообщения.
>2) Как множество формочек (Frame) связать вместе?
В смысле зачем? У можешь делать вёрстку через панели, можешь делать диалоги, причём одновременно несколько диалогов запущено в постоянке (не модальные диалоги).
В любом случае, если ты хочешь серьёзное что-то с гуи делать, тебе надо осваивать многопоточное программирование. Иначе никак вообще.
Сасибо
То что нужно, спасибо!
Загрузил решение на литкоде - быстрее на 15%, чем у остальных.
Посмотрел, какое решение лучше - оно оказалось таким же, примерно, как и меня. Но у меня код класса разнесён по методам, а в лучшем решении всё в одном методе сделано.
Порефакторил свой решение, убрал ненужные методы, и действителньо, теперь ответ лучше, чем 92% остальных.
Вопрос: методы класса настолько замедляют код?
Или литкодовский дрочь за быстродействием не показатель?
А убери классы совсем, тогда вообще охуеешь. Классы нужны чтоб удобнее читать и быстрее разрабатывать.
>Типичный собес типичного "адепта петов":
Лооол, по-твоему лучше сразу вкатываться в ML или хайлоад разработку? Да и глупо ожидать каких-то сеньорских знаний от человека с опытом только в пет проектах.
> глупо ожидать каких-то сеньорских знаний от человека с опытом только в пет проектах.
не обрящай внимания не этого обиженного дауна
просто он проибал свои лучшие годы на нахуй не всравшееся ВО, и теперь компенсирует нахуй не всравшими ебливыми штучками, которые точечно гуглятся и бенчатся под проект
никому нахуй не нужно забивать этим говном голову
человек в первую очередь должен думать об архитектуре, безнеслогике и дизайне.
если ждуну задают такие вопросы - то это ебанутая айти галера, ищи дальше и ты найдешь уютный бизнес уголок
Классы медленней, да. Место в памяти занимают. Из лучше использовать только когда без них нельзя.
датаклассы со слотами - все остальное для душных додиков решоткодаунов и прочих пидарасов жабистов.
То ли дело ты, который элементарные проекты делает по несколько месяцев
Я делаю всякие-разные задачки, типа сделать какую-то текстовую игрушку там подбиратель паролей ну в общем хуйню на самых базовых вещах.
И вот я когда закончу ебаться чтобы всё работало, смотрю на то, что получилось и понимаю, что выглядит ну хуёво. Где-то можно что-то убрать, что-то куда-то спрятать в функции, где-то возможно от нестинга уйти итд итп.
И вот я не знаю: стоит ли запариваться этой хуйней прямо сейчас и начинать перелопачивать всю логику нахуй и долбится еще пару дней в ту же задачу, или мне сейчас все-таки важнее нарабатывать навык именно находить подходы к решению задач чтобы сам код делал че мне надо, а как с этим станет получше уже можно будет начинать в хорошие практики упарываться?
Сейчас стоит. На проекте будет поздно
Ты понимаешь что ты несешь в каком месте ифы едят меньше памяти ты вообще тут, словарь хранить в себе кэши ща счёт этого это самый быстрый объект в питоне за счёт ключа значени поиск моментальный, а вот ифы ну это же пздц чел, у него будет 20 юзеров уже вижу твои ифы которые будут в ряд через елиф это 20 миллионов секунд
a = 500
b = 500
В данном случае это один объект
А вот если сделать так
b = b + 1 - 1
То это уже два разных объекта
В каких случаях происходит присвоение одинакового айди и когда он меняется?
Гарантируют ли разные айдишки выделение памяти на каждый объект или под капотом может быть так, что эти переменные все ещё ссылаются на один участок памяти с 500?
Если говорить конкретно про CPython3, то целые числа от -5 до 256 заранее сохраняются в памяти как константы при запуске, и для b в этих пределах b+1-1 нового объекта не создаст. Строки кешируются.
https://ideone.com/CWsj8C
https://docs.python.org/3/c-api/long.html#c.PyLong_FromLong
>Гарантируют ли разные айдишки выделение памяти на каждый объект
Да.
https://github.com/python/cpython/blob/2016bc54a22b83d0ca9174b64257cc7bb67a0916/Python/bltinmodule.c#L1212
У меня 500 разные уже.
Погугли про строки, думаю это проще всего. Я в какой-то книге или статье помню, что что было написано будто строки мелкими английскими буквами без пробелов какое-то-слово-делаются, как возможные идентификаторы, а другие нет.
1. Есть класс адреса (регион, город, улица и т.д.). Насколько корректно всё это реализовывать в одном классе (вместо кучи отдельных "справочных" таблиц отдельно для региона, города и дальше, а в атрибутах Адреса только внешние ключи к этим таблицам)?
2. Есть два идентичных по атрибутам класса - Отправитель и Получатель. Можно ли сделать один общий класс Клиент (со всеми атрибутами), а классы отправителя и получателя просто наследовать от него без дополнительного наполнения? Если да, то как? А то мне ничего умнее:
class Client(models.Model):
#some atributes
class Receiver(Client):
pass
в голову не приходит
3. Как реализовать choices в шаблоне?
Bot
API
Как мне заимпортить питоновский файл из бота в API? Если указать при импорте .. то он кидает ошибку типа нельзя импортить из родительских модулей. Что делать?
2. Делаешь класс Mail с артибутами from и to класса Client
Анон, подскажи на чем хостить желательно бесплатно бот в телеграме.
Бот в первую очередь для моего личного пользования, т.е пользователем буду я и возможно ещё пара человек знакомых.
Какие вообще сейчас есть варианты с серверами?
Спасибо, анончик, буду разбираться
Вы видите копию треда, сохраненную 12 декабря 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.