Программирование

Ответить в тред Ответить в тред
Check this out!
Питон тред №128, юбилейный /python/ Аноним 23/09/21 Чтв 18:51:16 21651671
python-programm[...].jpg 15Кб, 300x300
300x300
ciwlCWa.png 507Кб, 1024x512
1024x512
npr.brightspotc[...].jpeg 250Кб, 1200x630
1200x630
Юбилейный тред, посвящённый языку программирования Питон, #128

Предыдущий: >>2151231 (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
Аноним 23/09/21 Чтв 23:05:25 21653712
Какой асинхронный веб фреймворк выбрать?
Аноним 24/09/21 Птн 00:39:29 21654073
Ваш язык плохой, мой лучше.
Аноним 24/09/21 Птн 00:40:37 21654084
>>2165407
Насколько глубоко ты можешь залезть в жопу своим языком?
Аноним 24/09/21 Птн 09:51:19 21655225
>>2165371
FastAPI только? Остальные какими-то недоделанными выглядят
Аноним 24/09/21 Птн 11:00:05 21655496
https://docs.djangoproject.com/en/dev/releases/4.0/ да рот этого казино. Питоны, сижу на второй джанге, лучше на 3 перекатываться или подождать и сразу на четвертую?
Аноним 24/09/21 Птн 12:16:53 21656007
Такое кто-то решал?

Тестовое задание: необходимо сделать tcp сервер, который распознаёт заданный формат данных и отображает его в требуемом формате. Обязательна запись данных во внешний файл. Интерфейс и способ отображения на выбор разработчика. Формат данных BBBBxNNxHH:MM:SS.zhqxGGCR Где BBBB - номер участника x - пробельный символ NN - id канала HH - Часы MM - минуты SS - секунды zhq - десятые сотые тысячные GG - номер группы CR - «возврат каретки» (закрывающий символ) Пример данных: 0002 C1 01:13:02.877 00[CR] Выводим «спортсмен, нагрудный номер BBBB прошёл отсечку NN в «время»" до десятых, сотые и тысячные отсекаются. Только для группы 00. Для остальных групп данные не отображаются, но пишутся в лог полностью.
Язык Python, версия не ниже 3.2
Передача данных должна поддерживаться с помощью telnet клиента.
Аноним 24/09/21 Птн 12:30:29 21656138
>>2165600
Что тут решать, тут только работа со строками.
Аноним 24/09/21 Птн 14:15:55 21657339
Аноним 24/09/21 Птн 16:03:46 216581010
У меня такая проблемка. Я добавляю конфиг в yaml. Считываю его в global() в config/__init__.py. Так вот, когда делаю
import config
config.TEST_CONF
то в иде подсвечивает, что не знает TEST_CONF, потому что она считана из файла. Как сделать, что он понимал что за конфиг и мог прыгнуть к определению?
Аноним 24/09/21 Птн 18:12:35 216593711
Сап. Есть 2 тестовых. Одни хотят что-то с gRPC, а другие с FastAPI. Сделать нужно за выходные. Хочу объединить. Ещё хочу туда рест, микросервисы и асинкио добавить. Но нет идей что делать. Какое-нибудь туду приложение, которое с консольным клиентом по рпц общается, а сам конвертирует в рест и по хттп с соседним приложением общается, которое как раз всю работу с бд делает? Чёт примитивно. Есть что-нибудь, что будет реально получать пользу от использования этих технологий, а не технологии ради технологий
Аноним 24/09/21 Птн 23:41:21 216624212
>>2165937
>Одни хотят что-то с gRPC, а другие с FastAPI
Что-то? Без конкретных требований? Придумать самому? Я бы не стал там работать
Аноним 24/09/21 Птн 23:43:15 216624513
>>2165600
Особо делать нечего. Парсить строку через re, дальше простые if-else с логикой.

Задача, как я понимаю, скорее на умение работать с сетью
Аноним 24/09/21 Птн 23:53:59 216626114
Аноним 25/09/21 Суб 02:40:48 216639315
Сейчас потихоньку вкатываюсь в питон, и при рефакторинге своего старого кода возник технический вопрос.
Мой код представляет из себя функциональщину, я там форматирую разный текст - нарезать строку, что-нибудь к ней добавить, где-то инвертнуть и т.д. Таких функций у меня несколько подряд, и форматирование в каких-то функциях повторяется, они отличаются только текстом, который надо отформатировать.
Сейчас я переписал это в одну функцию, которая принимает на вход несколько разных текстов, и меня озадачил вопрос - а от этого изменения сам по себе код стал быстрее? Или я просто увеличил читабельность кода, снизив его повторяемость?
Аноним 25/09/21 Суб 03:47:52 216640316
Аноним 25/09/21 Суб 19:57:07 216705017
Подскажите как лучше организовать работу с большими строками:
имеется программа, которая переодически выплевывает клиенту много текста от 10 до 500 символов, таких текстов +- 50
Варианты, которые я рассмотрел:
1) Самый примитивный вариант: иметь файл.py с глобальными переменными, в которых хранятся строки
hello_text = "..."
bye_text = "..."
2) Использовать Enum:
class SomeText(str, Enum):
hello_text: str = "..."
bye_text: str = "..."
Более сложный для редаченья текста вариант, просто юзать import SomeText, можно обращаться по ключу, а не только черз точку, что важно
но постоянно юзать SomeText.hello_text.value ну такое
3) Использовать БД:
слишком заёбистый вариант, хотя можно запилить админку для редактирования обычным человеком
4) Использовать JSON + pydantic:
class Text(BaseModel):
hello_text: str = "..."
bye_text: str = "..."
texts = Text.parse_file("texts.json")
text.hello_text
Более сложный вариант чем Enum, но JSON же проще редактровать обычному человеку чем file.py, да?
Какие ещё варианты есть?
Аноним 25/09/21 Суб 20:28:41 216707118
ананасики, что за дела
Пилю простой круд на джанге, подключаю js файл в html документе,
через %static%
Когда загружаю сайт, то получаю код 200 (тобишь файл js получен и все хорошо), как я понимаю
Но сам файл js ни в какую не работает, ни alert, ни вывод в консоль

Хотя если прописываю код в самом документе html через (<script>),
то все ок.
Как это исправить?
Аноним 25/09/21 Суб 20:52:22 216708819
Это правда что JavaScript и Python пиздец как похожи?
Я просто недавно вкатываюсь во все это(в универе я вот С++ изучал) и только, что заметил это момент
И вообще что JavaScript - это тупо маркетинговый ход, сам язык к жабе не имеет никакого отношения. Так вот, похожи они это потому что они оба скриптовые или потому, что суть если уж на то пошло все языки похожи.
Ну и еще, если кому не лень, можете пояснить за скриптовые языки, я честно гуглил, ну да читаю вот, да слова и даже смысл понимаю, но вот сути нет.
Аноним 25/09/21 Суб 21:13:42 216709720
>>2166242
Это галера на проект. В двух разных проектах есть эти технологии, а у меня нет с ними опыта хотя и теорию знаю. Так на собесе и сказал. Интервьюер усомнился, что я справлюсь и хрюша попросила почитать про них и какой-нибудь мини-демо показать, что осилю. А потом его проревьювят. Офер уже выкатили. Осталось проекты показать и они пойдут меня заказчику показывать. Если не справлюсь, то буду другого заказчика ждать
Аноним 25/09/21 Суб 21:28:51 216710221
>>2167088
Они совсем не похожи.
Есть некоторые тренды, которые популярные языки подхватывают, но не более того.
Всё это было раньше сделано в си, перле и лиспе.
Аноним 25/09/21 Суб 21:57:58 216711022
Читаю шо гугл изобрел Go как такая своеобразная альтернатива Петону Гвидо. У го хороший баланс производительности, простоты и безопасности. Зачем же тогда сегодня нужен петон окромя датасаенс?
Аноним 25/09/21 Суб 22:19:30 216712323
>>2167088
> Это правда что JavaScript и Python пиздец как похожи?
Кто тебе это сказал интересно? Чем они похожи вообще?
Аноним 25/09/21 Суб 22:54:56 216713924
>>2167050
Нихрена не понятно в твоём техзадании, что тебе надо.

Для хранения данных ещё можно посмотреть на формат yaml, его намного проще редактировать человеку, чем JSON

Аноним 25/09/21 Суб 23:10:18 216714225
Сап, почему этот код

for x in range (2):
for y in range (2):
for z in range (2):
for w in range (2):
F = (( not x or y) and (not y or w)) or (z == (x or y))
if not F:
print ( x,y,z,w )

выводит
0 1 0 0
1 0 0 0
1 0 0 1
1 1 0 0
(все верно)
А этот код
for x in range (2):
for y in range (2):
for z in range (2):
for w in range (2):
F = not(( not x or y) and (not y or w)) or (z == (x or y))
if F:
print ( x,y,z,w )
выводит это
0 0 0 0
0 0 0 1
0 1 0 0
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 1 0
1 1 1 1
Разница ведь в том, что я переместил not на другое место.
Аноним 25/09/21 Суб 23:44:40 216716626
>>2167142
>Разница ведь в том, что я переместил not на другое место.
Ты скобочки забыл сделать вокруг выражения
Аноним 25/09/21 Суб 23:56:08 216717427
Аноним 26/09/21 Вск 00:30:24 216719028
image.png 4Кб, 669x78
669x78
Аноним 26/09/21 Вск 02:03:39 216721729
>>2167110
Гугл изобрел го, что бы студенты могли сносный софт писать, с выразительность там полнейший пиздец, а такой перформанс, который он тебе предлагает тебе нахуй не нужен будет в 90% случаев
Аноним 26/09/21 Вск 02:07:29 216722030
>>2167217
Я заметил что ща всякие сетевые штуки типа Yggdrasil онли на нем пишут
Аноним 26/09/21 Вск 02:25:08 216722631
Сап двачик, я у мамы инженер. Хочу написать тулзу в вебе по расчету кое-какой конструкции. В питоне для этого есть неплохие библиотеки, да и в целом язык простой как два пальца. Но вот насчет интерфейсов и пр. мне не совсем понятно, как будет работать такое веб приложение. Вот в джаваскрипте расчеты будут производится на машине пользователя и в целом как и все джс приложения будет отзывчывым и интерактивным, мне это и нужно, а что будет с приложением на питоне? Где будут производиться вычесления?
Заранее спасибо за помощь, няши.
Аноним 26/09/21 Вск 11:45:02 216733532
>>2167226
у тебя есть два пути
1) пиши веб-приложение на жс (без питона)
2) пиши десктоп-приложение на pyside

на python+js не пиши, заебёшься вхолостую

Нахуй расчетную программу делать веб приложением? Потому что модно? Все 10 человек которым она может понадобиться не обосрутся скачать и установить.
Аноним 26/09/21 Вск 13:27:11 216739533
>>2167335
>Нахуй расчетную программу делать веб приложением
>Все 10 человек которым она может понадобиться не обосрутся скачать и установить.
Извини, Сычев, но ебись ка ты сам со своей программой, мы лучше по старинке на калькуляторе.
Аноним 26/09/21 Вск 14:36:48 216746734
>>2167226
Клиент-сервер ты понимаешь что такое? Если у тебя питон на сервере, как думаешь где вычисления выполняться будут?
Аноним 26/09/21 Вск 19:07:35 216776635
В чем я не прав?


Дано число n. С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число n может быть больше, чем количество минут в сутках.
Во всех задачах считывайте входные данные через input() и выводите ответ через print().



Мой вариант - препод грит переделывай, все хуйня
n = int(input(150))
h = n // 60 % 24
m = n % 60
print(h, m)


А Вот ПИЗДОМРАЗЬ СЫЧЕВА МОЛОДЕЦ

n=int(input())
if n < 1440:
print( n // 60)
print(n - (n // 60 ) 60)
else:
if 1440 <= n < 2000 :
print( ( n - 1440 ) // 60)
print((n - 1440))
else:
if n >= 2000 :
print(( n - ( 1440
(n // 1440 )))//60 )
print((n-((n//1440)1440))- ((( n - ( 1440 (n // 1440 )))//60)*60))
Аноним 26/09/21 Вск 19:47:24 216779436
>>2165167 (OP)
сап
поступаю бесплатно в яндекс лицей на 2 курса
резы собеса дадут не позднее 1 октября (я уверен 95% пройду, тест сдал на 10/10)
таквот если в треде есть люди, которые учились там или преподают (лол), опишите, что думаете об лицее
Аноним 26/09/21 Вск 21:02:50 216786637
Ребята, посоветуйте че почитать по компутер вижону
С меня тонны нефти, в шапке книжек конкретно по нему не нашел
Аноним 26/09/21 Вск 21:16:36 216787638
Суп питонач. Не могу разобраться, как предотвратить выполнение импортированных функций в своей программе.
Хз, как тут принято скидывать целые проекты, но я залил сюда https://dropmefiles.com/0yDIP
В main.py есть описание принципа работы, в целом проблема такова, что при запуске main.py у меня почему-то срабатывают все импортирумые функции, хотя нужно, чтобы сработала только та, которую я выбрал. Пробовал по-разному втыкать конструкцию "if __name__ == main", но это ничего не дало.
Аноним 26/09/21 Вск 21:59:37 216790739
Привет, быстрый вопрос:
Если я внутри функции делаю os.chdir(), то при выходе из неё программа вернётся назад или это изменит "глобоальный стейт" исполнения? Если второе, то как питонисто вернуться назад?
Аноним 26/09/21 Вск 22:04:20 216791240
>>2167907
Рабочая директория это уровень процесса. Если тебе надо работать в конкретной директории то делай chdir, если нет, то работай с относительными или абсолютными путями, очевидно же.
Аноним 26/09/21 Вск 22:08:34 216791841
>>2167912
>Рабочая директория это уровень процесса.
Спасибо.
Аноним 26/09/21 Вск 22:55:57 216796642
СУка бля чёрт блядь бы побрал ебучие регулярка блядь ёбанный рот
есть регулярка
r'текст перед ссылкой - (https:[^\\]+)'
Суть - взять ссылку между текстом и \n. Проверил на regex101 всё работает бля. Засовываю в re.search и получается хуйня - возвращает во второй группе не только ссылку, но и всё, что после неё. ЧО ЗА ХУЙНЯ БЛЯДЬ
Аноним 26/09/21 Вск 23:00:58 216797043
>>2167876
При импорте в любом виде импортируемый модуль исполняется от начала до конца.

Если ты не хочешь, чтобы какая-то часть исполнялась при импорте, надо её поместить внутрь
if __name__ == '__main__':
____ и вот здесь этот код
____ в том числе импорты можно делать здесь, но если ты так делаешь, то что-то у тебя не так в проектировании скорее всего
Аноним 26/09/21 Вск 23:06:01 216797544
>>2167966
Что у тебя работает, даун? Ты ищешь любую последовательность до \. Так и пиши [^\n]+ или \S+
Аноним 26/09/21 Вск 23:10:33 216798145
Аноним 26/09/21 Вск 23:11:55 216798246
>>2167975
Бляяяяя, в regex101 конкструкция [^\n]+ не работала - тупо до конца текста всё собирал. Но в питоне это почему то работает. Спасибо, конечно, но какого хуя
Аноним 26/09/21 Вск 23:12:38 216798347
Аноним 26/09/21 Вск 23:26:49 216799448
https://github.com/em1tao/SIGame_script
я вообще ничего не понимаю в программировании, пожалуйста объясните пошагово что нужно сделать чтоб запустить этот скрипт. чтоб, как там сказано, я в Своей Игре нажимал q и чтоб программа автоматом нажимала кнопку ответа в нужный момент
Аноним 26/09/21 Вск 23:29:44 216799749
Аноним 27/09/21 Пнд 00:00:57 216802050
Аноним 27/09/21 Пнд 00:55:10 216806251
>>2167997
Напиши в cmd (командной строке), что тебе сказали аноны (python main.py). Но сначала открой cmd в папке, где у тебя расположен код. Для этого нужно выделить расположение (адрес) папки в проводнике, написать cmd и нажать enter.
Аноним 27/09/21 Пнд 01:05:36 216807052
>>2168062
я сделал все как там написано, добавил пайтон в path list, в командной строке написал cd и вставил путь к папке, где находится скрипт, написал python main.py, но скрипт не запустился, а в командной строке просто появилась надпись Python.

и да, что этот скрипт вообще делает? как его юзать?
while True:
try:
if keyboard.read_key() == "q":
im = grab(childprocess=False)
r, g, b = im.getpixel((370, 7))
if r == 255 and g == 230 and b == 130:
pyautogui.click(x=1730, y=930)
pass
if keyboard.read_key() == "p":
break
except:
continue
Аноним 27/09/21 Пнд 01:15:44 216807453
>>2168070
>while True:
пока скрипт крутится
>try:
пытайся сделать следующее:
>if keyboard.read_key() == "q":
если нажата клавиша q
>im = grab(childprocess=False)
захватывай
>r, g, b = im.getpixel((370, 7))
RGB цвета пикселя в координатах 370х7
>if r == 255 and g == 230 and b == 130:
если красный - 255, зеленый - 230 и зеленый - 130, то:
>pyautogui.click(x=1730, y=930)
жми на точку в координате 1730х930
>pass
жди дальше
>if keyboard.read_key() == "p":
если нажата клавиша p
>break
гаси кампутер
>except:
кроме случая
>\tcontinue
когда продолжаешь работать
Аноним 27/09/21 Пнд 01:17:10 216807554
>>2168070
ну, он то и делает. он постоянное работает, если ты нажимаешь q, он делает скриншот, выбирает какой-то конкретный пиксель на экране, смотрит его цвет, если его цвет соответствует какому-то, нажимает на какое-то конкретное место. если нажимаешь p, он выключается. все ошибки и прерывания игнорирует.
Аноним 27/09/21 Пнд 01:20:13 216807855
>>2168075
если у тебя разрешение экрана другое или цвет кнопки изменился, то он не будет работать. ну и если ты кнопку перегораживаешь чем-то
Аноним 27/09/21 Пнд 01:29:45 216808556
а эту хуйню только через командную строку виндовса запустить можно? если я ее через пайтон запущу она работать не будет или чо?
Аноним 27/09/21 Пнд 01:47:21 216809657
>>2168085
Что значит "через python" запущу?
Аноним 27/09/21 Пнд 01:58:36 216810058
а это не та древняя игра где ответ был спрятан в определенном пикселе и кодировался цветом?
Аноним 27/09/21 Пнд 03:25:31 216812359
>>2167766
Что за херня во втором варианте, какие её 2000? делаешь n %= 1440 и дальше первый вариант уже.
Аноним 27/09/21 Пнд 09:59:26 216820260
image.png 8Кб, 986x56
986x56
image.png 31Кб, 959x380
959x380
Модуль стоит, но из программы его не вызвать. Почему?
Аноним 27/09/21 Пнд 10:03:24 216820561
image.png 11Кб, 329x236
329x236
Аноним 27/09/21 Пнд 10:05:58 216820762
>>2168202
На пути посмотри. Разные версии питона.
Аноним 27/09/21 Пнд 10:21:36 216821463
>>2168207
>На пути посмотри
Как?
Аноним 27/09/21 Пнд 10:27:24 216822164
Ага, нашел, в VSC не тот интерпретатор был выбран спс
Аноним 27/09/21 Пнд 12:37:49 216830965
Анон, а что быстрее - for цикл или list comprehension? Или без разницы?
Аноним 27/09/21 Пнд 12:44:43 216831466
>>2168309
Примерно одинаково. Компрехеншен все равно раскручивается в фор.
Аноним 27/09/21 Пнд 13:10:04 216831867
Аноны, хочу на новый прект ввести аннотации, столкнулся вот с чем

a.py

from b import x
from c import y

def some_method(some_var: x.SomeClass) -> None:
____y(some_var)


c.py

def y(some_var: x.SomeClass) -> None:
___pass


Так вот, чтоб эту аннотацию юзать, надо импорд делать только для аннотации?
def y(some_var: x.SomeClass) -> None:
Аноним 27/09/21 Пнд 13:31:45 216833668
>>2168202
У теюя питон не может устанавливать packages в то место, где питон установлен. Открой консоль как администратор и устанавливай.
Аноним 27/09/21 Пнд 14:14:10 216836569
Screenshot1.png 13Кб, 1137x244
1137x244
Аноним 27/09/21 Пнд 14:29:23 216836970
>>2168365
А если оставить просто i*j во втором случае?
Будет видно, что кушоет аппенд.
Хотя я видел, что делают что-то вроде f = res.append и потом вызывают уже f, уменьшая расходы.
Аноним 27/09/21 Пнд 15:06:24 216838771
>>2168369
так тогда не равная ситуация, лист комприхеншн же создает список
Аноним 27/09/21 Пнд 15:09:08 216838872
>>2168387
Это не для равности, а чтобы оценить потери на аппенд из общего времени.
Аноним 27/09/21 Пнд 15:14:43 216839073
Screenshot1.png 6Кб, 1139x132
1139x132
Аноним 27/09/21 Пнд 15:34:10 216840374
image.png 15Кб, 545x143
545x143
image.png 7Кб, 405x105
405x105
https://dumpz.org/cAe6kfR9gGn4 хочу понять парсинги, написал код для того чтобы подгрузить видео. но вместо нужного блока с тегами я получаю пустой блок. почему так?
Аноним 27/09/21 Пнд 15:54:49 216841475
>>2168403
Потому что оно формируется динамически на клиенте.
Аноним 27/09/21 Пнд 17:05:51 216847976
>>2168318
>Так вот, чтоб эту аннотацию юзать, надо импорд делать только для аннотации?
Да, без импорта не получится.

Отдельно, в аннотации ты можешь как явно указывать тип
def some_method(some_var: x.SomeClass) -> None:

так и в виде строки
def some_method(some_var: 'x.SomeClass') -> None:

что решает многие проблемы, когда ниже какие-то классы декларируешь. Иногда без этого в принципе нельзя. Но описанную тобой проблему это не решает.

Без явного импорта просто невозможно понять, какой тип ты на самом деле ждёшь. У тебя SomeClass может быть в десятке модулей определён.
Аноним 27/09/21 Пнд 17:17:25 216848777
>>2168318
Да, ты же по сути работаешь в своем модуле с этим объектом, импорт произойдет и так, только через другие библиотеки.
Хотя хотелось бы что бы в всеобщую культуру написания питонокода начали входить интерфейсы
Аноним 27/09/21 Пнд 17:24:25 216849078
Кто-нибудь с dash работал? Как обновлять элементы через колбэк?
Аноним 27/09/21 Пнд 17:31:07 216849579
надо бд прикрутить. Как вообще юзается инит коннекта чтоб потом везде можно было запросы выполнять?
Аноним 27/09/21 Пнд 17:55:53 216850380
>>2168495
Обычно при создании объекта приложения это делается
Аноним 27/09/21 Пнд 17:57:12 216850481
>>2168503
Ну это то я понимаю. но не обращаться же через объект приложения к бд для селекта
Аноним 27/09/21 Пнд 17:59:29 216850782
>>2168504
Пробрасывать инстанс бд в другие объекты и из них юзать, если нет глобального неймспейса

>Ну это то я понимаю. но не обращаться же через объект приложения к бд для селекта
Так во всех веб фреймворках делается
Аноним 27/09/21 Пнд 19:07:42 216855383
>>2168487
>Хотя хотелось бы что бы в всеобщую культуру написания питонокода начали входить интерфейсы
Зачем? Ты мыслишь категориями языков вроде Java
Аноним 27/09/21 Пнд 19:09:13 216855584
>>2168553
Они зохавали похапе, теперь лезут в питон, лол.
Аноним 27/09/21 Пнд 19:32:47 216857585
>>2168555
Питон хорош тем, что там предусмотрели аннотацию типов очень давно. Пусть изначально она была больше в виде заглушек и декларации о намерениях.

Но в JS такой возможности нет, поэтому там придумывают компиляторы TypeScript, независимый язык, компилируемый в JS. В PHP посмотрел, подвезли какую-то аннотацию в версию 7.4, то это ноябрь 2019, меньше двух лет назад.

В питоне же есть typing, с хорошей поддержкой в самом движке при этом. Объекты имеют свойство __annotations__, доступное в рантайме, очень много что можно сделать за счёт этого, если захотеть.

Насчёт того, почему не надо интерфейсов. Интерфейсы - это необходимость для компилируемых языков, без интерфейсов просто нельзя чисто технически передать какой-то объект в функцию. В функцию необходимо передать адрес таблицы виртуальных функций, которые что-то нужное делают.

В питоне duck-typing, в питоне основное понятие не "интерфейс" (таблица функций), а "протокол", соглашение о том, какие функции нужны.

И в typing сделали поддержку для этого, начиная с версии 3.8
https://docs.python.org/3/library/typing.html#typing.Protocol
Просто описывается протокол, то есть набор методов, который должен реализовывать класс.

А сам класс не нужно наследовать от этого протокола. За счёт этого нет того леса из иерархии зависимостей, как в Java.

При этом проверки намного более точные и гибкие, чем когда ты просто наследуешь свой класс от какого-то интерфейса и в аннотации указываешь интерфейс.

В общем если хочется грамотно писать, по высоким самым современным стандартам - надо через протоколы.
Аноним 27/09/21 Пнд 19:48:14 216858486
>>2168553
>Зачем? Ты мыслишь категориями языков вроде Java

Это есть не только в джаве и я не говорил, что нужно реализовывать так же. Необходимо разделять контракт и его имплементацию, выше уже привели пример протоколов, по сути как в ГОвне интерфейсы сделали и это правильно. Правда пока это мало кто делает и слишком сильно заигрывают с динамичностью из-за которой нихуя непонятно что за объект выдает та или иная функция сторонней либы, что даже в небольшом проекте вызывает лютую жопоболь.
Аноним 27/09/21 Пнд 20:19:23 216860087
>>2168584
>Это есть не только в джаве и я не говорил, что нужно реализовывать так же.
Но реально ключевое, как это технически реализовывать.

Подход в стиле Java это
class MyClass(BaseClass, InterfaceA, InterfaceB):
....
Где
class InterfaceA:
____def foo(self, par:str) -> None:
________raise NotImplementedError()

а дальше ты определяешь функцию
func(value:InterfaceA):
....
Это вот такой конкретный подход в Java-стиле. Многие, кто пришёл с этих языков, пытаются так писать. Вот не надо категорически. Очень порочное и тупиковое решение из мира компилируемых языков. На компилируемых платформах просто сложно сделать лучше.

Для современного питона есть решения намного лучше. Они намного лучше соответствуют концепции "контрактного программирования", более гибкие и прозрачные, лучше поддерживаются.
Аноним 27/09/21 Пнд 20:23:29 216860388
>>2168584
> пока
Это довольно новые технологии для питона, только в свежих версиях они дошли до уровня, когда полезны.

Инертность есть, надо изучить, привыкнуть, паттерны наработать. Плюс код в библиотеках старых и библиотеки принято писать, чтобы поддерживать относительно старый код.

Но очевидно, что к этому движутся довольно активно. Сейчас в питоне активнее всего вокрут типов что-то новое придумывают.
Аноним 27/09/21 Пнд 20:30:50 216860889
>>2168603
>Это довольно новые технологии для питона
Тайпинг завезли еще в 2015 году вместе с asyncio и при этом мало кто спешит дорабатывать свои либы
Аноним 27/09/21 Пнд 20:39:15 216861490
>>2168608
Как-то завезли, но в каком-то нерабочем виде.

Я сейчас стремительно дорабатывают. То есть вот например куча фич появляется только в 3.8, в 3.9 кучу всего добавили.

Протоколы упомянутые в 3.8 появились. Слёту Literal, очень полезная штука, тоже в 3.8. Хотя это фиксится через typing-extensions, но всё равно, это пока развивающиеся технологии.

Причём asyncio тебе даёт принципиально новые возможности, а typing это всё-таки чисто опция, поддержку кода улучшить, без него тоже работает. Поэтому конечно не так резво будут внедрять.

Но очевидный крен есть в эту сторону.
Аноним 27/09/21 Пнд 21:56:08 216866291
182445768579565[...].png 476Кб, 481x472
481x472
Анон, помоги, плес.
Документация:
https://dash.plotly.com/cytoscape/elements
Код:
https://ideone.com/bEVbCb
>Invalid argument `elements` passed into Cytoscape with ID "cytoscape-elements-basic".
Как передать созданный список словарей на место elements?
elements по идее должны пустыми, потому что в ходе программы будут заполняться, но почему-то сейчас вылезает ошибка.
Что не так?
Аноним 27/09/21 Пнд 23:14:51 216872692
>>2168662
Так может ты сначала заполнишь словарь, а потом начнешь его отрисовывать?
Аноним 27/09/21 Пнд 23:30:10 216873593
>>2165371
Fastapi неплох, все есть.
Аноним 27/09/21 Пнд 23:35:06 216874094
>>2168726
Так я в зависимости от условия генерю список словарей и подаю на выход:
return [{'data': {'id': x}} for x in some_list]
вот только почему-то в таком виде вылетает ошибка. Хотя судя по документации, это правильный формат.

Если кто хоть что может подсказать, буду прищнателен.
Аноним 28/09/21 Втр 10:37:12 216890095
Как в django rest framework сделать кастомную схему? Не привязываясь к модели в БД
Аноним 28/09/21 Втр 10:52:47 216890596
Аноним 28/09/21 Втр 11:17:02 216892497
Аноним 28/09/21 Втр 11:26:24 216892898
>>2168924
Ладно, извини
Нормально объясняй, чо тебе надо
Аноним 28/09/21 Втр 13:24:39 216901299
>>2168928
Есть класс. Нужно его заполнить и отправить в качестве жсона. Но класс не совпадает со структурой модели из БД.
Аноним 28/09/21 Втр 16:58:42 2169242100
сап, погромач
нужна твоя помощь с Jinja2
я нихуя не погромист и никогда им стать не хотел, но жизнь сложилась необычно и теперь мне нужно писать код

так вот, помоги решить 2 задачи
первая:

мне нужно за день до отправки посылки каждому челу отправлять сообщение с инфой, ровно в 14:00
как посчитать время, которое нужно выставить для ожидания с момента попадания человека в сценарий до 14:00?

вторая
за час до отправки посылки мне так же нужно отправить еще одно сообщение

КАК ЭТО СДЕЛАТЬ КОДОМ, ПОМОГИТЕ
Аноним 28/09/21 Втр 17:21:11 2169265101
image.png 1923Кб, 1200x784
1200x784
Аноним 28/09/21 Втр 18:08:40 2169300102
Сяп.
Есть джанговская вьюха, которая принимает эксель-файл, через опенпайхл его парсит в памяти и отдаёт результат.
Если файл прошёл валидацию, его дальше нужно обрабатывать, т.е. идёт новый запрос к другой вьюхе.
Вопрос: как в памяти держать объект Workbook, чтобы не приходилось файл заново обрабатывать? Либо так не получится, и нужно его где-то хранить на диске, например NamedTemporaryFile?
Аноним 28/09/21 Втр 18:45:39 2169325103
>>2169242
Каким способом идет отправка? В каком виде сообщение? Сколько пользователей?
Аноним 28/09/21 Втр 19:33:50 2169418104
>>2169265
ну дада дохуя прогер на джаве нашелся
или на плюсах
или на шарпе
или на чем угодно кроме jinja2
Аноним 28/09/21 Втр 19:34:17 2169420105
>>2169325
спасибо, что откликнулся, но сам разобрался
Аноним 28/09/21 Втр 20:29:20 2169457106
>>2169300
Хуевая архитектура. Сохраняй файл в сторадж и кидай задачу в селери, а потом пиши результат в БД
Аноним 29/09/21 Срд 10:30:14 2169794107
image.png 6Кб, 282x112
282x112
>>2169418
Зелёный, чо ты собрался на Jinja кодить?
Аноним 29/09/21 Срд 11:07:30 2169836108
Загнобили нуба, токсики. Эх вы.
Аноним 29/09/21 Срд 12:50:40 2169920109
Сап, аноны, помогите с Selenium. Как ему передать уже готовый html, чтоб он его загрузил и открыл страницу? Знаю, что у puppeter у класса Page есть метод setContent(), есть что то похожие у Selenium?
Аноним 29/09/21 Срд 13:14:27 2169935110
>>2169920
Через data url можешь сделать.
Аноним 29/09/21 Срд 15:46:06 2170060111
>>2169935
Можно чуть подробней, как это сделать?
Аноним 29/09/21 Срд 16:03:18 2170068112
>>2170060
Открой в браузере
data:text/html;base64,PGgxPmh1aTwvaDE+
Аноним 29/09/21 Срд 16:25:20 2170089113
Суп срач. Есть один старый проект с тухлыми зависимостями.

Есть какие-то подходы/рекомендации/методы/инструменты для обновления тухлых проектов?

Так чтобы хоть какое-то направление получить, куда копать и как, чтобы сломать по минимуму.
Аноним 29/09/21 Срд 17:26:59 2170126114
>>2170068
Спасибо анон, это помогло.


Но блин, вылезла новая трабла - как в селениуме добавить заголовки?? попробовал selenium-wire, но после первого перехода перестают открываться страницы с ошибкой "selenium-wire". Как решить эту проблему?
Аноним 29/09/21 Срд 17:44:56 2170151115
Аноним 29/09/21 Срд 17:59:46 2170163116
Динамоговно для даунов.
Аноним 29/09/21 Срд 19:10:43 2170204117
>>2170068
Ссука, шутки за 300. Проиграл зачем-то.
Аноним 29/09/21 Срд 20:14:00 2170242118
>>2170163
Главное, что сильная типизация.
Аноним 29/09/21 Срд 20:17:35 2170252119
>>2170089
pip install --upgrade --force-reinstall -r requirements.txt
Аноним 29/09/21 Срд 22:45:04 2170358120
>>2170252
Маловато будет. Дохуя пакетов. Проекту 5 лет, наверняка мажорные версии сломают кучу всего.
К тому же и сам питон хотелось бы обновить. Вот даже не знаю, с чего начать.
Аноним 29/09/21 Срд 23:16:12 2170383121
>>2170358
Интересный вопрос, тоже послушал бы мнение опытных наносеков
Аноним 30/09/21 Чтв 01:14:27 2170424122
>>2170383
Не работать там, где есть много говнолегаси
А вообще, я бы сначала обновил все библиотеки и прогнал бы тесты (они же там есть и покрывают бизнес-логику?)
Аноним 30/09/21 Чтв 09:48:09 2170513123
>>2170424
Да тесты есть на каждый пердеж. Ну в целом складывается ощущение, что какой-то супер страты для обновы нет. Ебошишь и смотришь что сломалось. Хуево, конечно.
Аноним 30/09/21 Чтв 11:36:17 2170570124
Если знаешь JS и React, полезно ли будет изучить Django?

Много вакансий с таким стеком?
Аноним 30/09/21 Чтв 11:45:19 2170579125
>>2170570
Фулстек что ль? Никому они уже не нужны
А вообще react с джангой не идут. Можешь DRF подрочить или fastapi, но джанга уже понемногу умирает
Аноним 30/09/21 Чтв 11:50:30 2170583126
>>2170579
>Помирает
И что вместо нее начинают юзать?
Аноним 30/09/21 Чтв 11:55:49 2170588127
Аноним 30/09/21 Чтв 11:58:14 2170589128
>>2170588
Это фреймворки для построения апишек, как флас (который действительно умирает), причем тут замена хтоничной джанге?
Аноним 30/09/21 Чтв 12:02:50 2170594129
>>2170589
>Это фреймворки для построения апишек
Ты всё правильно понял. Сейчас рыночек в основной такой, что бэк пишет апишку, а фронт пишет приложение на реакте и её дёргает. Всё то, что использует чистую джангу, скорее всего является легаси.

К тому же, ты же спрашивал про то, много ли вакансий на стек React + Django. Ответ: нет, но связка react + DRF/fastapi много где используется, так что смею предположить, что и пригодится такой фулстек куда-нибудь.
Аноним 30/09/21 Чтв 12:14:38 2170599130
>>2170594
Для DRF все равно придется знать джангу, потому что джанга огромна и всеобъемлюща, а в нем выкидывается только шаблонизатор
Аноним 30/09/21 Чтв 12:17:49 2170600131
>>2170599
Да, но учитывай и то, что отличие DRF от Django не только в том, что "темплейты выкидываются". В самом DRF куча всего, что нужно знать, чтобы им комфортно пользоваться. Так что после джанги всё равно посидеть ещё придётся
Аноним 30/09/21 Чтв 13:25:22 2170640132
1601775459755.jpg 215Кб, 1621x1452
1621x1452
Я новичок. Посоветуйте учебник по дискретной математике.
Заранее спасибо.
Аноним 30/09/21 Чтв 13:57:14 2170683133
none.png 16Кб, 228x116
228x116
Почему при вводе None ничего не печатается?
Аноним 30/09/21 Чтв 14:35:15 2170722134
>>2170683
Чтобы не срать этими None на каждый случай None.
Аноним 30/09/21 Чтв 14:39:54 2170729135
>>2170579
Просто я стал смотреть книжки по Django за 2020-2021 год и там зачастую React или Vue используются.

А еще на апворке смотрел заказы, там регулярно встречается связка React + Django или React + Ruby on Rails.

Алсо на hh.ru:
290 вакансий «react django»
155 вакансий «vue django»
Аноним 30/09/21 Чтв 14:49:37 2170747136
>>2170729
Количество ответов по запросу ничего тебе не скажет, потому что:
1) По запросу "django" может выйти "django rest framework"
2) Иногда пишут "Желательно знать django", а вакансия вообще на PHP утрирую
3) Как я и сказал, есть вакансии на django, но они с легаси. Хочешь копаться в этом? Ныряй.

А вообще, давай мы вернёмся к первому твоему вопросу.
>Много вакансий с таким стеком?
Ты же сам на него ответил:
>на hh.ru:
>290 вакансий «react django»
>155 вакансий «vue django»
Так зачем спрашивал?
Аноним 30/09/21 Чтв 15:02:24 2170754137
>>2170747
Я подразумевал скорее востребованность и актуальность относительно других технологий для бэкенда, а не конкретное число вакансий. Кроме hh.ru есть же множество других площадок для поиска работы.

>Так зачем спрашивал?
Ну теперь понял, что Django неплохо бы освоить, но в дальнейшем стоит смотреть упомянутые тобой штуки.
Аноним 30/09/21 Чтв 15:32:37 2170776138
Как в redis stream передать многомерный словарь?
Он жрет только одноуровневый, а типа {'a': 1, 'b': {'a': 1}} уже нет. Сериализатором нельзя, он ожидает словарь на входе.
Аноним 30/09/21 Чтв 19:45:35 2170973139
>>2170776
Сериализуй в json и передай в редис {"data": "your_json_here"}
Аноним 01/10/21 Птн 05:12:17 2171241140
кто то шарит в pyrogram? Как сейчас работает get.messages? почитал документацию, сделал по ней вылетает ValueErorr, разные значения в message.id ставил, оставлял только chat.id, не работает, подскажите аноны, как получать сообщения юзерботом на пирограмме?
Аноним 01/10/21 Птн 13:24:50 2171462141
Суп питонач. Я могу как-то с помощью pip'a узнать какие версии питона поддерживает текущая версия модуля? Или как я вообще это могу сдалеть не заходя в гитхаб и не смотря ченжлоги?
Аноним 01/10/21 Птн 14:00:20 2171491142
Аноним 01/10/21 Птн 15:31:43 2171581143
Джанго-макаки, используют на ваших галерах GraphQL, или это только моя такая выебистая?
Аноним 01/10/21 Птн 15:40:07 2171595144
>>2171581
Это же от требований зависит, если фронт "умный" и может сам менеджить данные, то можно юзать GraphQL, а если нет то и нахуй это не всралось
Аноним 01/10/21 Птн 16:00:07 2171620145
Почаны, что лучше - Tkinter или PySimpleGui?
Аноним 01/10/21 Птн 16:21:24 2171648146
>>2171620
Нормальные люди не используют python для дестктопных приложений, точка. Учи Java/C#/C++, точка.
Аноним 01/10/21 Птн 16:23:24 2171651147
>>2171620
Бинды к qt. Костылить свой гуй сегодня никаких денег не хватит.
Аноним 01/10/21 Птн 16:36:40 2171655148
>>2171648
Я и не спорю, мне для учебных проектов.

>>2171651
А из 2 моих вариантов ты бы что выбрал?
Аноним 01/10/21 Птн 16:57:14 2171666149
>>2171651
Хватит, у маска хватает. Хотя по факту его программисты изобрели урезанный аналог qt.
Аноним 01/10/21 Птн 18:21:02 2171711150
>>2171581
В случае джанги и его орм очень просто юзать графкуэль, в остальном это ебля с оптимизацией запросов к БД + нельзя сделать нормальное кеширование + ебля с проверкой прав доступа.
Аноним 01/10/21 Птн 18:37:16 2171722151
Результаты 40 отправленных резюме на Python Junior позицию

Из 40 отправленных резюме мне ответило только 3 HR, 14 человек написали что не подхожу, остальные заигнорили.

Первый HR

Прошли с ней общение, сказала идем на тех собес, я обрадывался, следующий тех собес назначен сразу на некст деньги, я немного подготовился, немного запросики повторил и т.д.

Результат тех собеса:

Меня не спросили не одного вопроса по питону, 80% вопросов было по БД и оптимизации запросов, я все это почти провалил.

Пришел ответ от HR :Вы нам не подходите

Следующие два собеседования -

Мне отослали тестовое,первое я выполнил минут за 30, второе за 3 часа, хотя давали до 7 дней там и там, но мне не ответили, а там вышло строчек 50 кода в 1 и строчек 300 в другом, все четко, просто игнор.


У меня уже жопа горит, я блять не знаю, я готов за копейки работать ради первого опыта, но даже шанса не дают попасть на тех собес, а тестовое задание такая хуйня.
Аноним 01/10/21 Птн 19:53:38 2171780152
ИМХО, если вы самоучка и не успеете запрыгнуть до ~2022 года вы в провале. Сейчас на рынок начнут выходить одебелевшие гигкбрейнсовые-скиллбоксшвайны, которым пообещали за 8 месяцев учебы зарплату в 50к. Если вы не учитесь в норм универе у вас очень очень мало шансов.
Аноним 01/10/21 Птн 20:11:34 2171791153
image.png 174Кб, 1417x472
1417x472
image.png 126Кб, 1476x475
1476x475
>>2171780
>ИМХО, если вы самоучка и не успеете запрыгнуть до ~2022 года вы в провале
Никогда так не говорили! Еще бы найти ту древнюю шешебку, где на соц рекламу наложили пасту про вкат и коммиты в одну ветку
Аноним 01/10/21 Птн 20:15:05 2171792154
>>2171722
А вам говорили про нетворкинг. Я вот учусь в максимально провинциальном говновузе по айти специальности, учат хуйне полной, но один из одногруппников оказался пиздец пробивным челом и уже на третьем курсе синьором-помидором стал в одной галере. И тут включается кумовство непотизм нетворкинг, с минимальным собесом взяли джуном в эту контору. Ну он меня не напрямую протянул если что, у него таких полномочий нет и в принципе он фронтенд. Короче заводите правильные знакомства, пацаны.
Аноним 01/10/21 Птн 23:22:13 2171887155
>>2171722
40? Это же очень мало. И в других сферах тебе тоже никто не ответит, дело не в проганье.
Аноним 02/10/21 Суб 00:13:15 2171896156
Что быстрее в производстве джянга, рейлс или нода?
Аноним 02/10/21 Суб 00:33:04 2171908157
>>2171896
Один хуй разницы. Все упирается в знание инструмента
Аноним 02/10/21 Суб 00:34:30 2171911158
Аноним 02/10/21 Суб 01:04:49 2171919159
>>2171722
>второе за 3 часа
> строчек 300 в другом, все четко,
Как можно за 3 часа высрать 300 строчек и что за лютый пиздец будет вместо кода, если так писать? Если не копи-паст из другого места и старых наработок, конечно.
Аноним 02/10/21 Суб 01:14:45 2171920160
В чём разница между питоновскими abc/collections.abc и typing?

В питоне для описания типов есть два механизма. Один это "абстрактные классы", второй typing.

Вот это сбивает конкретно, на что вообще смотреть и что скорее использовать? Даже официальных рекомендаций нет. typing вроде более новый, активно развивается, но в официальных доках в typing часто идёт отсылка к abc.

abc нравится тем, что вот красивая поддержка рантайма, можно всякие isinstance делать, хотя класс реально не наследован. Но тяжеловато и есть ощущение legacy. А typing вроде как модно и молодёжно.

Если я хочу какие-то свои типы-протоколы задекларировать, через что лучше делать, на 3.8+?
Аноним 02/10/21 Суб 01:19:46 2171923161
>>2171920
typing — это про type hinting (статическая типизация на минималках), abc и abstractmethod — это про интерфейсы. Два совершенно разных инструмента, а ты их в одну кучу смешиваешь

> Если я хочу какие-то свои типы-протоколы задекларировать
Что именно и зачем?
Аноним 02/10/21 Суб 01:47:50 2171937162
>>2171923
Смысл в том, что мне надо как-то задекларировать тип объекта, который я могу передавать в фунцию. У объекта должно быть несколько методов, то есть это "протокол".

Можно пытаться как-то описать это через abc, сделать там тип MyProto, можно через typing, в 3.8 для этого сделали typing.Protocol
https://docs.python.org/3.8/library/typing.html#typing.Protocol

abc интересны тем, что там возможность проверки в рантайм есть, через isinstance. typing интересен тем, что модули вроде mypy делают более глубокие проверки, на соответствие методов тому, что надо, а не просто наличие этих методов, что вообще важно.

А вообще, я как-то серьёзно этими технологиями не пользовался, но сейчас понимаю, что пора понимание улучшать в этой части.
Аноним 02/10/21 Суб 01:59:48 2171941163
>>2171937
Кмк, ты пытаешься решить абстрактную задачу, оттого и нет хорошего понимания, каким путем пойти. Лучше все же решать реальные и конкретные задачи.

> мне надо как-то задекларировать тип объекта, который я могу передавать в фунцию
Зависит от того, зачем тебе. Если ты хочешь сделать интерфейс метода более понятным для программиста — добавь type hint-ов. Про type hinting есть мотивационный PEP, не помню номер. Там отлично описано, как работать с кастомными типами данных и с generic-ами. Но type hinting — это не совсем про улучшение читаемости кода, это больше про линтинг через mypy.

С abc тоже интересная история. Чаще всего, они больше усложняют код, нежели упрощают. Поэтому надо смотреть на конкретную задачу

По теме, советую книжку Expert Python Programming, там как раз есть главы про это все
Аноним 02/10/21 Суб 02:07:23 2171945164
image.png 36Кб, 962x274
962x274
Как это работает? Ошибка старая будто закешировалась и теперь всякий раз выскакивает при вызове функции из модуля. Даже если функцию не использовать, то ошибка всё равно выскакивает.
Аноним 02/10/21 Суб 02:18:27 2171951165
>>2171941
У меня задачи как раз самые что ни на есть практичные.

Я передаю какие-то объекты в функции-методы, пихаю их в очереди. При этом мне надо задекларировать тип, чтобы было понятно, что от объекта требуется.

Даже в форме лёгкого деанона. Есть класс, который делает обработку сложных данных. Там есть методы "подгрузить данные", и в зависимости от того, что за данные, могут быть какие-то события возникать.

Для обработки этих событий класс имеет что-то вроде коллбэков. Но точнее, мне хочется туда передавать объект вида "очередь", а точнее объект, имеющий методы вроде put_nowait. Это может быть как обычная очередь queue.Queue, так и asyncio.Queue, так и специальный мой класс совсем другого рода, то тоже имеющий такой метод.

Я столкнулся с тем, что хочется как-то описать этот тип, те метода, которые в нём нужны, но я не очень понимаю, как это грамотно сделать.
Аноним 02/10/21 Суб 02:28:28 2171953166
>>2171951

class ComplexDataHandler:
def load_data(self, data: pandas.DataFrame):


Можно еще проверку добавить, если сильно нужна:

assert isinstance(data, pandas.DataFrame), ‘Хуйню передал’

> передавать объект вида "очередь", а точнее объект, имеющий методы вроде put_nowait. Это может быть как обычная очередь queue.Queue, так и asyncio.Queue, так и специальный мой класс совсем другого рода, то тоже имеющий такой метод

def func(queue: typing.Union[queue.Queue, asyncio.Queue, CustomQueue]):


Если правильно понял, то тебе type hinting-а будет достаточно

https://www.python.org/dev/peps/pep-0484/




Аноним 02/10/21 Суб 02:36:39 2171955167
>>2171941
>По теме, советую книжку Expert Python Programming, там как раз есть главы про это все
Глянул, на удивление находится по первым ссылкам книжка. Про эту тему там похоже ничего адекватного нет и вообще книжка хоть и свежая, но уже устаревшая. Она про 3.7, а очень много по тебе добавилось в 3.8+.

Но вообще по некоторым другим темам, более серьёзным, книжка смотрится очень интересной и полезной, на первый взгляд, стоит изучить, так что спасибо.

>>2171953
>def func(queue: typing.Union[queue.Queue, asyncio.Queue, CustomQueue])
Вот это смотрится очень грязно и костыльно. Я не хочу привязываться к конкретным функциям в принципе. В частности потому, что я хочу, чтобы можно было передавать любой тип, главное, чтобы там были определены некоторые меторы. В объем условно "реализован интерфейс", но без наследования от интерфейса.

Чтобы был полноценный duck typing.

В принципе в typing есть для этого typing.Protocol. Я даже как-то пока так сделал, работает. Но нет уверенности, что я делаю идейно правильно.
Аноним 02/10/21 Суб 02:54:20 2171961168
>>2171955
> хочу, чтобы можно было передавать любой тип, главное, чтобы там были определены некоторые меторы. В объем условно "реализован интерфейс", но без наследования от интерфейса

Тогда через abc и abstractmethod, если тебе более-менее каноничный способ нужен. В книжке, которую кидал, как раз есть пример. Но

> без наследования от интерфейса

Не понятно, откуда такое желание. Явное лучше неявного, все таки. Если у тебя слишком обобщенный и универсальный интерфейс -- это может создать лишнюю сложность. Простой интерфейс -- это один из критериев хорошо спроектированной системы
Аноним 02/10/21 Суб 04:16:59 2171970169
>>2171955
Кстати оказывается всё намного проще, если в питоне 3.8, или если испольовать typing_extension в более старых версиях.

Есть специальный декоратор
@typing.runtime_checkable
который позволяет для протоколов делать проверку через issubclass и isinstance. То есть мне не надо самому абстрактный класс реализовывать, всё typing делает за меня.

Я пишу
@typing.runtime_checkable
class TypeQueue(typing.Protocol):
____def put_nowait(self, element):
________... # рекомендуется именно троеточие

и после этого
def foo(q: TypeQueue):
____ code

и не только mypy отловит, но и в коде я могу сделать
def foo(q: TypeQueue):
____ if not isinstance(q, TypeQueue):
________ raise TypeError

и всё будет работать.
Но в рантайме оверхед, конечно, и проверка ограниченная - только наличие методов. mypy может проверить соответствие методов более детально. Но зато просто в коробке.

И не нужно никакого наследования от интерфейсов.

Я могу использовать queue.Queue или asyncio.Queue, или любую чужую библиотеку и не вносить в них изменения никакие.

Вот это реально здорово.

Аноним 02/10/21 Суб 05:09:43 2171971170
>>2171648
Так а если нужно что-то простое и кроссплатформенное? Какой-нибудь wxPython вполне норм, вроде.
Аноним 02/10/21 Суб 05:18:32 2171973171
>>2171961
>Тогда через abc и abstractmethod
>Не понятно, откуда такое желание
И как он заставит asyncio.Queue унаследовать от этого ABC? По-моему, Protocol как раз единственное разумное решение здесь.
Аноним 02/10/21 Суб 10:36:33 2172037172
16324138101570.png 17Кб, 746x600
746x600
Питонач, посоветуй, пожалуйста, книжек/статей по асинхронности, многопоточности и многопроцессорности.
Спасибо.
Аноним 02/10/21 Суб 11:52:42 2172085173
>>2172037
В документации достаточно инфы, тебе нужно книги по распределенным системам смотреть что бы не обосраться с асинхронностью, потому что когда дело доходит до изменения стейта начинается лютая жопа
Аноним 02/10/21 Суб 11:56:48 2172087174
>>2172085
>тебе нужно книги по распределенным системам смотреть
Можно что-нибудь посоветовать?
Аноним 02/10/21 Суб 12:23:41 2172092175
image.png 368Кб, 594x875
594x875
>>2172087
Если хочешь пердолить докеры с куберами, то это можно почитать
Аноним 02/10/21 Суб 15:12:46 2172200176
>>2172085
>>2172037
Асинхронность может быть многопоточной?
Аноним 02/10/21 Суб 15:41:46 2172221177
>>2172200
Когда ты начинаешь работать любой более-менее большой системой с очень большой вероятностью она будет многопоточной. Причем ты даже в однопотоке можешь обосраться. И вообще, асинхронность и многопоточность это ортоганальные вещи.

Вот например, есть у тебя состояние, тебе нужно получить и изменить его если оно соответствуюет определенным условиям.

async def change_state(state_id, new_data):
____state = await get_state(state_id)
____if state.available:
________state.data = new_data
________state.available = False
________await set_state(state)

Вроде бы ничего такого, если у тебя эта функция запрашивается не особо часто. Но если ебошить дохуя запросов так, что бы изменение стейта в одной корутине происходило раньше чем его проверка в другой, то у тебя скорее всего проебется консистентность.
Это называется гонка состояний
https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8
Аноним 02/10/21 Суб 19:26:55 2172377178
Screenshot1.png 18Кб, 629x301
629x301
Аноним 02/10/21 Суб 19:56:01 2172411179
>>2172377
В 6 строчке у тебя зачем-то and вставлен
Аноним 03/10/21 Вск 01:33:35 2172553180
image.png 15Кб, 696x245
696x245
>>2172377
чот ты сложна сделал
Аноним 03/10/21 Вск 10:58:38 2172646181
>>2172092
А нахуй на обложке птицы?
Аноним 03/10/21 Вск 11:01:28 2172647182
>>2172646
Они могут распределенно насрать тебе на голову.
Аноним 03/10/21 Вск 11:11:29 2172654183
image.png 212Кб, 500x655
500x655
image.png 211Кб, 500x656
500x656
>>2172646
Это не самая странная обложка, которая у них есть
Аноним 03/10/21 Вск 11:14:45 2172657184
>>2172647
но в этом не будет системы
>>2172654
пиздец они психи!
Аноним 03/10/21 Вск 11:21:40 2172660185
>>2172646
У этого издания на обложке вымирающие виды.
Аноним 03/10/21 Вск 11:56:47 2172668186
>>2172660
теперь понятно. нихуя они зоологи - орнитологи
Аноним 03/10/21 Вск 12:07:18 2172671187
>>2172668
Тут больше интересно, что ты никогда не видел книг от орайли. Вкатываешься с нуля за три недели первый день?
Аноним 03/10/21 Вск 14:19:34 2172741188
>>2172671
не, я вкатываюсь полностью без книг и каких либо материалов.
ЭКСТРИМ ВАРИАНТ
Аноним 03/10/21 Вск 18:13:05 2172953189
Решил значит помимо sqlite изучить и что-то серьезнее. Взял докер значит, накатил постгрес, pgadmin. И там оказывается надо создавать базу данных, потом ещё какую-то схему и аж тогда таблицу, когда в sqlite вроде сразу таблицу создавал.

База данных у меня что-то типа postgres_test, потом идёт схема mysuperapp и аж потом таблица test
То я типа теперь должен используя sqlalchemy в модели постоянно дописывать
__tablename__ = "test"
__table_args__ = {"schema":"mysuperapp"}
? Оно-то работает и строчка туда сюда, но мне чет не нравится так дописывать и вроде у других в коде такое не видел. Что мне надо поменять, чтобы просто было без типа того тэйбл аргс?
Аноним 03/10/21 Вск 18:17:06 2172962190
>>2172953
При этом при подключении я же писал что-то вроде
postgresql+asyncpg://user:password@localhost:1337/mysuperapp
Ну это оно базу данных определило, а дальше схема с таким же названием и её уже указываю

Типа postgres_test -> mysuperapp -> mysuperapp -> test
Аноним 03/10/21 Вск 19:59:01 2173046191
>>2172962
оказывается надо просто использовать готовую схему public, а не создавать свою)) сразу понял как включил после отдыха
Аноним 04/10/21 Пнд 10:15:30 2173310192
Аноним 04/10/21 Пнд 12:42:39 2173492193
>>2165167 (OP)
Аноны, посоветуйте ресурс или книгу чтобы научится писать качественный код на сабже? Работаю в R§D уже 4 года, язык знаю но мой код похож на парашу может есть чтото для чистоты и качества кода именно
Аноним 04/10/21 Пнд 12:58:17 2173524194
Как лучше всего в pythone обезопасить поиск через mysql чтобы пользователь не мог присобачить drop или ещё что нибудь
Аноним 04/10/21 Пнд 12:59:42 2173529195
>>2173524
Экранирование запросов, как и в любом другом языке
Аноним 04/10/21 Пнд 13:12:32 2173541196
>>2173524
Почитай про Prepared statement
Аноним 04/10/21 Пнд 13:29:14 2173558197
Как в джанге получить файл настроек, не зная имени приложения, в котором настройки? Мне нужно написать модуль, который можно сразу в готовый проект вставить и его не редачить, но в нём надо что-то из настроек подтягивать, для чего надо имя приложения знать.
Аноним 04/10/21 Пнд 13:43:25 2173570198
>>2173558
from django.conf import settings

Не то, что тебе надо?
Аноним 04/10/21 Пнд 15:46:56 2173662199
станислав полемин 04/10/21 Пнд 17:26:29 2173769200
хочу написать штуку, которая перебором значений нескольких переменных будет решать пример, что я делаю не так?
https://ideone.com/30nLbH
станислав 04/10/21 Пнд 17:29:11 2173773201
бамп
Аноним 04/10/21 Пнд 17:29:59 2173775202
Аноним 04/10/21 Пнд 17:38:51 2173795203
>>2173492
Я бы подрубал линтер и смотрел на ошибки, которые он находит.
Аноним 04/10/21 Пнд 17:39:28 2173796204
Аноним 04/10/21 Пнд 17:42:59 2173804205
Аноним 04/10/21 Пнд 17:44:02 2173806206
>>2173769
>что я делаю не так?
Примерно всё. Попробуй для начала синтаксис языка изучить
станислав 04/10/21 Пнд 17:44:23 2173807207
Аноним 04/10/21 Пнд 17:47:28 2173810208
>>2173807
zip тебе не поможет. Ебашь цикл в цикле в цикле
станислав 04/10/21 Пнд 17:48:30 2173813209
>>2173810
не мог бы ты показать как будет здесь выглядеть?
Аноним 04/10/21 Пнд 17:49:56 2173815210
>>2173813
for a ... :
____for b ... :
________for c ... :
____________ x = ...
Аноним 04/10/21 Пнд 17:55:59 2173824211
>>2173815
>
>________for c ... :
спасиби, брат питонист
станислав 04/10/21 Пнд 18:14:22 2173842212
Аноним 04/10/21 Пнд 18:18:54 2173846213
станислав 04/10/21 Пнд 18:41:53 2173878214
Аноним 04/10/21 Пнд 19:00:34 2173910215
Аноним 04/10/21 Пнд 19:30:53 2173950216
>>2173910
СПАсибо бОльшое БРатец Питонус!!!!!!
станислав 04/10/21 Пнд 19:59:32 2173987217
Аноним 04/10/21 Пнд 20:00:17 2173988218
Аноним 04/10/21 Пнд 20:01:06 2173989219
Аноним 04/10/21 Пнд 20:01:25 2173991220
Аноним 04/10/21 Пнд 20:12:11 2174001221
>>2173989
Что ты со своими бампами заладил? Что ты вообще пытаешься делать и почему ты считаешь, что твой код должен что-то печатать?

Поставь отладочную печать и посмотри значения.
Аноним 04/10/21 Пнд 20:33:41 2174018222
Поможет кто по асинхронщине?
Сделал через aiomisc сервис типа PeriodicService
В коллбеке парсятся данные и делается сохранение в бд. Почему-то именно сохранение не отрабатывает и обрывается из-за raise RuntimeError('Event loop is closed')
Сильно палками не бейте, асинхронщину учу недавно. Почему цикл закрывается до окончания работы запроса?
python3.9
Аноним 04/10/21 Пнд 20:40:47 2174023223
>>2174018
Скорее всего ты запускаешь какую-то задачу и реально не ждёшь её окончания.

Очень часто когда ты пишешь в функции main()
await something.run()
на самом деле что-то просто запускается в фоне и ты окончания не ждёшь. Это самая обычная история.

Попробуй в конце фунции main(), или той функции, которую ты через asincio.run() запускаешь, сделать await asyncio.sleep(10). Вот чтобы не закрылось всё сразу.

про aiomisc ничего не знаю.
станислав 04/10/21 Пнд 20:45:09 2174030224
>>2174001
отладочная печать ничего не умеет. я просто хочу выяснить что не так с этим кодом, где я не соблюдаю синтаксиса, я не могу понять почему код ничего не выдает!
https://onlinegdb.com/66UjCXc--
Аноним 04/10/21 Пнд 20:54:37 2174040225
>>2174030
Тебе не кажется, что программирование это не совсём твоё? Код ничего не выдает, потому что условие x==297 and d==117 у тебя не выполняется ни в одной итерации цикла. Чтобы наглядно в этом убедиться, достаточно посмотреть значения d, в случае если x=297, d не принимает 117.
Аноним 04/10/21 Пнд 21:01:53 2174048226
>>2174030
Если тебе нужно, чтобы принт срабатывал в случае если хотя бы одно условие верно, нужно использовать or вместо and.
Аноним 04/10/21 Пнд 21:05:00 2174050227
>>2174040
мне просто задачку по математике надо решить, знаю, что не мое,
> Код ничего не выдает, потому что условие x==297 and d==117 у тебя не выполняется ни в одной итерации цикла. Чтобы наглядно в этом убедиться, достаточно посмотреть значения d, в случае если x=297, d не принимает 117.

но спасибо за инфу, все понял,
Аноним 04/10/21 Пнд 21:07:51 2174052228
>>2174023
>про aiomisc ничего не знаю
Просто вспомогательная либа, где наборы классов для готовых сервисов сделаны.

Бд сразу закрывалась после установления соединения, она же и закрывала цикл.

Благодарю
Аноним 04/10/21 Пнд 21:19:13 2174064229
image.png 7Кб, 612x121
612x121
>>2173842
теперь подумай, почему у тебя было неправильно. почитай там описание синтаксиса, функций всякое такое
Аноним 04/10/21 Пнд 21:25:10 2174068230
>>2174064
а я поздно проснулся. ну пох
Аноним 05/10/21 Втр 00:36:20 2174181231
Питонач, не понимаю, как продвинуться в изучении языка дальше. Я довольно хорошо задрочил стандартные типы данных и операции с ними, процедурное и функциональное программирование, модульность. Взялся за ООП - но все гайды/туториалы/видосы на ютубе даже длиной в час описывают ООП ровным счетом одинаково: class Animal, dog = Animal("Bobik", "woof-woof"), dog.speak()
Как это все применить в практической плоскости?
Аноним 05/10/21 Втр 00:41:56 2174184232
>>2174181
Начинай писать свои проекты
Изучай нужные/интересные тебе библиотеки
Читай толстые книжки
Аноним 05/10/21 Втр 00:50:22 2174188233
>>2174184
>Начинай писать свои проекты
Так я пишу, вот по работе недавно хуитку для автоматизации написал. Там и модульность, и аутентификация, и запросы из разных баз данных, и запись в третью базу данных, и форматирование данных, и даже работа с гитом и ci/cd. Но это все функциональщина, а вот как перенести логику функций, когда алгоритм просто следует от предыдущей операции к следующей, на логику классов, когда есть все вот эти полиморфизмы, наследования и инкапсуляции - вот это я вообще не представляю. И примеры с class Animal вообще не помогают.
Аноним 05/10/21 Втр 02:01:54 2174201234
Нампи имеет смысл собирать с 8байтным интом для x64?
Аноним 05/10/21 Втр 05:55:00 2174228235
>>2174188
>это все функциональщина
Это плохо, что ли? Наоборот, хорошо. ООП нинужен, уже тем более насильно его пихать.
Аноним 05/10/21 Втр 06:44:13 2174231236
>>2174188
Очень полезно даже не самому писать, а с чужими проектами разбираться, как они устроены, работают и т.п. С какими-нибудь небольшими.

А к ООП надо самому придти, чтобы понять, зачем это надо. И смотреть, как это реально используют. Потому что на задачах, что можно в примитивных примерах изобразить, смысла в ООП нет никакого. А на реальных имеет, хотя не на всех задачах.
Аноним 05/10/21 Втр 07:17:10 2174234237
14579580166763.png 77Кб, 200x199
200x199
>>2174231
>А на реальных имеет
Аноним 05/10/21 Втр 08:58:32 2174253238
Так. А что python на 4 версию переезд планирует?
Аноним 05/10/21 Втр 10:21:09 2174325239
>>2174253
Пока не известно, в ближайшие лет пять начинать обсуждать не планируют.
Аноним 05/10/21 Втр 10:38:48 2174336240
Почему получаю ошибку 'ModelSelect' object has no attribute 'content'? Согласно докам я через графовые связи могу получить атрибуты и значения другой модели.

Models:

class Requirement(RegistryRequirement):

req_id = CharField(max_length=20)
guid = UUIDField(unique=True, default=uuid4)
created = DateTimeField(default=datetime.now)
updated = DateTimeField(null=True, default=None)

class Meta:
database = source_db_proxy
db_table = 'requirement'


class RequirementDescription(RegistryRequirement):

content = TextField(default=None, null=False)
publication_status = TextField(default=None, null=True)
publication_date = TextField(null=True)
work_status = TextField(default=None, null=True)
regulation_level = TextField(default=None, null=True)
act_requisites = TextField(default=None, null=True)
act_text = TextField(default=None, null=True)
valid_to = DateField(default=None, null=True)
validity_status = BooleanField(default=None, null=True)
object = TextField(default=None, null=True)
compliance_list = TextField(default=None, null=True)
compliance_list_ext = TextField(default=None, null=True)
req_guid = ForeignKeyField(
Requirement, to_field="guid", backref="descriptions", on_delete="cascade"
)

Select query

query = (
db_source.Requirement
.select()
.join(db_source.RequirementDescription)
)
for q in query:
print(q.guid, q.descriptions.content
Аноним 05/10/21 Втр 10:43:52 2174340241
>>2174336
Это peewee, забыл указать
Аноним 05/10/21 Втр 11:42:32 2174383242
>>2174181
про абстрактные фабрики читал?
Аноним 05/10/21 Втр 11:52:03 2174389243
Как скомпилировать два файла python в один?
допустим есть
common.py
main.py
а нужно получить скомпилированный в виде одного.
python -OO -m py_compile common.py main.py
создают два файла и соответственно их нельзя запустить, компиляция нужна под linux и windows
Аноним 05/10/21 Втр 12:14:23 2174409244
>>2174389
Тебе нужен бинарник?
Аноним 05/10/21 Втр 12:18:51 2174413245
Аноним 05/10/21 Втр 12:26:59 2174415246
Аноним 05/10/21 Втр 12:28:01 2174417247
>>2174413
Nuitka, можно через cython
Аноним 05/10/21 Втр 13:01:00 2174443248
Аноним 05/10/21 Втр 13:46:07 2174467249
Аноним 05/10/21 Втр 13:59:52 2174484250
>>2174389
Если тебе нужен исполняемый бинарник, не зависящий от питона, это одна история. Nuitka как вариант.

Если тебе нужно просто в виде одного файла собрать, то там другие опции есть, в виде архива собрать (причём вместе с зависимостями можно) и потом архив запускать. Но для этого нужно будет, чтобы питон был в системе.
https://docs.python.org/3/library/zipapp.html
Аноним 05/10/21 Втр 14:39:34 2174515251
Посоветуйте хороший учебный материал по Джанго, что-то похожее на Flask mega tutorial от Мигеля Гринбегра было бы отлично.
Аноним 05/10/21 Втр 15:03:55 2174534252
Аноним 05/10/21 Втр 16:15:05 2174606253
>>2174484
А есть годные обфускаторы кода? Просто держать проект на сервере заказчика опасно, кто знает сегодня он платит а завтра заберет себе проект и будет сам им заниматься.
Аноним 05/10/21 Втр 17:05:43 2174643254
>>2174606
Работай с байткодом
Аноним 05/10/21 Втр 19:19:40 2174773255
>>2174606
И правильно сделает, лучше сторониться такого зловредного говна как ты.
Учись работать нормально.
Аноним 05/10/21 Втр 19:32:43 2174784256
>>2174606
Тогда или компиляция в бинарник, или надо предоставлять сервис, а не код, или/и прописывать всё в договорах.

Байткод не решение, по питоновскому байткоду исходный код восстанавливается практически один в один.
Аноним 05/10/21 Втр 22:53:29 2174964257
>>2174228
Мне казалось, что ООП - это де-факто стандарт индустрии, вообще любого языка. А если я пишу код на функциях, то это какая-то хуета. Разве нет?
Аноним 06/10/21 Срд 01:34:27 2175084258
Аноним 06/10/21 Срд 03:36:43 2175110259
Скинул резюме, а мне говорят "не увидел у вас в резюме вашего образования"
Вот нахуя так сразу срезать? Чот грустно все это
Аноним 06/10/21 Срд 08:43:55 2175192260
>>2175110
Так и напиши:
Образование: нинужно.
Аноним 06/10/21 Срд 09:45:12 2175240261
Аноним 06/10/21 Срд 09:52:33 2175252262
>>2175110
Ну пройди атестацию. Или купи диплом.
Аноним 06/10/21 Срд 10:00:20 2175265263
>>2175240
>>2175252
Образование: "ну дома книжки чот читал, что на дваче советовали, да на степике чот сертификаты какие-то получил никому не нужные"

Да в принципе норм, я в ваше айти не сильно стремлюсь, пока на 1с терплю как меня все в жопу ебут
Аноним 06/10/21 Срд 11:06:05 2175333264
2902497480.jpg 84Кб, 819x819
819x819
>>2175265
>да на степике чот сертификаты какие-то получил никому не нужные
Чем этот принцип отличается от университетского?
>ну дома книжки чот читал, что на дваче советовали
А что такое образование? Преподование в узкоспециализированном месте набор фактов? По какому критерию оно отличается от набора фактов, полученного дома от книг, или других медия носителей?
Образование по факту нужно для социализации (если ты соц. выблядок, который ищет друзяшек), и ради индокринации. Причём последнее было с раннего существования этого социальнного института, а именно в римской империи.
Если ты в свои года не понял - что образовани spook времён либерального просвещения объёб гоев на бабки, мне тебя жаль.
Аноним 06/10/21 Срд 11:23:05 2175345265
>>2175110
Ну ты и додик, когда был джуном, то обмазывал резюме сертификатами мейла и степика. Залетел в ойти в с первого собеса.
Аноним 06/10/21 Срд 11:31:15 2175354266
Анон, помоги нубу!
Хочу сделать бота для линейки через библиотеку pyautogui, но блин, линейка не регестрирует клики, что нужно использовать, чтобы клики регались в линейке?
Аноним 06/10/21 Срд 11:40:11 2175361267
Аноним 06/10/21 Срд 11:41:36 2175363268
>>2175265
>>2175110
>>2175333
бля да беги от таких работодателей что требуют высшее или еще какое говно, типа чтобы ты обязательно не курил или пил смузи .
это дауны.
Аноним 06/10/21 Срд 11:43:23 2175364269
>>2175361
Куртис Ярвин "Молдбаг".
Аноним 06/10/21 Срд 11:54:29 2175376270
>>2175364
Охуеть, как ты про него узнал?
Аноним 06/10/21 Срд 12:01:39 2175383271
У меня пара вопросов по статическим файлам и веб фреймворкам.
Как правильно организовать хранение файлов? Ну для своего проекта, просто отдельный каталог? И еще, прям всегда следует nginx использовать для отдать статики? Ну т.е. картинки-то понятно, а видео, например? Если я чанками отдавать хочу? И вообще, есть какая-нибудь альтернатива для обслуживания статики, кроме nginx? Интересует что-нибудь в асинхронных фрейворках. У многих есть что-то вроде serve_static, но это для чего, если не рекомендуется использовать?
Аноним 06/10/21 Срд 12:02:11 2175384272
>>2174188
Пока код не сильно отличается от стандартных примеров, выделение объектов не нужно.
А вот когда что-то действительно свое пишешь, у этой штуки появляется свое состояние и интерфейс, который в глобальной области вообще не к месту, ему бы свою область сделать. Вот с этого и начинается ООП. Когда хочется сгруппировать все в папочки и навести порядок.

Аноним 06/10/21 Срд 12:04:02 2175388273
>>2175383
Хранить на ютубе с доступом по ссылке
Аноним 06/10/21 Срд 12:09:04 2175394274
Аноним 06/10/21 Срд 12:13:55 2175399275
>>2175394
На твоём говносайте канал закончится, когда там 10 человек будут видео смотреть. Только CDN тебе поможет.
Аноним 06/10/21 Срд 12:24:26 2175416276
>>2175399
Так ты не загружаешь на cdn свою статику, он запрашивает у тебя, а потом только кеширует. Ты хоть почитай что советуешь. Я спрашиваю, как организовать хранение статики, а не как быстро доставлять её в любую точку
Аноним 06/10/21 Срд 12:33:03 2175427277
>>2175416
>Так ты не загружаешь на cdn свою статику
Это зависит от CDN, например, s3 хранит все данные у себя, а ты просто встраиваешь в свой сайт ссылки
Аноним 06/10/21 Срд 12:36:27 2175430278
>>2175427
Тот самый s3, который может откручивать в минус твой баланс и ты потом квартиру должен продать, чтоб рассчитаться за счет от ddos по запросам?
Аноним 06/10/21 Срд 12:39:05 2175434279
>>2175430
Если ты проебался с настройками оплаты, что бы не уходить в минус это твои проблемы.
В любом случае жирный контент это не то, что ты должен хранить у себя.
Аноним 06/10/21 Срд 12:47:52 2175447280
У меня как-то был проектец - чувак купил на месяц доступ к каким-то инфоцыганским курсам про успешный успех и хотел скачать их себе. Там был обычный вордпресс и unlisted ссылки vimeo. Ну я четенько скачал на пару впсок, запущенных на день, а потом оттуда синкнул ему на гугл-драйв. В районе терабайта там этого говна было, надеюсь они потратились чуток, лол.
Аноним 06/10/21 Срд 12:54:55 2175455281
>>2175434
А как ты настроишь его?
Если только метрику по количеству запросов делать будешь или считать сколько у тебя биллинг. Т.к. бабки у тебя откручивает не в реал тайме, а через час-два или больше. Так что загнать тебя в минус не так уж и трудно. Компании и обычные люди жаловались на то, что нет возможности настроить чтоб твое облако уведомляло о приближении нуля или вовсе отключалось, если ты зашел за определенную сумму. Амазону то выгодно
Аноним 06/10/21 Срд 13:03:16 2175465282
когда там эти ваши сайпаи на 10 питон перейдут?
Аноним 06/10/21 Срд 13:17:35 2175487283
Аноним 06/10/21 Срд 13:56:58 2175553284
>>2175354
Ёмаё, сегодня целый день пытался обойти эту шнягу, вроде называется Smart Guard. Даже AHK не работает, может кто знает, как обойти эту штуку? Все библиотеки испробовал...
Аноним 06/10/21 Срд 14:14:41 2175568285
>>2175553
Хуйня для защиты от автоматизации не дает тебе что-то автоматизировать? Удивительно.
Ну что тут можно сказать - бери книгу по с++ и учи, сделаешь драйвер и обойдешь его на уровне ядра. Как сделаешь, приходи.
Аноним 06/10/21 Срд 14:27:11 2175573286
>>2175568
но почему для линейки нет библиотек, которые могут обойти её...
Я ещё нуб, не знаю даже в какую сторону искать или что делать.
Аноним 06/10/21 Срд 14:35:49 2175587287
>>2175573
Ты тупой что ли? Как ты себе это представляешь?

- Да, мы создаём и продаём софт с защитой от ботов и читеров
- Да, мы знаем, что есть библиотечка на питончике, которая шлёт нахуй всю нашу систему

Серьёзно блять?
Аноним 06/10/21 Срд 14:37:46 2175589288
>>2175568
Посоветуешь книгу? Только без учета, что я 20 лет стажа на сипипи имею
Аноним 06/10/21 Срд 15:09:13 2175623289
>>2175589
Что, уже деменция начинается?
С опытом куришь ддк и можно опционально навернуть тот же шиндовс интерналс.
Аноним 06/10/21 Срд 15:14:19 2175627290
Что я могу создать на Пайтоне, чтобы работодатель сказал "Вау, я преклоняюсь перед твоим гением, держи 200К"?
Аноним 06/10/21 Срд 15:23:02 2175632291
>>2175627
Что-то новое и гениальное
Аноним 06/10/21 Срд 16:03:09 2175654292
>>2175632
Векторный гипердвач?
Аноним 06/10/21 Срд 16:14:01 2175656293
Кто знает какие еще есть ресурсы кроме codewars, где есть возможность порешать задачи, попрактиковаться на python?
Аноним 06/10/21 Срд 16:17:30 2175663294
Аноним 06/10/21 Срд 16:20:11 2175666295
Аноним 06/10/21 Срд 16:21:39 2175670296
>>2175654
Уже есть. Пикабу зовётся
Аноним 06/10/21 Срд 18:51:55 2175807297
>>2175384
>Вот с этого и начинается ООП. Когда хочется сгруппировать все в папочки и навести порядок.
Ну хз, разве не для этого как раз модульность нужна? Вот на примере моей приложухи - есть точка входа main.py, есть папочка controllers, в ней по отдельному .py файлу для контроллеров баз данных, отдельно лежит аутентификация, в /app лежит логика, в /output лежит выход. Вроде норм все расфасовано по папкам.
Аноним 06/10/21 Срд 19:47:27 2175868298
>>2175627
Операционную систему.
Аноним 06/10/21 Срд 20:27:25 2175922299
>>2175807
В моем понимании модуль это то же самое что и библиотека, набор функций без состояния.
Вот пример, когда мне кажется очевидно преимущество ООП, это Micropython. Класс SPI работает одинаково для аппаратного и программного варианта. То же самое с таймерами и другой периферией.
Если даже в таком случае тебе проще сделать функции отдельно, данные отдельно, то я даже не знаю, наверное тебе ООП ни к чему вообще.
Аноним 06/10/21 Срд 23:18:01 2176203300
e05b3945eac9a30[...].jpg 93Кб, 919x1000
919x1000
Анонэ, а как понять, что ты уже кодишь на уровне джуна или даже продвинутого джуна? Какие проекты нужно уметь реализовывать? Какие критерии? Одно же дело знать синтаксис, отдельные какие-то технологии, но какова должна быть практическая реализация, чтобы ты мог бы быть уверенным в том, что потянешь уже работу в компании? А не жиденько обосраться в итоге и быть выпизженным с позором.
Аноним 06/10/21 Срд 23:23:04 2176214301
>>2176203
Если при виде полноценной задачи (а не задачки в три строчки) ты не дрищешь в штаны и знаешь, что делать. Все эти градации отделяет лишь сложность таких задач.
Аноним 07/10/21 Чтв 00:13:26 2176249302
>>2176214
Если я могу, но с гуглом?
Аноним 07/10/21 Чтв 00:34:06 2176265303
>>2175587
А главное разработано и то, и другое одними и теми же людьми!
Аноним 07/10/21 Чтв 02:07:15 2176313304
>>2176203
Если сможешь за недельку накидать фронтенд алгола-68 для llvm, то поздравляю- ты больше не стажер.
Аноним 07/10/21 Чтв 14:34:14 2176727305
>>2175399
>На твоём говносайте канал закончится, когда там 10 человек будут видео смотреть. Только CDN тебе поможет.
Стоимость трафика на CDN раз в десятки раз выше, чем трафик на vps/серверах. Если у тебя заканчивается трафик на рядовом vps/dedicated сервере, то это значит, что ты бы на AWS уже заплатил за него сотни долларов. Тогда как впс такая стоит десятку.

Аноним 07/10/21 Чтв 15:32:15 2176779306
>>2176727
Не путай трафик и канал.
Аноним 07/10/21 Чтв 20:54:08 2177073307
Я скобкоёб, меня стиль K&R выводит из себя, что уж говорить про висящие куски питонокода. Ужасает невозможность написать if/for/etc() {} в одну строчку. Как питон можно превратить в скобкоебский язык? Может есть какая-то надстройка над интерпретатором чтобы скобки кругом и всё как в родных сиподобных языках?
Аноним 07/10/21 Чтв 21:17:53 2177095308
Аноним 07/10/21 Чтв 21:49:43 2177127309
>>2176779
CDN будет выгоднее, когда у тебя большая нагрузка, но редкая. То есть скажем в основном у тебя тишина, а потом бац, и прямой эфир с большим трафиком.

Иначе ты будешь платить сильно больше. Причём тут уже очень кусачие цены, потому что видео реально отжирает.

Вот оценки. Если ты вещаешь в 3 мегабита, то час трансляции у тебя будет 1 гигабайт примерно. Если твою часовую трансляцию смотрит 1000 человек, то ты истратишь террабайт. По тарифам амазона ты должен будешь за одну эту единственную трансу заплатить 50-100 долларов. При том, что всего 1000 человек.

Если же ты берёшь себе сервер с лимитом трафика, но с большими лимитами, то там куда скромнее цифры. Вот, например, меньше 1200 долларов в месяц, 10 гигабит подключение и 500 тб трафика. По тарифам амазона 500 тб это больше 20 тысяч долларов. Я сейчас не смотрю на unmetered тарифы, там скорее всего просто очень много пользователей сидит и ты большой канал не выжмешь.
Вот пример:
https://www.esited.com/hosting/10g-dedicated-server/
про этого провайдера ничего не знаю, просто тут с явно прописанными лимитами и при этом 10 гигабит порт.

Вещать стримы на AWS и аналогах можно только в том случае, если по подписке за деньги полноценные, что каждый пользователь реально не меньше 10 рублей в час платит за то, что смотрит.
Аноним 08/10/21 Птн 02:36:55 2177249310
Двощ, помоги, умоляю. Есть проект Skylift https://github.com/adamhrv/skylift для ардуино, не могу запустить так как постоянно ошибка синтаксиса
python skylift/cli_jobs.py wigle_api --ananas --wigle_api_key QUlEMjJiODA3ODk1ZTFjNGNzA2NDE= --jobs data/jobs/wigle_api.csv
File "skylift/cli_jobs.py", line 109
fp_wigle = join(job.path_in, f'{job.filename}.csv')

python skylift/cli_jobs.py
File "skylift/cli_jobs.py", line 109
fp_wigle = join(job.path_in, f'{job.filename}.csv')


В чем именно ошибка и как это пофиксить?
Аноним 08/10/21 Птн 02:39:43 2177250311
Аноним 08/10/21 Птн 02:51:50 2177251312
>>2177249
>>2177250
Ему не нравится ф-стринг. У тебя второй питон или третий младше 3.6.
Аноним 08/10/21 Птн 11:31:32 2177383313
Анон, какие вопросы задают на собесе на джуниор дата инженегра?
Стек Python, Airflow, Clockhouse, Tableau, Docker.
Предполагаю, что будут дефолтные вопросы, как и на бэкендера: ооп, бд, базовые алгоритмы. Но может еще есть какие-то по специальности?
Аноним 08/10/21 Птн 14:25:14 2177477314
Кто-нибудь знает чем переводить "десять" в 10? есть что-нибудь от яндекса?
Аноним 08/10/21 Птн 16:13:30 2177551315
Как в aiogram хранить переменные для каждого пользователя свои?
При этом сейчас у меня есть состояния пользователя реализованные через class UserStates(Helper)
Аноним 08/10/21 Птн 22:47:03 2177834316
Подскажите как сделать.
Есть небольшое приложение, оно возвращает урлы.
nginx отдает картинки. Как сделать так, чтоб от приложения отдавать nginx команду на возврат картинки? Т.е. типа у меня своя учетка, я загрузил картинку. Она доступна только мне. Я не хочу, чтоб другой кто-то по ссылке на пичку смог получить её.
Аноним 08/10/21 Птн 23:16:04 2177840317
>>2177834
Прокси с проверкой доступа, лучше на каком нибудь го такое писать.
Аноним 09/10/21 Суб 02:41:39 2177925318
>>2175376
Он просто из секты заднеприводных, и я не бэкендеров имею ввиду.
Аноним 09/10/21 Суб 10:47:37 2178023319
>>2177925
почитал про него, он рили псих. асло он педик или гомик?
Аноним 09/10/21 Суб 12:45:45 2178180320
Привет.
Работаю инженером в одной госшараге.
Для работы написал себе скрипт на питоне, просто обработчик данных.
Коллеги очень заинтересовались затребовали себе такой же.
С помощью pyinstaller сделал exeшник.
Всё работает отлично, но есть одна проблема - при клике на эксешник сначала происходит распаковка файлов и она идёт ОЧЕНЬ медленно. Ну и компы у нас в шараге весьма древние. Т.е. я кликаю по эксешнику, запускается пуская консоль и до запуска программы надо ждать иногда 10-20 секунд.
Меня это устраивает, но моим коллегам очень не нравится, что в консоли в течении всей распаковки ничего не пишется. Если бы там было написано что-то типа "Ждите, программа запускается" - это было бы всем понятно. А так люди думают, что просто всё зависло.
Но как я понял, вывести такое сообщение во время распаковки просто невозможно. Это блин очень странно, неужели только я столкнулся с такой проблемой? Всё что я смог - это включить дебаг bootloader и в консоль теперь сыпется всякий мусор при распаковке. Но выглядит это максимально криво.
Правильно ли я понимаю, что единственный шанс это исправить - добавить к моей проге графический интерфейс с одним-единственным окошком как в консоли, отключить нафиг в pyinstaller саму консоль и использовать встроенный в pyinstaller splash screen?
Или может есть какие-то альтернативы?
Неужели только у меня эксешник распаковывается так долго? Или это только меня смущает, всем остальным похуй?
Аноним 09/10/21 Суб 12:52:04 2178192321
>>2178180
Не может такого быть. Там в несколько мегабайт бандлы получаются, что там делать 10-20 секунд?
Аноним 09/10/21 Суб 13:02:30 2178209322
>>2178192
Ну мой эксешник весит 35 мегов. Если запустить pyinstaller в onedir режиме - получится папка на 80 мегов.
Не знаю, почему так долго распаковывает.
Я использую-то всего три библиотеки - pandas для загрузки данных из экселя, shapely для построения геометрии и matplotlib для рисования результирующих картинок.
Бывает кстати ещё одна проблема - выводится сообщение "Matplotlib is building the font cache. This may take a moment.", причём иногда оно появляется, иногда нет - но это уже не проблема распаковки понятное дело.
Аноним 09/10/21 Суб 13:16:10 2178227323
>>2178209
Ну хз тогда, это большие и навороченные либы, с ними могут быть нюансы.
Аноним 09/10/21 Суб 15:00:34 2178338324
>>2178192
распаковывать исполняемый код в виде кучи файлов и проверять его антивирусом.

Используй onedir, заебал.
Аноним 09/10/21 Суб 15:32:46 2178370325
>>2178180
>Это блин очень странно, неужели только я столкнулся с такой проблемой?
вообще говоря,да.
Ну не стремятся питонисты код шифровать и распространять экзешники.
То есть, один из способов решения этой проблемы - поставить коллегам питон.
Аноним 09/10/21 Суб 15:33:04 2178371326
>>2178338
Кстати да, у нас на работе Касперский параноидальный стоит.
>Используй onedir, заебал.
И передавать коллегам 80 мегов говна?
Блин, эксешник так удобен и выглядит так аккуратно.
Аноним 09/10/21 Суб 15:38:56 2178379327
>>2178370
>То есть, один из способов решения этой проблемы - поставить коллегам питон.
Тогда нужно будет и все библиотеки им ставить.
Вообще это возможно, но долго и сложно - нужно будет писать служебку и обоснование нашим админам, потом учить коллег, как запускать питон...
Блин, я вообще так-то специально из матлаба в питон перекатился в надежде, что наконец пропадут проблемы с передачей моих прог другим людям.
Аноним 09/10/21 Суб 15:42:41 2178383328
>>2178379
На шарп тогда надо было катиться.
Аноним 09/10/21 Суб 15:45:36 2178386329
>>2178371
>Блин, эксешник так удобен и выглядит так аккуратно.
Ты инженер или формошлеп? Тебя не должно это ебать. Софт решает задачу и решает ее уникальным образом. Конкурировать не с кем.
Похуй вообще. Они будут пользоваться чем угодно, если это экономит им время.
Аноним 09/10/21 Суб 15:51:01 2178391330
>>2178379
>писать служебку и обоснование нашим админам
так ты ты уже нарушил гостайну и предал Родину, пердун из НИИ!
Сиди и вручную интегрировай!
Аноним 09/10/21 Суб 15:55:33 2178393331
>>2178386
>Ты инженер или формошлеп?
Инженер, но мечтаю быть формошлепом. Даже курсы окончил яндексовкие по JS и питону.

>Они будут пользоваться чем угодно, если это экономит им время.
Безусловно. Проблема в том, что мне самому не очень приятно, что все впечатление от моей программы портится каким-то сраным распаковщиком.
Аноним 09/10/21 Суб 16:02:02 2178397332
Наверное, нужно ещё раз объяснить. Мне не важно, что прога долго распаковывается. Подождут 20 секунд, не развалятся, сами расчеты идут достаточно быстро, а пользоваться этой прогой будут относительно редко.
Но мне эстетически неприятно видеть висящее чёрное окно консоли с моргающим курсором без каких-либо надписей.
Аноним 09/10/21 Суб 16:04:55 2178398333
>>2178397
чувак, все прекрасно понятно.
Вот такой вот выбор - быть Инженером или Пользователем.
Твои коллеги поборят в себе лень, если они инженеры и все будет хорошо.

Никто пока не решил эту проблему и не написать новый интерпретатор питона, такой чтобы он внутри exe работал.
Нужны усилия еще большего числа людей.


но можешь еще perl освоить ради смеха. там все это работает.
Аноним 09/10/21 Суб 16:09:03 2178401334
>>2178397
> эстетически неприятно видеть висящее чёрное окно консоли
а, так ты не весь мануал на pyinstaller прочитал.
там есть ключик --windowed
Аноним 09/10/21 Суб 16:13:56 2178402335
>>2178180
>Но как я понял, вывести такое сообщение во время распаковки просто невозможно.

опять же, пункт про splash screen в документации тоже пропустил?
Аноним 09/10/21 Суб 16:14:19 2178403336
>>2178401
Это же просто отключит консоль. Станет ещё хуже - при клике на эксешник вообще ничего не будет происходить пока он не распакуется. Даже не поймёшь, кликнул ты по нему вообще или нет.
Аноним 09/10/21 Суб 16:16:31 2178406337
>>2178402
Так splash screen с консолью не работает, как я понял. Нужно будет писать гуй, или я не прав?

>>2178180
>Правильно ли я понимаю, что единственный шанс это исправить - добавить к моей проге графический интерфейс с одним-единственным окошком как в консоли, отключить нафиг в pyinstaller саму консоль и использовать встроенный в pyinstaller splash screen?
Аноним 09/10/21 Суб 16:18:24 2178407338
>>2178406
Не знаю. Нам это не надо.
Ты инженер или где? Протестируй и отпишись.
Аноним 09/10/21 Суб 16:21:01 2178412339
>>2178407
>Нам это не надо.
Что и удивительно. Я преполагал, что питон - язык для инженерных расчетов, современная замена фортрана. И что такие проблемы давным-давно решены без костылей.
Но ладно.
Аноним 09/10/21 Суб 16:25:12 2178418340
>>2178412
Инженер-питонист просто проставит что захочет на свой АйМак M1 из незаблокированного интернета. Там даже корпоративные способы контроля не особо работают.

А вы там ебитесь в подвале сами со своим устаревшим железом и без SSD
Аноним 09/10/21 Суб 16:31:09 2178428341
>>2178418
Лол.
Я так-то в филиале Роскосмоса работаю.
К которому потом твои инженеры-питонисты на аймаках, роняя по дороге кал, бегают за помощью, когда очередной еба-шаттл ебанет в полете, забрав с собой смертничков.
Зато аймак/ссд/интернет на работе, только результатов как не было, так и нет.
Аноним 09/10/21 Суб 17:06:24 2178448342
Аноним 09/10/21 Суб 17:34:30 2178471343
>>2178428
это я тебя еще пожалел.
на самом деле инженер-питонист дает коллегам ссылочку на google collab, который сразу его ноутбуки запускает в вебе.
Аноним 09/10/21 Суб 17:35:25 2178473344
>>2178023
Полехче тут с антисемитизмом и гомофобией, гой.
Аноним 09/10/21 Суб 23:43:43 2178876345
How-to-Add-a-Bo[...].jpg 38Кб, 602x372
602x372
Аноны, вопрос не по теме, но в голову пришло его задать только программистам Python, ведь Telegram-боты пишутся на Питоне.
Есть ли бесплатный Телеграм-бот, который приветствует нового пользователя, заставляет его решать капчу и при этом приветственное сообщение видно только новому подписчику?
Аноним 10/10/21 Вск 00:33:54 2178936346
>>2178876
Shieldy но я видел и другие аналоги.
Аноним 10/10/21 Вск 01:29:35 2178959347
>>2165167 (OP)
Пацаны, пытался запустить pytest из Makefile, он мне без конца серил что "pytest not found" хотя он был установлен что в виртуальной среде что глобально, когда изменил на "python -m pytest" как советовали тут https://stackoverflow.com/questions/35998992/py-test-command-not-found-but-library-is-installed он мгновенно все сделал как надо
Че это за магия?
Аноним 10/10/21 Вск 01:32:16 2178960348
image.png 57Кб, 734x370
734x370
>>2178959
Я херею с этих петушков со стэка - тупо цитируют оф доки питона, но когда им задают вопрос по существу "что значит что ты только что сказал", теряются и убегают
Аноним 10/10/21 Вск 01:39:12 2178961349
>>2178876
Вот ты додик. Ты разве видел в каналах личные сообщения?
Это же канал. Он общий.
Никакое api нe заставит Телеграм делать то, что он не хочет делать.
Аноним 10/10/21 Вск 01:53:42 2178969350
>>2178960
-m значит, что ты запускаешь модуль, точнее пакет, на исполнение.

Технически, если ты сделал пакет
my_pkg,
то при запуске
python -m my_pkg
у тебя запустится __main__.py файл, что лежит в каталоге этого модуля.

Примеры
python -m http.server
это чтобы веб сервер запустить из консоли. И много другого.

Но необходимо, чтобы модуль поддерживал этот функционал, чтобы там был файл __main__.py
Аноним 11/10/21 Пнд 02:06:11 2179911351
Аноним 11/10/21 Пнд 11:43:52 2180096352
>>2178428
Лол, биомусор из госшараги учит кого-то эффективности. Еще и про результаты какие-то говорит, сидя в рогозинкосмосе. Сюр какой-то.
Аноним 11/10/21 Пнд 12:57:13 2180167353
>>2178180
>Коллеги очень заинтересовались затребовали себе такой же.
>Нахуй пошли, я забесплатно делать для вас это не буду
Аноним 11/10/21 Пнд 13:17:59 2180179354
>>2178180
Не нравится, пусть не пользуются, я не очень понимаю, какая твоя-то беда? Просто скажи, что так работает.
Аноним 11/10/21 Пнд 16:08:55 2180329355
>>2179911
>Набигай, посоны
Куда набегать то? Я помню, было время, тут треды за три дня в бамплимит уходили, сейчас этот уже больше двух недель, и только 350 постов.

Питон, похоже, теряет популярность и уходит в андеграунд.

Хотя может это просто вкатуны в программирование заканчиваются.
Аноним 11/10/21 Пнд 17:08:26 2180367356
Аноним 11/10/21 Пнд 17:20:43 2180380357
>>2179911
> вырвался на первое место
> отрицательный рост минус 0.00%

поржал с этой британской статистики.
Аноним 11/10/21 Пнд 17:38:19 2180402358
>>2180380
Значит остальные упали/недоросли.
Аноним 11/10/21 Пнд 17:48:40 2180409359
16336752688570.png 299Кб, 586x586
586x586
Пацаны, два вопроса по джанго, выручите пожалуйста.

1. ForeignKeyField для нескольких разных моделей
Ну типа:
model House
..
model Garage
..

и мне нужно в одной модели типа:
model Property(model.Model):
.. property = model.ForeingKeyField() - в котором можно выбрать гараж это или дом или еще чего.
Как сделать это по-тупому я знаю, просто добавить поля property_house = .... property_garage= ... с null=True blank=True
и потом функцией смотреть что заполнено, но это как-то всё равно тупо

2. Какой самый простой способ для django выводить простецкие графики?
Конкретно - Line Chart. Интересует как решение с JS так и просто картинкой
Аноним 11/10/21 Пнд 19:38:32 2180521360
Аноним 11/10/21 Пнд 21:09:42 2180628361
>>2180409
>2. Какой самый простой способ для django выводить простецкие графики?

1. docker run apache/superset
2. "вот вам, ребята, логин и отъебитесь от меня со своими графиками. все равно у вас каждый день новая хуйня в голове"
Аноним 11/10/21 Пнд 22:57:49 2180734362
>>2166245
Какие регулярки, шизик. С таким входными данными там легко можно обойтись split()
Аноним 12/10/21 Втр 04:29:34 2180866363
приведите пример задания которое дают на реальной работе плиз
Аноним 12/10/21 Втр 08:46:21 2180896364
>>2180866
Зайди на фриланс биржу, долбоеб.
Аноним 12/10/21 Втр 12:46:11 2181173365
image.png 85Кб, 275x183
275x183
>>2180896
при чем тут фриланс ебанат
Аноним 12/10/21 Втр 13:46:40 2181225366
В чём разница между class ABC: и class ABC(): ?
Инб4 в скобках.
Эти скобки что-то дают?
Аноним 12/10/21 Втр 15:00:52 2181289367
>>2181225
Ничего не дают. В скобках ты можешь указать классы, от которых наследоваться. А можешь не указывать.
Аноним 12/10/21 Втр 15:19:45 2181306368
>>2180866
Реальной работе кем, ёпт? Питон-разработчиком? Это довольно общий термин.
Аноним 12/10/21 Втр 15:41:55 2181336369
>>2180866
Напиши скрипты сборки для систем в докере.
Сделай сайт-сервис, который будет получать данные, получать данные из редиса, хранить их в кликхаусе/постре/монго.
Аноним 12/10/21 Втр 15:50:53 2181342370
>>2181173
Иди мети двор, быдло.
Аноним 12/10/21 Втр 16:16:38 2181352371
объясните пожалуйста долбаебу, как убрать ебаную кавычку " из строки? Делаю replace(' " ', ' ') и нихуя, добавил уже блять эту кавычку в библиотеку с пустым значением, библиотеку тоже пидорасит.

Сама задача: "sosi hui" вывести без кавычек
Аноним 12/10/21 Втр 16:31:11 2181359372
>>2181352
Ты в интерактивной сесии сидишь что ли, дурень?
Аноним 12/10/21 Втр 16:36:18 2181363373
Аноним 12/10/21 Втр 16:41:25 2181367374
Скорее всего, заезженный вопрос, но вот:
Что делать дальше?
Я посмотрел 2 курса на Степике от института биоинформатики по Питону
Писал несколько скриптов для работы с базами данных (на работе таким образом упростил свою задачу, вроде выгрузки из Оракла, сохранения в csv, прохождение по данным из файла в Вертике) и всякую чепуху вроде простейших парсеров и телеграм ботов
И вот сейчас у меня ступор: что учить, что писать (особенно это вызывает окаменение мозга), как двигаться?
Знаю, тут есть опытные ребята, которые проходили такой этап
Аноним 12/10/21 Втр 16:57:13 2181391375
Аноним 12/10/21 Втр 16:58:20 2181393376
>>2181367
Работать за деньги начать не пробовал?
Аноним 12/10/21 Втр 17:07:20 2181406377
>>2181393
Я работаю за деньги, но не программистом, хотя в айти (Business Intelligence Consultant - что-то между аналитикой и дата инженирингом), хочу добавить сюда питон на хорошем уровне, чтобы на лучшие места претендовать.
Аноним 12/10/21 Втр 20:01:09 2181643378
вот у меня есть список
[Not win, 395, Win, 342, Win, 374]
как мне найти максимальное число среди тех которые идут после win
изменять список нельзя
максимальное число не у победителя
у проигравшего самое большое число
а мне надо большее среди победителей
словарь не вариант
в нем не могут существовать два элемента с одинаковыми индексами
*ключами
они просто перезаписывают друг друга
Аноним 12/10/21 Втр 20:06:50 2181651379
>>2181643
вьебать новый список только винов и в нем самое большое число найти?
Аноним 12/10/21 Втр 20:45:54 2181713380
>>2181643
max([[<твой список>] for i in range(1, len([<твой список>])) if [<твой список>][i-1] == "Win"])
Аноним 12/10/21 Втр 20:49:04 2181717381
>>2181643
Зипишь список с собой же со сдвигом и получаешь пары, ну а там заворачиваешь выражение в макс.
Аноним 12/10/21 Втр 20:52:47 2181719382
>>2181713
max([[<твой список>] for i in range(1, len([<твой список>])) if [<твой список>][i-1] == "Win"])
Забыл
Аноним 12/10/21 Втр 20:54:09 2181723383
>>2181719
а блять не забыл, это какая-то хуйня с форматированием
max([[<твой список>][x] for x in range(1, len([<твой список>])) if [<твой список>][x-1] == "Win"])
Вот бля короче
Аноним 12/10/21 Втр 22:05:20 2181775384
Как же хочется типизированные листы в питончике........
Аноним 13/10/21 Срд 00:40:42 2181998385
что-то я заебался...

как в aiohttp client подхватить и сохранить cookie, которые secure=1 , но я с этим сайтом общаюсь по чистому http внутри контейнеров и на самом деле шифрованный трафик только внаружу вылетает? клиент не сохраняет эти куки у себя, но обычные сохраняет.
Аноним 13/10/21 Срд 13:00:24 2182313386
Помогите с лабой,
Допустим есть диапазон дат.

start = datetime.datetime.strptime("21-06-2014", "%d-%m-%Y")
end = datetime.datetime.strptime("07-07-2014", "%d-%m-%Y")
TestedDate = datetime.datetime.strptime("26-11-2017", "%d-%m-%Y")

И проверка как находится ли дата в этом диапазоне

if start <= TestedDate <= end:
print (TestedDate, "Дата находится в диапазоне")
Else
print("Дата не находится в диапазоне")

Но препод требует чтобы было указан номер этой даты. Как вообще это реализовать?
В мыслях есть генерация массива, сравнивание TestedDate c датами в массиве и запрос номера этой позиции. Только хз как это сделать, единственный опыт в программировании был какулятор на делфи несколько лета назад.
Аноним 13/10/21 Срд 13:29:25 2182331387
999.PNG 74Кб, 1170x568
1170x568
>>2182313
три минуты в паинте
Аноним 13/10/21 Срд 13:41:34 2182337388
Может кто знает, есть телеграмм бот aiogram в котором пользователи могут искать через мою mysql свои данные, когда поиск происходит одновременно не более 2-х человек всё нормально, но когда их около 10-ти и более не хватает ресурсов и всё зависает. Как сделать последовательную выдачу результатов пользователям? Была идея все запросы записывать в таблицу ожидания и другая программа просто через каждые 10 секунд например её проверяла и выдавала результаты, как такой способ будет по эффективности?
Аноним 13/10/21 Срд 13:56:05 2182348389
>>2182337
Подумай об оптимизации самой программы, а не о выделении ее в отдельный процесс. Десяток пользователей (лол) не должен вешать ни mysql, ни питон.
Аноним 13/10/21 Срд 13:57:54 2182351390
>>2182348
У меня ещё сервер слабый всего 2гб, сколько вообще нужно для нормальной работы базы >1гб
Аноним 13/10/21 Срд 14:00:32 2182354391
>>2182351
Чел, побойся бога, sql создавался для работы на компах с килобайтами оперативки. Ладно, с сотнями килобайт. Можешь немножко развернуть, что у тебя там программа делает?
Аноним 13/10/21 Срд 14:34:45 2182367392
оп-хуй.PNG 124Кб, 1463x288
1463x288
>>2181643
восемь секунд в пайнте
Аноним 13/10/21 Срд 14:37:43 2182373393
>>2182354
Делает запросы вида:
SELECT FROM table1 WHERE (text LIKE '%tags%' OR title LIKE '%tags%')
SELECT
FROM table2 WHERE (text LIKE '%tags%' OR title LIKE '%tags%')
SELECT FROM table3 WHERE (text LIKE '%tags%' OR title LIKE '%tags%')
где tags может быть несколько:
SELECT
FROM table1 WHERE (text LIKE '%tags1%' OR title LIKE
'%tags1%') and (text LIKE '%tags2%' OR title LIKE '%tags2%')
SELECT * FROM table2 WHERE (text LIKE '%tags1%' OR title LIKE '%tags1%') and (text LIKE '%tags2%' OR title LIKE '%tags2%')
на каждого пользователя
Аноним 13/10/21 Срд 14:45:28 2182381394
>>2182354
>Чел, побойся бога, sql создавался для работы на компах с килобайтами оперативки. Ладно, с сотнями килобайт.
Это ты конктерно загнул. SQL создавался в конец 70-х для серьёзных машин того времени.

> Although IBM’s System/R and SQL proved that relational databases were feasible, hardware technology at the time was not sufficiently powerful to make the product appealing to businesses.

> In 1977 a group of engineers in Menlo Park, California, formed Relational Software, Inc., for the purpose of building a new relational database product based on SQL that they called Oracle. Relational Software shipped its product in 1979, providing the first commercially available RDBMS. One of Oracle’s advantages was that it ran on Digital’s VAX minicomputers instead of the more expensive IBM mainframes.
Дальше смотрим, что из себя VAX представляли того времени:
> Первая серийная модель архитектуры VAX была представлена публике 25 октября 1977 года. Это была модель VAX-11/780 «Star» с процессором KA780 (29 печатных плат ТТЛ) и 4 МБ ОЗУ с коррекцией ошибок (ECC RAM).

То есть тут прямо сказано, что SQL всё-таки работал на довольно приличных машинах для того времени, вовсе не для примитивных.

По своей памяти, на машинах 20+ летней давности тот же MySQL можно было поднять, но это машины с 8+ мб памяти.

Конечно, 2Гб это абсолютный overkill, в этом ты прав. Просто всё-таки цифры другие были. На куда более слабых машинах работали веб сервера с большой нагрузкой, и ничего.

Надо анализировать, какие там запросы работают, сколько времени каждый запрос работает, почему они тормозят, может быть менять структуру запросов. Мне удавалось разгонять более, чем в 100 раз какие-то задачи на базе MySQL, просто корректируя запросы и чуть правя структуру БД.

Если проблема на 10 пользователях, то очевидно это проблема архитектуры базы и запросов, надо вот здесь смотреть, что происходит.
Аноним 13/10/21 Срд 14:48:27 2182390395
>>2182381
У меня сейчас выполняется по одному запросу на таблицу:
SELECT FROM table1 WHERE (text LIKE '%tags1%' OR title LIKE
'%tags1%') and (text LIKE '%tags2%' OR title LIKE '%tags2%')
SELECT * FROM table2 WHERE (text LIKE '%tags1%' OR title LIKE '%tags1%') and (text LIKE '%tags2%' OR title LIKE '%tags2%')
не лучше ли всё это одним запросом выполнить?
Аноним 13/10/21 Срд 14:52:05 2182397396
>>2182373
Вот если так писать, то не удивительно. Твоя СУБД вынуждена каждый раз полностью сканировать всю базу целиком на предмет вхождения tags.

Что такое tags, откуда они берутся? В каком виде они встречаются в тексте и заголовке?

В норме ты должен при сохранении текста в БД выделить тэги и сохранить информацию об этом в отдельных таблицах many-to-many (это как вариант). Тогда поиск будет быстрым.
Аноним 13/10/21 Срд 14:55:09 2182403397
>>2182397
tags это слова поиска,
например text = 'Раз два три четыре пять...'
tags1 = два, tags2 = четыре, если они встречаются то выдаётся запись и так по 20+ таблицам
Аноним 13/10/21 Срд 14:56:03 2182405398
Ты лучше реальный пример запроса понажористей приведи, тогда понятно будет.

мимо килобайт-SQL
Аноним 13/10/21 Срд 15:15:05 2182423399
>>2182403
Вот что происходит в твоём случае. Для каждого запроса вида 'like' MySQL будет сканировать с нуля базу, все записи последовательно. Если у тебя база в гигабайт, то весь гигабайт будет сканироваться. Каждый раз (!!!).

Тебе надо или менять архитектуру, чтобы не было запросов LIKE, либо же надо смотреть на другие решения вроде. По идее какой-нибудь ElasticSearch для таких задач предназначен, но я с ним не работал, не скажу точно, что он умеет.

Всё зависит от того, откуда берутся tags. Если это рандомные слова, которые пользователь может вводить, и таких запросов может быть много, то только вариант с альтернативными решениями. На MySQL такие вещи не делают, обычно ставят на форумах лимиты на количество таких запросов, если подобный функционал есть. Это может работать быстро, только если база небольшая и она вся в память помещается.

Если же tags лимитированы, то можно просто чуть базу переделать, избавиться от LIKE.
Аноним 13/10/21 Срд 15:19:49 2182430400
>>2182405
SELECT * FROM table1 WHERE (text LIKE '%цифровой%' OR title LIKE '%цифровой%') AND (text LIKE '%медицинский%' OR title LIKE '%медицинский%') AND (text LIKE '%сервис%' OR title LIKE '%сервис%') AND (text LIKE '%«доктор%' OR title LIKE '%«доктор%') AND (text LIKE '%рядом»%' OR title LIKE '%рядом»%')
вот реальный, по 24-м таблицам которые выполняются последовательно, получили запись 1-й таблицы, сохранили, второй, сохранили, и т.д. запрос такой занимает 25 секунд.
Аноним 13/10/21 Срд 15:21:51 2182435401
>>2182423
кол-во tags можно ограничить 5-ю, но есть ещё и tags которые не должны встречаться в тексте или заголовке
Аноним 13/10/21 Срд 15:23:40 2182436402
>>2182423
>По идее какой-нибудь ElasticSearch для таких задач предназначен
Глянул, там очень серьёзные стартовые требования к железу и оперативной памяти в частности. Не для бюджетных VPS решение.
Аноним 13/10/21 Срд 15:34:00 2182444403
>>2182430
Слово tag сбивает, тэг это понятие про другое. У тебя просто поиск по тексту.

Какого размера у тебя база, сейчас (когда 25 секунд работает) и в перспективе? Сколько записей с большими текстами и какого размера текст в среднем?
Аноним 13/10/21 Срд 15:39:38 2182449404
>>2182430
Ради теста, попробуй изменить запрос на (условно)
select from table1 where (title like variant1 or title like variant2 ...) and (text like variant1 or text like variant2)

то есть перегруппируй title и text.

При этом для title можно сделать индексы, то там надо смотреть с размером индекса, размером записи title и т.п. Но даже без индексов стоит попробовать.

Аноним 13/10/21 Срд 15:42:06 2182454405
>>2182449
>select from table1 where (title like variant1 or title like variant2 ...) and (text like variant1 or text like variant2)
fix, я идиот, это совсем другой запрос по выборке. Надо чуть подумать.
Аноним 13/10/21 Срд 15:42:59 2182456406
Аноны, я пишу бота для беседы на питоне. Кто-нибудь сталкивался с таким, что бот правильно реагирует на вступление юзера в беседу по приглашению другого участника (chat_invite_user), реагирует на удаление участника (chat_kick_user), но не реагирует на вступление в беседу по ссылке? (chat_invite_user_by_link)

То есть, это же события одного порядка, почему он одни обрабатывает, а другие нет?
Аноним 13/10/21 Срд 15:43:25 2182458407
>>2182444
сейчас 4 гб в дальнейшем скорее всего будет не более 10-ти гб
Аноним 13/10/21 Срд 15:45:32 2182463408
>>2182458
и я кстати понял при каких причинах виснет, даже один пользователь может обрушить вбил теги:
"ла ла ла" и когда кол-во результатов превысило 60000 память закончилась и запустился своп
Аноним 13/10/21 Срд 15:47:42 2182469409
>>2182463
>когда кол-во результатов превысило 60000 память закончилась
Надо сразу добавлять LIMIT N в SQL запрос. Чтобы в любом случае выборка была ограниченной.
Аноним 13/10/21 Срд 15:59:02 2182485410
>>2182436
блядь, ну заплатишь. задачу же решать надо.

посмотри еще библиотеку http://sphinxsearch.com/
но это примерно те же яйца, но без java-энтерпрайза. ресурсы в любом случае нужны.
Аноним 13/10/21 Срд 16:00:52 2182487411
>>2182458
>сейчас 4 гб в дальнейшем скорее всего будет не более 10-ти гб
Для VPS это довольно много, ты не можешь поместить всё в оперативную память. Хотя в условиях выделенного сервера это не проблема для таких объёмов.

Суть проблемы в том, что каждый запрос сейчас у тебя требует, чтобы все 4 гб были загружены последовательно из диска в память и проверены на вхождение. Поэтому долго работает.

SQL базы не предназначены для полнотекстового поиска.

Вообще полнотекстный поиск это серьёзная задача, простых решений тут нет. Вот для твоего примера не получится сделать так, чтобы переписать запрос и всё за секунду после этого бы работало.
Аноним 13/10/21 Срд 16:14:23 2182496412
>>2182485
>блядь, ну заплатишь. задачу же решать надо.
поддерживаю, хотя ты не мне отвечал, а не анону, что запрос делает.

Если это не пет-проект, а коммерческий проект, где ты на зарплате, то надо просто ставить вопрос, что нужен выделенный сервер. Цена вопроса на уровне 100 долларов в месяц, копейки по сравнению с зарплатным фондом. По моему опыту кабаны чаще очень легко идут на траты на железо, просто внутренний комфорт есть, типа серьёзный проект = серьёзное железо, а не детская VPS.

Тогда ставится уже полноценный софт, вся база помещается в оперативку и поэтому работает очень быстро. Прикручиваются сторонние решения для поиска, или NoSQL по необходимости.

Но я думаю, даже обычный SQL ускорится на порядок, если ему выделить памяти достаточно, чтобы всё в оперативку влезало.
Аноним 13/10/21 Срд 16:41:35 2182518413
>>2182487
>SQL базы не предназначены для полнотекстового поиска.
причем, все равно умеют его делать. без особенных проблем с производительностью. вопрос только к качеству.
Аноним 13/10/21 Срд 17:25:46 2182560414
>>2165167 (OP)
Есть годный видеокурс по фласку? Чтоб прям все тонкости были.
Аноним 13/10/21 Срд 17:51:23 2182585415
Аноним 13/10/21 Срд 18:45:36 2182652416
Аноним 13/10/21 Срд 18:58:47 2182683417
Аноним 13/10/21 Срд 20:21:47 2182745418
Аноним 13/10/21 Срд 23:28:48 2182937419
Сап, двощ, есть код, ищет подстроки в строке, сделал логически просто, но безумно медленно. Как его ускорить, не юзая регулярные выражения? Выводит первый индекс первого совпадения. Вроде больший шаг итерации не запилишь, или вообще подход менять

A='qwerwq er bababaobaber okayuo misaka'
B='ba@ba'
D=B
at=[]
for i in range(len(B)):
if B=='@':
at.append(i)
n=0
while 1:
C=A[n:n+len(B)]
for i in at:
D=D[0:i]+C+D[i+1:]
if n==len(A)-len(B):
print(-1)
break
if C!=D:
n=n+1
else:
print(n)
break


прога вырезает участок оригинальной строки длины подстроки, заменяет собачки подстроки на символы оригинальной строки и собстно сравнивает получившиеся штуки.
Аноним 13/10/21 Срд 23:30:41 2182938420
image.png 30Кб, 608x527
608x527
Спасибо за табуляцию
Аноним 14/10/21 Чтв 00:18:42 2182976421
>>2182938
Как будто человек из мема про выучить си за 21 день пытается в змею.
Аноним 14/10/21 Чтв 00:30:15 2182985422
>>2182976
Так я и учу змею 21 28 дней. Хз как тут без регулярных лучше сделать
Аноним 14/10/21 Чтв 00:31:52 2182987423
>>2182985
Смысл поста был не про 21 день или попытки, а про си.
Аноним 14/10/21 Чтв 00:33:40 2182989424
>>2182987
>:с
Просто не видел этот мем
Аноним 14/10/21 Чтв 00:35:16 2182990425
Братья по Питону, как часто вы на работе или в пет прожетках используете рекурсивные функции? Удобны ли они, полезны ли они?
Аноним 14/10/21 Чтв 00:39:29 2182991426
>>2182990
Питон не любит рекурсию. Лучше через цикл с очередью переписать если есть возможность
Аноним 14/10/21 Чтв 00:40:08 2182992427
>>2182991
В каком смысле не любит?
Аноним 14/10/21 Чтв 00:48:53 2182996428
>>2182938
>while 1
Ты учебник по второму питону смотрел?
Аноним 14/10/21 Чтв 01:00:52 2183006429
>>2182996
причём тут второй питон?

паттерн
n = 0
while 1:
____if n==len(A)-len(B):
________print(-1)
________break
____if C!=D:
________n=n+1

было бы разумно заменить на
for n in range(len(A) - len(B) + 1):
____ calculations
____ return in success

print(-1) # если не вышли из цикла через return, то ничего не нашли

но только мне всё равно не нравится.

уж скорее лучше ближе к Си переписать, чтобы не создавать сначала строку и потом сравнивать её, а просто посимвольно в цикле сравнивать, и игрорировать символ @. Для маленьких строк должно быстрее работать, но для больших шаблонов, где мало @, будет хуже
Аноним 14/10/21 Чтв 01:04:08 2183009430
W] PL (VPS-WAW2).
опци
Програмісти, хто знає?? як зробитм шоб всі вклабки адресу з цього сайту автоматично замінялись на 2c-pm. я не можу все вручну записувати довго

Макс объем: 300Mб, макс кол-во файлов: 4
КЛИКНИ/БРОСЬ ФАЙЛ/CTRL-V
Аноним 14/10/21 Чтв 01:04:32 2183010431
>>2183006
>Для маленьких строк должно быстрее работать, но для больших шаблонов, где мало @, будет хуже
Не, чего это я, для больших обычно будет как раз лучше, потому что очень быстро можно отлавливать несовпадения, не конструируя всю строку.

В приведённом коде меня больше всего вымораживает конструкция
for k in at:
____D = D[0:k] + C[k] + D[k+1:]
Аноним 14/10/21 Чтв 01:05:38 2183011432
Аноним 14/10/21 Чтв 01:49:51 2183042433
image.png 100Кб, 1117x793
1117x793
Аноним 14/10/21 Чтв 02:03:23 2183045434
image.png 97Кб, 904x807
904x807
Аноним 14/10/21 Чтв 02:12:01 2183049435
>>2183045
а еще можно сэкономить две строки, если оба
probe = input_string.find(start_token)
засунуть модным моржом в
while (probe := input_string.find(start_token)) > -1:
но это как-то менее читаемо
Аноним 14/10/21 Чтв 04:30:04 2183057436
image.png 43Кб, 520x398
520x398
>>2183045
>>2183049
Ну чел, ну сложно ведь. И медленно. Вот у тебя вариант 44 мс, а мой 10-12 мс
Вот тут пример: https://ideone.com/1HfYnv

Реально тут код на строчках 4-15, остальное подсчёт времени.
12 строк кода вместе со строкой комментария, на твоём примере меньше 10мс работы против 44 мс у тебя.
Аноним 14/10/21 Чтв 04:35:37 2183058437
image.png 43Кб, 507x398
507x398
>>2183057
бля, иногда я сам ненавижу эти блоки пробелами.
вот так надо: https://ideone.com/DHA94i

хотя предыдущий вариант корректно работающий, более того, в каких-то случаях даже чуть более быстрый.
Аноним 14/10/21 Чтв 07:35:37 2183085438
image.png 46Кб, 800x988
800x988
>>2183057>>2183058
>у тебя вариант 44 мс, а мой 10-12 мс
Чувак, серьезно? Мерить время выполнения по сообщению из редактора, включающего запуск интерпретатора? Ну держи, обтекай
https://ideone.com/IfWZRI
Аноним 14/10/21 Чтв 11:30:48 2183251439
Пацаны, Пуйчарм при написании кавычек для строк не закрывает их автоматом. Шо это?
Накатил Пучарм на новую ОС (Линух)
Аноним 14/10/21 Чтв 12:24:19 2183293440
Как сделать так чтобы доступ по разным ключам ссылался на одно и то же значение?
Вот есть у нас словарь, где имена заранее отсортированы по группам, например:

Petya, Vasyan
Anton, Vasgen, Ramil

Значение для каждого из этих имен - число integer. Я могу его изменять, и когда изменяю его для одного из ключей в определенной группе то оно изменяет и для всех других, например сделал my_dict['Vasyan'] = 100, и теперь в том числе и для my_dict['Petya'] будет возвращаться 100
Аноним 14/10/21 Чтв 12:43:20 2183307441
Аноним 14/10/21 Чтв 13:02:56 2183321442
Как проверить работу тсп сервера на питоне?
Аноним 14/10/21 Чтв 16:46:36 2183511443
>>2183085
Теперь попробуй вместо шаблона 'sr@l' подставить шаблон '@sr@l'

Твой скрипт выдаёт None. А должен был выдать 2.

Переусложнено, отсюда ошибки.

Не, я понимаю идею, которую ты хочешь реализовать, но невозможно разобрать твой код, не хочется кучу времени убивать на это. Много "оптимизаций" и не понятно, как обрабатываются особые случаи, которые возникаю. Вот как в случае, когда '@' в начале шаблона. Или когда в конце, там другой баг.
Аноним 14/10/21 Чтв 16:55:18 2183518444
https://ideone.com/bfNutq

Парни, хуярю элементарный параллелизм на multiprocessing. Вот вроде обычная функция которая возведет все эелементы массива в квадрат. Внизу нахуярен объект MyTimer исключительно для подсчета времени исполнения. Как видите, время у синхронного и параллельного вариант практически то же ("параллельный" даже умудрился отсосать). Шо тут не так?
Аноним 14/10/21 Чтв 17:23:11 2183545445
>>2183518
Во первых у тебя опечатка, ты два раза вызываешь функцию test1.

Во-вторых, использую контекстный менеджер для Pool
with mp.Pool as pool:
____data = pool.map(func, splitted)
return data

Наконец ты не видишь прироста потому, что главные затраты времени на подготовку списка, разбиение его на куски, пересылку в процессы и т.п. Поэтому ты ничего не выигрываешь.

Попробуй использовать более сложные вычисления, чем возведение в квадрат, вот как в моём примере
https://ideone.com/O1MNl8
(на ideone пускают в один поток, поэтому там нет ускорения)
и ты увидишь прирост производительности
Аноним 14/10/21 Чтв 17:38:07 2183558446
>>2183545
3.3396499156951904 secs elapsed for Sync
1.1430809497833252 secs elapsed for Parallel


Хм, и правда, когда стал юзать хитрожопые умножения во вложенном цикле, прирост появился

>главные затраты времени на подготовку списка, разбиение его на куски
But wait... разбивать список на чанки - это вообще задача по хуйне для питона, оно за константное время происходит. Да и чанков тут всего 10
Аноним 14/10/21 Чтв 17:48:08 2183569447
>>2183558
Тебе данные надо нарезать, сериализовать для отправки в процессы, потом из этих процессов эти данные получить и сохранить в основном процессе. Это главная работа. В то время как само умножение работает очень быстро.
Аноним 14/10/21 Чтв 19:06:03 2183678448
>>2183057
блять, код балдежный но так же как и мой хуевый по времени пролетает для строки из 86к символов. Буду думать.
Аноним 14/10/21 Чтв 20:04:45 2183778449
А че, есть ссылку на конфу в тг какую-то небольшую двачевскую? Чтобы лампово было.
Аноним 14/10/21 Чтв 20:06:46 2183783450
Короче, собираю тестовую платформу. Для строки использую строку
str(13 ^ 100500)
(в смысле 13 в степени 100500, преобразовать к строке, так как звёзды двач съедает)
Получается строка в 111962 символа
В ней ищу подстроку
'637036977498347229246'
по шаблону
'63@036@7749@347@29@46'
она находится на позиции 110890

Мой вариант на питоне 3.8 на моём ноуте работает за 60мс, на 3.6 кстати быстрее, 55-60мс. На 3.10 те же 60мс

Сделал разогнанный вариант, ближе к стилю Си, работает за 22-23 мс. Намного веселее, но при этом просто поиск подстроки без шаблона работает за 0.1мс, совсем другой порядок.

Контрольный вариант с re, самый примитивный и не оптимальный, работает за 0.5мс.

В общем очевидно, что есть куда разгоняться, но в питоне довольно сложно.

Вот вариант, тут старая версия, другая версия и контрольный вариант с re
https://ideone.com/qXEX33

Аноним 14/10/21 Чтв 20:43:18 2183830451
>>2183783
>>2183678
Самая проблема в производительности это вложенный цикл, циклы в питоне медленные.

Если ставить задачу разгона и без re, то возможен вариант с тем, чтобы сгенерировать сначала код без циклов, а потом этот код выполнить через compile+eval

Тогда, думаю, в несколько раз можно ускорить.

Вообще обычно всякие шаблонизаторы на разных языках так и работают. По шаблону сначала генерируется код, раскрывающий шаблон, а потом полученный код уже выполняется. Даже в Си были такие регулярки в древнее время. Все эти джинджи примерно так устроены.

Аноним 14/10/21 Чтв 23:18:23 2183957452
>>2183045
вот это прошло. Загнал строку в 700к знаков, очень быстро скушалось, ну и допилил случай нескольких собачек в начале паттерна,+ упростил, чтоб самому понять. Прям круто, спасиб
Аноним 14/10/21 Чтв 23:43:24 2183981453
>>2181717
xs = ['Not win', 395, 'Win', 342, 'Win', 374]
max(filter(lambda x: x[0] == 'Win', zip(xs[::2], xs[1::2])), key=lambda x: x[1])
Аноним 15/10/21 Птн 00:43:07 2184021454
что-то туплю, помогите пожалуйста.
надо получить строку из 2 строк, складывая по-символьно.
string = ''.join(lambda x,y: x,y from s1, s2)
где я ошибся?

пример - строки s1 = ГОВНОГОВНО s2 = ПИЗДАПИЗДА.
на выходе должно получиться ГПОИВЗЕДОАГПОИВЗЕДОА.
Аноним 15/10/21 Птн 00:59:55 2184026455
>>2184021
В синтаксисе.
from itertools import zip_longest
result = ''.join(c1+c2 for c1, c2 in zip_longest(s1, s2, fillvalue=''))
Аноним 15/10/21 Птн 01:19:52 2184029456
>>2184026
string + ''.join(map(str.__add__,s1, s2))
вот такой придумал, но он не добавляет конечные элементы при разнице в длинах изначальных строк. можно обойти через cycle, но да, зип_лонгест проще.
спасибо.
Аноним 15/10/21 Птн 01:47:01 2184033457
>>2165167 (OP)
Что надо прописать в sql запросе, чтоб создать таблицу с поддержкой кириллицы в названии?
f"""CREATE TABLE {user_request['name']}(
id INT AUTO_INCREMENT PRIMARY KEY,
send_massages VARCHAR(1000),
get_massages VARCHAR(1000));""")
Аноним 15/10/21 Птн 01:54:22 2184035458
Аноним 15/10/21 Птн 02:00:40 2184037459
Аноним 15/10/21 Птн 02:03:50 2184040460
>>2184035
Ну я хочу чтоб у меня создавалась таблица при регистрации пользователя, для того, чтоб туда сохранять туда его контакты и переписку, типа бекенд для чата хочу сделать, ее же надо сохранить под каким-то именем.
Аноним 15/10/21 Птн 02:04:16 2184041461
Снимок.PNG 70Кб, 486x643
486x643
Сап, вкатываюсь в вашу дрочильню. Как лучше всего оформлять таблицы вроде пикрилейтед, чтобы я потом мог имея значение например 800 найти в табличке нужную строку?
Аноним 15/10/21 Птн 02:05:02 2184042462
Аноним 15/10/21 Птн 02:07:33 2184045463
>>2184042
Можешь привести пример из той пикчи на пару строк и столбцов?
Аноним 15/10/21 Птн 02:14:15 2184048464
>>2184045
temperature_dict = {
____100: {
________'O2': 24.1448,
________'N2': 20.705
____},
}
Аноним 15/10/21 Птн 02:18:18 2184049465
Снимок.PNG 27Кб, 1481x568
1481x568
>>2184048
Спасибо, няша, все заработало. А то я сначала подумал что эти словари работают как пары ключ-значение, а оказывается можно вкладывать. Лучший тред в этом разделе.
Аноним 15/10/21 Птн 02:22:56 2184051466
>>2184040
https://www.postgresql.org/docs/12/multibyte.html#CHARSET-TABLE

лол >>2184037 уже скинул.
>>2184041
temp = {'Температура ':'O,H,C,M,N','000 градусов':'1,2,3,4,5', '100 градусов': '5,4,3,2,1', '200 градусов': '5,4,3,2,1'}
print("{}\n{}\n{}\n{}".format(*temp.items()))
я бы с форматированием строк поигрался.
вообще, можно выводить это списками, '\t'.join(arr[])
Аноним 15/10/21 Птн 15:30:18 2184421467
Аноним 15/10/21 Птн 16:07:17 2184461468
>>2183957
>>2183830
Вот вариант этой идеи с токенами
https://ideone.com/g6YGpn
сама функция на строках 15-39, там ещё функция для тест-кейсов каких-то, поэтому много кода

На тестовом примере >>2183783 работает меньше, чем за 0.2мс вместо 20мс ранее. В 100 раз ускорение. Получается даже быстрее, чем работа через re

Аноним 15/10/21 Птн 16:38:17 2184497469
Аноним 15/10/21 Птн 16:48:44 2184515470
Аноним 15/10/21 Птн 16:53:24 2184525471
>>2184515
чел дохуя библиотек еще не перешли на 10 пятон, это нормально. через пару месяцев все будет.
Аноним 15/10/21 Птн 17:02:42 2184534472
>>2184515
Ты самый модный у нас шо ле? Юзай 3.6 и не выпендривайся
Аноним 15/10/21 Птн 17:07:38 2184539473
Есть список в котором хранятся кортежи по 3 числа типо:

[ (0, -1, 4), (-5, 2, 7), (-1, 4 ,0), (2,9,1) ]

Как оставить только кортежи с уникальными комбинациями? То есть в примере выше убрать (-1, 4 ,0) или (0, -1, 4)
Аноним 15/10/21 Птн 17:10:10 2184543474
image.png 32Кб, 225x225
225x225
>>2184525
>>2184534
у меня дистрибутив с rolling release и думал че там минорное обновление, а тут что-то и venv начало похрюкивать и потом
всё откатывать что ли? пиздос
думал не спешить с докер контейнером и потом сделать, а тут такое
Аноним 15/10/21 Птн 17:11:45 2184545475
ну че петухонисты, сколько платят нк$/сек?
Аноним 15/10/21 Птн 17:24:52 2184557476
Аноним 15/10/21 Птн 18:08:47 2184605477
>>2184539

r = functools.reduce(lambda acc , val: acc.update((sum(val), val) [(0, -1, 4), (-5, 2, 7), (-1, 4 ,0), (2,9,1) ], {})

list(r.values)
Аноним 15/10/21 Птн 18:21:32 2184622478
>>2184605
Соснешь с одинаковыми суммами.
Аноним 15/10/21 Птн 18:38:41 2184645479
>>2184622
Ну тогда поксорить вместо суммы.
Аноним 15/10/21 Птн 18:44:18 2184649480
>>2184645
Ничего не поменяется.
Аноним 15/10/21 Птн 18:48:50 2184655481
>>2184649
print(0 ^ -1 ^ 4)
// -5
print(-1 ^ 0 ^ 4)
// -5
print(1 ^ 0 ^ 2)
// 3
Аноним 15/10/21 Птн 18:52:07 2184661482
Аноним 15/10/21 Птн 23:08:23 2184863483
проигрываю с того, что мне как пайтон кодеру надо устанавливать gcc g++ make
Аноним 15/10/21 Птн 23:23:21 2184870484
>>2184863
Когда джаваскрипт проект тянет гигабайты зависимостей, то это гораздо смешнее.
Аноним 15/10/21 Птн 23:40:31 2184885485
image.png 9Кб, 566x123
566x123
Аноним 15/10/21 Птн 23:46:58 2184890486
Аноним 16/10/21 Суб 00:27:28 2184962487
Как правильно сделать структуру приложения, чтобы была точка входа и нормально всё импортировалось? Как вы делаете?
Аноним 16/10/21 Суб 00:41:50 2184984488
>>2184539
{tuple(sorted(item)) for item in input}
Аноним 16/10/21 Суб 00:47:57 2184988489
>>2184984
Похерятся оригинальные тупли.
Аноним 16/10/21 Суб 01:54:44 2185023490
>>2184988
они по заданию одинаковые не зависимо от порядка элементов. те они, даже отсортированные, всё еще оригинальные.
Аноним 16/10/21 Суб 05:09:28 2185048491
Аноним 16/10/21 Суб 07:55:41 2185062492
4353423423.PNG 165Кб, 1642x547
1642x547
>>2184539
пять минут в паинте
Аноним 16/10/21 Суб 08:15:36 2185065493
Аноним 16/10/21 Суб 09:05:57 2185082494
Аноним 16/10/21 Суб 09:26:17 2185085495
Аноним 16/10/21 Суб 09:39:10 2185087496
>>2185085
ну в pycharm такое говно работать не будет
Аноним 16/10/21 Суб 09:52:25 2185088497
>>2185087
поридж, ты обезумел?
Аноним 16/10/21 Суб 09:53:09 2185089498
Аноним 16/10/21 Суб 10:07:25 2185091499
>>2185089
pycharm это всего лишь IDE, как и блокнот
Будет работать на любом интерпритаторе
чому вас вообще учат, на этих ваших курсах
Аноним 16/10/21 Суб 12:26:01 2185168500
Аноним 16/10/21 Суб 12:36:58 2185175501
Аноним 16/10/21 Суб 12:53:04 2185191502
>>2185062
*{tuple(sorted(item)):item for item in input}.values()
Аноним 16/10/21 Суб 23:14:20 2185542503
>>2169012
Напиши свой сериализатор и обмажь его методфилдами

мимо
Аноним 17/10/21 Вск 00:18:27 2185612504
Аноним 17/10/21 Вск 02:59:49 2185692505
>>2169012
return mapToResponse(service.getObject(id))
Аноним 18/10/21 Пнд 00:53:15 2186410506
image.png 25Кб, 699x197
699x197
Есть класс и в нем метод addmit (там еще куча всего, я все неважное обрезал). Так почему компилятор говорит:
AttributeError: type object 'meetlist' has no attribute 'meets'?
Аноним 18/10/21 Пнд 01:23:43 2186422507
image.png 25Кб, 699x197
699x197
>>2185611 (OP)

Есть класс и в нем метод addmit (там еще куча всего, я все неважное обрезал). Так почему компилятор говорит:
AttributeError: type object 'meetlist' has no attribute 'meets'?
Аноним 18/10/21 Пнд 15:28:22 2186751508
>>2186410
Потому что meetlist - это название для класса, а объявлять переменные нужно у экземпляра класса, для него всегда зарезервированно первое место параметров у методов внутри классов, которое обычно называют self. поэтому надо исправить: meetlist.meets = [] на self.meets = []
Аноним 18/10/21 Пнд 16:13:15 2186803509
>>2169794
кастомизацию внутри crm
Аноним 03/11/21 Срд 11:30:45 2201503510
1.JPG 27Кб, 639x231
639x231
День третий, как начал изучать энто ваше погромирование. Не знал, что это может быть так весело. Чем можно развить эту хуйню?
Аноним 12/11/21 Птн 08:00:23 2209951511
>>2201503
Начни с того, что все, что ниже объявления списков, заменяется одной строкой:
print(random.choice(names), random.choice(surnames))

Вжух и 5 строк в одну.

А вообще пока продолжай изучать, чуть подтянешь язык - цепи Маркова помогут с генерацией текста.
Аноним 20/12/21 Пнд 20:13:16 2243227512
>>2165167 (OP)
Сортировать массовчики это конечно хорошо, но вот думаю, ведь многие знают канал Ильи Климова, а есть ли такой же образный Климов но в мире питона ? Можно даже на английском, но лучше на русском офк
Аноним 20/12/21 Пнд 20:14:08 2243228513
>>2165549
На 3 лучше, мне кажется, Джанго это монолит, сделав чутка асинхронности тут, чутка там, в общем результат вряд ли сильно лучше, поскольку дофига остального включая библиотеки на синхронных решениях
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов