Сохранен 513
https://2ch.hk/pr/res/2165167.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Питон тред №128, юбилейный /python/

 Аноним 23/09/21 Чтв 18:51:16 #1 №2165167 
python-programming-for-kids-1.jpg
ciwlCWa.png
npr.brightspotcdn.com.jpeg
Юбилейный тред, посвящённый языку программирования Питон, #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 #2 №2165371 
Какой асинхронный веб фреймворк выбрать?
Аноним 24/09/21 Птн 00:39:29 #3 №2165407 
Ваш язык плохой, мой лучше.
Аноним 24/09/21 Птн 00:40:37 #4 №2165408 
>>2165407
Насколько глубоко ты можешь залезть в жопу своим языком?
Аноним 24/09/21 Птн 09:51:19 #5 №2165522 
>>2165371
FastAPI только? Остальные какими-то недоделанными выглядят
Аноним 24/09/21 Птн 11:00:05 #6 №2165549 
https://docs.djangoproject.com/en/dev/releases/4.0/ да рот этого казино. Питоны, сижу на второй джанге, лучше на 3 перекатываться или подождать и сразу на четвертую?
Аноним 24/09/21 Птн 12:16:53 #7 №2165600 
Такое кто-то решал?

Тестовое задание: необходимо сделать 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 #8 №2165613 
>>2165600
Что тут решать, тут только работа со строками.
Аноним 24/09/21 Птн 14:15:55 #9 №2165733 
>>2165371
Sanic
Аноним 24/09/21 Птн 16:03:46 #10 №2165810 
У меня такая проблемка. Я добавляю конфиг в yaml. Считываю его в global() в config/__init__.py. Так вот, когда делаю
import config
config.TEST_CONF
то в иде подсвечивает, что не знает TEST_CONF, потому что она считана из файла. Как сделать, что он понимал что за конфиг и мог прыгнуть к определению?
Аноним 24/09/21 Птн 18:12:35 #11 №2165937 
Сап. Есть 2 тестовых. Одни хотят что-то с gRPC, а другие с FastAPI. Сделать нужно за выходные. Хочу объединить. Ещё хочу туда рест, микросервисы и асинкио добавить. Но нет идей что делать. Какое-нибудь туду приложение, которое с консольным клиентом по рпц общается, а сам конвертирует в рест и по хттп с соседним приложением общается, которое как раз всю работу с бд делает? Чёт примитивно. Есть что-нибудь, что будет реально получать пользу от использования этих технологий, а не технологии ради технологий
Аноним 24/09/21 Птн 23:41:21 #12 №2166242 
>>2165937
>Одни хотят что-то с gRPC, а другие с FastAPI
Что-то? Без конкретных требований? Придумать самому? Я бы не стал там работать
Аноним 24/09/21 Птн 23:43:15 #13 №2166245 
>>2165600
Особо делать нечего. Парсить строку через re, дальше простые if-else с логикой.

Задача, как я понимаю, скорее на умение работать с сетью
Аноним 24/09/21 Птн 23:53:59 #14 №2166261 
https://www.youtube.com/watch?v=7KgihdKTWY4

Вот это хохол конечно
Аноним 25/09/21 Суб 02:40:48 #15 №2166393 
Сейчас потихоньку вкатываюсь в питон, и при рефакторинге своего старого кода возник технический вопрос.
Мой код представляет из себя функциональщину, я там форматирую разный текст - нарезать строку, что-нибудь к ней добавить, где-то инвертнуть и т.д. Таких функций у меня несколько подряд, и форматирование в каких-то функциях повторяется, они отличаются только текстом, который надо отформатировать.
Сейчас я переписал это в одну функцию, которая принимает на вход несколько разных текстов, и меня озадачил вопрос - а от этого изменения сам по себе код стал быстрее? Или я просто увеличил читабельность кода, снизив его повторяемость?
Аноним 25/09/21 Суб 03:47:52 #16 №2166403 
>>2166393
Timeit в помощь
Аноним 25/09/21 Суб 19:57:07 #17 №2167050 
Подскажите как лучше организовать работу с большими строками:
имеется программа, которая переодически выплевывает клиенту много текста от 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 #18 №2167071 
ананасики, что за дела
Пилю простой круд на джанге, подключаю js файл в html документе,
через %static%
Когда загружаю сайт, то получаю код 200 (тобишь файл js получен и все хорошо), как я понимаю
Но сам файл js ни в какую не работает, ни alert, ни вывод в консоль

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

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

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

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 #26 №2167166 
>>2167142
>Разница ведь в том, что я переместил not на другое место.
Ты скобочки забыл сделать вокруг выражения
Аноним 25/09/21 Суб 23:56:08 #27 №2167174 
>>2167088
https://habr.com/ru/company/timeweb/blog/579080
Аноним 26/09/21 Вск 00:30:24 #28 №2167190 
image.png
>>2167174
Аноним 26/09/21 Вск 02:03:39 #29 №2167217 
>>2167110
Гугл изобрел го, что бы студенты могли сносный софт писать, с выразительность там полнейший пиздец, а такой перформанс, который он тебе предлагает тебе нахуй не нужен будет в 90% случаев
Аноним 26/09/21 Вск 02:07:29 #30 №2167220 
>>2167217
Я заметил что ща всякие сетевые штуки типа Yggdrasil онли на нем пишут
Аноним 26/09/21 Вск 02:25:08 #31 №2167226 
Сап двачик, я у мамы инженер. Хочу написать тулзу в вебе по расчету кое-какой конструкции. В питоне для этого есть неплохие библиотеки, да и в целом язык простой как два пальца. Но вот насчет интерфейсов и пр. мне не совсем понятно, как будет работать такое веб приложение. Вот в джаваскрипте расчеты будут производится на машине пользователя и в целом как и все джс приложения будет отзывчывым и интерактивным, мне это и нужно, а что будет с приложением на питоне? Где будут производиться вычесления?
Заранее спасибо за помощь, няши.
Аноним 26/09/21 Вск 11:45:02 #32 №2167335 
>>2167226
у тебя есть два пути
1) пиши веб-приложение на жс (без питона)
2) пиши десктоп-приложение на pyside

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

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


Дано число 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 #36 №2167794 
>>2165167 (OP)
сап
поступаю бесплатно в яндекс лицей на 2 курса
резы собеса дадут не позднее 1 октября (я уверен 95% пройду, тест сдал на 10/10)
таквот если в треде есть люди, которые учились там или преподают (лол), опишите, что думаете об лицее
Аноним 26/09/21 Вск 21:02:50 #37 №2167866 
Ребята, посоветуйте че почитать по компутер вижону
С меня тонны нефти, в шапке книжек конкретно по нему не нашел
Аноним 26/09/21 Вск 21:16:36 #38 №2167876 
Суп питонач. Не могу разобраться, как предотвратить выполнение импортированных функций в своей программе.
Хз, как тут принято скидывать целые проекты, но я залил сюда https://dropmefiles.com/0yDIP
В main.py есть описание принципа работы, в целом проблема такова, что при запуске main.py у меня почему-то срабатывают все импортирумые функции, хотя нужно, чтобы сработала только та, которую я выбрал. Пробовал по-разному втыкать конструкцию "if __name__ == main", но это ничего не дало.
Аноним 26/09/21 Вск 21:59:37 #39 №2167907 
Привет, быстрый вопрос:
Если я внутри функции делаю os.chdir(), то при выходе из неё программа вернётся назад или это изменит "глобоальный стейт" исполнения? Если второе, то как питонисто вернуться назад?
Аноним 26/09/21 Вск 22:04:20 #40 №2167912 
>>2167907
Рабочая директория это уровень процесса. Если тебе надо работать в конкретной директории то делай chdir, если нет, то работай с относительными или абсолютными путями, очевидно же.
Аноним 26/09/21 Вск 22:08:34 #41 №2167918 
>>2167912
>Рабочая директория это уровень процесса.
Спасибо.
Аноним 26/09/21 Вск 22:55:57 #42 №2167966 
СУка бля чёрт блядь бы побрал ебучие регулярка блядь ёбанный рот
есть регулярка
r'текст перед ссылкой - (https:[^\\]+)'
Суть - взять ссылку между текстом и \n. Проверил на regex101 всё работает бля. Засовываю в re.search и получается хуйня - возвращает во второй группе не только ссылку, но и всё, что после неё. ЧО ЗА ХУЙНЯ БЛЯДЬ
Аноним 26/09/21 Вск 23:00:58 #43 №2167970 
>>2167876
При импорте в любом виде импортируемый модуль исполняется от начала до конца.

Если ты не хочешь, чтобы какая-то часть исполнялась при импорте, надо её поместить внутрь
if __name__ == '__main__':
____ и вот здесь этот код
____ в том числе импорты можно делать здесь, но если ты так делаешь, то что-то у тебя не так в проектировании скорее всего
Аноним 26/09/21 Вск 23:06:01 #44 №2167975 
>>2167966
Что у тебя работает, даун? Ты ищешь любую последовательность до \. Так и пиши [^\n]+ или \S+
Аноним 26/09/21 Вск 23:10:33 #45 №2167981 
https://github.com/em1tao/SIGame_script
объясните как запустить этот скрипт
Аноним 26/09/21 Вск 23:11:55 #46 №2167982 
>>2167975
Бляяяяя, в regex101 конкструкция [^\n]+ не работала - тупо до конца текста всё собирал. Но в питоне это почему то работает. Спасибо, конечно, но какого хуя
Аноним 26/09/21 Вск 23:12:38 #47 №2167983 
>>2167981
python main.py
Аноним 26/09/21 Вск 23:26:49 #48 №2167994 
https://github.com/em1tao/SIGame_script
я вообще ничего не понимаю в программировании, пожалуйста объясните пошагово что нужно сделать чтоб запустить этот скрипт. чтоб, как там сказано, я в Своей Игре нажимал q и чтоб программа автоматом нажимала кнопку ответа в нужный момент
Аноним 26/09/21 Вск 23:29:44 #49 №2167997 
>>2167994
https://www.wikihow.com/Use-Windows-Command-Prompt-to-Run-a-Python-File
Аноним 27/09/21 Пнд 00:00:57 #50 №2168020 
>>2167982
Из-за verbose мб?
Аноним 27/09/21 Пнд 00:55:10 #51 №2168062 
>>2167997
Напиши в cmd (командной строке), что тебе сказали аноны (python main.py). Но сначала открой cmd в папке, где у тебя расположен код. Для этого нужно выделить расположение (адрес) папки в проводнике, написать cmd и нажать enter.
Аноним 27/09/21 Пнд 01:05:36 #52 №2168070 
>>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 #53 №2168074 
>>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 #54 №2168075 
>>2168070
ну, он то и делает. он постоянное работает, если ты нажимаешь q, он делает скриншот, выбирает какой-то конкретный пиксель на экране, смотрит его цвет, если его цвет соответствует какому-то, нажимает на какое-то конкретное место. если нажимаешь p, он выключается. все ошибки и прерывания игнорирует.
Аноним 27/09/21 Пнд 01:20:13 #55 №2168078 
>>2168075
если у тебя разрешение экрана другое или цвет кнопки изменился, то он не будет работать. ну и если ты кнопку перегораживаешь чем-то
Аноним 27/09/21 Пнд 01:29:45 #56 №2168085 
а эту хуйню только через командную строку виндовса запустить можно? если я ее через пайтон запущу она работать не будет или чо?
Аноним 27/09/21 Пнд 01:47:21 #57 №2168096 
>>2168085
Что значит "через python" запущу?
Аноним 27/09/21 Пнд 01:58:36 #58 №2168100 
а это не та древняя игра где ответ был спрятан в определенном пикселе и кодировался цветом?
Аноним 27/09/21 Пнд 03:25:31 #59 №2168123 
>>2167766
Что за херня во втором варианте, какие её 2000? делаешь n %= 1440 и дальше первый вариант уже.
Аноним 27/09/21 Пнд 09:59:26 #60 №2168202 
image.png
image.png
Модуль стоит, но из программы его не вызвать. Почему?
Аноним 27/09/21 Пнд 10:03:24 #61 №2168205 
image.png
Аноним 27/09/21 Пнд 10:05:58 #62 №2168207 
>>2168202
На пути посмотри. Разные версии питона.
Аноним 27/09/21 Пнд 10:21:36 #63 №2168214 
>>2168207
>На пути посмотри
Как?
Аноним 27/09/21 Пнд 10:27:24 #64 №2168221 
Ага, нашел, в VSC не тот интерпретатор был выбран спс
Аноним 27/09/21 Пнд 12:37:49 #65 №2168309 
Анон, а что быстрее - for цикл или list comprehension? Или без разницы?
Аноним 27/09/21 Пнд 12:44:43 #66 №2168314 
>>2168309
Примерно одинаково. Компрехеншен все равно раскручивается в фор.
Аноним 27/09/21 Пнд 13:10:04 #67 №2168318 
Аноны, хочу на новый прект ввести аннотации, столкнулся вот с чем

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 #68 №2168336 
>>2168202
У теюя питон не может устанавливать packages в то место, где питон установлен. Открой консоль как администратор и устанавливай.
Аноним 27/09/21 Пнд 14:14:10 #69 №2168365 
Screenshot1.png
>>2168309
Аноним 27/09/21 Пнд 14:29:23 #70 №2168369 
>>2168365
А если оставить просто i*j во втором случае?
Будет видно, что кушоет аппенд.
Хотя я видел, что делают что-то вроде f = res.append и потом вызывают уже f, уменьшая расходы.
Аноним 27/09/21 Пнд 15:06:24 #71 №2168387 
>>2168369
так тогда не равная ситуация, лист комприхеншн же создает список
Аноним 27/09/21 Пнд 15:09:08 #72 №2168388 
>>2168387
Это не для равности, а чтобы оценить потери на аппенд из общего времени.
Аноним 27/09/21 Пнд 15:14:43 #73 №2168390 
Screenshot1.png
>>2168388
Аноним 27/09/21 Пнд 15:34:10 #74 №2168403 
image.png
image.png
https://dumpz.org/cAe6kfR9gGn4 хочу понять парсинги, написал код для того чтобы подгрузить видео. но вместо нужного блока с тегами я получаю пустой блок. почему так?
Аноним 27/09/21 Пнд 15:54:49 #75 №2168414 
>>2168403
Потому что оно формируется динамически на клиенте.
Аноним 27/09/21 Пнд 17:05:51 #76 №2168479 
>>2168318
>Так вот, чтоб эту аннотацию юзать, надо импорд делать только для аннотации?
Да, без импорта не получится.

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

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

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

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

>Ну это то я понимаю. но не обращаться же через объект приложения к бд для селекта
Так во всех веб фреймворках делается
Аноним 27/09/21 Пнд 19:07:42 #83 №2168553 
>>2168487
>Хотя хотелось бы что бы в всеобщую культуру написания питонокода начали входить интерфейсы
Зачем? Ты мыслишь категориями языков вроде Java
Аноним 27/09/21 Пнд 19:09:13 #84 №2168555 
>>2168553
Они зохавали похапе, теперь лезут в питон, лол.
Аноним 27/09/21 Пнд 19:32:47 #85 №2168575 
>>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 #86 №2168584 
>>2168553
>Зачем? Ты мыслишь категориями языков вроде Java

Это есть не только в джаве и я не говорил, что нужно реализовывать так же. Необходимо разделять контракт и его имплементацию, выше уже привели пример протоколов, по сути как в ГОвне интерфейсы сделали и это правильно. Правда пока это мало кто делает и слишком сильно заигрывают с динамичностью из-за которой нихуя непонятно что за объект выдает та или иная функция сторонней либы, что даже в небольшом проекте вызывает лютую жопоболь.
Аноним 27/09/21 Пнд 20:19:23 #87 №2168600 
>>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 #88 №2168603 
>>2168584
> пока
Это довольно новые технологии для питона, только в свежих версиях они дошли до уровня, когда полезны.

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

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

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

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

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

Но очевидный крен есть в эту сторону.
Аноним 27/09/21 Пнд 21:56:08 #91 №2168662 
1824457685795658764.png
Анон, помоги, плес.
Документация:
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 #92 №2168726 
>>2168662
Так может ты сначала заполнишь словарь, а потом начнешь его отрисовывать?
Аноним 27/09/21 Пнд 23:30:10 #93 №2168735 
>>2165371
Fastapi неплох, все есть.
Аноним 27/09/21 Пнд 23:35:06 #94 №2168740 
>>2168726
Так я в зависимости от условия генерю список словарей и подаю на выход:
return [{'data': {'id': x}} for x in some_list]
вот только почему-то в таком виде вылетает ошибка. Хотя судя по документации, это правильный формат.

Если кто хоть что может подсказать, буду прищнателен.
Аноним 28/09/21 Втр 10:37:12 #95 №2168900 
Как в django rest framework сделать кастомную схему? Не привязываясь к модели в БД
Аноним 28/09/21 Втр 10:52:47 #96 №2168905 
>>2168900
drf-spectacular
Аноним 28/09/21 Втр 11:17:02 #97 №2168924 
>>2168905
Это не то
Аноним 28/09/21 Втр 11:26:24 #98 №2168928 
>>2168924
Ладно, извини
Нормально объясняй, чо тебе надо
Аноним 28/09/21 Втр 13:24:39 #99 №2169012 
>>2168928
Есть класс. Нужно его заполнить и отправить в качестве жсона. Но класс не совпадает со структурой модели из БД.
Аноним 28/09/21 Втр 16:58:42 #100 №2169242 
сап, погромач
нужна твоя помощь с Jinja2
я нихуя не погромист и никогда им стать не хотел, но жизнь сложилась необычно и теперь мне нужно писать код

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

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

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

КАК ЭТО СДЕЛАТЬ КОДОМ, ПОМОГИТЕ
Аноним 28/09/21 Втр 17:21:11 #101 №2169265 
image.png
>>2169242
>Jinja2
Аноним 28/09/21 Втр 18:08:40 #102 №2169300 
Сяп.
Есть джанговская вьюха, которая принимает эксель-файл, через опенпайхл его парсит в памяти и отдаёт результат.
Если файл прошёл валидацию, его дальше нужно обрабатывать, т.е. идёт новый запрос к другой вьюхе.
Вопрос: как в памяти держать объект Workbook, чтобы не приходилось файл заново обрабатывать? Либо так не получится, и нужно его где-то хранить на диске, например NamedTemporaryFile?
Аноним 28/09/21 Втр 18:45:39 #103 №2169325 
>>2169242
Каким способом идет отправка? В каком виде сообщение? Сколько пользователей?
Аноним 28/09/21 Втр 19:33:50 #104 №2169418 
>>2169265
ну дада дохуя прогер на джаве нашелся
или на плюсах
или на шарпе
или на чем угодно кроме jinja2
Аноним 28/09/21 Втр 19:34:17 #105 №2169420 
>>2169325
спасибо, что откликнулся, но сам разобрался
Аноним 28/09/21 Втр 20:29:20 #106 №2169457 
>>2169300
Хуевая архитектура. Сохраняй файл в сторадж и кидай задачу в селери, а потом пиши результат в БД
Аноним 29/09/21 Срд 10:30:14 #107 №2169794 
image.png
>>2169418
Зелёный, чо ты собрался на Jinja кодить?
Аноним 29/09/21 Срд 11:07:30 #108 №2169836 
Загнобили нуба, токсики. Эх вы.
Аноним 29/09/21 Срд 12:50:40 #109 №2169920 
Сап, аноны, помогите с Selenium. Как ему передать уже готовый html, чтоб он его загрузил и открыл страницу? Знаю, что у puppeter у класса Page есть метод setContent(), есть что то похожие у Selenium?
Аноним 29/09/21 Срд 13:14:27 #110 №2169935 
>>2169920
Через data url можешь сделать.
Аноним 29/09/21 Срд 15:46:06 #111 №2170060 
>>2169935
Можно чуть подробней, как это сделать?
Аноним 29/09/21 Срд 16:03:18 #112 №2170068 
>>2170060
Открой в браузере
data:text/html;base64,PGgxPmh1aTwvaDE+
Аноним 29/09/21 Срд 16:25:20 #113 №2170089 
Суп срач. Есть один старый проект с тухлыми зависимостями.

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

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


Но блин, вылезла новая трабла - как в селениуме добавить заголовки?? попробовал selenium-wire, но после первого перехода перестают открываться страницы с ошибкой "selenium-wire". Как решить эту проблему?
Аноним 29/09/21 Срд 17:44:56 #115 №2170151 
>>2167866
https://www.pyimagesearch.com/
Это твое все и даже больше
Аноним 29/09/21 Срд 17:59:46 #116 №2170163 
Динамоговно для даунов.
Аноним 29/09/21 Срд 19:10:43 #117 №2170204 
>>2170068
Ссука, шутки за 300. Проиграл зачем-то.
Аноним 29/09/21 Срд 20:14:00 #118 №2170242 
>>2170163
Главное, что сильная типизация.
Аноним 29/09/21 Срд 20:17:35 #119 №2170252 
>>2170089
pip install --upgrade --force-reinstall -r requirements.txt
Аноним 29/09/21 Срд 22:45:04 #120 №2170358 
>>2170252
Маловато будет. Дохуя пакетов. Проекту 5 лет, наверняка мажорные версии сломают кучу всего.
К тому же и сам питон хотелось бы обновить. Вот даже не знаю, с чего начать.
Аноним 29/09/21 Срд 23:16:12 #121 №2170383 
>>2170358
Интересный вопрос, тоже послушал бы мнение опытных наносеков
Аноним 30/09/21 Чтв 01:14:27 #122 №2170424 
>>2170383
Не работать там, где есть много говнолегаси
А вообще, я бы сначала обновил все библиотеки и прогнал бы тесты (они же там есть и покрывают бизнес-логику?)
Аноним 30/09/21 Чтв 09:48:09 #123 №2170513 
>>2170424
Да тесты есть на каждый пердеж. Ну в целом складывается ощущение, что какой-то супер страты для обновы нет. Ебошишь и смотришь что сломалось. Хуево, конечно.
Аноним 30/09/21 Чтв 11:36:17 #124 №2170570 
Если знаешь JS и React, полезно ли будет изучить Django?

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

К тому же, ты же спрашивал про то, много ли вакансий на стек React + Django. Ответ: нет, но связка react + DRF/fastapi много где используется, так что смею предположить, что и пригодится такой фулстек куда-нибудь.
Аноним 30/09/21 Чтв 12:14:38 #130 №2170599 
>>2170594
Для DRF все равно придется знать джангу, потому что джанга огромна и всеобъемлюща, а в нем выкидывается только шаблонизатор
Аноним 30/09/21 Чтв 12:17:49 #131 №2170600 
>>2170599
Да, но учитывай и то, что отличие DRF от Django не только в том, что "темплейты выкидываются". В самом DRF куча всего, что нужно знать, чтобы им комфортно пользоваться. Так что после джанги всё равно посидеть ещё придётся
Аноним 30/09/21 Чтв 13:25:22 #132 №2170640 
1601775459755.jpg
Я новичок. Посоветуйте учебник по дискретной математике.
Заранее спасибо.
Аноним 30/09/21 Чтв 13:57:14 #133 №2170683 
none.png
Почему при вводе None ничего не печатается?
Аноним 30/09/21 Чтв 14:35:15 #134 №2170722 
>>2170683
Чтобы не срать этими None на каждый случай None.
Аноним 30/09/21 Чтв 14:39:54 #135 №2170729 
>>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 #136 №2170747 
>>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 #137 №2170754 
>>2170747
Я подразумевал скорее востребованность и актуальность относительно других технологий для бэкенда, а не конкретное число вакансий. Кроме hh.ru есть же множество других площадок для поиска работы.

>Так зачем спрашивал?
Ну теперь понял, что Django неплохо бы освоить, но в дальнейшем стоит смотреть упомянутые тобой штуки.
Аноним 30/09/21 Чтв 15:32:37 #138 №2170776 
Как в redis stream передать многомерный словарь?
Он жрет только одноуровневый, а типа {'a': 1, 'b': {'a': 1}} уже нет. Сериализатором нельзя, он ожидает словарь на входе.
Аноним 30/09/21 Чтв 19:45:35 #139 №2170973 
>>2170776
Сериализуй в json и передай в редис {"data": "your_json_here"}
Аноним 01/10/21 Птн 05:12:17 #140 №2171241 
кто то шарит в pyrogram? Как сейчас работает get.messages? почитал документацию, сделал по ней вылетает ValueErorr, разные значения в message.id ставил, оставлял только chat.id, не работает, подскажите аноны, как получать сообщения юзерботом на пирограмме?
Аноним 01/10/21 Птн 13:24:50 #141 №2171462 
Суп питонач. Я могу как-то с помощью pip'a узнать какие версии питона поддерживает текущая версия модуля? Или как я вообще это могу сдалеть не заходя в гитхаб и не смотря ченжлоги?
Аноним 01/10/21 Птн 14:00:20 #142 №2171491 
>>2171462
Если автор не забил на это, то можешь
https://pypi.org/classifiers/
Аноним 01/10/21 Птн 15:31:43 #143 №2171581 
Джанго-макаки, используют на ваших галерах GraphQL, или это только моя такая выебистая?
Аноним 01/10/21 Птн 15:40:07 #144 №2171595 
>>2171581
Это же от требований зависит, если фронт "умный" и может сам менеджить данные, то можно юзать GraphQL, а если нет то и нахуй это не всралось
Аноним 01/10/21 Птн 16:00:07 #145 №2171620 
Почаны, что лучше - Tkinter или PySimpleGui?
Аноним 01/10/21 Птн 16:21:24 #146 №2171648 
>>2171620
Нормальные люди не используют python для дестктопных приложений, точка. Учи Java/C#/C++, точка.
Аноним 01/10/21 Птн 16:23:24 #147 №2171651 
>>2171620
Бинды к qt. Костылить свой гуй сегодня никаких денег не хватит.
Аноним 01/10/21 Птн 16:36:40 #148 №2171655 
>>2171648
Я и не спорю, мне для учебных проектов.

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

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

Первый HR

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

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

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

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

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

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


У меня уже жопа горит, я блять не знаю, я готов за копейки работать ради первого опыта, но даже шанса не дают попасть на тех собес, а тестовое задание такая хуйня.
Аноним 01/10/21 Птн 19:53:38 #152 №2171780 
ИМХО, если вы самоучка и не успеете запрыгнуть до ~2022 года вы в провале. Сейчас на рынок начнут выходить одебелевшие гигкбрейнсовые-скиллбоксшвайны, которым пообещали за 8 месяцев учебы зарплату в 50к. Если вы не учитесь в норм универе у вас очень очень мало шансов.
Аноним 01/10/21 Птн 20:11:34 #153 №2171791 
image.png
image.png
>>2171780
>ИМХО, если вы самоучка и не успеете запрыгнуть до ~2022 года вы в провале
Никогда так не говорили! Еще бы найти ту древнюю шешебку, где на соц рекламу наложили пасту про вкат и коммиты в одну ветку
Аноним 01/10/21 Птн 20:15:05 #154 №2171792 
>>2171722
А вам говорили про нетворкинг. Я вот учусь в максимально провинциальном говновузе по айти специальности, учат хуйне полной, но один из одногруппников оказался пиздец пробивным челом и уже на третьем курсе синьором-помидором стал в одной галере. И тут включается кумовство непотизм нетворкинг, с минимальным собесом взяли джуном в эту контору. Ну он меня не напрямую протянул если что, у него таких полномочий нет и в принципе он фронтенд. Короче заводите правильные знакомства, пацаны.
Аноним 01/10/21 Птн 23:22:13 #155 №2171887 
>>2171722
40? Это же очень мало. И в других сферах тебе тоже никто не ответит, дело не в проганье.
Аноним 02/10/21 Суб 00:13:15 #156 №2171896 
Что быстрее в производстве джянга, рейлс или нода?
Аноним 02/10/21 Суб 00:33:04 #157 №2171908 
>>2171896
Один хуй разницы. Все упирается в знание инструмента
Аноним 02/10/21 Суб 00:34:30 #158 №2171911 
>>2171655
Возьми Electron
Аноним 02/10/21 Суб 01:04:49 #159 №2171919 
>>2171722
>второе за 3 часа
> строчек 300 в другом, все четко,
Как можно за 3 часа высрать 300 строчек и что за лютый пиздец будет вместо кода, если так писать? Если не копи-паст из другого места и старых наработок, конечно.
Аноним 02/10/21 Суб 01:14:45 #160 №2171920 
В чём разница между питоновскими abc/collections.abc и typing?

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

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

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

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

> Если я хочу какие-то свои типы-протоколы задекларировать
Что именно и зачем?
Аноним 02/10/21 Суб 01:47:50 #162 №2171937 
>>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 #163 №2171941 
>>2171937
Кмк, ты пытаешься решить абстрактную задачу, оттого и нет хорошего понимания, каким путем пойти. Лучше все же решать реальные и конкретные задачи.

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

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

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

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

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

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

Я столкнулся с тем, что хочется как-то описать этот тип, те метода, которые в нём нужны, но я не очень понимаю, как это грамотно сделать.
Аноним 02/10/21 Суб 02:28:28 #166 №2171953 
>>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 #167 №2171955 
>>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 #168 №2171961 
>>2171955
> хочу, чтобы можно было передавать любой тип, главное, чтобы там были определены некоторые меторы. В объем условно "реализован интерфейс", но без наследования от интерфейса

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

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

Не понятно, откуда такое желание. Явное лучше неявного, все таки. Если у тебя слишком обобщенный и универсальный интерфейс -- это может создать лишнюю сложность. Простой интерфейс -- это один из критериев хорошо спроектированной системы
Аноним 02/10/21 Суб 04:16:59 #169 №2171970 
>>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 #170 №2171971 
>>2171648
Так а если нужно что-то простое и кроссплатформенное? Какой-нибудь wxPython вполне норм, вроде.
Аноним 02/10/21 Суб 05:18:32 #171 №2171973 
>>2171961
>Тогда через abc и abstractmethod
>Не понятно, откуда такое желание
И как он заставит asyncio.Queue унаследовать от этого ABC? По-моему, Protocol как раз единственное разумное решение здесь.
Аноним 02/10/21 Суб 10:36:33 #172 №2172037 
16324138101570.png
Питонач, посоветуй, пожалуйста, книжек/статей по асинхронности, многопоточности и многопроцессорности.
Спасибо.
Аноним 02/10/21 Суб 11:52:42 #173 №2172085 
>>2172037
В документации достаточно инфы, тебе нужно книги по распределенным системам смотреть что бы не обосраться с асинхронностью, потому что когда дело доходит до изменения стейта начинается лютая жопа
Аноним 02/10/21 Суб 11:56:48 #174 №2172087 
>>2172085
>тебе нужно книги по распределенным системам смотреть
Можно что-нибудь посоветовать?
Аноним 02/10/21 Суб 12:23:41 #175 №2172092 
image.png
>>2172087
Если хочешь пердолить докеры с куберами, то это можно почитать
Аноним 02/10/21 Суб 15:12:46 #176 №2172200 
>>2172085
>>2172037
Асинхронность может быть многопоточной?
Аноним 02/10/21 Суб 15:41:46 #177 №2172221 
>>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 #178 №2172377 
Screenshot1.png
Аноны, что не так с этим решением? Решал вот эту задачу:
https://leetcode.com/problems/minimum-time-visiting-all-points/
Аноним 02/10/21 Суб 19:56:01 #179 №2172411 
>>2172377
В 6 строчке у тебя зачем-то and вставлен
Аноним 03/10/21 Вск 01:33:35 #180 №2172553 
image.png
>>2172377
чот ты сложна сделал
Аноним 03/10/21 Вск 10:58:38 #181 №2172646 
>>2172092
А нахуй на обложке птицы?
Аноним 03/10/21 Вск 11:01:28 #182 №2172647 
>>2172646
Они могут распределенно насрать тебе на голову.
Аноним 03/10/21 Вск 11:11:29 #183 №2172654 
image.png
image.png
>>2172646
Это не самая странная обложка, которая у них есть
Аноним 03/10/21 Вск 11:14:45 #184 №2172657 
>>2172647
но в этом не будет системы
>>2172654
пиздец они психи!
Аноним 03/10/21 Вск 11:21:40 #185 №2172660 
>>2172646
У этого издания на обложке вымирающие виды.
Аноним 03/10/21 Вск 11:56:47 #186 №2172668 
>>2172660
теперь понятно. нихуя они зоологи - орнитологи
Аноним 03/10/21 Вск 12:07:18 #187 №2172671 
>>2172668
Тут больше интересно, что ты никогда не видел книг от орайли. Вкатываешься с нуля за три недели первый день?
Аноним 03/10/21 Вск 14:19:34 #188 №2172741 
>>2172671
не, я вкатываюсь полностью без книг и каких либо материалов.
ЭКСТРИМ ВАРИАНТ
Аноним 03/10/21 Вск 18:13:05 #189 №2172953 
Решил значит помимо sqlite изучить и что-то серьезнее. Взял докер значит, накатил постгрес, pgadmin. И там оказывается надо создавать базу данных, потом ещё какую-то схему и аж тогда таблицу, когда в sqlite вроде сразу таблицу создавал.

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

Типа postgres_test -> mysuperapp -> mysuperapp -> test
Аноним 03/10/21 Вск 19:59:01 #191 №2173046 
>>2172962
оказывается надо просто использовать готовую схему public, а не создавать свою)) сразу понял как включил после отдыха
Аноним 04/10/21 Пнд 10:15:30 #192 №2173310 
>>2171491
Спасибо.
Аноним 04/10/21 Пнд 12:42:39 #193 №2173492 
>>2165167 (OP)
Аноны, посоветуйте ресурс или книгу чтобы научится писать качественный код на сабже? Работаю в R§D уже 4 года, язык знаю но мой код похож на парашу может есть чтото для чистоты и качества кода именно
Аноним 04/10/21 Пнд 12:58:17 #194 №2173524 
Как лучше всего в pythone обезопасить поиск через mysql чтобы пользователь не мог присобачить drop или ещё что нибудь
Аноним 04/10/21 Пнд 12:59:42 #195 №2173529 
>>2173524
Экранирование запросов, как и в любом другом языке
Аноним 04/10/21 Пнд 13:12:32 #196 №2173541 
>>2173524
Почитай про Prepared statement
Аноним 04/10/21 Пнд 13:29:14 #197 №2173558 
Как в джанге получить файл настроек, не зная имени приложения, в котором настройки? Мне нужно написать модуль, который можно сразу в готовый проект вставить и его не редачить, но в нём надо что-то из настроек подтягивать, для чего надо имя приложения знать.
Аноним 04/10/21 Пнд 13:43:25 #198 №2173570 
>>2173558
from django.conf import settings

Не то, что тебе надо?
Аноним 04/10/21 Пнд 15:46:56 #199 №2173662 
>>2173570
Да, оно, спасибо.
станислав полемин 04/10/21 Пнд 17:26:29 #200 №2173769 
хочу написать штуку, которая перебором значений нескольких переменных будет решать пример, что я делаю не так?
https://ideone.com/30nLbH
станислав 04/10/21 Пнд 17:29:11 #201 №2173773 
бамп
Аноним 04/10/21 Пнд 17:29:59 #202 №2173775 
>>2173769
бамп
Аноним 04/10/21 Пнд 17:38:51 #203 №2173795 
>>2173492
Я бы подрубал линтер и смотрел на ошибки, которые он находит.
Аноним 04/10/21 Пнд 17:39:28 #204 №2173796 
>>2173769
бамп
Аноним 04/10/21 Пнд 17:42:59 #205 №2173804 
>>2173769
zip
Аноним 04/10/21 Пнд 17:44:02 #206 №2173806 
>>2173769
>что я делаю не так?
Примерно всё. Попробуй для начала синтаксис языка изучить
станислав 04/10/21 Пнд 17:44:23 #207 №2173807 
>>2173804
что?
Аноним 04/10/21 Пнд 17:47:28 #208 №2173810 
>>2173807
zip тебе не поможет. Ебашь цикл в цикле в цикле
станислав 04/10/21 Пнд 17:48:30 #209 №2173813 
>>2173810
не мог бы ты показать как будет здесь выглядеть?
Аноним 04/10/21 Пнд 17:49:56 #210 №2173815 
>>2173813
for a ... :
____for b ... :
________for c ... :
____________ x = ...
Аноним 04/10/21 Пнд 17:55:59 #211 №2173824 
>>2173815
>
>________for c ... :
спасиби, брат питонист
станислав 04/10/21 Пнд 18:14:22 #212 №2173842 
https://onlinegdb.com/I2HfJJhXz

чота не работает
>>2173824
Аноним 04/10/21 Пнд 18:18:54 #213 №2173846 
>>2173842
бамп
станислав 04/10/21 Пнд 18:41:53 #214 №2173878 
https://onlinegdb.com/I2HfJJhXz
бамп. что не так?
Аноним 04/10/21 Пнд 19:00:34 #215 №2173910 
>>2173878
https://onlinegdb.com/UJNfDHDbo
Аноним 04/10/21 Пнд 19:30:53 #216 №2173950 
>>2173910
СПАсибо бОльшое БРатец Питонус!!!!!!
станислав 04/10/21 Пнд 19:59:32 #217 №2173987 
после for может выполняться несколько условий, если да, то как это выглядит?
https://www.onlinegdb.com/online_python_compiler
что не так??
Аноним 04/10/21 Пнд 20:00:17 #218 №2173988 
>>2173987
извиняюсь ссылка не туда ведет
вот
https://onlinegdb.com/Mzzc_Vtvd
Аноним 04/10/21 Пнд 20:01:06 #219 №2173989 
>>2173988
https://onlinegdb.com/Mzzc_Vtvd
бамп
что не так?
Аноним 04/10/21 Пнд 20:01:25 #220 №2173991 
>>2173989
бамп
Аноним 04/10/21 Пнд 20:12:11 #221 №2174001 
>>2173989
Что ты со своими бампами заладил? Что ты вообще пытаешься делать и почему ты считаешь, что твой код должен что-то печатать?

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

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

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

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

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

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

Благодарю
Аноним 04/10/21 Пнд 21:19:13 #229 №2174064 
image.png
>>2173842
теперь подумай, почему у тебя было неправильно. почитай там описание синтаксиса, функций всякое такое
Аноним 04/10/21 Пнд 21:25:10 #230 №2174068 
>>2174064
а я поздно проснулся. ну пох
Аноним 05/10/21 Втр 00:36:20 #231 №2174181 
Питонач, не понимаю, как продвинуться в изучении языка дальше. Я довольно хорошо задрочил стандартные типы данных и операции с ними, процедурное и функциональное программирование, модульность. Взялся за ООП - но все гайды/туториалы/видосы на ютубе даже длиной в час описывают ООП ровным счетом одинаково: class Animal, dog = Animal("Bobik", "woof-woof"), dog.speak()
Как это все применить в практической плоскости?
Аноним 05/10/21 Втр 00:41:56 #232 №2174184 
>>2174181
Начинай писать свои проекты
Изучай нужные/интересные тебе библиотеки
Читай толстые книжки
Аноним 05/10/21 Втр 00:50:22 #233 №2174188 
>>2174184
>Начинай писать свои проекты
Так я пишу, вот по работе недавно хуитку для автоматизации написал. Там и модульность, и аутентификация, и запросы из разных баз данных, и запись в третью базу данных, и форматирование данных, и даже работа с гитом и ci/cd. Но это все функциональщина, а вот как перенести логику функций, когда алгоритм просто следует от предыдущей операции к следующей, на логику классов, когда есть все вот эти полиморфизмы, наследования и инкапсуляции - вот это я вообще не представляю. И примеры с class Animal вообще не помогают.
Аноним 05/10/21 Втр 02:01:54 #234 №2174201 
Нампи имеет смысл собирать с 8байтным интом для x64?
Аноним 05/10/21 Втр 05:55:00 #235 №2174228 
>>2174188
>это все функциональщина
Это плохо, что ли? Наоборот, хорошо. ООП нинужен, уже тем более насильно его пихать.
Аноним 05/10/21 Втр 06:44:13 #236 №2174231 
>>2174188
Очень полезно даже не самому писать, а с чужими проектами разбираться, как они устроены, работают и т.п. С какими-нибудь небольшими.

А к ООП надо самому придти, чтобы понять, зачем это надо. И смотреть, как это реально используют. Потому что на задачах, что можно в примитивных примерах изобразить, смысла в ООП нет никакого. А на реальных имеет, хотя не на всех задачах.
Аноним 05/10/21 Втр 07:17:10 #237 №2174234 
14579580166763.png
>>2174231
>А на реальных имеет
Аноним 05/10/21 Втр 08:58:32 #238 №2174253 
Так. А что python на 4 версию переезд планирует?
Аноним 05/10/21 Втр 10:21:09 #239 №2174325 
>>2174253
Пока не известно, в ближайшие лет пять начинать обсуждать не планируют.
Аноним 05/10/21 Втр 10:38:48 #240 №2174336 
Почему получаю ошибку '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 #241 №2174340 
>>2174336
Это peewee, забыл указать
Аноним 05/10/21 Втр 11:42:32 #242 №2174383 
>>2174181
про абстрактные фабрики читал?
Аноним 05/10/21 Втр 11:52:03 #243 №2174389 
Как скомпилировать два файла python в один?
допустим есть
common.py
main.py
а нужно получить скомпилированный в виде одного.
python -OO -m py_compile common.py main.py
создают два файла и соответственно их нельзя запустить, компиляция нужна под linux и windows
Аноним 05/10/21 Втр 12:14:23 #244 №2174409 
>>2174389
Тебе нужен бинарник?
Аноним 05/10/21 Втр 12:18:51 #245 №2174413 
>>2174409
да, под win и linux
Аноним 05/10/21 Втр 12:26:59 #246 №2174415 
>>2174413
Nuitka посмотри
Аноним 05/10/21 Втр 12:28:01 #247 №2174417 
>>2174413
Nuitka, можно через cython
Аноним 05/10/21 Втр 13:01:00 #248 №2174443 
>>2174415
>>2174417
Вроде то что нужно, спасибо!
Аноним 05/10/21 Втр 13:46:07 #249 №2174467 
>>2174443
Аноним 05/10/21 Втр 13:59:52 #250 №2174484 
>>2174389
Если тебе нужен исполняемый бинарник, не зависящий от питона, это одна история. Nuitka как вариант.

Если тебе нужно просто в виде одного файла собрать, то там другие опции есть, в виде архива собрать (причём вместе с зависимостями можно) и потом архив запускать. Но для этого нужно будет, чтобы питон был в системе.
https://docs.python.org/3/library/zipapp.html
Аноним 05/10/21 Втр 14:39:34 #251 №2174515 
Посоветуйте хороший учебный материал по Джанго, что-то похожее на Flask mega tutorial от Мигеля Гринбегра было бы отлично.
Аноним 05/10/21 Втр 15:03:55 #252 №2174534 
>>2174515
Django By Example
Аноним 05/10/21 Втр 16:15:05 #253 №2174606 
>>2174484
А есть годные обфускаторы кода? Просто держать проект на сервере заказчика опасно, кто знает сегодня он платит а завтра заберет себе проект и будет сам им заниматься.
Аноним 05/10/21 Втр 17:05:43 #254 №2174643 
>>2174606
Работай с байткодом
Аноним 05/10/21 Втр 19:19:40 #255 №2174773 
>>2174606
И правильно сделает, лучше сторониться такого зловредного говна как ты.
Учись работать нормально.
Аноним 05/10/21 Втр 19:32:43 #256 №2174784 
>>2174606
Тогда или компиляция в бинарник, или надо предоставлять сервис, а не код, или/и прописывать всё в договорах.

Байткод не решение, по питоновскому байткоду исходный код восстанавливается практически один в один.
Аноним 05/10/21 Втр 22:53:29 #257 №2174964 
>>2174228
Мне казалось, что ООП - это де-факто стандарт индустрии, вообще любого языка. А если я пишу код на функциях, то это какая-то хуета. Разве нет?
Аноним 06/10/21 Срд 01:34:27 #258 №2175084 
>>2174964
https://www.youtube.com/watch?v=QyJZzq0v7Z4

ООПщики сами от своих вещей отказываются, вроде наследования.
Аноним 06/10/21 Срд 03:36:43 #259 №2175110 
Скинул резюме, а мне говорят "не увидел у вас в резюме вашего образования"
Вот нахуя так сразу срезать? Чот грустно все это
Аноним 06/10/21 Срд 08:43:55 #260 №2175192 
>>2175110
Так и напиши:
Образование: нинужно.
Аноним 06/10/21 Срд 09:45:12 #261 №2175240 
>>2175110
Так добавь.
Аноним 06/10/21 Срд 09:52:33 #262 №2175252 
>>2175110
Ну пройди атестацию. Или купи диплом.
Аноним 06/10/21 Срд 10:00:20 #263 №2175265 
>>2175240
>>2175252
Образование: "ну дома книжки чот читал, что на дваче советовали, да на степике чот сертификаты какие-то получил никому не нужные"

Да в принципе норм, я в ваше айти не сильно стремлюсь, пока на 1с терплю как меня все в жопу ебут
Аноним 06/10/21 Срд 11:06:05 #264 №2175333 
2902497480.jpg
>>2175265
>да на степике чот сертификаты какие-то получил никому не нужные
Чем этот принцип отличается от университетского?
>ну дома книжки чот читал, что на дваче советовали
А что такое образование? Преподование в узкоспециализированном месте набор фактов? По какому критерию оно отличается от набора фактов, полученного дома от книг, или других медия носителей?
Образование по факту нужно для социализации (если ты соц. выблядок, который ищет друзяшек), и ради индокринации. Причём последнее было с раннего существования этого социальнного института, а именно в римской империи.
Если ты в свои года не понял - что образовани spook времён либерального просвещения объёб гоев на бабки, мне тебя жаль.
Аноним 06/10/21 Срд 11:23:05 #265 №2175345 
>>2175110
Ну ты и додик, когда был джуном, то обмазывал резюме сертификатами мейла и степика. Залетел в ойти в с первого собеса.
Аноним 06/10/21 Срд 11:31:15 #266 №2175354 
Анон, помоги нубу!
Хочу сделать бота для линейки через библиотеку pyautogui, но блин, линейка не регестрирует клики, что нужно использовать, чтобы клики регались в линейке?
Аноним 06/10/21 Срд 11:40:11 #267 №2175361 
>>2175333
Что за чел на пике?
Аноним 06/10/21 Срд 11:41:36 #268 №2175363 
>>2175265
>>2175110
>>2175333
бля да беги от таких работодателей что требуют высшее или еще какое говно, типа чтобы ты обязательно не курил или пил смузи .
это дауны.
Аноним 06/10/21 Срд 11:43:23 #269 №2175364 
>>2175361
Куртис Ярвин "Молдбаг".
Аноним 06/10/21 Срд 11:54:29 #270 №2175376 
>>2175364
Охуеть, как ты про него узнал?
Аноним 06/10/21 Срд 12:01:39 #271 №2175383 
У меня пара вопросов по статическим файлам и веб фреймворкам.
Как правильно организовать хранение файлов? Ну для своего проекта, просто отдельный каталог? И еще, прям всегда следует nginx использовать для отдать статики? Ну т.е. картинки-то понятно, а видео, например? Если я чанками отдавать хочу? И вообще, есть какая-нибудь альтернатива для обслуживания статики, кроме nginx? Интересует что-нибудь в асинхронных фрейворках. У многих есть что-то вроде serve_static, но это для чего, если не рекомендуется использовать?
Аноним 06/10/21 Срд 12:02:11 #272 №2175384 
>>2174188
Пока код не сильно отличается от стандартных примеров, выделение объектов не нужно.
А вот когда что-то действительно свое пишешь, у этой штуки появляется свое состояние и интерфейс, который в глобальной области вообще не к месту, ему бы свою область сделать. Вот с этого и начинается ООП. Когда хочется сгруппировать все в папочки и навести порядок.

Аноним 06/10/21 Срд 12:04:02 #273 №2175388 
>>2175383
Хранить на ютубе с доступом по ссылке
Аноним 06/10/21 Срд 12:09:04 #274 №2175394 
>>2175388
Репорт
Аноним 06/10/21 Срд 12:13:55 #275 №2175399 
>>2175394
На твоём говносайте канал закончится, когда там 10 человек будут видео смотреть. Только CDN тебе поможет.
Аноним 06/10/21 Срд 12:24:26 #276 №2175416 
>>2175399
Так ты не загружаешь на cdn свою статику, он запрашивает у тебя, а потом только кеширует. Ты хоть почитай что советуешь. Я спрашиваю, как организовать хранение статики, а не как быстро доставлять её в любую точку
Аноним 06/10/21 Срд 12:33:03 #277 №2175427 
>>2175416
>Так ты не загружаешь на cdn свою статику
Это зависит от CDN, например, s3 хранит все данные у себя, а ты просто встраиваешь в свой сайт ссылки
Аноним 06/10/21 Срд 12:36:27 #278 №2175430 
>>2175427
Тот самый s3, который может откручивать в минус твой баланс и ты потом квартиру должен продать, чтоб рассчитаться за счет от ddos по запросам?
Аноним 06/10/21 Срд 12:39:05 #279 №2175434 
>>2175430
Если ты проебался с настройками оплаты, что бы не уходить в минус это твои проблемы.
В любом случае жирный контент это не то, что ты должен хранить у себя.
Аноним 06/10/21 Срд 12:47:52 #280 №2175447 
У меня как-то был проектец - чувак купил на месяц доступ к каким-то инфоцыганским курсам про успешный успех и хотел скачать их себе. Там был обычный вордпресс и unlisted ссылки vimeo. Ну я четенько скачал на пару впсок, запущенных на день, а потом оттуда синкнул ему на гугл-драйв. В районе терабайта там этого говна было, надеюсь они потратились чуток, лол.
Аноним 06/10/21 Срд 12:54:55 #281 №2175455 
>>2175434
А как ты настроишь его?
Если только метрику по количеству запросов делать будешь или считать сколько у тебя биллинг. Т.к. бабки у тебя откручивает не в реал тайме, а через час-два или больше. Так что загнать тебя в минус не так уж и трудно. Компании и обычные люди жаловались на то, что нет возможности настроить чтоб твое облако уведомляло о приближении нуля или вовсе отключалось, если ты зашел за определенную сумму. Амазону то выгодно
Аноним 06/10/21 Срд 13:03:16 #282 №2175465 
когда там эти ваши сайпаи на 10 питон перейдут?
Аноним 06/10/21 Срд 13:17:35 #283 №2175487 
>>2175455
>Если только метрику по количеству запросов делать будешь или считать сколько у тебя биллинг
У них есть AWS Budgets, где за тебя это делают, можешь алерт на каждый процент поставить
https://aws.amazon.com/blogs/aws-cloud-financial-management/getting-started-with-aws-budgets/
Аноним 06/10/21 Срд 13:56:58 #284 №2175553 
>>2175354
Ёмаё, сегодня целый день пытался обойти эту шнягу, вроде называется Smart Guard. Даже AHK не работает, может кто знает, как обойти эту штуку? Все библиотеки испробовал...
Аноним 06/10/21 Срд 14:14:41 #285 №2175568 
>>2175553
Хуйня для защиты от автоматизации не дает тебе что-то автоматизировать? Удивительно.
Ну что тут можно сказать - бери книгу по с++ и учи, сделаешь драйвер и обойдешь его на уровне ядра. Как сделаешь, приходи.
Аноним 06/10/21 Срд 14:27:11 #286 №2175573 
>>2175568
но почему для линейки нет библиотек, которые могут обойти её...
Я ещё нуб, не знаю даже в какую сторону искать или что делать.
Аноним 06/10/21 Срд 14:35:49 #287 №2175587 
>>2175573
Ты тупой что ли? Как ты себе это представляешь?

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

Серьёзно блять?
Аноним 06/10/21 Срд 14:37:46 #288 №2175589 
>>2175568
Посоветуешь книгу? Только без учета, что я 20 лет стажа на сипипи имею
Аноним 06/10/21 Срд 15:09:13 #289 №2175623 
>>2175589
Что, уже деменция начинается?
С опытом куришь ддк и можно опционально навернуть тот же шиндовс интерналс.
Аноним 06/10/21 Срд 15:14:19 #290 №2175627 
Что я могу создать на Пайтоне, чтобы работодатель сказал "Вау, я преклоняюсь перед твоим гением, держи 200К"?
Аноним 06/10/21 Срд 15:23:02 #291 №2175632 
>>2175627
Что-то новое и гениальное
Аноним 06/10/21 Срд 16:03:09 #292 №2175654 
>>2175632
Векторный гипердвач?
Аноним 06/10/21 Срд 16:14:01 #293 №2175656 
Кто знает какие еще есть ресурсы кроме codewars, где есть возможность порешать задачи, попрактиковаться на python?
Аноним 06/10/21 Срд 16:17:30 #294 №2175663 
>>2175656
Leetcode
Аноним 06/10/21 Срд 16:20:11 #295 №2175666 
>>2175663

Спасибо.
Аноним 06/10/21 Срд 16:21:39 #296 №2175670 
>>2175654
Уже есть. Пикабу зовётся
Аноним 06/10/21 Срд 18:51:55 #297 №2175807 
>>2175384
>Вот с этого и начинается ООП. Когда хочется сгруппировать все в папочки и навести порядок.
Ну хз, разве не для этого как раз модульность нужна? Вот на примере моей приложухи - есть точка входа main.py, есть папочка controllers, в ней по отдельному .py файлу для контроллеров баз данных, отдельно лежит аутентификация, в /app лежит логика, в /output лежит выход. Вроде норм все расфасовано по папкам.
Аноним 06/10/21 Срд 19:47:27 #298 №2175868 
>>2175627
Операционную систему.
Аноним 06/10/21 Срд 20:27:25 #299 №2175922 
>>2175807
В моем понимании модуль это то же самое что и библиотека, набор функций без состояния.
Вот пример, когда мне кажется очевидно преимущество ООП, это Micropython. Класс SPI работает одинаково для аппаратного и программного варианта. То же самое с таймерами и другой периферией.
Если даже в таком случае тебе проще сделать функции отдельно, данные отдельно, то я даже не знаю, наверное тебе ООП ни к чему вообще.
Аноним 06/10/21 Срд 23:18:01 #300 №2176203 
e05b3945eac9a307b25c97c2db2f1cc6.jpg
Анонэ, а как понять, что ты уже кодишь на уровне джуна или даже продвинутого джуна? Какие проекты нужно уметь реализовывать? Какие критерии? Одно же дело знать синтаксис, отдельные какие-то технологии, но какова должна быть практическая реализация, чтобы ты мог бы быть уверенным в том, что потянешь уже работу в компании? А не жиденько обосраться в итоге и быть выпизженным с позором.
Аноним 06/10/21 Срд 23:23:04 #301 №2176214 
>>2176203
Если при виде полноценной задачи (а не задачки в три строчки) ты не дрищешь в штаны и знаешь, что делать. Все эти градации отделяет лишь сложность таких задач.
Аноним 07/10/21 Чтв 00:13:26 #302 №2176249 
>>2176214
Если я могу, но с гуглом?
Аноним 07/10/21 Чтв 00:34:06 #303 №2176265 
>>2175587
А главное разработано и то, и другое одними и теми же людьми!
Аноним 07/10/21 Чтв 02:07:15 #304 №2176313 
>>2176203
Если сможешь за недельку накидать фронтенд алгола-68 для llvm, то поздравляю- ты больше не стажер.
Аноним 07/10/21 Чтв 14:34:14 #305 №2176727 
>>2175399
>На твоём говносайте канал закончится, когда там 10 человек будут видео смотреть. Только CDN тебе поможет.
Стоимость трафика на CDN раз в десятки раз выше, чем трафик на vps/серверах. Если у тебя заканчивается трафик на рядовом vps/dedicated сервере, то это значит, что ты бы на AWS уже заплатил за него сотни долларов. Тогда как впс такая стоит десятку.

Аноним 07/10/21 Чтв 15:32:15 #306 №2176779 
>>2176727
Не путай трафик и канал.
Аноним 07/10/21 Чтв 20:54:08 #307 №2177073 
Я скобкоёб, меня стиль K&R выводит из себя, что уж говорить про висящие куски питонокода. Ужасает невозможность написать if/for/etc() {} в одну строчку. Как питон можно превратить в скобкоебский язык? Может есть какая-то надстройка над интерпретатором чтобы скобки кругом и всё как в родных сиподобных языках?
Аноним 07/10/21 Чтв 21:17:53 #308 №2177095 
>>2177073
Никак, иди в перл.
Аноним 07/10/21 Чтв 21:49:43 #309 №2177127 
>>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 #310 №2177249 
Двощ, помоги, умоляю. Есть проект 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 #311 №2177250 
>>2177249
SyntaxError: invalid syntax
Аноним 08/10/21 Птн 02:51:50 #312 №2177251 
>>2177249
>>2177250
Ему не нравится ф-стринг. У тебя второй питон или третий младше 3.6.
Аноним 08/10/21 Птн 11:31:32 #313 №2177383 
Анон, какие вопросы задают на собесе на джуниор дата инженегра?
Стек Python, Airflow, Clockhouse, Tableau, Docker.
Предполагаю, что будут дефолтные вопросы, как и на бэкендера: ооп, бд, базовые алгоритмы. Но может еще есть какие-то по специальности?
Аноним 08/10/21 Птн 14:25:14 #314 №2177477 
Кто-нибудь знает чем переводить "десять" в 10? есть что-нибудь от яндекса?
Аноним 08/10/21 Птн 16:13:30 #315 №2177551 
Как в aiogram хранить переменные для каждого пользователя свои?
При этом сейчас у меня есть состояния пользователя реализованные через class UserStates(Helper)
Аноним 08/10/21 Птн 22:47:03 #316 №2177834 
Подскажите как сделать.
Есть небольшое приложение, оно возвращает урлы.
nginx отдает картинки. Как сделать так, чтоб от приложения отдавать nginx команду на возврат картинки? Т.е. типа у меня своя учетка, я загрузил картинку. Она доступна только мне. Я не хочу, чтоб другой кто-то по ссылке на пичку смог получить её.
Аноним 08/10/21 Птн 23:16:04 #317 №2177840 
>>2177834
Прокси с проверкой доступа, лучше на каком нибудь го такое писать.
Аноним 09/10/21 Суб 02:41:39 #318 №2177925 
>>2175376
Он просто из секты заднеприводных, и я не бэкендеров имею ввиду.
Аноним 09/10/21 Суб 10:47:37 #319 №2178023 
>>2177925
почитал про него, он рили псих. асло он педик или гомик?
Аноним 09/10/21 Суб 12:45:45 #320 №2178180 
Привет.
Работаю инженером в одной госшараге.
Для работы написал себе скрипт на питоне, просто обработчик данных.
Коллеги очень заинтересовались затребовали себе такой же.
С помощью pyinstaller сделал exeшник.
Всё работает отлично, но есть одна проблема - при клике на эксешник сначала происходит распаковка файлов и она идёт ОЧЕНЬ медленно. Ну и компы у нас в шараге весьма древние. Т.е. я кликаю по эксешнику, запускается пуская консоль и до запуска программы надо ждать иногда 10-20 секунд.
Меня это устраивает, но моим коллегам очень не нравится, что в консоли в течении всей распаковки ничего не пишется. Если бы там было написано что-то типа "Ждите, программа запускается" - это было бы всем понятно. А так люди думают, что просто всё зависло.
Но как я понял, вывести такое сообщение во время распаковки просто невозможно. Это блин очень странно, неужели только я столкнулся с такой проблемой? Всё что я смог - это включить дебаг bootloader и в консоль теперь сыпется всякий мусор при распаковке. Но выглядит это максимально криво.
Правильно ли я понимаю, что единственный шанс это исправить - добавить к моей проге графический интерфейс с одним-единственным окошком как в консоли, отключить нафиг в pyinstaller саму консоль и использовать встроенный в pyinstaller splash screen?
Или может есть какие-то альтернативы?
Неужели только у меня эксешник распаковывается так долго? Или это только меня смущает, всем остальным похуй?
Аноним 09/10/21 Суб 12:52:04 #321 №2178192 
>>2178180
Не может такого быть. Там в несколько мегабайт бандлы получаются, что там делать 10-20 секунд?
Аноним 09/10/21 Суб 13:02:30 #322 №2178209 
>>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 #323 №2178227 
>>2178209
Ну хз тогда, это большие и навороченные либы, с ними могут быть нюансы.
Аноним 09/10/21 Суб 15:00:34 #324 №2178338 
>>2178192
распаковывать исполняемый код в виде кучи файлов и проверять его антивирусом.

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

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

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


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

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

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

А вы там ебитесь в подвале сами со своим устаревшим железом и без SSD
Аноним 09/10/21 Суб 16:31:09 #341 №2178428 
>>2178418
Лол.
Я так-то в филиале Роскосмоса работаю.
К которому потом твои инженеры-питонисты на аймаках, роняя по дороге кал, бегают за помощью, когда очередной еба-шаттл ебанет в полете, забрав с собой смертничков.
Зато аймак/ссд/интернет на работе, только результатов как не было, так и нет.
Аноним 09/10/21 Суб 17:06:24 #342 №2178448 
>>2178428
На ликеро-водочном филиале?
https://lenta.ru/news/2020/11/13/poehali/
Аноним 09/10/21 Суб 17:34:30 #343 №2178471 
>>2178428
это я тебя еще пожалел.
на самом деле инженер-питонист дает коллегам ссылочку на google collab, который сразу его ноутбуки запускает в вебе.
Аноним 09/10/21 Суб 17:35:25 #344 №2178473 
>>2178023
Полехче тут с антисемитизмом и гомофобией, гой.
Аноним 09/10/21 Суб 23:43:43 #345 №2178876 
How-to-Add-a-Bot-in-Telegram.jpg
Аноны, вопрос не по теме, но в голову пришло его задать только программистам Python, ведь Telegram-боты пишутся на Питоне.
Есть ли бесплатный Телеграм-бот, который приветствует нового пользователя, заставляет его решать капчу и при этом приветственное сообщение видно только новому подписчику?
Аноним 10/10/21 Вск 00:33:54 #346 №2178936 
>>2178876
Shieldy но я видел и другие аналоги.
Аноним 10/10/21 Вск 01:29:35 #347 №2178959 
>>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 #348 №2178960 
image.png
>>2178959
Я херею с этих петушков со стэка - тупо цитируют оф доки питона, но когда им задают вопрос по существу "что значит что ты только что сказал", теряются и убегают
Аноним 10/10/21 Вск 01:39:12 #349 №2178961 
>>2178876
Вот ты додик. Ты разве видел в каналах личные сообщения?
Это же канал. Он общий.
Никакое api нe заставит Телеграм делать то, что он не хочет делать.
Аноним 10/10/21 Вск 01:53:42 #350 №2178969 
>>2178960
-m значит, что ты запускаешь модуль, точнее пакет, на исполнение.

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

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

Но необходимо, чтобы модуль поддерживал этот функционал, чтобы там был файл __main__.py
Аноним 11/10/21 Пнд 02:06:11 #351 №2179911 
Набигай, посоны
https://www.opennet.ru/opennews/art.shtml?num=55945
Аноним 11/10/21 Пнд 11:43:52 #352 №2180096 
>>2178428
Лол, биомусор из госшараги учит кого-то эффективности. Еще и про результаты какие-то говорит, сидя в рогозинкосмосе. Сюр какой-то.
Аноним 11/10/21 Пнд 12:57:13 #353 №2180167 
>>2178180
>Коллеги очень заинтересовались затребовали себе такой же.
>Нахуй пошли, я забесплатно делать для вас это не буду
Аноним 11/10/21 Пнд 13:17:59 #354 №2180179 
>>2178180
Не нравится, пусть не пользуются, я не очень понимаю, какая твоя-то беда? Просто скажи, что так работает.
Аноним 11/10/21 Пнд 16:08:55 #355 №2180329 
>>2179911
>Набигай, посоны
Куда набегать то? Я помню, было время, тут треды за три дня в бамплимит уходили, сейчас этот уже больше двух недель, и только 350 постов.

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

Хотя может это просто вкатуны в программирование заканчиваются.
Аноним 11/10/21 Пнд 17:08:26 #356 №2180367 
>>2180329
почитай.
https://ru.wikipedia.org/wiki/Процесс_Пуассона.
помнит он.
Аноним 11/10/21 Пнд 17:20:43 #357 №2180380 
>>2179911
> вырвался на первое место
> отрицательный рост минус 0.00%

поржал с этой британской статистики.
Аноним 11/10/21 Пнд 17:38:19 #358 №2180402 
>>2180380
Значит остальные упали/недоросли.
Аноним 11/10/21 Пнд 17:48:40 #359 №2180409 
16336752688570.png
Пацаны, два вопроса по джанго, выручите пожалуйста.

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 #360 №2180521 
>>2180409
1. GenericForeignKey
2.
- Для картинки: генери график Ploty сохраняй в jpeg, и кодируй в base64 например для автообновления.
- Для JS - chart.js https://simpleisbetterthancomplex.com/tutorial/2020/01/19/how-to-use-chart-js-with-django.html
Аноним 11/10/21 Пнд 21:09:42 #361 №2180628 
>>2180409
>2. Какой самый простой способ для django выводить простецкие графики?

1. docker run apache/superset
2. "вот вам, ребята, логин и отъебитесь от меня со своими графиками. все равно у вас каждый день новая хуйня в голове"
Аноним 11/10/21 Пнд 22:57:49 #362 №2180734 
>>2166245
Какие регулярки, шизик. С таким входными данными там легко можно обойтись split()
Аноним 12/10/21 Втр 04:29:34 #363 №2180866 
приведите пример задания которое дают на реальной работе плиз
Аноним 12/10/21 Втр 08:46:21 #364 №2180896 
>>2180866
Зайди на фриланс биржу, долбоеб.
Аноним 12/10/21 Втр 12:46:11 #365 №2181173 
image.png
>>2180896
при чем тут фриланс ебанат
Аноним 12/10/21 Втр 13:46:40 #366 №2181225 
В чём разница между class ABC: и class ABC(): ?
Инб4 в скобках.
Эти скобки что-то дают?
Аноним 12/10/21 Втр 15:00:52 #367 №2181289 
>>2181225
Ничего не дают. В скобках ты можешь указать классы, от которых наследоваться. А можешь не указывать.
Аноним 12/10/21 Втр 15:19:45 #368 №2181306 
>>2180866
Реальной работе кем, ёпт? Питон-разработчиком? Это довольно общий термин.
Аноним 12/10/21 Втр 15:41:55 #369 №2181336 
>>2180866
Напиши скрипты сборки для систем в докере.
Сделай сайт-сервис, который будет получать данные, получать данные из редиса, хранить их в кликхаусе/постре/монго.
Аноним 12/10/21 Втр 15:50:53 #370 №2181342 
>>2181173
Иди мети двор, быдло.
Аноним 12/10/21 Втр 16:16:38 #371 №2181352 
объясните пожалуйста долбаебу, как убрать ебаную кавычку " из строки? Делаю replace(' " ', ' ') и нихуя, добавил уже блять эту кавычку в библиотеку с пустым значением, библиотеку тоже пидорасит.

Сама задача: "sosi hui" вывести без кавычек
Аноним 12/10/21 Втр 16:31:11 #372 №2181359 
>>2181352
Ты в интерактивной сесии сидишь что ли, дурень?
Аноним 12/10/21 Втр 16:36:18 #373 №2181363 
>>2181352
уже не надо
Аноним 12/10/21 Втр 16:41:25 #374 №2181367 
Скорее всего, заезженный вопрос, но вот:
Что делать дальше?
Я посмотрел 2 курса на Степике от института биоинформатики по Питону
Писал несколько скриптов для работы с базами данных (на работе таким образом упростил свою задачу, вроде выгрузки из Оракла, сохранения в csv, прохождение по данным из файла в Вертике) и всякую чепуху вроде простейших парсеров и телеграм ботов
И вот сейчас у меня ступор: что учить, что писать (особенно это вызывает окаменение мозга), как двигаться?
Знаю, тут есть опытные ребята, которые проходили такой этап
Аноним 12/10/21 Втр 16:57:13 #375 №2181391 
>>2181359
>>2181363
>АХАХАХАХАХАХА
Аноним 12/10/21 Втр 16:58:20 #376 №2181393 
>>2181367
Работать за деньги начать не пробовал?
Аноним 12/10/21 Втр 17:07:20 #377 №2181406 
>>2181393
Я работаю за деньги, но не программистом, хотя в айти (Business Intelligence Consultant - что-то между аналитикой и дата инженирингом), хочу добавить сюда питон на хорошем уровне, чтобы на лучшие места претендовать.
Аноним 12/10/21 Втр 20:01:09 #378 №2181643 
вот у меня есть список
[Not win, 395, Win, 342, Win, 374]
как мне найти максимальное число среди тех которые идут после win
изменять список нельзя
максимальное число не у победителя
у проигравшего самое большое число
а мне надо большее среди победителей
словарь не вариант
в нем не могут существовать два элемента с одинаковыми индексами
*ключами
они просто перезаписывают друг друга
Аноним 12/10/21 Втр 20:06:50 #379 №2181651 
>>2181643
вьебать новый список только винов и в нем самое большое число найти?
Аноним 12/10/21 Втр 20:45:54 #380 №2181713 
>>2181643
max([[<твой список>] for i in range(1, len([<твой список>])) if [<твой список>][i-1] == "Win"])
Аноним 12/10/21 Втр 20:49:04 #381 №2181717 
>>2181643
Зипишь список с собой же со сдвигом и получаешь пары, ну а там заворачиваешь выражение в макс.
Аноним 12/10/21 Втр 20:52:47 #382 №2181719 
>>2181713
max([[<твой список>] for i in range(1, len([<твой список>])) if [<твой список>][i-1] == "Win"])
Забыл
Аноним 12/10/21 Втр 20:54:09 #383 №2181723 
>>2181719
а блять не забыл, это какая-то хуйня с форматированием
max([[<твой список>][x] for x in range(1, len([<твой список>])) if [<твой список>][x-1] == "Win"])
Вот бля короче
Аноним 12/10/21 Втр 22:05:20 #384 №2181775 
Как же хочется типизированные листы в питончике........
Аноним 13/10/21 Срд 00:40:42 #385 №2181998 
что-то я заебался...

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

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 #387 №2182331 
999.PNG
>>2182313
три минуты в паинте
Аноним 13/10/21 Срд 13:41:34 #388 №2182337 
Может кто знает, есть телеграмм бот aiogram в котором пользователи могут искать через мою mysql свои данные, когда поиск происходит одновременно не более 2-х человек всё нормально, но когда их около 10-ти и более не хватает ресурсов и всё зависает. Как сделать последовательную выдачу результатов пользователям? Была идея все запросы записывать в таблицу ожидания и другая программа просто через каждые 10 секунд например её проверяла и выдавала результаты, как такой способ будет по эффективности?
Аноним 13/10/21 Срд 13:56:05 #389 №2182348 
>>2182337
Подумай об оптимизации самой программы, а не о выделении ее в отдельный процесс. Десяток пользователей (лол) не должен вешать ни mysql, ни питон.
Аноним 13/10/21 Срд 13:57:54 #390 №2182351 
>>2182348
У меня ещё сервер слабый всего 2гб, сколько вообще нужно для нормальной работы базы >1гб
Аноним 13/10/21 Срд 14:00:32 #391 №2182354 
>>2182351
Чел, побойся бога, sql создавался для работы на компах с килобайтами оперативки. Ладно, с сотнями килобайт. Можешь немножко развернуть, что у тебя там программа делает?
Аноним 13/10/21 Срд 14:34:45 #392 №2182367 
оп-хуй.PNG
>>2181643
восемь секунд в пайнте
Аноним 13/10/21 Срд 14:37:43 #393 №2182373 
>>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 #394 №2182381 
>>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 #395 №2182390 
>>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 #396 №2182397 
>>2182373
Вот если так писать, то не удивительно. Твоя СУБД вынуждена каждый раз полностью сканировать всю базу целиком на предмет вхождения tags.

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

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

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

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

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

Если же tags лимитированы, то можно просто чуть базу переделать, избавиться от LIKE.
Аноним 13/10/21 Срд 15:19:49 #400 №2182430 
>>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 #401 №2182435 
>>2182423
кол-во tags можно ограничить 5-ю, но есть ещё и tags которые не должны встречаться в тексте или заголовке
Аноним 13/10/21 Срд 15:23:40 #402 №2182436 
>>2182423
>По идее какой-нибудь ElasticSearch для таких задач предназначен
Глянул, там очень серьёзные стартовые требования к железу и оперативной памяти в частности. Не для бюджетных VPS решение.
Аноним 13/10/21 Срд 15:34:00 #403 №2182444 
>>2182430
Слово tag сбивает, тэг это понятие про другое. У тебя просто поиск по тексту.

Какого размера у тебя база, сейчас (когда 25 секунд работает) и в перспективе? Сколько записей с большими текстами и какого размера текст в среднем?
Аноним 13/10/21 Срд 15:39:38 #404 №2182449 
>>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 #405 №2182454 
>>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 #406 №2182456 
Аноны, я пишу бота для беседы на питоне. Кто-нибудь сталкивался с таким, что бот правильно реагирует на вступление юзера в беседу по приглашению другого участника (chat_invite_user), реагирует на удаление участника (chat_kick_user), но не реагирует на вступление в беседу по ссылке? (chat_invite_user_by_link)

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

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

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

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

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

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

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

Но я думаю, даже обычный SQL ускорится на порядок, если ему выделить памяти достаточно, чтобы всё в оперативку влезало.
Аноним 13/10/21 Срд 16:41:35 #413 №2182518 
>>2182487
>SQL базы не предназначены для полнотекстового поиска.
причем, все равно умеют его делать. без особенных проблем с производительностью. вопрос только к качеству.
Аноним 13/10/21 Срд 17:25:46 #414 №2182560 
>>2165167 (OP)
Есть годный видеокурс по фласку? Чтоб прям все тонкости были.
Аноним 13/10/21 Срд 17:51:23 #415 №2182585 
https://www.youtube.com/watch?v=0kyy_zKO86U

там годнейшая обнова приехала
Аноним 13/10/21 Срд 18:45:36 #416 №2182652 
>>2178180
nuitka
Аноним 13/10/21 Срд 18:58:47 #417 №2182683 
>>2182652
возможно
Аноним 13/10/21 Срд 20:21:47 #418 №2182745 
>>2182331
Спасибки
Аноним 13/10/21 Срд 23:28:48 #419 №2182937 
Сап, двощ, есть код, ищет подстроки в строке, сделал логически просто, но безумно медленно. Как его ускорить, не юзая регулярные выражения? Выводит первый индекс первого совпадения. Вроде больший шаг итерации не запилишь, или вообще подход менять

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 #420 №2182938 
image.png
Спасибо за табуляцию
Аноним 14/10/21 Чтв 00:18:42 #421 №2182976 
>>2182938
Как будто человек из мема про выучить си за 21 день пытается в змею.
Аноним 14/10/21 Чтв 00:30:15 #422 №2182985 
>>2182976
Так я и учу змею 21 28 дней. Хз как тут без регулярных лучше сделать
Аноним 14/10/21 Чтв 00:31:52 #423 №2182987 
>>2182985
Смысл поста был не про 21 день или попытки, а про си.
Аноним 14/10/21 Чтв 00:33:40 #424 №2182989 
>>2182987
>:с
Просто не видел этот мем
Аноним 14/10/21 Чтв 00:35:16 #425 №2182990 
Братья по Питону, как часто вы на работе или в пет прожетках используете рекурсивные функции? Удобны ли они, полезны ли они?
Аноним 14/10/21 Чтв 00:39:29 #426 №2182991 
>>2182990
Питон не любит рекурсию. Лучше через цикл с очередью переписать если есть возможность
Аноним 14/10/21 Чтв 00:40:08 #427 №2182992 
>>2182991
В каком смысле не любит?
Аноним 14/10/21 Чтв 00:48:53 #428 №2182996 
>>2182938
>while 1
Ты учебник по второму питону смотрел?
Аноним 14/10/21 Чтв 01:00:52 #429 №2183006 
>>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 #430 №2183009 
W] PL (VPS-WAW2).
опци
Програмісти, хто знає?? як зробитм шоб всі вклабки адресу з цього сайту автоматично замінялись на 2c-pm. я не можу все вручну записувати довго

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

В приведённом коде меня больше всего вымораживает конструкция
for k in at:
____D = D[0:k] + C[k] + D[k+1:]
Аноним 14/10/21 Чтв 01:05:38 #432 №2183011 
>>2183009
Learn English!

Аноним 14/10/21 Чтв 01:49:51 #433 №2183042 
image.png
>>2182938
Аноним 14/10/21 Чтв 02:03:23 #434 №2183045 
image.png
>>2183042
Аноним 14/10/21 Чтв 02:12:01 #435 №2183049 
>>2183045
а еще можно сэкономить две строки, если оба
probe = input_string.find(start_token)
засунуть модным моржом в
while (probe := input_string.find(start_token)) > -1:
но это как-то менее читаемо
Аноним 14/10/21 Чтв 04:30:04 #436 №2183057 
image.png
>>2183045
>>2183049
Ну чел, ну сложно ведь. И медленно. Вот у тебя вариант 44 мс, а мой 10-12 мс
Вот тут пример: https://ideone.com/1HfYnv

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

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

Petya, Vasyan
Anton, Vasgen, Ramil

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

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

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

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

Парни, хуярю элементарный параллелизм на multiprocessing. Вот вроде обычная функция которая возведет все эелементы массива в квадрат. Внизу нахуярен объект MyTimer исключительно для подсчета времени исполнения. Как видите, время у синхронного и параллельного вариант практически то же ("параллельный" даже умудрился отсосать). Шо тут не так?
Аноним 14/10/21 Чтв 17:23:11 #445 №2183545 
>>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 #446 №2183558 
>>2183545
3.3396499156951904 secs elapsed for Sync
1.1430809497833252 secs elapsed for Parallel


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

>главные затраты времени на подготовку списка, разбиение его на куски
But wait... разбивать список на чанки - это вообще задача по хуйне для питона, оно за константное время происходит. Да и чанков тут всего 10
Аноним 14/10/21 Чтв 17:48:08 #447 №2183569 
>>2183558
Тебе данные надо нарезать, сериализовать для отправки в процессы, потом из этих процессов эти данные получить и сохранить в основном процессе. Это главная работа. В то время как само умножение работает очень быстро.
Аноним 14/10/21 Чтв 19:06:03 #448 №2183678 
>>2183057
блять, код балдежный но так же как и мой хуевый по времени пролетает для строки из 86к символов. Буду думать.
Аноним 14/10/21 Чтв 20:04:45 #449 №2183778 
А че, есть ссылку на конфу в тг какую-то небольшую двачевскую? Чтобы лампово было.
Аноним 14/10/21 Чтв 20:06:46 #450 №2183783 
Короче, собираю тестовую платформу. Для строки использую строку
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 #451 №2183830 
>>2183783
>>2183678
Самая проблема в производительности это вложенный цикл, циклы в питоне медленные.

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

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

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

Аноним 14/10/21 Чтв 23:18:23 #452 №2183957 
>>2183045
вот это прошло. Загнал строку в 700к знаков, очень быстро скушалось, ну и допилил случай нескольких собачек в начале паттерна,+ упростил, чтоб самому понять. Прям круто, спасиб
Аноним 14/10/21 Чтв 23:43:24 #453 №2183981 
>>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 #454 №2184021 
что-то туплю, помогите пожалуйста.
надо получить строку из 2 строк, складывая по-символьно.
string = ''.join(lambda x,y: x,y from s1, s2)
где я ошибся?

пример - строки s1 = ГОВНОГОВНО s2 = ПИЗДАПИЗДА.
на выходе должно получиться ГПОИВЗЕДОАГПОИВЗЕДОА.
Аноним 15/10/21 Птн 00:59:55 #455 №2184026 
>>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 #456 №2184029 
>>2184026
string + ''.join(map(str.__add__,s1, s2))
вот такой придумал, но он не добавляет конечные элементы при разнице в длинах изначальных строк. можно обойти через cycle, но да, зип_лонгест проще.
спасибо.
Аноним 15/10/21 Птн 01:47:01 #457 №2184033 
>>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 #458 №2184035 
>>2184033
но зачем?
Аноним 15/10/21 Птн 02:00:40 #459 №2184037 
>>2184033
https://www.postgresql.org/docs/12/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED
Аноним 15/10/21 Птн 02:03:50 #460 №2184040 
>>2184035
Ну я хочу чтоб у меня создавалась таблица при регистрации пользователя, для того, чтоб туда сохранять туда его контакты и переписку, типа бекенд для чата хочу сделать, ее же надо сохранить под каким-то именем.
Аноним 15/10/21 Птн 02:04:16 #461 №2184041 
Снимок.PNG
Сап, вкатываюсь в вашу дрочильню. Как лучше всего оформлять таблицы вроде пикрилейтед, чтобы я потом мог имея значение например 800 найти в табличке нужную строку?
Аноним 15/10/21 Птн 02:05:02 #462 №2184042 
>>2184041
dict
Аноним 15/10/21 Птн 02:07:33 #463 №2184045 
>>2184042
Можешь привести пример из той пикчи на пару строк и столбцов?
Аноним 15/10/21 Птн 02:14:15 #464 №2184048 
>>2184045
temperature_dict = {
____100: {
________'O2': 24.1448,
________'N2': 20.705
____},
}
Аноним 15/10/21 Птн 02:18:18 #465 №2184049 
Снимок.PNG
>>2184048
Спасибо, няша, все заработало. А то я сначала подумал что эти словари работают как пары ключ-значение, а оказывается можно вкладывать. Лучший тред в этом разделе.
Аноним 15/10/21 Птн 02:22:56 #466 №2184051 
>>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 #467 №2184421 
>>2184041
Использовать pandas
Аноним 15/10/21 Птн 16:07:17 #468 №2184461 
>>2183957
>>2183830
Вот вариант этой идеи с токенами
https://ideone.com/g6YGpn
сама функция на строках 15-39, там ещё функция для тест-кейсов каких-то, поэтому много кода

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

Аноним 15/10/21 Птн 16:38:17 #469 №2184497 
>>2184421
+
Аноним 15/10/21 Птн 16:48:44 #470 №2184515 
Ебаный рот вашего тридесятого питона вы зачем всё поломали
Беды как у этого пчелика
https://stackoverflow.com/questions/69527805/python-cannot-install-cryptography-command-errored-out-with-exit-status-1/
А я всего лишь хотел похешировать пароль
Аноним 15/10/21 Птн 16:53:24 #471 №2184525 
>>2184515
чел дохуя библиотек еще не перешли на 10 пятон, это нормально. через пару месяцев все будет.
Аноним 15/10/21 Птн 17:02:42 #472 №2184534 
>>2184515
Ты самый модный у нас шо ле? Юзай 3.6 и не выпендривайся
Аноним 15/10/21 Птн 17:07:38 #473 №2184539 
Есть список в котором хранятся кортежи по 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 #474 №2184543 
image.png
>>2184525
>>2184534
у меня дистрибутив с rolling release и думал че там минорное обновление, а тут что-то и venv начало похрюкивать и потом
всё откатывать что ли? пиздос
думал не спешить с докер контейнером и потом сделать, а тут такое
Аноним 15/10/21 Птн 17:11:45 #475 №2184545 
ну че петухонисты, сколько платят нк$/сек?
Аноним 15/10/21 Птн 17:24:52 #476 №2184557 
>>2184539
Ну как-то так https://ideone.com/IpN0pP
Но есть поизящнее решение, думаю.
Аноним 15/10/21 Птн 18:08:47 #477 №2184605 
>>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 #478 №2184622 
>>2184605
Соснешь с одинаковыми суммами.
Аноним 15/10/21 Птн 18:38:41 #479 №2184645 
>>2184622
Ну тогда поксорить вместо суммы.
Аноним 15/10/21 Птн 18:44:18 #480 №2184649 
>>2184645
Ничего не поменяется.
Аноним 15/10/21 Птн 18:48:50 #481 №2184655 
>>2184649
print(0 ^ -1 ^ 4)
// -5
print(-1 ^ 0 ^ 4)
// -5
print(1 ^ 0 ^ 2)
// 3
Аноним 15/10/21 Птн 18:52:07 #482 №2184661 
>>2184655
>>2184649
ладно забей, я даун
Аноним 15/10/21 Птн 23:08:23 #483 №2184863 
проигрываю с того, что мне как пайтон кодеру надо устанавливать gcc g++ make
Аноним 15/10/21 Птн 23:23:21 #484 №2184870 
>>2184863
Когда джаваскрипт проект тянет гигабайты зависимостей, то это гораздо смешнее.
Аноним 15/10/21 Птн 23:40:31 #485 №2184885 
image.png
>>2184539
>>2184605
>>2184557
Аноним 15/10/21 Птн 23:46:58 #486 №2184890 
>>2184885
Норкоман штоле?
Аноним 16/10/21 Суб 00:27:28 #487 №2184962 
Как правильно сделать структуру приложения, чтобы была точка входа и нормально всё импортировалось? Как вы делаете?
Аноним 16/10/21 Суб 00:41:50 #488 №2184984 
>>2184539
{tuple(sorted(item)) for item in input}
Аноним 16/10/21 Суб 00:47:57 #489 №2184988 
>>2184984
Похерятся оригинальные тупли.
Аноним 16/10/21 Суб 01:54:44 #490 №2185023 
>>2184988
они по заданию одинаковые не зависимо от порядка элементов. те они, даже отсортированные, всё еще оригинальные.
Аноним 16/10/21 Суб 05:09:28 #491 №2185048 
https://docs.python.org/2.7/library/sys.html#sys.setrecursionlimit
> A user may need to set the limit higher when she has a program that requires deep recursion and a platform that supports a higher limit.

https://docs.python.org/3.5/library/sys.html#sys.setrecursionlimit
> A user may need to set the limit higher when they have a program that requires deep recursion and a platform that supports a higher limit.

Обзмеился.
Аноним 16/10/21 Суб 07:55:41 #492 №2185062 
4353423423.PNG
>>2184539
пять минут в паинте
Аноним 16/10/21 Суб 08:15:36 #493 №2185065 
>>2185062
Ебать хайвмайнд
Аноним 16/10/21 Суб 09:05:57 #494 №2185082 
>>2185062
Что за редактор?
Аноним 16/10/21 Суб 09:26:17 #495 №2185085 
>>2185082
блокнот
Аноним 16/10/21 Суб 09:39:10 #496 №2185087 
>>2185085
ну в pycharm такое говно работать не будет
Аноним 16/10/21 Суб 09:52:25 #497 №2185088 
>>2185087
поридж, ты обезумел?
Аноним 16/10/21 Суб 09:53:09 #498 №2185089 
>>2185088
чома?
Аноним 16/10/21 Суб 10:07:25 #499 №2185091 
>>2185089
pycharm это всего лишь IDE, как и блокнот
Будет работать на любом интерпритаторе
чому вас вообще учат, на этих ваших курсах
Аноним 16/10/21 Суб 12:26:01 #500 №2185168 
>>2182436
В постгресе есть индексы для полнотекстового поиска
http://komar.in/ru/mongodb-%D0%BD%D0%B5-%D0%BD%D1%83%D0%B6%D0%BD%D0%B0
Аноним 16/10/21 Суб 12:36:58 #501 №2185175 
>>2185082
Жупитер ноутбук
Аноним 16/10/21 Суб 12:53:04 #502 №2185191 
>>2185062
*{tuple(sorted(item)):item for item in input}.values()
Аноним 16/10/21 Суб 23:14:20 #503 №2185542 
>>2169012
Напиши свой сериализатор и обмажь его методфилдами

мимо
Аноним 17/10/21 Вск 00:18:27 #504 №2185612 
ПЕРЕКАТ
>>2185611 (OP)
>>2185611 (OP)
>>2185611 (OP)
>>2185611 (OP)
>>2185611 (OP)
Аноним 17/10/21 Вск 02:59:49 #505 №2185692 
>>2169012
return mapToResponse(service.getObject(id))
Аноним 18/10/21 Пнд 00:53:15 #506 №2186410 
image.png
Есть класс и в нем метод addmit (там еще куча всего, я все неважное обрезал). Так почему компилятор говорит:
AttributeError: type object 'meetlist' has no attribute 'meets'?
Аноним 18/10/21 Пнд 01:23:43 #507 №2186422 
image.png
>>2185611 (OP)

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

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

А вообще пока продолжай изучать, чуть подтянешь язык - цепи Маркова помогут с генерацией текста.
Аноним 20/12/21 Пнд 20:13:16 #512 №2243227 
>>2165167 (OP)
Сортировать массовчики это конечно хорошо, но вот думаю, ведь многие знают канал Ильи Климова, а есть ли такой же образный Климов но в мире питона ? Можно даже на английском, но лучше на русском офк
Аноним 20/12/21 Пнд 20:14:08 #513 №2243228 
>>2165549
На 3 лучше, мне кажется, Джанго это монолит, сделав чутка асинхронности тут, чутка там, в общем результат вряд ли сильно лучше, поскольку дофига остального включая библиотеки на синхронных решениях
comments powered by Disqus