Этого треда уже нет.
Это копия, сохраненная 16 марта 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
15977792511830.png54 Кб, 474x474
Питон тред №98 /python/ 1787217 В конец треда | Веб
Тред, посвящённый языку программирования Питон, #98

Предыдущий: >>1780956 (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
Screenshot204.jpg87 Кб, 1405x437
2 1787252
>>787217 (OP)
пидорское видео на английском с бесполезным историческим погружением когда замените на нормальное руководство по асинкам?
image.png9 Кб, 731x122
3 1787259
>>787217 (OP)
Я хер знает куда вопрос задать, бываю тут раз в год, поэтому наверное спрошу тут.
Кто нибудь вообще ебался с РеКапчей? Я пишу бота на Питоне для одной веб-игрухи, и столкнулся с тем, что меня обоссала обычная Рекапча.

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

При решении этой странной проблемы, я столкнулся с тем, что апи рекапчи странное, по крайней мере для меня.
Смог экспериментальным путём в chrome dev tools выяснить, что нужные мне URL это
https://www.google.com/recaptcha/api2/anchor
https://www.google.com/recaptcha/api2/reload
https://www.google.com/recaptcha/api2/userverify

Если с /anchor ещё понятно, там находится ключ нужный для /reload, то с /reload и /userverify не понятно, что именно туда нужно слать
Как я понял, в /reload передаются какие то данные о странице, что бы таким образом вычислять ботов. Что именно туда идёт? Можно ли это реализовать самому?

Так же не совсем понятно, что ещё должно идти в /userverify, так как именно он возвращается g-recaptcha-response, нужный что бы послать капчу нахуй.
На пикрил мой результат исследования аргументов этого апи, что такое response и остальные аргументы помеченные '?' я так и не понял.

Буду дичайше благодарен, если скините какие нибудь статьи с разбором этой злоебучей капчи, и может ещё какого полезного материала, что бы реализовать свой рекапча v2 клиент на питоне.
4 1787275
>>787259
Лучше не лезь туда без опыта, соснешь.
Сама рекапча это виртуальная машина, там какая-то хуйня крутится. Точно проверяются мышковые ивенты и история айпи - если он слишком запален или много раз подряд решает - то будет усложняться и насыпать ещё, много перепроверок для одного решения и т.д.
Короче, наебешься знатно, а хорошего решения не получишь. Хорошее решение рекапчи - обезьянки-решатели.
5 1787347
Сап програмач.Ньюфаг пайтон девелоперу нужна помощь, которой он несказано будет рад и благодарен.Суть вопроса такова:
Нужно написать функцию которая будет переносить строку если та превышает лимит в 40 символов.Левая часть должна быть с разбиением. Тогда, когда это возможно, каждая следующая строка должна начинаться с начала очередного слова. То есть первоначально мы получаем длину первого слова. Если эта длина свыше лимита, значит, обрезаем всередине, следующую строку начинаем с второй части слова. Если эта длина до лимита, значит, ищем тот символ, который последний до лимита, находим начало слова, частью которого является этот символ, и обрезаем от первого символа слова. Дальше повторяем это до тех пор, пока не получим самую последнюю строчку.Собственно в данный момент у меня есть вот такая часть кода, но не понимаю как ее дописать чтоб она выполняла вышеописанное задание.
def format_item(left, right):
content = []
while left:
current = left[:left_limit]
left = left[left_limit:]
if left[0] == " ":
content.append(current)
continue
words = left.split(" ")
if len(words) == 1:
content.append(current)
continue
before_last_space = " ".join(words[:-1])
content.append(before_last_space)
left = left[before_last_space:]
6 1787368
вкотился
7 1787380
>>787275

>Лучше не лезь туда без опыта, соснешь.


Но опыт же где то набирать надо.

>Короче, наебешься знатно, а хорошего решения не получишь. Хорошее решение рекапчи - обезьянки-решатели.


Мне надо не решать её, а просто сделать РеКапча Виджет на Питоне, что бы решать её из своего приложения, а не из браузера.
Видимо придётся по красноглазить недельку другую, раз уж мне единственному такая идея в голову сбрела..
8 1787454
>>787347
Это ты опять со своими чеками? Тебе же в прошлом треде все сделали, не?
9 1787468
>>787454
Там не все помогли.Да и задание тут уже не с чеком.Входящими данными может быть любой текст, который должен переносится по лимиту символов.
10 1787485
>>787468

>Там не все помогли


Вот же сволочи ленивые. Сейчас мы все исправим, братиш. Вот глянь сюда https://ideone.com/tSQeUv
Это заготовочка по переносу строк. Но надо чтобы ты точнее сформулировал правила переноса и что является серединой слова, потому что из тобою написанного ни черта не понятно что где обрезаем.
11 1787509
>>1787127 →
Анкету заполняешь высылают доступ к системе тестов https://school.hh.ru/
12 1787545
>>787380

> раз уж мне единственному такая идея в голову сбрела..


Видел такую хуйню в какой-то качалке с файлопомоек, так они сделали экстеншен для браузера под рекапчу. Наверное, как раз чтобы не ебаться с жабаскриптом.
13 1787575
>>787485
Ну смотри, по логике моего препода у нас есть какая-то строка.Эта функция считает количество символов, и если оно не превышает лимита то записываем полностью всю строку.Если заканчивается пробелом, то записываем до последнего пробела, а переносим уже все что после последнего пробела.В общем обрезаем по пробелу, и такого пункта как "середина слова" нет.
14 1787591
Хочу чтобы моя функция принимала только конкретные агрументы, а если аргументы не те = выдавала ошибку. Куда гуглить?
15 1787611
>>787591
Просто проверяешь if и кидаешь ошибку, если не те данные на входе https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python
16 1787615
>>787575
Ты ленивый и тупой чёрт, за которого уже всё сделали и надо только марафет чуть-чуть навести.

Анон, какого хуя ты ему помогаешь? Пусть сам разбирается.
17 1787633
>>1786862 →

>hyper


выяснил что это тотальное говно.
мне просто нужно было воспроизвести ситуацию и она более-менее воспроизвелась в curl.

Оказывается, несмотря на отсутствие ограничений на размер URL в HTTP, на практике их дохуя в разных программах и в hyper тоже.
18 1787635
>>787575
Как-то так: https://ideone.com/GKrsr7
>>787591
Всё что смог придумать:
def f(a=None, b=None, kwargs):
assert len(kwargs) == 0, 'Чот хуйню подсунули'
19 1787661
>>787633
aiohttp смотри, Client который.
20 1787672
>>787591
def my_func(a = None, b = None):
if isinstance(a, int) and isinstance(b, str):
return ab

другого варианта проверки типа нет, это Питон. Т.е. для аннотации еще можно сделать так

def my_func(a:int = None, b:str= None) -> str:
return a
b

Но это чисто аннотация, подсказка. Если нужна реальная проверка типа в проде, а не при unittest
assert isinstance(a*b, str) == True (мог тут объебаться)
21 1787675
>>787672
Мне не тип надо. Есть функция. Если её вызвать без аргумента или с аргументом "withBackUp", то она должна выполниться, делая бекап файла перед выполнением. Если же аргумент "withoutBackUp" - бекап не делать. Хочу сделать чтобы на любые другие аргументы была ошибка.
22 1787678
>>787611
Блин, я так и делал, но у меня ВЫДАВАЛО ОШИБКУ)))))))). На самом деле он выдавал не ту ошибку. Теперь всё работает. Спасибо.
23 1787681
>>787675
А если параметр hui, то чтобы вычислял длинну хуя.
Делаешь один дефолтный параметр backup=False, можно его кейвордом передать, всё.
24 1787684
>>787635
Спасибо большое доброанон.Добра тебе.
25 1787688
>>787675

def my_func(backup = False):
if not backup:
print('passing')
elif backup:
if isinstance(backup, bool):
print('proceed to backup')
else:
print('Umadbruh?')

my_func('gvido')
my_func(True)

Я бы оставил проверку, банально для защиты функции.
изображение.png2 Кб, 422x285
26 1787725
Аноны, как я могу двигать объекты в html с flask беком? Речь идет о следующем:
27 1787739
>>787725
объясни подробнее, задача непонятна
28 1787746
>>787688

>else:


>print('Umadbruh?')


Няш, ну я не такой даун, чтобы про else/if спрашивать. Мне нужно чтобы интерпретатор слал нахуй, а не printом ругаться.
29 1787747
>>787739
Существует 2 области на сайте, пользователь перетаскивает объект с одной области в другую. Что-то вроде kaiten'a.
30 1787764
>>787746
Все же ты даун.

raise Exception('I am really stupid')
31 1787766
>>787764
Ну что же ты обиделся то?
32 1787777
>>787747
ну делаешь модель область
делаешь модель объект
делаешь ManyToMany
ELDOdnHWoAADubA.jpg36 Кб, 569x528
33 1787836
Какие подводные если сразу начать учить django скипая любой учебник по python ?
34 1787839
>>787836
Никаких. Быстрее осилишь джангу - быстрее возьмут сразу синьором-помидором и будешь на галере руководить.

>>787766
потому что можно загуглить как кидать ошибки интерпретатору?
35 1787842
>>787777
Вот только достаточно было бы взять библиотеку JS чтобы не городить костыли.
36 1787901
>>787842
Пишу чисто ради гита
37 1787907
>>787901
а он что?
38 1787910
>>787907
Он потом пихается в резюме на джуна
39 1787913
>>787910
ну так учи сам (говно)гит раз уж очень надо
писать что то ради гита - не понимаю
40 1787917
>>787913
для гитхаба
41 1787922
>>787917
дякую боже шо я юзаю гитхаб без гита
42 1787932
>>787901
Ну ок, правда читал в антипаттернах проблему Uber, когда была дырка в HTML шаблонах, и можно было инъекцию сделать в бэке в базу.
Приложение Vue можно на NodeJS запускать вообще отдельно.
43 1787939
>>787932

>Приложение Vue можно на NodeJS запускать вообще отдельно.


Ну это дополнительные проблемы добавляются, а писать хуйню тоже не хочется. Тогда такую страницу не стоит клепать для резюме?
44 1787942
>>787939
Для резюме делай конечно. Чем больше покажешь тем лучше.

Какие проблемы? Команда фронтэнда занимается своим куском, ты своим.
45 1787946
>>787942

>Какие проблемы?


Я бы спокойно бэк прописал. Представил бы все задачи как элементы в списке либо словаре, и прописал бы отдельно функции... Но все это дрочиво с фронтом. Стоит ли это все вылизывать?
46 1787949
>>787946
Фронт на клиенте все отрабатывает, а тут у тебя только бэк занят.
Ну и фуллстак пихон + JS курсы все с vue/react/angular. Шаблонизаторы это не про оптимизацию.
47 1787952
>>787836
Никаких. Что с книжкой, что без на работу тебя не возьмут один хуй.
48 1787953
>>787836
С таким подходом ты выучишь очень поверхностно, будешь как шаман делать обряды, не зная как оно на самом деле работает.
Любой вопрос на собесе в сторону - и тоби пизда.
49 1787954
>>787949
Попробую
50 1787965
>>787954
Я начал с бэков, теперь хочется в ML двигаться. Там и вилка лучше, намного лучше. Да и удаленок больше.
Курсов и книг сейчас дофига.
51 1787967
>>787965
Понимаю что джун пайтон удаленка сейчас оочень трудно найти, но думаю не смогу быстро пересесть на ML и вкатиться.
image.png38 Кб, 892x278
52 1788023
https://www.ictshore.com/python/python-ping-tutorial/

Аноны, поясните тупому, недавно вкатился, хочу написать одну хуйню с помощью Python Ping. Но то ли у меня с английским хуже чем я думал, то ли в основах питона я еще не совсем разобрался. Вот часть из этой ссылки под заголовком "Working with the return values". Там сказано, что ping возвращает некий респонс лист. А как его достать, чтобы дальше в рамках проги с ним работать? Переменной просто нельзя присвоить этот респонс лист. В консоли-то оно работает, но мне нужно достать собсна сами цифры пинга и потом с ними всякую хуйню творить, считать среднее за много запросов, строить графики и т.д.
В гугле все в основном просто проверяют отвечает ли сервер на пинг, т.е. им тру/фолс достаточно, либо делают как-то сложно через сабпроцессы и т.д.
53 1788027
чем отличается питоновский декоратор от паттерна декоратор, я где-то читал што есть различие, в двух словах в чем различие?
54 1788030
>>788023
Лол, забавно бывает, стоит спросить где-то и потом к тебе приходит решение, над которым ты 4 часа бился и тупил, я такой слепой.
55 1788040
Сап питонач. Подскажите, есть какое-то простой способ заставить триггериться твою прогу каждую секунду на протяжении n секунд от запуска? https://stackoverflow.com/questions/3393612/run-certain-code-every-n-seconds Видел всякие такие запросы, но тут уже всякие многопоточные вещи используются из трединга, которые для двухнедельного вкатыша выглядят страшно, может есть что-то простенькое?
56 1788046
>>788027
академический паттерн декоратор оборачивает и вклинивается в доступ к оборачиваемому элементу
а питоновский декоратор делает все на свете, а не только враппер над функцией
57 1788048
аноны, если я в коде сначала дам дохуя данных, а потом просто сотру их следующим образом: a='', прога не будет жрать память?
58 1788052
>>788040
cron или while True:. В переменной складываешь последнее время сработает через timestamp, чекаешь время и выполняешь задачи, обновляешь переменную.
59 1788054
>>788048
Garbage Collector все за тебя делает. Что хранить? Зачем? Откуда утечка?
60 1788069
>>788030
Какая была проблема и какое решение? Никто не будет читать твои простыни же, бро.

>пример


Проблема: Нужно запилить пинг для пары серваков и оформить в ХМЛ репорт
61 1788073
>>788052
Спасибо, уже сделал через time.sleep
Ваши варианты оптимизациисокращения кода при сохранении текущего вывода данных. 62 1788086
contact_names = []
while True:
print ('Enter the name of contact ' + str (len (contact_names) + 1) + ' or nothing for result.')
name = input ()
if name != '':
contact_names = contact_names + [name]
continue
if contact_names == []:
print ('No names!')
continue
else:
break
print ('Contact names is: ', end = '')
for i in range (len (contact_names)):
if len (contact_names) == 1:
print (contact_names [0] + '.')
break
print (contact_names , end = ', ')
if i == len (contact_names) - 2:
print (contact_names [-1] + '.')
break
63 1788087
>>787217 (OP)
Прошу подсказать решение: есть скрипт архивирования файлов, он считывает необходимый путь, ищет необходимые файлы, а как приходит момент АРХИВИРОВАНИЯ, то все.
Архивирование выполняю через os.system 7z.exe, содержание не работающей части следующее:

os.chdir(f'{path_set}')
for i in все_мои_нужные_файлы
os.system(f'{command}')

В command записаны все необходимые атрибуты (7z a -t7z -ssw -mx5 -r0 'zip_name' 'file_name').
Писал скрипт для использования на работе, дома все прекрасно работает, как пришел на место - вылезают ошибки
error: 7zip cannot open file ... Отказано в доступе.
Попробовал запустить паковку каждого файла вручную через командную строку, оно работает только в случае запуска cmd от имени администратора.
Могу ли я какой-то os командой присвоить всем моим os.system запуск от имени администратора? И очень не хотелось бы каждый раз тыкать YES на каждый ее запуск, так как нужно заархивить более 2000 циклов
64 1788088
>>788086
бля блоки проебались
65 1788097
>>788088
List append() как минимум.
If len(contact_names) == 0:
print...

for name in contact_names

Почитай доки пожалуйста. Говнокод у тебя. Чтобы было наглядно раздели на функции. А так макарон на одна большая. Сам же запутаешься.
66 1788100
>>788087
Ищи пакет elevate
67 1788119
>>788087
Да, на месте пользования не стоит python, поэтому запускаю через сгенереный дома exe файл, возможности просто запустить cmd от админа и ввести python my_file.py нет
68 1788123
>>788086
Индус, ты?
69 1788141
Аноны что у вас было на гитхабе, когда устроились на работу и сильно ли это повлияло
70 1788149
>>788119
Так собери манифест или запусти exe от админа. Elevate в случае шиндоуса 50/50
71 1788150
>>788086
ой пиздец пиздец, ты каких то методов понабрался и воротишь просто ёбаныйрот... Наверни ещё курсов.
72 1788157
>>788097
>>788123
>>788150
Кек. Да я 5 день учу питон. До этого вообще не знал, что такое программирование. Просто почувствовал, что задачка должна решаться проще.
73 1788165
>>788157
Зачем сюда что-то постить, если ты учишь питон 5 дней?! Очевидно, что всем похуй.
74 1788172
>>788165
Это же элементарно. На борде любой может выложить говна на всеобщее обозрение и каждый мимокрок его занюхнёт. Ты просто оказался этим мимокроком.
75 1788229
>>788141
Ничего. Никак.
Был опыт с прошлых мест работы, все. На вопрос "пилили пет-проекты?" ответил, что нет, я вне работы этой хуйней не занимаюсь.
76 1788234
Блядский имгур не хочет принимать мою мобилку при регистрации. Какой хостинг посоветуете, чтобы было максимальное простое api для вкатыша? мне чисто несколько картинок в проге загрузить.
77 1788366
>>788119
Напиши на powershell и не страдай
78 1788398
если мне нужно на другой пеке запустить скрипт, где хуй знает какой питон и вообще есть ли он, и я не собираюсь делать промышленное решение, норм тема копировать туда venv и запустить батником с указанным путем до .exe?
а то почитал про всякие паковщики для винды - там ебаная муть, мне пока лень разбираться
79 1788408
>>788234
Google Photo
80 1788411
>>788398

>лень


Ну и иди нахуй тогда? На SO разжеваны все варианты.
82 1788451
>>788442
Чем запуск скрипта с рядом лежащим окружением на повершелле отличается от батника?
83 1788455
>>788451
Powershell не для запуска скрипта из окружения. Просто берешь и без задней мысли переписываешь скрипт на powershell. И ни питон, ни окружение не нужны.
84 1788459
>>788455

>Напиши на powershell


>не страдай


Как это сделать? Умереть в процессе?
85 1788544
>>788046
https://refactoring.guru/ru/design-patterns/decorator/python/example#example-0--main-py
ну вот пример академического паттерна, отличие в том что питоновский декоратор может менять поведение объехта, так как всё объекты, а академический паттерн общий шаблон?
86 1788579
>>788544

ПАТТЕРН декоратор - он про оборачивание

декоратор питона не про оборачивание. Он волен делать все что угодно. И делает

немного примеров.
1 декоратор @dataclass ничего не оборачивает, а дописывает класс
2 декораторы роутеров во всяких вебфреймворках типа @router.get региструют функцию в системе роутов
3 декоратор @abstractmethod просто вешает флаг на объект метода и всё

так что питоновский декоратор не имеет ничего общего с паттерном "декоратор". Ну разве что он может создать обертку (как частный случай)
87 1788580
>>788451
анальными ограничениями с политикой запуска.
88 1788591
>>788544
В общем в декоратор передается декорируемый объект и что вернет декоратор - то и попадет в пространство имен. А декоратор внутри себя может сделать что хочет и вернуть что хочет. В декоратор может уйти функция, а вернется int и будет у тебя int переменная в итоге.
Бесполезно, но главное суть
89 1788659
>>788579
>>788591
Всё, разобралс, не хватало примеров, спасибо
90 1788686
Двач, помоги, есть у меня в папке файл с .мп4 расширением и я его хочу переименоать с
return os.rename('.mp4', url[-10:]+'.mp4')
Как мне прописать нормальное регулярное выражение в '
.mp4' и не качать лишние модули. Так и не понял просто как регулярки в самом питоне работают
91 1788698
>>788686
В питоне регулярки не часть языка, они сидят в искаробочной либе re.
92 1788707
>>788686
Тебе надо ренейм вызвать для всех файлов, заканчивающихся на mp4?
Ренейм же вроде один файл/директорию переименовывает, нет? Мне лень смотреть.
В цикле наиграй список файлов, проверь что заканчивается на mp4 через какой-нибудь endswith или регуляркой типа .*\.mp4$, потом ренейм.
Либо я не понял что-то.
93 1788713
>>788707
Я хочу удалять файл после переименования, просто я скачиваю его и мне нужно знать точное название из его url, поэтому я хочу просто использовать регулярнку на 1 файл, кто-нибудь может мне подсказать что мне нужно запихнуть в '.mp4', я не понимаю, ибо r'.mp4$' не работает
94 1788716
>>788713
str = re.sub(r'regex', 'replace', str)
95 1788741
Если кому-то понадобится, то по итогу самым удобным оказалось таккое использовать:
return os.rename(glob.glob("*.mp4")[0], url[-10:]+'.mp4')
96 1788744

> glob.glob("*.mp4")[0]


ебать норкоман
97 1788754
>>788744
a = []
b = [[], []]

bool(a) # False
bool(b) # True
Почему bool(b) True?
98 1788756
>>788754
Потому что пустой список кастуется в фолс, а б уже не пустой список.
99 1788760
>>788756
а, точно, вот я слоупок
100 1788765
Можно ли писать return await handler(request) ?
IMG20200826163508.jpg305 Кб, 1080x829
101 1788835
Кто это, блять?
Почему мне его постоянно показывает Яндекс?
102 1788898
>>788765
почему нет?
103 1788901
в реализациях Jython (java) и IronPython (С#) нет GIL потому что они созданы поверх других VM? и они уже берут потоки из их реализаций, тогда как там устроены потоки и почему GIL там нет?
104 1788903
>>788901
имею ввиду что java/net не имеет подобного механизма
105 1788904
>>788901

>в реализациях Jython (java) и IronPython (С#) нет GIL потому что они созданы поверх других VM?


Да, но это заброшенное говно мамонта, которое контрибьютит 2.5 компании
106 1788908
>>788904
согласен, меня больше интересует краткая информация как допустим реализована многопоточность без GIL, хотя я только ща сформулировал свой вопрос который меня интересовал, пойду гуглить, хотя если кто-то бросит инфу типо таблицу сравнения мб, буду благодарен
107 1788916
>>788908

У жявы встроенный в рантайм жид машины механизм monitor есть.
108 1788918
>>788908

У жавы и шарпа в каждый объект встроен невидимый мутекс.
109 1788928
>>788916
>>788918
В javasсripte же GIL-подобный механизм?
110 1788932
>>788172
Ты ещё и токс.. Пиздуй на курсы
111 1788942
>>788908

>многопоточность без GIL


Для начала там GC работает по иному принципу, а не по инкременту/декременту счетчика ссылок
В ЖС тоже многопоточности как таковой нет, но асинхронка там тащит
112 1788945
>>788942
есть ссылочки почитать?
113 1788946
>>788765
Можно, экономишь байты. Потом правда можешь запутаться
114 1788952
Аноны, что следует подучить для стека на джуна, в данный момент Django/Aiohttp, Celery, Docker, SQL (MySQL), Redis, RabbitMQ
115 1788954
>>788952
+фронт (верстка и ванильный жс хотя бы)
+Postgres
116 1788955
>>788908
нашёл себе норм материал покрывающий большую часть моих вопросов о gil, linux, потоках, сравнениях, на скорости х2 зоебис идет
https://www.youtube.com/watch?v=AWX4JnAnjBE
117 1788956
>>788954
что нужно знать о postgres джуну? типо пояснить за индексы? типы данных?
мимокрокодил
119 1788958
>>788956
Базовые макакские операции:
работа с консолью - создание/менеджмент юзеров, обычные sql-query
работа с pgadmin
понимание индексов, constraints и возможно views
120 1788959
121 1788962
>>788958
Все есть в оф документации (кроме pgadmin возможно), даже pdf скачать можно
122 1788967
>>788954
Ну немного с ванильным ЖСом знаком + на Vue с каким-нибудь Vuetify в принципе смогу сверстать сайт, просто не подумал что стоит указать к питон-скилам.

>+Postgres


Основное же в принципе как в MySQL кроме наворотов постгреса, но спасибо, подучу тогда еще
123 1788970
>>788967

> стоит указать к питон-скилам.


asyncio. модно молодежно
124 1788972
>>788970

>asyncio


Не о чем. Это фреймворк-каркас. Асинхронка строится поверх него. Лучше указывать aiohttp, tornado или fastapi
изображение.png4 Кб, 380x67
125 1788974
>>788959
звучит громко также как и web 2.0 скатилса
но переделывать никто конечно же не будет
126 1788977
>>788972
ну да. я про то что нужно указать чистое асинкиошное типа "подвержен современным веяниям", а не "люблю динозавров"
потому не торнадо, но фастапи
127 1789028
>>788959
Там же с 15 сентября. И явно будет топить за родной GoLang и Java.
128 1789029
>>788977
Ну так можно ещё и сказать, что 3.5 говно, пойду только если 3.7+, лол.
129 1789031
>>789028
там отборочные завтра заканчиваются
130 1789076
Аноны, кто работает питон разработчиком и не фрилансит, а именно полноценно, расскажи, есть у вас техническая вышка или нет? Интересно, какой примерно % таких, насколько это требуется (можно конечно спросить в работа треде, но пограмист программисту рознь, раз уж я начал питон учить, хочется и ответ получить именно от питонистов)
лох 131 1789090
Пацанессы, где обрабатываете ошибки бизнес логики из интеракторов? Во вьюхах ловите или в глобальном хенделере транслируете в API исключения?
132 1789120
>>789076

> есть у вас техническая вышка


Ну, я начал работать когда остался в компании после практики на третьем курсе. Так что тут ответить даже не знаю как, нужна не нужна вышка. По тому что я смотрел и знаю, питон самый доступный (ну, может второй после JS) для вката без вышки. Правда большинство компаний все равно страхуются, непонятно зачем, и берут только людей с вышкой. Поэтому все равно стоит внимательно следить за вакансиями, ну и потому что язык хайпует, то часто это выливается в какие-то крутые ХАКА-МАРА-ФОНО-ТОНЫ с отбором в виде череды тестовых заданий где "20 лучшим предложат работу в такой-то компании".
133 1789131
>>789076
Я магистр по радиотехнике из питерского Политеха. И что? По специальности я мог лишь перекатываться в байтоебство на МК и ПЛИСинах (причем учил я по большей степени это все сам, таких пар у нас не было)
Из курса универа конкретно мне помогли лишь пары товарища Синепола про сети, все остальное я учил сам
134 1789133
>>789131
а я магистр йоба
135 1789152
>>789029
а че сразу лол. то что всегда на острие современного тоже ценят кое где
136 1789174
>>789152
Ага и смотрю удаленку бэкэнда питона: flask/django. Хочешь эджи стайл - ML. Короче это как RoR, поезд ушел. Java/Go на какое-то время займет умы погонщиков. Пока не будет нормального ORM с асинхронкой остаётся только DRF и CRUD пилить.
Облизнулся на GraphQL, но какая-то непонятная херня, опять же привязка только к SQLAlchemy, а там асинхронкой и не пахнет.
Остаётся только надеяться и двигаться в сторону ML.
137 1789192
дык сосредоточься на концепциях. пиши на многих языках чтобы впитать парадигмы.
сменить язык будет легко
138 1789199
>>789174

>SQLAlchemy, а там асинхронкой и не пахнет


Ниче что в алхимии можно спокойно поставить движок вроде aiopg и будет тебе асинхронка? Ты peewee для этого не обязан накатывать
139 1789200
Парни, может кто примерно прочитать что в этом sqlalchemy запросе происходит?

sa.select([sa.func.array_agg(work_table.c.threadid)]).select_from \
(work_table.join(session_table,
sa.and_(session_table.c.visitsessionid == work_table.c.visitsessionid,
sa.or_(session_table.c.ip == self.address,
work_table.c.visitorid == self.visitor_id))))

Вроде вижу, что происходит selec-запрос который вытаскивает данные из таблицы получавшейся в следствие join-a 2х таблиц: work_table и session_table, но че это за ебень с условиями and_ и or_ внутри join-a? И че за функция (array_agg) внутри select?
140 1789203
>>789199
Не в обиду мейнтейнерам, но это только 1 коннектор. Если есть легаси на MySQL или просто решили использовать MariaDB/Percona, то уже все сложнее.
141 1789205
>>789200
PG видимо https://postgrespro.ru/docs/postgresql/9.6/functions-aggregate. Модели есть? Тогда понятнее будут связи.
142 1789208
Суп. Я не разработчик, но появился варик послать меня нахуй на обучение питону за корпоративные бабки, но как я понимаю, всюду сейчас ебаные инфоцыгане. Подскажите, мб все-таки есть какой-то толковый онлайн-курс по питону? Мне вкатываться не надо, но освоить азы, чтобы они были структурированны - вполне помогло бы, т.к. на работе имею дело с ботом на ямле и питоне.
143 1789210
>>789208
На edx бесплатные курсы же есть, знание ангельского обязательно.
Тебе все равно никто про все возможные подводные камни не расскажет. Такого в принципе не может быть, сам шишки набиваешь или смотришь кто уже набил их на SO.
А при чем тут yaml? Это markup language как xml/toml. Отвратительный, но его рэдхат толкает.
image.png221 Кб, 508x330
144 1789214
>>789210

>На edx бесплатные курсы же есть, знание ангельского обязательно.


Я пробовал кучу курсов уже, хуй знает, не идет без тутора. Я наверное тупой просто.

>А при чем тут yaml?


А вот тут не ебу, такой стек.
145 1789221
>>789205
Да не суть какие модели даже на самом деле, не въезжаю зачем там and_ и or_ внутри join для начала
146 1789223
>>789208
все какие то особые спец курсы ищут
я вот начинал с https://pythonworld.ru/samouchitel-python
ну и про модули разные читал что есть в коробке
остальное догналось в практике и чтением SO
147 1789260
>>789131
Да я собсна спрашивал не про пользу знаний из вуза, а про корку. А то я приду со своим юрфаковским бакалавриатом на собес, и меня даже спрашивать по технической части не станут, этого опасаюсь. У меня просто маленькая мухосрань, поэтому я не могу как в москве или питере ходить по миллиону собесов так сказать из спортивного интереса, и переезжать в ближайшие пару лет не варик.
148 1789275
Аноны, подскажите плз про модуль os, а именно про os.environ. Мой скажем так наставник посмотрел прогу, которую я по его заданию накропал и сказал, что нужно вместо вбития логина и пароля от скайпа прямо в коде (прога должна некоторые данные слать через скайп) как-то брать логин и пароль через os.environ. Чет гуглю, вроде эта хуйня вообще для другого используется, что я не понимаю?
149 1789277
>>789275
upd Ну я понимаю, что можно создать переменную окружения на моем компе, и использовать ее в коде. Но тогда у других людей на компе она не запустится, и в чем тогда преимущество перед просто вбитием своих данных в код ручками? Или можно просто в отдельном файле создать словарь с логином и паролем, будет почти тот же эффект, что и от осэнвирона.
150 1789314
>>789277
Преимущество в том, что пароли не сливаются при передаче исходников, в т.ч. через гитхаб и подобное.
Это примерно как приватный ключ для ssh, у тебя всё работает и заебись.
151 1789321
>>789314
т.е. преимуществ по сравнению с тем, что я например залью пассы в файлик, который потом на гитхаб не буду заливать и импортирую из него переменную пассворд нет?
152 1789325
>>789321
Ну тут готовый механизм, а там файлик, ебля с gitignore, пояснения, что должен ещё быть файлик с таким-то форматом и т.д.
153 1789328
>>789277
1. Тестовая среда.
2. Недообфускация, чтобы ты в коде случайно не оставил личные данные при заливке на GitHub.

По-хорошему надо в хэш перегонять и в конфигурации по типу toml/yaml/ini писать.
154 1789329
>>789328
И что с этим хешем потом делать, норкоман?
155 1789331
>>789329
http://insecurety.net/password-algorithms-skype-windows/
Хотя он и так в таком виде хранится.
156 1789334
>>789331
А, это про скайп. Разговор был про вообще, вариант с env много где применяется.
157 1789343
Привет, анон. Недавно изучаю программирование, так что не пинайте. Есть такая строчка:
if string == "" or string == "\n" or not string.startswith("#") and len(string.rstrip()) > 33:

Очевидно проверяет наличие пустых строк и строк длиннее 32 символов, которые не начинаются на "#".
Вопрос: Как это написать не так громоздко и более читаемо?
158 1789351
>>789343
re.match(r'[^#\n].{,31}$', string)
159 1789360
>>789351
Мне нужно True/False получить, а не строку.
160 1789363
>>789360
Без матча будет None, так что можно проверять.
161 1789392
>>789351
Близко, но не то. Посмотри внимательнее условия:
Пустая строка даёт True
Строка длиннее 32 символов И не начинающаяся с # даёт True
Строка длиннее 32 символов И начинающаяся с # даёт False
Твоё регулярное выражение в последних двух случаях выдаст True.
162 1789402
Объясните еще ньюфагу, что за ебанина. Я же явно использую модуль os, почему импорт горит серым, как-будто не использую, и когда жму контрол-альт-о, которое должно пофиксить импорты по пеп 8 - он такой серый импорт просто стирает
163 1789403
>>789402
это пучарм, если вдруг что
164 1789405
>>789392
Вообще-то # с длинной никак не связан в оригинальном выражении. Чтобы был связан, там нужны скобки.
165 1789427
>>789405
Ты уверен? Я протестил сейчас и всё как я сказал. Поставил скобки для наглядности.
166 1789446
>>789427
Да, что-то я не сообразил.
Ну тогда так.
re.match(r'#.+|.{1,33}$', string.rstrip())
167 1789453
>>789446
Отлично, спасибо. Эх и ебля с регулярными выражениями.
168 1789478
>>789446
Чето я не понял. Как вот это условие реализовано:

Строка длиннее 32 символов И начинающаяся с # даёт False

У тебя регулярка же говорит:
1. Начинаемся с # и потом больше одного любого символа

ИЛИ

2. от 1 до 33 любых символа до конца строки
169 1789501
>>789478
Хватить меня путать, лол.
Если начинается с #, то ограничения на длинну нет. Так это работает в оригинальной строчке и в этой регулярке.
170 1789517
>>789501
Так у тебя матчит все строки начинающиеся с #, хотя не должно
171 1789519
>>789517
ну так инвертировать надо.
172 1789523
173 1789525
>>789501
>>789478
Там должно быть {1.32}, так как больше 32 нельзя.
>>789517
Так если условие не выполняется, то будет None и if None, то уже у меня там мутится всякое. Всё работает.
174 1789530
>>789334
Я про хранение credentials в целом, бро.
175 1789536
>>789525
Достаточно if not re.match
176 1789539
>>789536
Я думал это только с False прокает. Что ещё считается not? 0, False, None.
177 1789541
>>789539
Все что пусто - то False
178 1789542
>>789539
https://docs.python.org/3/library/stdtypes.html#truth-value-testing
Да и в любом классе можно определить __bool__ и оно будет работать в булевом контексте как надо.
179 1789574
Анончики, пользуюсь модулем logging.
Как мне логировать инфу/дебаг в один файл, а ошибки - во второй?
180 1789589
>>789574
логгинг в питоне какой то базовый "все пишут в 1 файл"
если нужно в больше то нужно мудрить
какие то конфиги, какие то фильтры. брррр.

мне больше нравится подход NLog из шарпов
где объявляешь список таргетов которые могут быть получателями логов
а потом пишешь правила какие логгеры -> таргеты->(левелы)

захотел собрать все варнинги - создал таргет файловый варн.тхт и создаешь правило

<logger name="" minlevel="Warn" writeTo="warnfile" />

А если только одной секции то

<logger name="loggername.
" minlevel="Warn" writeTo="warnfile" />

удобно. а в питоне жуть какая то
лично для себя (для пет проектов) я создал примитивное подобие такого
181 1789596
>>789589
Ну это звучит очень разумно, да
182 1789609
>>789208
хочешь научиться языку решай литкод/хаккерранк
183 1789622
>>789574
>>789589
Ладно. Походу ничего лучше, как открывать каждый раз файл лога ошибок при обработке оных и писать туда все, нет. Хех.
184 1789627
>>789622
Почему бы не писать в один файл, а уже при чтении фильтровать на что смотреть?
185 1789628
186 1789639
187 1789650
>>789639
Даже в этом решении нет полного разделения. Те логи, что уровня WARNING, энивей попадают в дебаг. Дурацкая иерархия.
188 1789652
>>789650

>попадают в инфо


Быстрофикс
189 1789669
>>789650
ну обычно разделяют по minlevel. ведь эти файлы потом еще и читать нужно
190 1789676
А че, все пользуются logging изкоробки? Не могу альтернатив найти
191 1789681
>>789650

> Те логи, что уровня WARNING, энивей попадают в дебаг.


ну так создайте наследника от нужного хендлера и перегрузите метод filter где и решайте подходят ли данные записи для этого хендлера
image.png9 Кб, 567x133
192 1789695
Извиняюсь, что немного не по теме, но основной на Пистоне.
Как вывести id в html?
193 1789698
>>789695
какая разница на чем основной, если представленный кусок требует знания жс. а не питона
194 1789744
s = set()
for i in s:
....print(False)
else:
....print(True)
почему выводит True?
и 2 вопрос: почему некоторые щитают что конструктор в питоне это __init__, а другие __new__?
195 1789757
>>789676
там их кста дахуа, и подсветкой и без, и надстройки над основным логгингом
https://github.com/search?l=Python&q=python+logging&type=Repositories
но я читал шо нужно всё равно уметь пользоваться из стандартной либы, опять же от задачи зависит
196 1789761
>>789744

>почему выводит True?


А что он должен по-твоему выводить, если у тебя пустой сет?

>Loop statements may have an else clause; it is executed when the loop terminates through exhaustion of the iterable (with for) or when the condition becomes false (with while)

197 1789762
>>789744
else для for срабатывает, если не было break вроде.
Довольно ебанутая и неочевидная конструкция.
198 1789766
>>789574
мб стоит попробовать pip install loguru
199 1789795
>>789761
а понял, туплю
200 1789883
>>789589
Не совсем понял, ты же можешь создать пул хэндлеров и просто ротировать их путем оверлоада выбирая тип лога .debug, .warning и так далее. Не вариант?
201 1789947
>>789766

> loguru


О! Спасибо, годнота.
202 1789970
>>789883

Поясняю подробнее идею.

Хендлер (он же таргет) просто знает как записать лог сообщение куда он там пишет. Конечно может иметь фильтр "минлевел" но он не нужен.
логгеры в системе не один логгер, а именованные логгеры. Причем иерархические имена. Например "server.core", "server.api"

логгеры генерят сообщения. таргеты знают как их записать. Нужно связать первое со вторым.

И пишутся правила где я перенаправляю "сообщения от таких то логеров такого левела пусть идут в такие то таргеты"
что это дает? Это дает возможность направить все или часть куда нам нужно. Например

- собрать варн и еггог со всей системы в файл error.txt (или 2 файла). Сразу зашел и видишь файл пуст и радуешься
- направить сообщения с какой то подсистемы в отдельный файл. Мне удобно когда каждая подсистема в свои файлы пишет. А потом вьюер если нужно свяжет
- server.api пишет в файл и левел дебаг, но я не хочу видеть server.api.internal (он дохера мусорит) - перенаправляю server.api.internal в blackhole и лог будет чище
ну или для server.api.internal писать только INFO

Nlog следит за конфигом и можно это сделать без перезагрузки приложения.

когда хендлер и его уровень гвоздями прибит к логгеру - это сильно мешает
203 1789993
А Microsoft Visual Studio Code с питоном работает как-то не очень, да? Постоянно какие-то ошибки всплывают, подсвечиваются и проверить питонофайл можно только запустив в итоге. Лучше поменять IDE или там надо что-то допиливать в нем?
204 1789994
>>789883
можно конечно использовать хак для getLogger(name) где если server.api.internal то ему хендлер который пишет в тот же файл но фильтр INFO

но это и будет то же самое. Просто выраженное в коде, а не на уровне конфига "сообщения вот от этого логгера направь отдельно вон туда учитывая минлевел"
добавить звездочку и конфиг и вот и получится то, что я описываю
205 1789995
>>789574
Опа, знаю твое задание, тянка делает его же)))
206 1790013
>>789970
Ты можешь указать root logger. Параметр propagate

class logging.Logger
propagate
If this attribute evaluates to true, events logged to this logger will be passed to the handlers of higher level (ancestor) loggers, in addition to any handlers attached to this logger. Messages are passed directly to the ancestor loggers’ handlers - neither the level nor filters of the ancestor loggers in question are considered.

If this evaluates to false, logging messages are not passed to the handlers of ancestor loggers.

The constructor sets this attribute to True.

Note If you attach a handler to a logger and one or more of its ancestors, it may emit the same record multiple times. In general, you should not need to attach a handler to more than one logger - if you just attach it to the appropriate logger which is highest in the logger hierarchy, then it will see all events logged by all descendant loggers, provided that their propagate setting is left set to True. A common scenario is to attach handlers only to the root logger, and to let propagation take care of the rest.
207 1790017
>>789993
IntelliSense и PyLance включи.
208 1790018
>>790013
как бы не то же самое ну вообще
209 1790042
>>790018
ну ты же можешь сделать override методов, только тебе придется каждый раз делать операцию по добавлению хэндлера и его удалению

def warn(msg):
logger.addHandler(self.warn_handler)
logger.warning(msg)
logger.removeHandler(self.warn_handler)
210 1790050
>>790042
ты почему то все время смотришь на уровень сообщения

А я говорю про направление потоков сообщений основанных на "кто сказал + уровень"

образно говоря есть такие подходы
1 ты заводишь несколько настроенных логгеров (с настроенными хендлерами), а в коде выбирается нужный и используется
2 Каждая подсистема "кричит от своего имени". И есть код, который слушает и разруливает кого куда писать.

В первом случае если нужно извернутся то придется писать кастомные хендлеры с фильтрацией + еще в сам код проекта лезть чтобы в каком то месте изменить вызываемое имя логгера (а иначе как его отличить от других). А во втором такой универсальный перенаправлятор уже готов, все в конфиге, код не трогаешь
211 1790053
>>790050
Все, дошло. Если это был модуль A, отрази логи в файле error.log, если ошибка в модуле B, то отрази в логе b_error.log.
Тогда есть резон использовать fluentd и уже на его основе правил распределять потоки логов.
212 1790058
>>790050
Где-то видел на гитхабе кастомные реализации логгера. На самом деле в Питоне пакет давно уже не менялся, и асинхронка была и сразу форматирование в JSON на лету и кастомные поля. Мне кажется крупные компании какие-то писали, я как-то просто дублировал логирование путем записи в файл и в БД. Только недавно начал натыкаться на нормальные инструменты.
213 1790060
>>790042

>каждый раз делать операцию по добавлению хэндлера и его удалению


да нафиг надо. проще один раз сделать такой хендлер, который на основе заданных правил и имея на руках имя логгера и левел зарулит куда его нужно правилам, нежели играть в костыли с тому, что дает модуль logging с его "родительскими хендлерами)

>>790053

>Если это был модуль A, отрази логи в файле error.log


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

Кстати это сходно с идеей "12 чего то там" где логи срут в stdout и дальше система парсит эти логи и распределяет.

Как по мне это 2 стороны одного яйца.

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

>fluentd и уже на его основе правил распределять потоки логов.


ну это уже тонкости. главное концепт. почему то все всегда выбирают первый вариант и приходится немного, но лепит лисапеды что позволительно в пет проектах, но не в работе же
214 1790071
>>790060

>почему то все всегда выбирают первый вариант


это я про логгеры в разных языках. Вроде бы простая концепция с доп уровнем правил "кого куда". но такая редкость.
215 1790073
>>790060
Только шарп компилируемый и для них другие требования по предоставлению информации диагностической. Та же Java напримерм начинает более полный traceback показывать и т.п.

>в работе


Зависит от того, кто потом логи читает. Так уж лучше в единое хранилище ELK запихнуть, не? Главное доказать, что оверхед если и будет, то он окупаемый за счет, того что даже макака сможет прочитать информацию и понять, где началась жопа.
216 1790085
>>790073

>Только шарп компилируемый


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

>Зависит от того, кто потом логи читает


вообще то от того кто пишет код. вот модуль питона не дает свободы. вот выше написали бери loguru. так и там та же фигня - логгеру добавляется слушатель напрямую.

>Главное доказать, что оверхед если и будет


ну я не вижу проблем с файлами. все эти внешние логеры хороши, кода нужно в одном месте собирать логи отовсюду. А просто слать данные внешне когда файлов хватает...

зы: я уже потерял нить беседы )
217 1790090
>>790085
JSON в файле и JSON в какой нибудь NoSQL БД разные вещи. Отказал внешний сервис - читай файлы, а для аналитики фильтруй, строй графики. не?
218 1790093
>>790090
я тебя не понимаю. складывать во внешний сервис да по сети еще нужно тогда, когда в этом есть смысл.
Иначе это реально оверхед на ровном месте. А файлам то чего отказывать. Хотя конечно однопоточная природа питона может влиять - у нас может быть 20 воркеров процессов и какать в 1 файл затруднительно.

Ну еще может быть смысл если утебя есть инструментарий для работы с логами где то, а для файлов нужного тебе нет, а прям вот очень надо чего то там анализировать и графики строить.
219 1790110
Как в bs4 сделать исключение для определенного класса?

<div class='a'>
a
<div class='b'>b</div>
</div>

В данном случаи, при выборе класса а, в soup.text было только а
220 1790113
>>790110
1 непонятен вопрос
2 почему бы не использовать то, что поддерживает xpath
221 1790116
>>790113
1. можно сделать без исключения. Мне надо достать условно говоря а, но при использовании .text, подтягивается еще и b
2. сайт выдает уебанский html, и все в таком виде, ничего с этим поделать не могу
223 1790121
>>790120
спасибо, хуево искал

ясен хуй, а вообще json рулит)
224 1790126
>>790121
один раз выучить xpath и уровень свободы в парсинге вырастет в бесконечные разы. Заодно и не выгонят "он знает xpath как его выгонишь. без него ж никто не разберется"

>а вообще json рулит)


Будет, когда там будут коментарии. тогда можно будет и питон выбросить. Но пока что мир иной.
225 1790136
>>790126
Откуда этот xpath вообще вылез?
Я помню, что это была ископаемая технология для дрочения ископаемого хмл, а теперь дохуя мода опять, но для парсинга. Из-за селениума и его тестов?
226 1790146
>>790136
он никогда не был ископаемым
он всегда был самым мощным языком запросов к xml (ну и конечно html)

Просто не все его знают. Или даже про него.
Народ же у нас считает как - парсинг? значит регулярки. хтмл? ну значит css запросы. А xpath это сложнааааа

кстати есть еще и jsonpath но кто о нем хотя бы слышал) Народ ничем не интересуется
227 1790151
>>790146
Потому что сам хмл уже давно легаси, вот и ископаемый.
Не знают, потому что он был нужен только всяким энтерпразам для дрочения этого самого хмл, у них там любая хуйня на нем была, а в каких-то жабах может и до сих пор, лол.
228 1790156
>>790151

>сам хмл уже давно легаси


от этого html не перестал быть "приложением языка xml" (с) вики
А значит xpath на нем работает. И в реальности ничего мощнее xpath и нет.
регулярки сразу нах
а css селекторы не имеют нужной гибкости
229 1790160
>>790156
По-моему, последние версии селекторов примерно догоняют по возможностям, но ещё массово не заимплеменчены.
Так что может и закопают обратно скоро, есть ли смысл учить.
230 1790161
>>790160
не будет никогда равенства возможностей. css селекторы идут другим путем
231 1790166
>>790160
я про то, что возможностей css селекторов можно хватать
особенно учитывая селектор + немного кода
но если устроить сравнение то css не сможет охватить все случаи что может xpath

а я выучил xpath и нафиг мне эти "а как в этом вашем css замудрить"
232 1790175
>>790166
В 95% случаев достаточно простого или среднего селектора или даже встроенных в тот же суп хуиток. xpath как раз для мудрения всякой йобы.
233 1790186
Что используют в питоне для написания GUI?
234 1790190
>>790186
ты штоле погуглил бы свой вопрос, биндинги ко многим ui есть, выбирай любой
235 1790194
mydict = {'a': 1, 'b': 2}
def test(kwargs):
....for key, value in kwargs.items():
........print(key, value)
test(mydict)

какой вариант правильный? две звезды просто указывают шо это keyword args? там же распаковка не нужна, ну тип цикл распаковывает

def test(kwargs):
....for key, value in kwargs.items():
........print(key, value)
test(
mydict)
236 1790201
>>790186
слезы и страдание
237 1790204
>>790201
>>790190
Бля, мне нужно сварганить GUI приложуху, которая бы записывала и дёргала данные из самой простой SQL базы. Вот смотрю варианты. В молодости плотно сидел на Дельфях, возвращаться не хочу.
238 1790221
>>790204
есть pyqt4(устарел), pyqt5, pySlide(чет там с основной лицензией qt, это типо фришная) ну и GTK, Wxwidgets, бери pyqt5 для вката
есь книжка справочник прохоренок, дронов pyqt5
https://rutracker.org/forum/viewtopic.php?t=5369996
239 1790223
>>790194
звездочки сьел двач, во втором варианте две звезды перед kwargs
240 1790231
>>790223
всё, понял, распаковка по имени
241 1790233
>>790221
Пасиба, анон. Добра.
242 1790235
>>790233
а забыл, еще tkinter на это gui tcl/tk но там типо юзается для очень легковестных гуи и сама либа tkinter не в ооп стиле, может юзаться для бека matplot, но qt ща популярный
243 1790242
>>790235
Ага, останавлюсь на Qt пока.
244 1790262
Создаю юзера и выдаю ему все права - пик 1.
Создаю курсор с тем же логином/паролем - пик 2.

> psycopg2.errors.InsufficientPrivilege: ОШИБКА: нет доступа к таблице transcription



Почему так?
245 1790267
>>790262
В гранте ещё хост вроде должен быть, с которого можно пускать.
246 1790270
>>790267
Спасибо, пойду читать.
247 1790281
Несколько раз натыкался что pip желательно вызывать через python -m pip - почему?
248 1790300
>>790281
Читай что такое path и как командная строка находит путь к программе по её имени.
249 1790313
>>790281
потому что если у тебя несколько питонов неизвестно чей пип ты вызовешь
и вызовешь ли вообще
а -m pip вызывает нужный pip
250 1790319
>>790313
а нефиг пипкать не из венв

python -mvenv huemoe
cd huemoe
source bin/activate

pip install huemoe
251 1790325
>>790319
а зачем не venv вообще?
вот допустим я пользователь. у меня в системе по дефолту 2.7 которую не выцарапать 3.6 которую не выцарапать и 3.8 которая мне нужна для выполнения моих скриптов
мне изоляция нафиг не всралась, а уже зоопарк
252 1790429
>>790319
>>790325
На кой чёрт нужны эти ваши венв, если есть докер или на худой конец piploc/pythonloc? Неужели так сложно прописать алиасы python/pip на последний питон в bashrc?

Научитесь наконец-то пользоваться шеллами.
253 1790430
>>790429
Принцип тот что в докере, но ещё проще. Просто разворачиваешь кастомный венв под каждый проект и они не пересекаются.
254 1790431
>>790429
Докер это не замена venv, а дополнение
Точно также как сидеть на бэкенде и утверждать что дрочево с деплоем приложений, nginx и линуксом "для лохов", т.к. есть docker-compose
255 1790437
>>790431
В каком месте это дополнение? Никогда не пользовался венв внутри докера. Для чего оно в докере?
256 1790441
>>790437
В том что когда тебе таки придется залезть внутрь venv по той или иной причине, ты не упадешь на спину в припадке "сложна сложна мы такого не проходили"
прям как новоявленные вкатывальщики, которые утверждают что математика и алгоритмы прогеру нинужны
257 1790449
>>790441
Много математики знаешь? Функтор от монады отличишь?
258 1790469
Пагни, подскажите простейший RESTAPi тесты на питохе и обычных запрос POST с Боди \ респонс. Есть такое?
259 1790475
>>790429

>Неужели так сложно прописать алиасы python/pip на последний питон в bashrc?


У себя прописать можно
Везде прописывать не выйдет
260 1790478
>>790430
Мне не нравится оверхед в виде копии питона в венв
261 1790484
>>790429
ты что идиот? а если у меня несколько проектов.

в одном один, в другом другие еще и разных версий
262 1790485
>>790478
ты что идиот? там симлинк
263 1790488
>>790484
Это тебе по работе нужно так? Или ты сам для себя так пишешь, что-то на 3.5, что-то на 2.7, что-то на 3.8? Если по работе, почему ещё не используете там докер? Вряд ли же у вас там гуй какой-нибудь. И ещё вопрос, почему не обновляете питон в проекте?
264 1790489
>>790475
А зачем их прописывать везде? Везде это где например?
265 1790492
>>790488
я про зависимости скорее, тут у меня версия либы 1.1, а в другом венве 2.1

докер можно, но: под маком это виртуалка, мне не охота отдавать память под всякую хиуту

еще плюс в venv, то что твоей ide/lsp меньше индексировать зависимости
266 1790493
>>790478
Там нет копии питона, но есть копии библиотек.
267 1790501
>>790492
Ох уж эти макопроблемы.

> тут у меня версия либы 1.1, а в другом венве 2.1


> меньше индексировать зависимости


Ну так piploc/pythonloc это тот же самый венв, только попроще, как в жс. Разве что не из коробки. Ладно, может быть и хорошо что ты привык использовать венв.
268 1790512
>>790469
Бамп.
Кто-то пользовался requests модулем?
269 1790515
>>790512
Нет. Первый раз слышу про такой.
270 1790516
>>790488
суть венвов не столько в разных версиях питонов, сколько в разных версиях либ к нему ( тока не отвечай нахуйя, не поймешь зачем, просто проигнорируй)
Стикер127 Кб, 500x500
271 1790518
>>790516
Нахуя))000)
272 1790521
>>790518
Па приколу чиста
273 1790562
>>790515
Пздц. Я думал тут форум профессионалов.
274 1790605
>>790501

>Ну так piploc/pythonloc это тот же самый венв


только непонятно как с этим жить

как удостовериться что локально все пакеты что нужно они локально
как потом обновлять это все
275 1790662
Поясните в двух предложениях, зачем нам нужен Докер и\или его контейнеры? Может на конкретном примере с Питохой? Спасибо.
276 1790666
>>790489
заходишь на чужую систему че то настроить.
277 1790669
>>790662
только если хочется огородить приложуху по памяти или по доступам туда сюда.
иначе он не нужен
278 1790685
>>790669

>Не нужен


>CI/CD


Ясно
279 1790692
>>790685
Дада каждый 0.5й юзает ci/cd
280 1790701
>>790692
Ты про вкатышей или мейнтейнеров? После PR всегда автотесты гоняют.
281 1790703
>>790701
про обитателей этого треда
282 1790707
>>790703
Если тебе не нужно, то и всем не нужно? Бро...
283 1790738
>>790562
Ну так ты спрашивай сразу что тебе надо, а не устраивай перекличку. Конечно же реквестами пользовались все кто хоть немного трогал питон.
284 1790739
Поясните за итераторы и генераторы плз. 3 недели уже ковыряю язык, уже пытался для себя писать что-то простое, разбирался в апи, и было норм, а тут я прям пиздец тону, внимание теряется, все плывет, не могу слушать лектора/воспринимать текст почти сразу, как пытаюсь вникнуть. Это вообще сильно нужная и постоянная используемая вещь, или это просто надо иметь в виду, чтобы понимать как работает for и для общего развития, а для работы в вебе это не особо надо?
285 1790744
>>790739
Алсо, я правильно понял, что list comprehension в русском зовут генератором списка, но это не имеет отношения к тому, что в целом зовется генератором, и это косяк русского языка?
286 1790747
>>790605
Если ты такой параноик, то пидорасить sys path. Самая лучшая воспроизводимость всё равно будет только в докере.
287 1790749
>>790666
Худшее что можно сделать на чужой системе это с пылу с жару запустить пип. Там как раз не нужны никакие алиасы и удобности.
288 1790753
>>790669
Крайне диванное утверждение. Главная фишка докера не изоляция и ограничение ресурсов, а охуенная воспроизводимость окружений и удобство доставки на сервера.
289 1790757
>>790753

>а охуенная воспроизводимость окружений


а она нужна в питоне? ну чтобы вот прямо аж ваще
только если юзаешь что то крайне сишное
290 1790759
>>790749

>системе это с пылу с жару запустить пип.


чойта. если для этого туда и зашел
291 1790760
>>790739
Генератор это объект, у которого есть метод «высрать новое значение». Практически то же что итератор, только нет заранее готового контейнера со значениями. List comprehension не является генератором, а вот generator comprehension является. Это тот же что и list, только скобочки круглые.
292 1790763
>>790747
я не параноик.
просто нет четкого понимания как заполнить этот локальный пип нужными пакетами чтобы ничего лишнего и не пропустить чего чтобы потом на целевой машине не было ай?

или на продакшене уже это не юзается?
293 1790766
>>790757
Все знают докер, докер всё делает автоматически, зачем убивать время на чтение твоих наколенных ридми и делать всё руками? Или проверять очередной мейкфайл на пиздецы.
294 1790767
>>790766

>Все знают докер, докер всё делает автоматически


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

количество мозгоебли оказалось одинаковым
295 1790768
>>790763
На продакшене я настоятельно рекомендую докер. А вот локально пиплок, как по мне, удобнее венва. Ну и как напишешь requirements так и будет же.
296 1790774
>>790767
А теперь попробуй модифицировать этот сервер и расшарить модификацию в команде. Вот самое простое, поменяй тайтл на главной.
297 1790776
>>790759
Иди к админу и выясняй что и как запускать. Нечего на серверах рандомить.
298 1790778
>>790774
могу забрать исходники и сбацать свой докер образ
или свой whl

а далее квест с установкой где уже выяснили что разницы нет

что сказать то хотел?
299 1790780
>>790776
а я и не рэндомлю
я ж и говорю что -m pip даст то что нужно
а не "авось повезет"
300 1790782
>>790778
Окей, счастливо поебаться.
>>790780
Тут сыглы, хули.
301 1790784
>>790782
слился товарищ )))
заметь. а я даже не стал использовать аргумент "а нахера мне шарить дистр своего пиписервера товарищам по команде", им сервер нужен, а не дистр

ну то такое

>Тут сыглы, хули.


мая твая нипанимат
302 1790785
Про докер читайте о проблеме «works for me», или «у меня локально работает». Эта хуйня съела миллионы человекочасов, не дав ничего взамен. Само собой, если ты делаешь библиотеку, которую потом выложишь на pypi, докер тебе нахуй не сдался. Но если работаешь в команде бэкендеров, без этого никуда.
303 1790791
>>790784
Слился как дешёвка))0 Задавлен аргументами)) Та мне чо, свет сошёлся на твоём благополучии? Страдай, я не против.
304 1790795
>>790791
все просто
прагматизм
будет нужен докер - поставлю докер
стоит докер - использую докер
ставить целый докер ради одного пиписервера - крайне спорное решение
в итоге стоит пакет, а на той машине где стоит пипи докер нахер не нужен (только память зря жрет)

я не умаляю заслуг докера но
прагматизм а не "докеееер хочу докееееер"
305 1790798
>>790791
впрочем признаю, что я уже не в ту степь пошел
ибо выставил себя как потребитель, а не разработчик
306 1790801
Работаю на Flask. Пишу файлообменник рандомный.
ПРи загрузке файла он рандомит путь к файлу правильный, но при попытке скачать высирает всегда одинаковый файл.
В чем трабл?
307 1790802
>>790795
Докер жрет с гулькин хуй. Куда проще заменять сервера, если на них требуется только докер. Композе ап и всё работает. А тут надо целый день чета там ставить настраивать. Почитай про infrastructure as a code, люди даже ресурсы в облаке описывают текстовыми файлами в терраформе. Докер примерно об этом же, описание как поставить в виде короткого текстовика, который каждый у себя может запустить и развернуть если ты ушёл в отпуск.
308 1790804
Почему такое ощущение, что в тредю орудуют агрессивные школьники/студенты первых курсов?
309 1790812
>>790804
те кто работают и занят делом не ходят на такие форумы
310 1790813
>>790804
А теперь в треде орудуют эйджисты?
311 1790815
>>790802
То что докер что то упрощает - не значит, что все остальные подходы разом устарели.
И про "все знают докер" это враки
Да и применимость тоже преувеличена.
Ты можешь быть мамкин фрилансер. Можешь писать код, который не позиционируется как продукт. Можешь кодить пакеты для пипи. Да мало ли что.
312 1790829
>>790815
Ну само собой, здесь есть прекрасная статья об уровнях упаковки вплоть до зашивки в хардварь https://packaging.python.org/overview/
Если люди заводят разговор про изоляцию, венвы, несовместимость питонов, то высока вероятность что им нужен докер.
313 1790833
>>790815
>>790829
да вы зоебали, нахера вы друг другу хотите доказать абсолютность чего либо, любой инструмент выбирается под задачу, хуле тут спорить, а? А?
314 1790845
>>790813
Скорее, если бы они не детектились по постам, то никто бы и не был против
c48787a0-4259-47a3-b32a-ddb4f311c753.jpg142 Кб, 1040x663
315 1790846

> любой инструмент выбирается под задачу


> пук



Топ 10 бесполезных комментариев в каждом айтишном обсуждении.
image.png4,1 Мб, 1920x1440
316 1790856
>>790846
но твой то еще бесполезнее
dkdewkew.jpg10 Кб, 300x225
317 1790876
>>790856
Твоя правда.
Screenshot 2020-08-28 at 15.17.41.png14 Кб, 264x142
318 1790930
Пацаны, а подобные выравнивания в коде стоит делать, или нет?
319 1790938
>>790930
Смотря сколько платят
320 1790940
>>790930
Гугли black, если хочешь раз и навсегда освободить мозг от форматирования кода. Ещё почитай про феномен bikeshedding: чем проще тема, тем больше времени и внимания ей уделяется.
321 1790946
>>790930
Если однотипные данные, относящиеся к одному и тому же, то да.
Т.е., всякие словари, наборы переменных и т.д. Как у тебя на пикче точно нет.
322 1790947
>>790829

>венвы,


он полезен хотя бы тем что не нужно засирать системный питон кучей пакетов, которые нужны только для проекта
и одно это необходимости докера не влечет
323 1790955
>>790938
>>790940
>>790946

Понял, спасибо.
Особенно этот господин пояснил по хардкору >>790946
324 1790960
>>790955
Большинство даже с однотипными данными этого не делает. Просто есть любители украшать всё подряд.
image.png21 Кб, 121x678
325 1790963
image.png14 Кб, 543x204
326 1790964
327 1791032
>>790501

>Ну так piploc/pythonloc это тот же самый венв, только попроще, как в жс. Разве что не из коробки


в этом и суть. в том же пишарме поддержка венв, а пиплока аж ничуть
328 1791041
>>790963
опять дрочить..
329 1791065
только начал изучать питон, прошу, помогите мне с кодом

messages_count = 10
for i in (reversed(range(2, messages_count + 1))
print ('- Анфиса, есть ли новые письма?')
print ('- Непрочитанных писем:' , str(i) , '.')
print ('Я прочитал одно, и их осталось' , str(i-1) , '.')
print ('- Анфиса, есть ли новые письма?')
print ('- Одно непрочитанное письмо.')
print ('Я прочитал его. И нет больше писем!')

выдает ошибку:

Traceback (most recent call last):
File "main.py", line 3
print ('- Анфиса, есть ли новые письма?')
^
SyntaxError: invalid syntax

проблема в пробелах? если да, то, как исправить ее?
330 1791070
>>791065
проблема в пропущенной : после фор
331 1791084
>>791070
ты имеешь в виду, что нужно так:
https://ideone.com/fork/jz1p1W

в таком случае, выдает ошибку
332 1791088
>>791084
Поправил. Лишняя скобка и отступы кривые.все работает
333 1791092
>>791088
Ты же в курсе, что найти ошибку и поправить быстрее, чем пилить пост на сосаку?
334 1791093
>>791092
Я не вкатыш. Детектор чини.
335 1791184
>>791093
Скатыш?
336 1791186
>>791184
Миддл-скатыш.
337 1791234
338 1791235
Сап двач, пишу бота для вк на питоне с MySQL.
Делаю недо-текстовое рпг, но не могу разобраться как сделать привязку к айдишнику. Т.е. человек командой выбирает один регион, и он за ним закрепляется в бд.

if event.object.text.lower() == "-регион Озеро Спокойное":
try:
cursor = connection.cursor()
cursor.execute("TRUNCATE TABLE public.region")
name = "Озеро Спокойное"
photo = "photo--------------"
cursor.execute("INSERT INTO public.region (name, photo) VALUES (%s,%s)" , (name, photo))
cursor.execute("update public.membboss set alltimedmg = alltimedmg + %s where vk_id = %s" ,(dmg,event.object.from_id))
connection.commit()
vk.method("messages.send", {"peer_id": event.object.peer_id,"message":"Вы получили земли в области Лес хуёв", "attachment": "photo---------------", "random_id" : 0})
cursor.close()
except (Exception) as e :
print(traceback.format_exc())
339 1791241
>>791235
Ча? Получить ид последней инсерт записи чтоли?
340 1791246
>>791235
Транкейт траблицы тут для теста, надеюсь?
341 1791253
>>791235
после lower оно уже никак не может быть равно строке с заглавными буквами, в первой же строчке дичь какая то дальше смотреть не вижу смысла
342 1791254
>>791241
Не, привязать в бд к айдишнику человека. Вкшный айдишник
343 1791264
>>791253
Не заметил, по привычке поставил заглавные. До этого было иначе, без заглавных.
344 1791277
>>791235
Или процедуры или ОРМ, не надо это говно сюда тащить, пожалуйста. Объебешься в синтаксисе и у тебя весь код в тыкву превратится. И сверку строки делай через паттерны regex.
345 1791359
>>790963
Есть код этой хуйни?
346 1791364
>>790785
То есть это верзион контрол тул по сути? Можешь объяснить, что конкретно он делает, не просто он изолирует или тп. А вот, допустим ты написал код, Вася написал код. Вы его пушаете гитом в мастер, как здесь связан Докер?
347 1791366
>>790738
Спасибо. У меня собес скоро вводный по реквестам\API тестам именно.
Например, почему или даже зачем нам нужны параметры в методе Гет?
Тоже самое для пост, какие конкретно параметры мы должны дать для Пост метод, в чем разница в таком случае?
348 1791372
>>791364
Нет, он позволяет многим людям поднимать одинаковое окружение. Это как файл с образом виртуалки, но без оверхеда.
349 1791375
>>790760

>Генератор это объект


Ловите профессора. В Питоне каждая пылинка это объект, я бы за такой ответ тебе перезвонил.
350 1791386
>>791372
Понял, короче это изолированный сервер, среда, которая настраивается как рабочая под девов куда все и синхронятся. так?

>оверхеда


Что такое оверхед?
351 1791413
>>791386
Нет, поднимает каждый у себя, но у всех получается идентичный.

>Что такое оверхед?


Накладные расходы. Например, виртуализация имеет оверхед, у докера намного меньше, потому что он работает на живой системе, но изолированно от нее.
image.png17 Кб, 543x286
352 1791424
Товарищи, пытаюсь завебскраппить каталог двача для одного персонального проекта. Нужно получить конкретно каталог /b/ раздела, но дело в том, что мой скрипт не подгружает треды в каталоге. Причиной тому может быть то, что они прогружаются немного позже, чем сама страница. Вопрос в том, как сделать так, чтобы прогрузить весь контент страницы в html.
353 1791427
>>791424
дикий респект тому, кто подскажет возможное решение
354 1791428
>>791424
сделай что нибудь типа
драйвер.нажми_кнопку("пробел") N раз
355 1791429
>>791428
а не, там элементу это отсылается, поэтому возьми какой нидь боди
357 1791441
>>791424

>Вопрос в том, как сделать так, чтобы прогрузить весь контент страницы в html.


Сделать ожидание до момента, когда нужный элемент прогрузится, Селениум предоставляет такую возможность. И убери бьютифулсоуп, он нахуй не нужен
KK9cJdfVu4g.jpg19 Кб, 470x360
358 1791444
>>791375
У двачеров видимо с логикой туговато. Истинность частного случая не несёт за собой ложности общего.

> я бы за такой ответ тебе перезвонил


Синдром вахтёра на максималках.
359 1791448
>>791364
Пушится в гит Dockerfile, который есть набор инструкций как собрать какой-то образ. Выбрать можно даже дистрибутив, то есть работаешь ты в федоре, а на проекте принято использовать убунту. Пожалуйста, делаете всё в образе от убунты. Там и компилятор совпадёт, и cmdline утилиты, и переменные окружения, и пути куда что ставится.

Двачеры почему-то думают что венв это железная изоляция, хотя это всего лишь хак с path/pythonpath, который сработает только есть весь проект и все его зависимости написаны на чистом питоне, и у всех жёстко одинаковая версия (включая третью цифру) самого питона. Венв хороший инструмент, но если у тебя случилось так что локально работает, а на продакшене падает, то надо потестить уже в докере.
360 1791451
Сап двач, пишу бота для вк на Python с MySQL.
Делаю недо-текстовое рпг, но не могу разобраться как сделать привязку к айдишнику. Т.е. человек командой выбирает один регион, и он за ним закрепляется в бд.

if event.object.text.lower() == "-регион озеро спокойное":
try:
cursor = connection.cursor()
cursor.execute("TRUNCATE TABLE public.region")
name = "озеро спокойное"
photo = "photo--------------"
cursor.execute("INSERT INTO public.region (name, photo) VALUES (%s,%s)" , (name, photo))
cursor.execute("update public.membboss set alltimedmg = alltimedmg + %s where vk_id = %s" ,(dmg,event.object.from_id))
connection.commit()
vk.method("messages.send", {"peer_id": event.object.peer_id,"message":"Вы получили земли в области Лес хуёв", "attachment": "photo---------------", "random_id" : 0})
cursor.close()
except (Exception) as e :
print(traceback.format_exc())
361 1791452
Пытаюсь авторизоваться на сайте через requests, но в адресе почты @ превращается в %40. Как фиксить?

Код для примера:
import requests
data = {'username': 'foo@bar'}
response = requests.post('http://httpbin.org/post', data=data)
print(response.request.body)

Что выводит принт:
username=foo%40bar
362 1791455
>>791452
Это называется urlencoding, это способ сериализовать структуру в поток байт. Фиксить это не нужно, так и должно быть. print(response.request.body) — смотри тут внимательно, ты реквест принтишь, то что ты отослал, а не принял в ответ.
363 1791458
>>791455

> ты реквест принтишь


В этом и цель. Сервер говорит, что пользователя не существует, поэтому я принтил реквест, чтобы разобраться, что не так. Через браузер с теми же данными все работает. Единственное, что отличается - %40 вместо @.
364 1791461
>>791451

> человек командой выбирает один регион


Вот это выражение я не понял. Команда выбирает регион? Ну так добавь поле команде. А если нужно подтянуть в селекте для игрока используй джойн или подзапрос. Вместо кода лучше схему БД запости.
365 1791462
>>791458
Как ты делаешь "через браузер", покажи.
1598639617861.png38 Кб, 1346x434
366 1791473
>>791462
На пике запрос через браузер. Сервер авторизовывает и возвращает токен. При таких же заголовках и теле запроса через requests авторизация не проходит и возвращается текст в utf-16 "пользователь не найден"
367 1791474
>>791448

>Двачеры почему-то думают что венв это железная изоляция


не думают.
они думают что городить огород с докерами геморнее и это так
368 1791480
>>791473
Смотри, у тебя в браузере content-type: application/json, это другой способ кодирования. Вместо параметра data нужно использовать параметр json, иначе будет content-type: application/x-www-form-urlencoded.
369 1791482
>>791480
Во, теперь работает, спасибо
370 1791490
Ребят, есть модель книги, есть модель главы. у каждый книги есть главы и они пронумерованы 1-9999. От глав делаю форин на книги. На главной странице отображаю весь список книг, при переходе на книгу задействую DetailView и вроде бы пока все топ, но в detailview я хочу отобразить все главы связанные с книгой и это вроде как получается, но если у книги 1 есть глава 1, у книги 2 глава 1, то при переходе на главу книги 1 появляется ошибка get() returned more than one Add_chapter -- it returned 2!. Как мне дать понять джанго, что на книге 1 мне нужна глава 1, которая с ней и связана ? Если главы с юрл 2 у книги 2 нет, то она откроется в книга 1 без проблем ,без ошибок.

Приложил пасту, там кода по хуйне, подскажите плс
https://pastebin.com/P94L8PLX
371 1791492
>>791433
Не шарил за это, жсон это балдеж. респект!
372 1791494
>>791492
Если что-то подгружается не сразу, то смотришь ходящие запросы, оно подгружается в основном как раз в виде жсона.
А то знатоки уже налетели с селениумом. Браузер скачал готовые данные, отрендерил в хтмл, а они потом обратно руками дрочат.
373 1791510
>>791494
Вообще ты мне намного облегчил задачу. Я сейчас ещё осознал, что треды можно получать тоже в виде джсона. Я об этом даже не задумывался. Огромная благодарочка, анон
374 1791520
>>791490
Смотри в сторону unique_together. Выборка всегда должна быть по двум ключам: book_id, chapter.

> Add_chapter


Почему модель называется глаголом? Там же просто Chapter.

> models.ForeignKey(Manga


Что за модель Manga?

class Book(Model):

class Chapter(Model):
..book = ForeignKey(Book)
..number = PositiveIntegerField()
..class Meta:
....unique_together = (("book", "number"),)

Приблизительно так должно быть.
375 1791535
>>791494

>А то знатоки уже налетели с селениумом.


У него изначально был селениум, мало ли что он хотел делать
376 1791570
Пагни, такая задача.

В функции есть набор символов, например "abca", нужно вывести все возможные значения комбинаций этих символов, но чтобы они не повторялись типа aabc, а только abca, acab и тд.
Так и не дошло до меня как делать, интеврьюер сказал, что нужно было делать луп в лупе, в лупе, но я не понял все равно. Спасибо.
377 1791576
>>791570

>#A = [a,b,c]


#B = [a, b, c]
#A B (concurrent letters are not same) = [ab, ac, ba, bc, ca, cb] = C
# C
B
Я насобирал такую вот хуйню, но так и не понял.
378 1791579
>>791570
>>791576
Есть функции итертулс для комбинаций, можно сделать что-то типа
[i+j for i in a for j in a if i !=j]
379 1791584
>>791579
Охуенно! Спасибо! Именно оно.
Теперь как развернуть этот лист компрохенсив в нормальный, чтобы посмотреть логику?
a = ['a', 'b', 'c']
b = [i+j for i in a for j in a if i !=j] - что равно этому квадратному лупу

for i in a:
for j in a:
if i != j:
b.append(i+j)

так что ли?
380 1791590
>>791584
Да, только циклы местами поменяй
381 1791591
>>791590
Всё правильно там, слева направо разворачивается.
382 1791595
>>791591
Разве компрехеншены не справо-налево раскладываются? Типо внешний цикл основной - внутренний идет уже как выражение основного
383 1791596
>>791570
У тебя это перестановки, а не комбинации. Суть в чём, ты фиксируешь один символ, убираешь его из колоды, спускаешься в рекурсию, отпускаешь символ, берёшь следующий.

https://ideone.com/8Xvl1J
384 1791598
Или тебе ещё нужно отфильтровать чтобы двух одинаковых подряд не было?
385 1791599
>>791595
Легко проверить же https://ideone.com/0DREzl
Как видно, первым идет 0, а дальше строка.
386 1791600
С фильтром
https://ideone.com/nNK2J8
387 1791601
>>791596
Ловите Лутца!
388 1791604
>>791599
Действительно
389 1791625
>>791520
а что мне это даст?
390 1791636
>>791596
Нормас, спасибо. Сразу и не монимаю что происходит. Буду разбираться.
391 1791637
>>791600
Что такое фильтр?
392 1791643
Есть тут Селениум пацаны?
Как кликнуть элемент, если имеем вот такое? Вопрос, кликнить на текс в строчке 10?

><div>text</div>


<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
393 1791644
>>791643
можншь открыть разработку в браузере нажать пкм элемент и скопировать его по xpath, дальше найти его в селениуме по хпатх и кликнуть
394 1791645
>>791637

> чтобы они не повторялись типа aabc, а только abca, acab и тд.


То есть я получившиеся перестановки ещё профильтровал и оставил те что без двух одинаковых букв рядом. Не знаю нужно ли это было.
395 1791678
Есть книга по алгоритмам без зауми в которой не подразумевается что я должен очень хорошо знать формальную математику ? Как минимум с объяснениями этой математики и лучше что бы с Пайтоном но не обязательно. Каков положняк по данному вопросу ?
image.png62 Кб, 880x543
396 1791689
У меня задание прочекать все папки в директории, и если в ней есть файлик с .py - выписывать название папки. Почему я стакаюсь на одной папке и не перехожу в следующую с этим кодом? Если сделать просто:
a = os.walk('.)
print(next(a))
print(next(a))
print(next(a))
print(next(a))
...
то он нормально обходит папочки, что в моем коде всё ломает?
397 1791690
>>791689
Ну смари малёк, ты сам с какого города ?
398 1791691
>>791690
Щито блядь? С мухосранска
image.png65 Кб, 843x553
399 1791693
>>791689
блядь, думал не хватает одного цикла for, но все та же хуйня преследует...
400 1791703
>>791691
Кароч деревня, бросай это дело. Не твоё. Поверь.
401 1791720
>>791693
Ты хоть почитай документацию на эти функций. Пиздец.
402 1791736
>>790801
Попробуй открыть новую чакру, у меня не выходит телепатически считать твой код
403 1791738
>>791366

>Например, почему или даже зачем нам нужны параметры в методе Гет?


У тебя не с Питоном проблемы. А с TCP/IP и сетями в целом. Читай Танненбаума и протоколы прикладного уровня (HTTP в частности)
404 1791739
>>791738
а они тут причем?
ни питон ни тср ни таннебаум ни хттп не имеют отношения к этому вопросу
405 1791740
>>787217 (OP)
Часто приходится работать одновременно с питоновским кодом и с жс-кодом, что из IDE лучше юзать? У меня стоит pycharm, там есть что-то вроде расширенной версии, она поможет? Или лучше брать другой редактор? В пайчарме просто навигация по проекту и по Гиту довольно удобная
406 1791746
>>791739
При всем
Не знаешь основ HTTP но лезешь в requests? Ты серьезно?
Питон это прикладной язык, "обертка" для работы с более сложными сущностями, о чем может быть речь если ты не знаешь даже примерно сути этих сущностей?
407 1791748
>>791746

>но лезешь в requests


это не я лезу. но где там про requests?
408 1791750
>>791689
Тебе дело говорят -> >>791720
Почитай про модуль os и os.getcwd в частности. Не додумывай как функции работают

>>791748
Да ты заебал. Ты на собес идешь. Тебе простительно не знать основ работы инета и http если ты хочешь быть QA-интерном, в противном случае ты будешь как шимпанзе, которую научили нажимать на 1 конкретную кнопку на клавиатуре
409 1791789
>>791738
лол, че сразу не олифера то сразу?
410 1791809
>>791740
В пучарме Про, точно есть дополнения. А так все на VSCode давно перекатились.
411 1791814
Я чет немного не понял или неправильно сделал. Внутри папки с проектом есть папка, а внутри текстовый файл. И через питоноскрипт этот файл открывается если путь к нему сделать "D:/проекты/пидор/test/test.txt". Можно ли как-то сделать так чтобы надо было просто указать папку внутри проекта типа "/test/test.txt" ?
412 1791822
>>791814
Ты можешь получить путь в __file__ и потом присобачить оставшийся путь.
413 1791824
>>791814
Можно, но без слеша вначале.
414 1791848
конструктор в питоне __new__ или __init__?
415 1791850
416 1791851
>>791850
мне прост на собесе сказали шо это не совсем конструктор, а иницилиазатор
417 1791852
>>791851
А что есть "конструктор"?
изображение.png248 Кб, 500x500
418 1791853
419 1791855
>>791853
есть документация? как его вызвать?
420 1791857
>>791855
идешь в магаз и отдаешь бумажки или цифры (валюта) и приобретаешь эту сомнительно полезную материю и потом соеденияешь её в различные образы
421 1791858
>>791857
Тоесть правильно ли я понимаю, что это не вызываемый объект?
422 1791861
>>791858
что значит правильно понимать? как ты можешь понять что правильно, а что нет?
423 1791862
>>791861
Ясно, где-то гвидо обосрался значит, ну остается теперь только одно, идти компилировать тайпскрипт в жс.
424 1791863
>>791862
то есть я победил?
425 1791865
>>791848
new
Как и в любом языке. Не слушай долбоебов. Спроси лучше себя "каким образом init может быть конструктором если первый же аргумент который он получает это конкретный инстанс класса"?
426 1791866
>>791863
незнаю кого ты побеждал, я вообще другим анонистом был
изображение.png48 Кб, 1194x359
427 1791868
>>791865
https://www.interviewbit.com/python-interview-questions/
Здесь например написано шо это конструктор
Ну его задача это выделять память под объехты и инициализировать элементы
428 1791870
>>791866
значит победил тебя
429 1791874
>>791868
Пишут хуйню. __new__ выделяет память и создает конкретный объект. Любому у кого недвузначный IQ это очевидно
430 1791876
>>791874
init тогда инциализатором щитать? Если new конструктор класса, а init конструктор данных?
431 1791882
>>791876
Само понятие "конструктора" в Питона весьма извращено и часто "конструктором" называют __init__ хотя конечно это нихрена не так. Де-факто init это конечно "инициализатор"
В любом нормальном языке ты создаешь инстансы следующим образом:

let a = new Array(); // JS
int arr[] = new int[5]; // java
int fizzbuzz [5] = { }; // c++

Ничего не напоминает?
432 1791883
>>791882
Лол с плюсами конечно напортачил, там по-другому немного конечно. Если захочу создать не статически массив то надо наебенить что-то вроде:

int * arr;
arr = new int [5];
433 1791886
>>791882
спасибо за разжёвывание

в крестах разве не
class AB {
AB() {
// init
}
}
434 1791938
Чет в последнее время все чаще натыкаюсь на хуйню, типа "а на линуксе еще можешь сделать так, для винды не подходит". На всяких курсах и видосах лекторы все в основном на линуксах показывают, вроде я слышал и на работе с большим шансом будет линух. Есть ли смысл накатывать на виртуалку какую-нибудь убунту и разбираться с ней, если 20 лет сидел на винде? На работе будет надо линуксом владть скорее всего?
435 1791940
>>791938

>Есть ли смысл накатывать на виртуалку какую-нибудь убунту


Есть смысл поставить себе второй системой линух и работать на нем
Иначе про разработку забудь
Снимок.PNG24 Кб, 863x448
436 1791943
Работяги обьясните чего от меня хотят плез ?
437 1791944
>>791938
Под изучение самого питона не стоит, но дальше знания линупса уровня не бояться консоли очень и очень не помешают.
438 1791957
>>791943
знания алгебры класса так 11
439 1791961
>>791957
Ну скожи хотя бы по русски братик, я подучу куда смотреть я вообще ничего не понял с описания
440 1791979
>>791961
ну из заданной строки вычисляешь производную , а потом х в том что получилось меняешь на второй аргумент функции считаешь как обычное выражение и ретернишь результат, думаю в интеренте есть какие нить онлайн калькуляторы диференциалов, можешь поискать и потыкать чтобы лучше понять
441 1791983
>>791979
так же скорее всего в каком нить нампае уже все готово, надо только суметь засунуть это туда
442 1792048
>>791938
обычно на работе владеют тобой

хихик
443 1792055
>>791938

> накатывать на виртуалку какую-нибудь убунту и разбираться с ней


Да, но не графическую. Накати серверную. Оставь графику пердолям из /s/, а сам учи основы ОС: что такое монтирование, пермишены и владение файлами, пайпы, шелл, контейнеры, компиляторы, мейкфайлы итд.
444 1792060
>>792055
не графическую(первым же делом htop,mc,aptitude,elink)
445 1792102
https://habr.com/ru/company/oleg-bunin/blog/512650/

Меня всегда интересовал вопрос: как подобные существа живут? И главное: не противно ли им каждое утро видеть свое красноглазое зашкваренное ебало в зеркале?
446 1792104
>>792102
Нормальный код, чего тебе не нравится?
447 1792106
>>792104
То, что Белый Человек пишет через async/await. Что в жс, что в питоне
448 1792108
>>792104
Пасаны говорили - сиди жми кнопки целый день и дохуя плотят.
А тут сложна, ууу задроты сука.
449 1792109
>>792108
Ты асинхронный код хоть раз в жизни писал/читал? А поддерживал уже написанный на проекте?
я - да, за любые выкрутасы с коллбеками вместо адекватной асинхронщины ты получил бы залупой по лбу от сеньора
450 1792112
>>792109
Асинхронно парсил хтмл регулярками с помощью goto.
451 1792114
>>792106

>То, что Белый Человек пишет через async/await. Что в жс, что в питоне


Я думал тебе type hints и лямбды не понравились. Насчет async/await ничего сказать не могу - я мамкин дата саентист и никогда их не использовал.
452 1792129
>>791738
Спасибо. Лекции по сетям я читать вроде бы не собирался. Мне бы просто в двух словах пояснить, что к чему. Ну и я не на сетевого инженера иду.
453 1792142
Да ну, зачем мне английский язык, я же не собираюсь переезжать куда-то
454 1792202
Как правильно запустить небольшого питонобота на удаленном сервере?
Я кажется делаю что-то не то и когда запускаю сразу два разных через команды

python3 test1.py &
python3 test2.py &

то они как-то странно работают (то ли отключаются через некоторое время то ли еще что), когда я отключаюсь от сервера.
Может ли быть проблема в том, что рядом с основной выполняющейся командой в коде я писал print('что-то там, для проверки выполнения команды') ?
Но если я запускаю эти скрипты по отдельности, то они работают даже после отключения от сервера
455 1792219
>>792202
убери принты и попробуй если еще так не сделал, потому что сам сталкивался с проблемами при попытке запуска в фоне скриптов которые печатают в консоль
456 1792231
>>792202
Потому что надо запускать демонов
Гугли unix daemon и daemon python, в принципе если тебе похуй, можешь просто прочитать главу про daemonize и скопипасть код в Python Cookbook от Бизли, она там есть
457 1792264
>>792202
& должен отваливаться после отключения. Чтобы не отваливался можно запустить через nohup.
Или вариант с удобствами - tmux, потом можно будет подключаться обратно.
458 1792298
>>792202
Эта есть проблема, скрипты прибиваются, если им некуда вывод сохранять. Не разбирался почему, у питона есть история, а у ноды, например, нет.

Ты можешь запускать как pythom3 test.p1 1> /dev/null 2>/dev/null

Это перенаправление обычного вывода(1) и вывода ошибок (2) в никуда. Тогда всё прекрасно работает. Ну или в файл сохранять.
459 1792302
>>792298

> pythom3 test.p1 1> /dev/null 2>/dev/null &


Ну и амперсант в конце, конечно
460 1792307
>>792298
Первый раз такое слышу.
Ну и тогда уж command > /dev/null 2>&1
461 1792364
twisted до сих пор актуален или хуйня ебаная? Какие есть альтернативы?
462 1792365
>>792364
asyncio
463 1792399
Кто-то юзал json validator на питохе? Можете в двух словах пояснить за него плиз.
464 1792408
>>792399

> json validator на питохе


Какой из этих двухсот?
465 1792426
>>792408

>schema

466 1792463
>>792365
А что в итоге лучше и почему?
467 1792688
>>792463
Оба все равно подвержены GIL, с asyncio нагляднее и чище код, вместо asyncio loop можно взять uvloop, синтаксис не поменяется
мимокрок
468 1792690
>>792202
Читай маны про systemd. Stdout интерпретатора можно направить в файл или же потом в journal посмотреть. Раньше советовали обертки или circus, но они банально устарели. Systemd довольно мощный инструмент.
469 1792693
>>792102

>За что мы любим Никиту Соболева — только он умеет писать на Питоне так, что хочется плакать и переходить на Джаву.



Мало того что он дрочит httpx, где майнтейнера сами советовали использовать взрослый aiohttp, так ещё и плодит всякую хуйню вместо кода. Httpx обратно совместим с requests, отсюда и проблемы. Хватит пинать хуи трупы уебищных синхронных либ. Исключение zeep, пушто вариантов больше нет. SOAP нынче не модно.
А так даже pysnmp легко заменяется хуяк-хуяк либой aiosnmp. Она простая, на asyncio и конечно же без yield и callback.
470 1792698
>>789076

Работаю питонистом уже 2 года. Вышки нет.
Начинал в регионе, в маленькой аутсорс-компании.
Сейчас в дс, в мыле.
Но недавно восстановился на заочку, чтобы таки получить корочку(будет легче заводить трактор)
471 1792699
>>791938
Если пишешь сервисы, то только линукс. Если у тебя шиндоус поставь WLS2. В продакшене будет или докер или AWS. Ты же понимаешь, что хуй ты спрячешь говнокод питоновский? Обфускация на уровне контейнера уже лучше.
472 1792701
>>792698
О, расскажи про tarantool. Как оно? Реально ноухаю или местный костыль?
473 1792722
>>792698
Чем конкретно занимаешься?
474 1792737
>>792219
>>792231
>>792264
>>792298
>>792690
Спасибки, вроде заработало.
475 1792744
>>792701
Не работал с ним сам.
Местным костылем бы не назвал, потому что его покупают(b2b) версию довольно крупные конторы.
Но, насколько знаю, развитие опенсорс-версии на какое-то заглохла. И только сейчас начинают его возобновлять
476 1792747
>>792722
деванон
477 1792770
>>792688

>Оба все равно подвержены GIL


Епт, а ниче что асинхронкам похуй на GIL? Мультитрединг/асинхронка это в принципе разные концепции конкурентного пограмирования
478 1792780
>>792770
А ничего что асинкио использует потоки и по факту при наличии GIL это всего лишь сахар?
479 1792801
>>792770
Пишешь из будущего, где пихон стал эталоном Энтерпрайза?
480 1792807
>>792780

>асинкио использует потоки


Что?
Асинкио использует epoll/select, это другой подход, чем потоки.
481 1792812
>>792693

>Никиту Соболева


Хех, а ведь я когда-то курсы от него смотрел - очень адектавно все объяснял
482 1792931
Если мне нужно воспользоваться только адной или парочкой функций из модуля, то будет плохой практикой полный импорт модуля?

Этот вариант говно же?
import statistics
statistics.mean(листнейм)

И лучше ведь этот вариант?
from statistics import mean
mean(листнейм)

Сильно ли эти два варианта отличаются в плане потребления "ресурсов"?
483 1792933
>>792931

>адной


одной
глупофикс
484 1792950
>>792931

>то будет плохой практикой полный импорт модуля?


Да. Особо ничего хорошо, если не нужно, то зачем его подгружать?!
485 1792960
>>792950
А что насчет памяти? Правда что будет больше памяти жрать?
486 1792988
>>792960
да, из за того, что таким образом ты имортируешь все объекты из модуля у каждого из которого свой вес, в отличии от поштучного где ты импортируешь всего один объект из модуля
487 1793010
>>792931
абсолютно одинаково

при импорте всегда происходит выполнения кода в модуле который импортируется
разница между этими подходами только что из этого импортируемого модуля попадет в текущее пространство имен.
488 1793012
>>793010
Т.е. анон выше не прав?
489 1793017
>>793012
не прав.

польза есть если у тебя условный импорт внутри if, ведь импорт может не произойти.
иначе разница только в засранности пространства имен модуля
490 1793021
>>793017
Спасибо анон. Просто я люблю импортировать с полным именем, чтобы понимать что к чему относится.
491 1793076
>>793017

>не прав


>>793010

>>при импорте всегда происходит выполнения кода в модуле который импортируется

492 1793081
>>793076
Все верно же
Анон, который не прав, пишет что есть разница в потреблении памяти.

Но ее нет.

При импорте происходит такой порядок действий
1 импортируемый модуль выполняется сверху вниз
2 по результатам его выполнения появляется загруженный в память модуль с аттрибутами (функции и т.д.). И он повисает в памяти навечно - потому второй импорт не вызывает повторного выполнения модуля.
3 что то из этого модуля добавляется в твое пространство имен как ссылка.
493 1793085
>>793081

>как ссылка


не как ссылка, а как объект в памяти
494 1793087
>>793085

>а как объект в памяти


шта?
495 1793092
>>793087
Если надо объяснять, то не надо объяснять
496 1793101
>>793092
Ясно все с твоей аргументацией
497 1793104
>>792426
Ну чо пояснять, есть стандарт, это реализация стандарта. Валидатор сам описывается жсоном. Питонячая реализация вполне качественная и расширяемая, приспособить для сваггера можно.
498 1793105
Пагни, как держать себя в форме в плане алгоритмов? На работе понятное дело с ними почти не встречаюсь, для интервью подтянулся, устроился на работу, вот спустя почти два года снова начал готовиться к интервью и я просто охуел насколько просели мои знания и способности решать даже элементарные вещи.
499 1793108
>>793104
Чем отличается от обочного requests тогда? Удобством?
500 1793111
>>792463
Если коротко, то лучше го. В целом что на твистеде, что на торнаде, что на асинкио можно делать успешные проекты. Но асинкио в последние годы развивался куда более интенсивно, и он архитектурно правильнее, не нужно манкипатчить всю стандартную библиотеку. Вроде бы ещё он быстрее, так как там оптимизировали переключения в корутинах.

> подвержены GIL


Чёт орнул. Асинхронное приложение по определению не занимается суровыми вычислениями, там только перекладывание между потоками IO.
501 1793116
>>792102
Этот чел очень упорот на всяких линтерах и чекерах. Ему уже кто только не говорил что надо язык менять. Но видимо жлобность галерного погонщика не даёт просто так заплатить за другой язык больше. Хочется и дёшево и красиво.
502 1793117
>>793108
Ну это как спросить чем отличается солнце от самосвала.
503 1793119
>>793105

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


Чем же ты таким на работе занимался? Траву красил?
504 1793123
>>793111

>Советует Go, заточенный под мультядерные системы


>Ну там ток I/O )))))) GIL норм)))

505 1793133
>>793123
Хуйня. Питонов можно несколько запустить, если уж так хочется пригрузить проц. Про GIL пишут в основном клинические перфекционисты, для которых гил это такой вселенский фатальный недостаток, хотя на практике ой как сложно в него упереться, если ты занимаешься не вычислениями или играми. Тащемта даже это решается экстеншенами на си/цитоне, там можно отпускать гил, к примеру так делает numpy.

Го советую потому что он щас модный, и асинки это его киллер фича. Что-то такое, несложное, обслуживающее вебсокеты — самое оно.
506 1793141
Сап
Подскажите в чем может быть проблема.
Приложеньку на flask упаковываю в докер-контейнер. Не накатываются миграции.
Использую Flask-Migrate, sqlite3

заранее создал миграции с помощью
flask db init
flask db migrate

В самом Dockerfile есть следующие строчки
...
ENV FLASK_APP flask_app.py
RUN flask db upgrade
ENTRYPOINT FLASK_ENV=development flask run --host 0.0.0.0
...

Никаких ошибок не происходит, но при этом файл базы не создается, миграции не применяются.
507 1793142
>>793133

>хотя на практике ой как сложно в него упереться


мне бы ваше счастье.

а го говно примитивное
508 1793148
Кто пишет блять все эти книги типа пок пок пишем игры на питухоне?
На нем вообще пишут игры, кроме карт на раздевание и хентай-новелок?
509 1793149
>>793141
Ошибся.
Файл - создается
Миграция - не накатывается
510 1793155
>>793142

> мне бы ваше счастье


Расскажи о своём опыте, очень интересно.
511 1793156
>>793133

>Го советую потому что он щас модный


Курсы по 18500 продаешь или дващерам скидки?

Го вообще под другие задачи был создан, как и Rust. Вернее так: были конкретные задачи, для которых не было готового инструмента или он не отвечал требованиям бизнеса.
И фишка Го нихуя не горутины, а как раз таки возможность загрузить мультипроцессорную железку. Это как сказать что фишка JS это минимальный вес кода.
Lua был создан под конкретные задачи, Java пилили под задачи Сириус бизнеса, Раст пилили под задачи Mozilla, Питон же сначала изрыгнули as is, потом на пике популярность вышли талмуды PEP "бля, а чо так сделали? Теперь надо переделать, вот теперь заебись". Twisted же тоже не просто так появился.
Сейчас в opensource дохуя всего, что было сделано для внутреннего использования. Но бывает "первая доза бесплатно". Это просто к слову, вспомнилось что-то.
512 1793157
>>793148
Смотря что для тебя игры. Киберпанк и крузис точно не на питоне. Книги согласен, скорее вводят в заблуждение, для игор надо C++ или шарп, или жабу если фанат майнкрафта. Хотя наебенить прототип можно и на питоне.
513 1793158
>>793155
а что тут необычного. это в примитивных вещах пришел запрос в базусходит и выдал
а если что то нужно с данными еще делать, а то и вообще бд нет, то проц занят.
514 1793161
>>793156
Что сказать-то хотел? Бизнес какой-то, доза, какие-то задачи мозилла. Это какие интересно были задачи у мозиллы? Раст же пет проектом был.

> возможность загрузить мультипроцессорную железку


Такое можно делать на чём угодно, даже на питоне.

> фишка Го нихуя не горутины


А что тогда? Или давай иначе, кому нахер всрался го без горутин?
515 1793162
>>793161

>Такое можно делать на чём угодно, даже на питоне


мимокрок, но будем честными - на питоне не очень удобно ядра загружать
не для всех задач подходит
516 1793164
>>793158

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


Ты каким местом читал мои посты? И второе, ну понятно масштабировать вертикально из-за гил сложно, а горизонтально пробовал?

> это в примитивных вещах


Как ты легко IO-bound приложения в хелловорлды записал.
517 1793165
>>793148
Изучение алгоритмов, фреймворков. Просто один из возможных подходов. Дохуя чего можно написать нативно на bash/powershell и не ебать мозги ещё одним скриптовым языком.
Не знаю, каждый выбирает инструмент который ему подходит. Если ты про могильную разработку лучше сразу на Котлин, JVM из коробки. Jython мертв, в roadmap даже 3.6/3.7 не маячит.
Питон как и Node для легковесных решений или же ML. У других либо цирк с реализацией, либо просто нет.
Возможно ли подогнать структуру кода до уровня Энтерпрайза? Как нехуй делать. Будут ли решения зависеть от 1.5 мейнтейнера - шансы очень велики.

Тебе шашечки или ехать? Java Core - 1 год, Котлин ещё один, а в Питоне за год можно что-то уже сдавать и отрефакторить. Работать будет в любом случае.
518 1793166
>>793162
Расскажи для каких не подходит.
519 1793167
>>793157
Я к тому, что игр на питоне не существует. 99% из существующих - это детские поделки на готовом движке для вн - ренпи. Поэтому мне интересно, нахуя такие книги пишут inb4 чтобы заработать лавандос на дебилах. Ну ведь реально, язык для этого не подходит, у него нет ни малейшей ниши в геймдеве, нет хороших примеров, нет инструментов для этого. Про майнкрафт и джаву - это не благодаря языку, а скорее вопреки.
520 1793168
>>793161

>Пет проект


>Software you know and love, like Firefox, Dropbox, and Cloudflare, uses Rust.


Прост чуваки в свободное время пилили, портфолио на ГитХаб забивали, ага.
521 1793170
>>793166
была у меня задача поиска дублей видео в сотнях тыщ
сделал отпечатки и нужно было сравнивать каждый с каждым

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

после оптимизаций обхода и сишного кода вычисления расхождения обход на питоне занимал 5 часов

на шарпе все оказалось просто и в плане памяти и скорости и проход на шарпе 4 минуты (на моей машине конечно)
522 1793175
>>793170
И от чего такое расхождение, на чём просадка производительности у питона?

Вообще не вижу проблему с данными, если надо сравнивать все со всеми, то есть надо сделать N^2/2 сравнений. Тривиально масштабируемая задача.

Но надо полагать, что основной ресурс съедает сравнение одного видео и другого. Там какая-то специальная либа для этого или что?
523 1793181
>>793167

> нет хороших примеров, нет инструментов для этого


Вот здесь в точечку. Ну хотя блендер есть. Книги наверное могут быть полезны для тех кто знает питон и боится крестов.
524 1793184
>>793175

>И от чего такое расхождение,


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

>сравнение одного видео и другого


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

ключевое слово МУДРИТЬ. Для питониста, который знает только питон, нет выхода и он считает такую еблю вприсядку необходимым злом
у меня же пукан горит от того как приходится танцевать в питоне
525 1793185
>>793170

> обход на питоне занимал 5 часов


> проход на шарпе 4 минуты


О, это очередной феномен переписали с технологии XX на технологию YY, и сразу стало хорошо. И конечно же это заслуга технологии YY, а то что мы всё переписали и заново осознали проект, этого не было.
526 1793186
>>793184

> такой огромный список между процессами


Есть очереди, есть раунд робин. Можешь хоть в файл написать чё кому сравнивать. Очереди на процесспулах делаются супер изи.

> ключевое слово МУДРИТЬ. Для питониста, который знает только питон, нет выхода и он считает такую еблю вприсядку необходимым злом


Кек. Во всём виноват конечно же гил. Даже в том что ты не знаешь питон. Если ты так хорошо пишешь на шарпе, зачем ты начал делать это на питоне?
527 1793188
>>793185
Замечание не в тему

Этот феномен прост
В шарпе нет GIL
А значит нет необходимости рождать процессы
А значит нет проблемы эффективно и просто шарить дааные между ними
И нет проблемы эффективной коммуникации между ними
528 1793189
>>793175

>И от чего такое расхождение, на чём просадка производительности у питона?


У питона нет нормальной многопоточности. Чтобы использовать несколько ядер надо создавать процессы, а у каждого процесса своя виртуальная память. На линуксе питон создает новые процессы через fork и данные для чтения копировать не нужно. На винде такого нет и данные будут копироваться всегда. Вдобавок, что на винде что на линуксе по любому придется копировать назад результат. Если результат большой (например, картинка), то копирование его назад может убить всю производительность. В таком случае единственный вариант - переписывать кусок кода на крестах.
529 1793205
>>793186

>Есть очереди


эффективность у них слабовата чтобы решать задачу "в лоб"

>Очереди на процесспулах делаются супер изи


изи. но скорость не сравнить

> Если ты так хорошо пишешь на шарпе, зачем ты начал делать это на питоне?


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

>Во всём виноват конечно же гил.


а кто еще? кто еще заставляет вместо потоков использовать процессы? Подключение файлов == просадки по скорости. Можно минимизировать чтение запись если подумать
но это уже не стыкуется с "изи".
530 1793206
>>793175

>шарить данные между процессами медленно


в 3.8 подвезли
https://docs.python.org/3/library/multiprocessing.shared_memory.html
531 1793211
>>793189
Зачем тебе на лету создавать и прибивать постоянно процессы?

Ты делаешь несколько процессов-воркеров и между ними распределяешь задания, и всё.

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

На воркеры в любом случае лучше переходить, так ты делаешь архитектуру, которую элементарно масштабировать на кластер. Треды ты на кластер, само собой, масштабировать не сможешь.
532 1793231
Я вообще не понимаю о чем спор. Понятно же, что с настоящими потоками легко и просто параллельно обрабатывать данные (и не только параллельно, а и влияя друг на друга). А с процессами приходится городить костыли, потому что это процессы. Тут даже не нужно пробовать там и там. Это очевидно

И там и там можно жить, но степень удобства различается в разы.
И чем больше задача требует коммуникации между потоками, тем хуже все в процессах.
533 1793233
>>793211

>Ты делаешь несколько процессов-воркеров и между ними распределяешь задания, и всё.


У каждого воркера своя память. Мне, например, нужно было декодировать с огромной скоростью картинки и использовать их в основном процессе. Каждую картинку питон копировал сначала в процесс воркера, а потом назад в основной процесс, что занимало 90% времени. При использовании потоков такой хуйни бы не было.
534 1793238
>>793205
Как-то мутно это всё. Уверен что ты там что-то не так делал. Ну да, трединг позволяет не копировать ничего между процессами, но это нужно в основном игроделам каким-нибудь, у которых только ну никак неделимый стейт.
535 1793247
>>793233
Почему нельзя картинку взять сразу в воркере? Зачем её прогружать в мастере? Судя по всему у тебя мастер как-то агрегировал эти картинки. Мог ли воркер сделать частичную агрегацию на своей стороне, а потом отдать только результат для финального мержа?
536 1793249
При случае можно перекатиться:
>>1793243 (OP)
>>1793243 (OP)
>>1793243 (OP)
>>1793243 (OP)
537 1793252
>>793233

> что занимало 90% времени


Может у тебя там сериализация тормозила? Или мастер тупил. Ну реально, звучит как хуета что оперативка не справляется с копированием.
538 1793272
539 1793299
>>793117
В смысле? Я делаю запрос реквеста и потом в ручную парсю джесон и делаю валидацию. Или использую готовую библиотеку.
Вот и спрашиваю, какая разница?
540 1793301
>>793119
Пишу бэкенд. Но извини конечно я там задачи алгоритмов не решаю.
541 1837633
Привет, поможете с олимпиадной задачкой? Она не из какого-то курса, просто в будущем будет полезно знать как такое решать, да и просто интересно.

Юля любит слушать музыку через интернет сервис «Тындекс Музыка». Это очень удобно — огромное количество музыкальных композиций в прямой доступности. Но вот проблема, у Юли осталось совсем немного трафика мобильного интернета, а она обязательно хочет скачать ещё одну песню на внутреннюю память телефона.

Всего в плейлисте Юли — n песен. Какие-то уже скачаны, а какие-то — ещё нет. Каждая песня характеризуется так называемой «прЕкольностью». Так вот Юля хочет скачать одну, еще не скачанную, песню из своего плейлиста так, чтобы сумма «прЕкольностей» всех скачанных песен была максимально близка к заданному её настроением целому числу k.
Входные данные

Первая строка входных данных содержит два целых числа разделенных пробелом: n и k — количество песен в плейлисте и число заданное настроением Юли соответственно (1 ≤ n ≤ 1000,  - 109 ≤ k ≤ 109).

Последующие n строк содержат по два целых числа, разделённых пробелом: pi — «прЕкольность» i-й песни и di — статус закачки i-й песни: 0 — не скачана, 1 — скачана ( - 1000 ≤ pi ≤ 1000, 1 ≤ i ≤ n).

Гарантируется, что хотя бы одна песня в плейлисте не скачана.
Выходные данные

В единственной строке выходных данных требуется вывести два целых числа через пробел: максимально близкую к числу k сумму «прЕкольностей» скачанных песен, если скачать еще одну песню и «прЕкольность» этой скачанной песни.

Если существует несколько правильных ответов, то среди них требуется выбрать ответ с максимальной суммой «прЕкольностей».
Пример
Входные данные
4 1
1 0
2 0
3 0
4 1

Выходные данные
5 1

Сам я понял только то что
нужно найти ту песню, среди всех не скачанных, которая при сумме качества с остальными даст наибольшее приближенное значение это можно сделать перебором, сравнить каждую сумму с каждой нескачанной песней через цикл while и найти число, которое больше предыдущих, но <=k и поставить break
чтобы прервать цикл.
Заранее спасибо
541 1837633
Привет, поможете с олимпиадной задачкой? Она не из какого-то курса, просто в будущем будет полезно знать как такое решать, да и просто интересно.

Юля любит слушать музыку через интернет сервис «Тындекс Музыка». Это очень удобно — огромное количество музыкальных композиций в прямой доступности. Но вот проблема, у Юли осталось совсем немного трафика мобильного интернета, а она обязательно хочет скачать ещё одну песню на внутреннюю память телефона.

Всего в плейлисте Юли — n песен. Какие-то уже скачаны, а какие-то — ещё нет. Каждая песня характеризуется так называемой «прЕкольностью». Так вот Юля хочет скачать одну, еще не скачанную, песню из своего плейлиста так, чтобы сумма «прЕкольностей» всех скачанных песен была максимально близка к заданному её настроением целому числу k.
Входные данные

Первая строка входных данных содержит два целых числа разделенных пробелом: n и k — количество песен в плейлисте и число заданное настроением Юли соответственно (1 ≤ n ≤ 1000,  - 109 ≤ k ≤ 109).

Последующие n строк содержат по два целых числа, разделённых пробелом: pi — «прЕкольность» i-й песни и di — статус закачки i-й песни: 0 — не скачана, 1 — скачана ( - 1000 ≤ pi ≤ 1000, 1 ≤ i ≤ n).

Гарантируется, что хотя бы одна песня в плейлисте не скачана.
Выходные данные

В единственной строке выходных данных требуется вывести два целых числа через пробел: максимально близкую к числу k сумму «прЕкольностей» скачанных песен, если скачать еще одну песню и «прЕкольность» этой скачанной песни.

Если существует несколько правильных ответов, то среди них требуется выбрать ответ с максимальной суммой «прЕкольностей».
Пример
Входные данные
4 1
1 0
2 0
3 0
4 1

Выходные данные
5 1

Сам я понял только то что
нужно найти ту песню, среди всех не скачанных, которая при сумме качества с остальными даст наибольшее приближенное значение это можно сделать перебором, сравнить каждую сумму с каждой нескачанной песней через цикл while и найти число, которое больше предыдущих, но <=k и поставить break
чтобы прервать цикл.
Заранее спасибо
542 1837917
можно ли как-то создать рамки ввода? к примеру указать что a = input() меньше 10 и больше 1
Тред утонул или удален.
Это копия, сохраненная 16 марта 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски