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

Питон тред №98 /python/

 Аноним 25/08/20 Втр 04:24:17 #1 №1787217 
15977792511830.png
Тред, посвящённый языку программирования Питон, #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
Аноним 25/08/20 Втр 07:56:57 #2 №1787252 
Screenshot204.jpg
>>1787217 (OP)
пидорское видео на английском с бесполезным историческим погружением когда замените на нормальное руководство по асинкам?
Аноним 25/08/20 Втр 08:28:08 #3 №1787259 
image.png
>>1787217 (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 клиент на питоне.
Аноним 25/08/20 Втр 08:57:09 #4 №1787275 
>>1787259
Лучше не лезь туда без опыта, соснешь.
Сама рекапча это виртуальная машина, там какая-то хуйня крутится. Точно проверяются мышковые ивенты и история айпи - если он слишком запален или много раз подряд решает - то будет усложняться и насыпать ещё, много перепроверок для одного решения и т.д.
Короче, наебешься знатно, а хорошего решения не получишь. Хорошее решение рекапчи - обезьянки-решатели.
Аноним 25/08/20 Втр 10:59:26 #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:]
Аноним 25/08/20 Втр 11:22:46 #6 №1787368 
вкотился
Аноним 25/08/20 Втр 11:29:18 #7 №1787380 
>>1787275
>Лучше не лезь туда без опыта, соснешь.
Но опыт же где то набирать надо.

>Короче, наебешься знатно, а хорошего решения не получишь. Хорошее решение рекапчи - обезьянки-решатели.
Мне надо не решать её, а просто сделать РеКапча Виджет на Питоне, что бы решать её из своего приложения, а не из браузера.
Видимо придётся по красноглазить недельку другую, раз уж мне единственному такая идея в голову сбрела..
Аноним 25/08/20 Втр 12:12:22 #8 №1787454 
>>1787347
Это ты опять со своими чеками? Тебе же в прошлом треде все сделали, не?
Аноним 25/08/20 Втр 12:22:26 #9 №1787468 
>>1787454
Там не все помогли.Да и задание тут уже не с чеком.Входящими данными может быть любой текст, который должен переносится по лимиту символов.
Аноним 25/08/20 Втр 12:41:59 #10 №1787485 
>>1787468
>Там не все помогли
Вот же сволочи ленивые. Сейчас мы все исправим, братиш. Вот глянь сюда https://ideone.com/tSQeUv
Это заготовочка по переносу строк. Но надо чтобы ты точнее сформулировал правила переноса и что является серединой слова, потому что из тобою написанного ни черта не понятно что где обрезаем.
Аноним 25/08/20 Втр 12:58:23 #11 №1787509 
>>1787127 →
Анкету заполняешь высылают доступ к системе тестов https://school.hh.ru/
Аноним 25/08/20 Втр 13:37:37 #12 №1787545 
>>1787380
> раз уж мне единственному такая идея в голову сбрела..
Видел такую хуйню в какой-то качалке с файлопомоек, так они сделали экстеншен для браузера под рекапчу. Наверное, как раз чтобы не ебаться с жабаскриптом.
Аноним 25/08/20 Втр 14:01:55 #13 №1787575 
>>1787485
Ну смотри, по логике моего препода у нас есть какая-то строка.Эта функция считает количество символов, и если оно не превышает лимита то записываем полностью всю строку.Если заканчивается пробелом, то записываем до последнего пробела, а переносим уже все что после последнего пробела.В общем обрезаем по пробелу, и такого пункта как "середина слова" нет.
Аноним 25/08/20 Втр 14:12:44 #14 №1787591 
Хочу чтобы моя функция принимала только конкретные агрументы, а если аргументы не те = выдавала ошибку. Куда гуглить?
Аноним 25/08/20 Втр 14:30:23 #15 №1787611 
>>1787591
Просто проверяешь if и кидаешь ошибку, если не те данные на входе https://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python
Аноним 25/08/20 Втр 14:31:50 #16 №1787615 
>>1787575
Ты ленивый и тупой чёрт, за которого уже всё сделали и надо только марафет чуть-чуть навести.

Анон, какого хуя ты ему помогаешь? Пусть сам разбирается.
Аноним 25/08/20 Втр 14:39:09 #17 №1787633 
>>1786862 →
>hyper
выяснил что это тотальное говно.
мне просто нужно было воспроизвести ситуацию и она более-менее воспроизвелась в curl.

Оказывается, несмотря на отсутствие ограничений на размер URL в HTTP, на практике их дохуя в разных программах и в hyper тоже.
Аноним 25/08/20 Втр 14:39:46 #18 №1787635 
>>1787575
Как-то так: https://ideone.com/GKrsr7
>>1787591
Всё что смог придумать:
def f(a=None, b=None, kwargs):
assert len(kwargs) == 0, 'Чот хуйню подсунули'
Аноним 25/08/20 Втр 14:50:41 #19 №1787661 
>>1787633
aiohttp смотри, Client который.
Аноним 25/08/20 Втр 14:56:48 #20 №1787672 
>>1787591
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 (мог тут объебаться)

Аноним 25/08/20 Втр 15:01:25 #21 №1787675 
>>1787672
Мне не тип надо. Есть функция. Если её вызвать без аргумента или с аргументом "withBackUp", то она должна выполниться, делая бекап файла перед выполнением. Если же аргумент "withoutBackUp" - бекап не делать. Хочу сделать чтобы на любые другие аргументы была ошибка.
Аноним 25/08/20 Втр 15:05:16 #22 №1787678 
>>1787611
Блин, я так и делал, но у меня ВЫДАВАЛО ОШИБКУ)))))))). На самом деле он выдавал не ту ошибку. Теперь всё работает. Спасибо.
Аноним 25/08/20 Втр 15:08:51 #23 №1787681 
>>1787675
А если параметр hui, то чтобы вычислял длинну хуя.
Делаешь один дефолтный параметр backup=False, можно его кейвордом передать, всё.
Аноним 25/08/20 Втр 15:10:32 #24 №1787684 
>>1787635
Спасибо большое доброанон.Добра тебе.
Аноним 25/08/20 Втр 15:11:33 #25 №1787688 
>>1787675

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)

Я бы оставил проверку, банально для защиты функции.
Аноним 25/08/20 Втр 15:57:39 #26 №1787725 
изображение.png
Аноны, как я могу двигать объекты в html с flask беком? Речь идет о следующем:
Аноним 25/08/20 Втр 16:05:44 #27 №1787739 
>>1787725
объясни подробнее, задача непонятна
Аноним 25/08/20 Втр 16:11:30 #28 №1787746 
>>1787688
>else:
>print('Umadbruh?')
Няш, ну я не такой даун, чтобы про else/if спрашивать. Мне нужно чтобы интерпретатор слал нахуй, а не printом ругаться.
Аноним 25/08/20 Втр 16:11:31 #29 №1787747 
>>1787739
Существует 2 области на сайте, пользователь перетаскивает объект с одной области в другую. Что-то вроде kaiten'a.
Аноним 25/08/20 Втр 16:27:20 #30 №1787764 
>>1787746
Все же ты даун.

raise Exception('I am really stupid')
Аноним 25/08/20 Втр 16:28:07 #31 №1787766 
>>1787764
Ну что же ты обиделся то?
Аноним 25/08/20 Втр 16:39:27 #32 №1787777 
>>1787747
ну делаешь модель область
делаешь модель объект
делаешь ManyToMany
Аноним 25/08/20 Втр 17:39:20 #33 №1787836 
ELDOdnHWoAADubA.jpg
Какие подводные если сразу начать учить django скипая любой учебник по python ?
Аноним 25/08/20 Втр 17:43:02 #34 №1787839 
>>1787836
Никаких. Быстрее осилишь джангу - быстрее возьмут сразу синьором-помидором и будешь на галере руководить.

>>1787766
потому что можно загуглить как кидать ошибки интерпретатору?
Аноним 25/08/20 Втр 17:49:56 #35 №1787842 
>>1787777
Вот только достаточно было бы взять библиотеку JS чтобы не городить костыли.
Аноним 25/08/20 Втр 19:04:45 #36 №1787901 
>>1787842
Пишу чисто ради гита
Аноним 25/08/20 Втр 19:08:35 #37 №1787907 
>>1787901
а он что?
Аноним 25/08/20 Втр 19:09:21 #38 №1787910 
>>1787907
Он потом пихается в резюме на джуна
Аноним 25/08/20 Втр 19:10:22 #39 №1787913 
>>1787910
ну так учи сам (говно)гит раз уж очень надо
писать что то ради гита - не понимаю
Аноним 25/08/20 Втр 19:13:19 #40 №1787917 
>>1787913
для гитхаба
Аноним 25/08/20 Втр 19:14:55 #41 №1787922 
>>1787917
дякую боже шо я юзаю гитхаб без гита
Аноним 25/08/20 Втр 19:19:55 #42 №1787932 
>>1787901
Ну ок, правда читал в антипаттернах проблему Uber, когда была дырка в HTML шаблонах, и можно было инъекцию сделать в бэке в базу.
Приложение Vue можно на NodeJS запускать вообще отдельно.
Аноним 25/08/20 Втр 19:23:04 #43 №1787939 
>>1787932
>Приложение Vue можно на NodeJS запускать вообще отдельно.
Ну это дополнительные проблемы добавляются, а писать хуйню тоже не хочется. Тогда такую страницу не стоит клепать для резюме?
Аноним 25/08/20 Втр 19:25:55 #44 №1787942 
>>1787939
Для резюме делай конечно. Чем больше покажешь тем лучше.

Какие проблемы? Команда фронтэнда занимается своим куском, ты своим.
Аноним 25/08/20 Втр 19:28:23 #45 №1787946 
>>1787942
>Какие проблемы?
Я бы спокойно бэк прописал. Представил бы все задачи как элементы в списке либо словаре, и прописал бы отдельно функции... Но все это дрочиво с фронтом. Стоит ли это все вылизывать?
Аноним 25/08/20 Втр 19:31:45 #46 №1787949 
>>1787946
Фронт на клиенте все отрабатывает, а тут у тебя только бэк занят.
Ну и фуллстак пихон + JS курсы все с vue/react/angular. Шаблонизаторы это не про оптимизацию.
Аноним 25/08/20 Втр 19:33:55 #47 №1787952 
>>1787836
Никаких. Что с книжкой, что без на работу тебя не возьмут один хуй.
Аноним 25/08/20 Втр 19:35:36 #48 №1787953 
>>1787836
С таким подходом ты выучишь очень поверхностно, будешь как шаман делать обряды, не зная как оно на самом деле работает.
Любой вопрос на собесе в сторону - и тоби пизда.
Аноним 25/08/20 Втр 19:35:47 #49 №1787954 
>>1787949
Попробую
Аноним 25/08/20 Втр 19:40:46 #50 №1787965 
>>1787954
Я начал с бэков, теперь хочется в ML двигаться. Там и вилка лучше, намного лучше. Да и удаленок больше.
Курсов и книг сейчас дофига.

Аноним 25/08/20 Втр 19:43:10 #51 №1787967 
>>1787965
Понимаю что джун пайтон удаленка сейчас оочень трудно найти, но думаю не смогу быстро пересесть на ML и вкатиться.
Аноним 25/08/20 Втр 21:09:16 #52 №1788023 
image.png
https://www.ictshore.com/python/python-ping-tutorial/

Аноны, поясните тупому, недавно вкатился, хочу написать одну хуйню с помощью Python Ping. Но то ли у меня с английским хуже чем я думал, то ли в основах питона я еще не совсем разобрался. Вот часть из этой ссылки под заголовком "Working with the return values". Там сказано, что ping возвращает некий респонс лист. А как его достать, чтобы дальше в рамках проги с ним работать? Переменной просто нельзя присвоить этот респонс лист. В консоли-то оно работает, но мне нужно достать собсна сами цифры пинга и потом с ними всякую хуйню творить, считать среднее за много запросов, строить графики и т.д.
В гугле все в основном просто проверяют отвечает ли сервер на пинг, т.е. им тру/фолс достаточно, либо делают как-то сложно через сабпроцессы и т.д.
Аноним 25/08/20 Втр 21:11:53 #53 №1788027 
чем отличается питоновский декоратор от паттерна декоратор, я где-то читал што есть различие, в двух словах в чем различие?
Аноним 25/08/20 Втр 21:19:35 #54 №1788030 
>>1788023
Лол, забавно бывает, стоит спросить где-то и потом к тебе приходит решение, над которым ты 4 часа бился и тупил, я такой слепой.
Аноним 25/08/20 Втр 21:40:04 #55 №1788040 
Сап питонач. Подскажите, есть какое-то простой способ заставить триггериться твою прогу каждую секунду на протяжении n секунд от запуска? https://stackoverflow.com/questions/3393612/run-certain-code-every-n-seconds Видел всякие такие запросы, но тут уже всякие многопоточные вещи используются из трединга, которые для двухнедельного вкатыша выглядят страшно, может есть что-то простенькое?
Аноним 25/08/20 Втр 21:50:02 #56 №1788046 
>>1788027
академический паттерн декоратор оборачивает и вклинивается в доступ к оборачиваемому элементу
а питоновский декоратор делает все на свете, а не только враппер над функцией
Аноним 25/08/20 Втр 21:54:39 #57 №1788048 
аноны, если я в коде сначала дам дохуя данных, а потом просто сотру их следующим образом: a='', прога не будет жрать память?
Аноним 25/08/20 Втр 22:03:54 #58 №1788052 
>>1788040
cron или while True:. В переменной складываешь последнее время сработает через timestamp, чекаешь время и выполняешь задачи, обновляешь переменную.
Аноним 25/08/20 Втр 22:06:06 #59 №1788054 
>>1788048
Garbage Collector все за тебя делает. Что хранить? Зачем? Откуда утечка?
Аноним 25/08/20 Втр 22:42:05 #60 №1788069 
>>1788030
Какая была проблема и какое решение? Никто не будет читать твои простыни же, бро.
>пример
Проблема: Нужно запилить пинг для пары серваков и оформить в ХМЛ репорт
Аноним 25/08/20 Втр 22:46:47 #61 №1788073 
>>1788052
Спасибо, уже сделал через time.sleep
Ваши варианты оптимизациисокращения кода при сохранении текущего вывода данных. Аноним 25/08/20 Втр 23:05:30 #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
Аноним 25/08/20 Втр 23:05:53 #63 №1788087 
>>1787217 (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 циклов
Аноним 25/08/20 Втр 23:06:04 #64 №1788088 
>>1788086
бля блоки проебались
Аноним 25/08/20 Втр 23:20:44 #65 №1788097 
>>1788088
List append() как минимум.
If len(contact_names) == 0:
print...

for name in contact_names

Почитай доки пожалуйста. Говнокод у тебя. Чтобы было наглядно раздели на функции. А так макарон на одна большая. Сам же запутаешься.
Аноним 25/08/20 Втр 23:21:34 #66 №1788100 
>>1788087
Ищи пакет elevate
Аноним 25/08/20 Втр 23:41:57 #67 №1788119 
>>1788087
Да, на месте пользования не стоит python, поэтому запускаю через сгенереный дома exe файл, возможности просто запустить cmd от админа и ввести python my_file.py нет
Аноним 25/08/20 Втр 23:50:47 #68 №1788123 
>>1788086
Индус, ты?
Аноним 26/08/20 Срд 00:16:39 #69 №1788141 
Аноны что у вас было на гитхабе, когда устроились на работу и сильно ли это повлияло
Аноним 26/08/20 Срд 00:28:17 #70 №1788149 
>>1788119
Так собери манифест или запусти exe от админа. Elevate в случае шиндоуса 50/50
Аноним 26/08/20 Срд 00:30:15 #71 №1788150 
>>1788086
ой пиздец пиздец, ты каких то методов понабрался и воротишь просто ёбаныйрот... Наверни ещё курсов.
Аноним 26/08/20 Срд 00:44:16 #72 №1788157 
>>1788097
>>1788123
>>1788150
Кек. Да я 5 день учу питон. До этого вообще не знал, что такое программирование. Просто почувствовал, что задачка должна решаться проще.
Аноним 26/08/20 Срд 00:52:52 #73 №1788165 
>>1788157
Зачем сюда что-то постить, если ты учишь питон 5 дней?! Очевидно, что всем похуй.
Аноним 26/08/20 Срд 00:59:42 #74 №1788172 
>>1788165
Это же элементарно. На борде любой может выложить говна на всеобщее обозрение и каждый мимокрок его занюхнёт. Ты просто оказался этим мимокроком.
Аноним 26/08/20 Срд 03:07:43 #75 №1788229 
>>1788141
Ничего. Никак.
Был опыт с прошлых мест работы, все. На вопрос "пилили пет-проекты?" ответил, что нет, я вне работы этой хуйней не занимаюсь.
Аноним 26/08/20 Срд 03:42:13 #76 №1788234 
Блядский имгур не хочет принимать мою мобилку при регистрации. Какой хостинг посоветуете, чтобы было максимальное простое api для вкатыша? мне чисто несколько картинок в проге загрузить.
Аноним 26/08/20 Срд 09:31:42 #77 №1788366 
>>1788119
Напиши на powershell и не страдай
Аноним 26/08/20 Срд 09:42:29 #78 №1788398 
если мне нужно на другой пеке запустить скрипт, где хуй знает какой питон и вообще есть ли он, и я не собираюсь делать промышленное решение, норм тема копировать туда venv и запустить батником с указанным путем до .exe?
а то почитал про всякие паковщики для винды - там ебаная муть, мне пока лень разбираться
Аноним 26/08/20 Срд 09:46:56 #79 №1788408 
>>1788234
Google Photo
Аноним 26/08/20 Срд 09:48:59 #80 №1788411 
>>1788398
>лень
Ну и иди нахуй тогда? На SO разжеваны все варианты.
Аноним 26/08/20 Срд 10:13:50 #81 №1788442 
>>1788398
>>1788366
Аноним 26/08/20 Срд 10:23:46 #82 №1788451 
>>1788442
Чем запуск скрипта с рядом лежащим окружением на повершелле отличается от батника?
Аноним 26/08/20 Срд 10:30:40 #83 №1788455 
>>1788451
Powershell не для запуска скрипта из окружения. Просто берешь и без задней мысли переписываешь скрипт на powershell. И ни питон, ни окружение не нужны.
Аноним 26/08/20 Срд 10:32:28 #84 №1788459 
>>1788455
>Напиши на powershell
>не страдай
Как это сделать? Умереть в процессе?
Аноним 26/08/20 Срд 12:10:12 #85 №1788544 
>>1788046
https://refactoring.guru/ru/design-patterns/decorator/python/example#example-0--main-py
ну вот пример академического паттерна, отличие в том что питоновский декоратор может менять поведение объехта, так как всё объекты, а академический паттерн общий шаблон?
Аноним 26/08/20 Срд 12:56:33 #86 №1788579 
>>1788544

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

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

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

так что питоновский декоратор не имеет ничего общего с паттерном "декоратор". Ну разве что он может создать обертку (как частный случай)
Аноним 26/08/20 Срд 12:57:35 #87 №1788580 
>>1788451
анальными ограничениями с политикой запуска.
Аноним 26/08/20 Срд 13:13:44 #88 №1788591 
>>1788544
В общем в декоратор передается декорируемый объект и что вернет декоратор - то и попадет в пространство имен. А декоратор внутри себя может сделать что хочет и вернуть что хочет. В декоратор может уйти функция, а вернется int и будет у тебя int переменная в итоге.
Бесполезно, но главное суть
Аноним 26/08/20 Срд 14:04:34 #89 №1788659 
>>1788579
>>1788591
Всё, разобралс, не хватало примеров, спасибо
Аноним 26/08/20 Срд 14:25:45 #90 №1788686 
Двач, помоги, есть у меня в папке файл с .мп4 расширением и я его хочу переименоать с
return os.rename('.mp4', url[-10:]+'.mp4')
Как мне прописать нормальное регулярное выражение в '
.mp4' и не качать лишние модули. Так и не понял просто как регулярки в самом питоне работают
Аноним 26/08/20 Срд 14:32:44 #91 №1788698 
>>1788686
В питоне регулярки не часть языка, они сидят в искаробочной либе re.
Аноним 26/08/20 Срд 14:40:06 #92 №1788707 
>>1788686
Тебе надо ренейм вызвать для всех файлов, заканчивающихся на mp4?
Ренейм же вроде один файл/директорию переименовывает, нет? Мне лень смотреть.
В цикле наиграй список файлов, проверь что заканчивается на mp4 через какой-нибудь endswith или регуляркой типа .*\.mp4$, потом ренейм.
Либо я не понял что-то.
Аноним 26/08/20 Срд 14:43:37 #93 №1788713 
>>1788707
Я хочу удалять файл после переименования, просто я скачиваю его и мне нужно знать точное название из его url, поэтому я хочу просто использовать регулярнку на 1 файл, кто-нибудь может мне подсказать что мне нужно запихнуть в '.mp4', я не понимаю, ибо r'.mp4$' не работает
Аноним 26/08/20 Срд 14:45:33 #94 №1788716 
>>1788713
str = re.sub(r'regex', 'replace', str)
Аноним 26/08/20 Срд 15:02:20 #95 №1788741 
Если кому-то понадобится, то по итогу самым удобным оказалось таккое использовать:
return os.rename(glob.glob("*.mp4")[0], url[-10:]+'.mp4')
Аноним 26/08/20 Срд 15:04:01 #96 №1788744 
> glob.glob("*.mp4")[0]
ебать норкоман
Аноним 26/08/20 Срд 15:12:45 #97 №1788754 
>>1788744
a = []
b = [[], []]

bool(a) # False
bool(b) # True
Почему bool(b) True?
Аноним 26/08/20 Срд 15:13:31 #98 №1788756 
>>1788754
Потому что пустой список кастуется в фолс, а б уже не пустой список.
Аноним 26/08/20 Срд 15:16:05 #99 №1788760 
>>1788756
а, точно, вот я слоупок
Аноним 26/08/20 Срд 15:29:40 #100 №1788765 
Можно ли писать return await handler(request) ?
Аноним 26/08/20 Срд 16:36:24 #101 №1788835 
IMG20200826163508.jpg
Кто это, блять?
Почему мне его постоянно показывает Яндекс?
Аноним 26/08/20 Срд 17:16:51 #102 №1788898 
>>1788765
почему нет?
Аноним 26/08/20 Срд 17:18:03 #103 №1788901 
в реализациях Jython (java) и IronPython (С#) нет GIL потому что они созданы поверх других VM? и они уже берут потоки из их реализаций, тогда как там устроены потоки и почему GIL там нет?
Аноним 26/08/20 Срд 17:18:51 #104 №1788903 
>>1788901
имею ввиду что java/net не имеет подобного механизма
Аноним 26/08/20 Срд 17:20:01 #105 №1788904 
>>1788901
>в реализациях Jython (java) и IronPython (С#) нет GIL потому что они созданы поверх других VM?
Да, но это заброшенное говно мамонта, которое контрибьютит 2.5 компании
Аноним 26/08/20 Срд 17:24:26 #106 №1788908 
>>1788904
согласен, меня больше интересует краткая информация как допустим реализована многопоточность без GIL, хотя я только ща сформулировал свой вопрос который меня интересовал, пойду гуглить, хотя если кто-то бросит инфу типо таблицу сравнения мб, буду благодарен
Аноним 26/08/20 Срд 17:38:57 #107 №1788916 
>>1788908

У жявы встроенный в рантайм жид машины механизм monitor есть.
Аноним 26/08/20 Срд 17:41:06 #108 №1788918 
>>1788908

У жавы и шарпа в каждый объект встроен невидимый мутекс.
Аноним 26/08/20 Срд 17:53:21 #109 №1788928 
>>1788916
>>1788918
В javasсripte же GIL-подобный механизм?
Аноним 26/08/20 Срд 17:56:16 #110 №1788932 
>>1788172
Ты ещё и токс.. Пиздуй на курсы
Аноним 26/08/20 Срд 18:02:09 #111 №1788942 
>>1788908
>многопоточность без GIL
Для начала там GC работает по иному принципу, а не по инкременту/декременту счетчика ссылок
В ЖС тоже многопоточности как таковой нет, но асинхронка там тащит
Аноним 26/08/20 Срд 18:05:43 #112 №1788945 
>>1788942
есть ссылочки почитать?
Аноним 26/08/20 Срд 18:11:21 #113 №1788946 
>>1788765
Можно, экономишь байты. Потом правда можешь запутаться
Аноним 26/08/20 Срд 18:22:28 #114 №1788952 
Аноны, что следует подучить для стека на джуна, в данный момент Django/Aiohttp, Celery, Docker, SQL (MySQL), Redis, RabbitMQ
Аноним 26/08/20 Срд 18:24:44 #115 №1788954 
>>1788952
+фронт (верстка и ванильный жс хотя бы)
+Postgres
Аноним 26/08/20 Срд 18:25:09 #116 №1788955 
>>1788908
нашёл себе норм материал покрывающий большую часть моих вопросов о gil, linux, потоках, сравнениях, на скорости х2 зоебис идет
https://www.youtube.com/watch?v=AWX4JnAnjBE
Аноним 26/08/20 Срд 18:26:15 #117 №1788956 
>>1788954
что нужно знать о postgres джуну? типо пояснить за индексы? типы данных?
мимокрокодил
Аноним 26/08/20 Срд 18:28:13 #118 №1788957 
>>1788928

https://blog.bitsrc.io/understanding-asynchronous-javascript-the-event-loop-74cd408419ff?gi=e3d302053682#:~:text=JavaScript%20is%20a%20single-threaded,can%20happen%20at%20a%20time.&text=That's%20where%20asynchronous%20JavaScript%20comes,without%20blocking%20the%20main%20thread.
Аноним 26/08/20 Срд 18:28:38 #119 №1788958 
>>1788956
Базовые макакские операции:
работа с консолью - создание/менеджмент юзеров, обычные sql-query
работа с pgadmin
понимание индексов, constraints и возможно views
Аноним 26/08/20 Срд 18:28:41 #120 №1788959 
кто-нибудь проходит?
https://fintech.tinkoff.ru/study/fintech_middle/sre_in_it/
Аноним 26/08/20 Срд 18:29:27 #121 №1788962 
>>1788958
Все есть в оф документации (кроме pgadmin возможно), даже pdf скачать можно
Аноним 26/08/20 Срд 18:32:17 #122 №1788967 
>>1788954
Ну немного с ванильным ЖСом знаком + на Vue с каким-нибудь Vuetify в принципе смогу сверстать сайт, просто не подумал что стоит указать к питон-скилам.
>+Postgres
Основное же в принципе как в MySQL кроме наворотов постгреса, но спасибо, подучу тогда еще
Аноним 26/08/20 Срд 18:33:02 #123 №1788970 
>>1788967
> стоит указать к питон-скилам.
asyncio. модно молодежно
Аноним 26/08/20 Срд 18:34:17 #124 №1788972 
>>1788970
>asyncio
Не о чем. Это фреймворк-каркас. Асинхронка строится поверх него. Лучше указывать aiohttp, tornado или fastapi
Аноним 26/08/20 Срд 18:34:54 #125 №1788974 
изображение.png
>>1788959
звучит громко также как и web 2.0 скатилса
но переделывать никто конечно же не будет
Аноним 26/08/20 Срд 18:40:19 #126 №1788977 
>>1788972
ну да. я про то что нужно указать чистое асинкиошное типа "подвержен современным веяниям", а не "люблю динозавров"
потому не торнадо, но фастапи
Аноним 26/08/20 Срд 20:20:30 #127 №1789028 
>>1788959
Там же с 15 сентября. И явно будет топить за родной GoLang и Java.
Аноним 26/08/20 Срд 20:21:33 #128 №1789029 
>>1788977
Ну так можно ещё и сказать, что 3.5 говно, пойду только если 3.7+, лол.
Аноним 26/08/20 Срд 20:25:47 #129 №1789031 
>>1789028
там отборочные завтра заканчиваются
Аноним 26/08/20 Срд 21:13:15 #130 №1789076 
Аноны, кто работает питон разработчиком и не фрилансит, а именно полноценно, расскажи, есть у вас техническая вышка или нет? Интересно, какой примерно % таких, насколько это требуется (можно конечно спросить в работа треде, но пограмист программисту рознь, раз уж я начал питон учить, хочется и ответ получить именно от питонистов)
лох 26/08/20 Срд 21:37:22 #131 №1789090 
Пацанессы, где обрабатываете ошибки бизнес логики из интеракторов? Во вьюхах ловите или в глобальном хенделере транслируете в API исключения?
Аноним 26/08/20 Срд 22:15:19 #132 №1789120 
>>1789076
> есть у вас техническая вышка
Ну, я начал работать когда остался в компании после практики на третьем курсе. Так что тут ответить даже не знаю как, нужна не нужна вышка. По тому что я смотрел и знаю, питон самый доступный (ну, может второй после JS) для вката без вышки. Правда большинство компаний все равно страхуются, непонятно зачем, и берут только людей с вышкой. Поэтому все равно стоит внимательно следить за вакансиями, ну и потому что язык хайпует, то часто это выливается в какие-то крутые ХАКА-МАРА-ФОНО-ТОНЫ с отбором в виде череды тестовых заданий где "20 лучшим предложат работу в такой-то компании".
Аноним 26/08/20 Срд 22:23:20 #133 №1789131 
>>1789076
Я магистр по радиотехнике из питерского Политеха. И что? По специальности я мог лишь перекатываться в байтоебство на МК и ПЛИСинах (причем учил я по большей степени это все сам, таких пар у нас не было)
Из курса универа конкретно мне помогли лишь пары товарища Синепола про сети, все остальное я учил сам
Аноним 26/08/20 Срд 22:25:45 #134 №1789133 
>>1789131
а я магистр йоба
Аноним 26/08/20 Срд 23:01:26 #135 №1789152 
>>1789029
а че сразу лол. то что всегда на острие современного тоже ценят кое где
Аноним 26/08/20 Срд 23:16:09 #136 №1789174 
>>1789152
Ага и смотрю удаленку бэкэнда питона: flask/django. Хочешь эджи стайл - ML. Короче это как RoR, поезд ушел. Java/Go на какое-то время займет умы погонщиков. Пока не будет нормального ORM с асинхронкой остаётся только DRF и CRUD пилить.
Облизнулся на GraphQL, но какая-то непонятная херня, опять же привязка только к SQLAlchemy, а там асинхронкой и не пахнет.
Остаётся только надеяться и двигаться в сторону ML.
Аноним 26/08/20 Срд 23:41:57 #137 №1789192 
дык сосредоточься на концепциях. пиши на многих языках чтобы впитать парадигмы.
сменить язык будет легко

Аноним 26/08/20 Срд 23:53:40 #138 №1789199 
>>1789174
>SQLAlchemy, а там асинхронкой и не пахнет
Ниче что в алхимии можно спокойно поставить движок вроде aiopg и будет тебе асинхронка? Ты peewee для этого не обязан накатывать
Аноним 26/08/20 Срд 23:57:53 #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?
Аноним 27/08/20 Чтв 00:11:08 #140 №1789203 
>>1789199
Не в обиду мейнтейнерам, но это только 1 коннектор. Если есть легаси на MySQL или просто решили использовать MariaDB/Percona, то уже все сложнее.
Аноним 27/08/20 Чтв 00:16:18 #141 №1789205 
>>1789200
PG видимо https://postgrespro.ru/docs/postgresql/9.6/functions-aggregate. Модели есть? Тогда понятнее будут связи.

Аноним 27/08/20 Чтв 00:26:34 #142 №1789208 
Суп. Я не разработчик, но появился варик послать меня нахуй на обучение питону за корпоративные бабки, но как я понимаю, всюду сейчас ебаные инфоцыгане. Подскажите, мб все-таки есть какой-то толковый онлайн-курс по питону? Мне вкатываться не надо, но освоить азы, чтобы они были структурированны - вполне помогло бы, т.к. на работе имею дело с ботом на ямле и питоне.
Аноним 27/08/20 Чтв 00:34:59 #143 №1789210 
>>1789208
На edx бесплатные курсы же есть, знание ангельского обязательно.
Тебе все равно никто про все возможные подводные камни не расскажет. Такого в принципе не может быть, сам шишки набиваешь или смотришь кто уже набил их на SO.
А при чем тут yaml? Это markup language как xml/toml. Отвратительный, но его рэдхат толкает.
Аноним 27/08/20 Чтв 00:41:08 #144 №1789214 
image.png
>>1789210
>На edx бесплатные курсы же есть, знание ангельского обязательно.
Я пробовал кучу курсов уже, хуй знает, не идет без тутора. Я наверное тупой просто.
>А при чем тут yaml?
А вот тут не ебу, такой стек.
Аноним 27/08/20 Чтв 01:06:53 #145 №1789221 
>>1789205
Да не суть какие модели даже на самом деле, не въезжаю зачем там and_ и or_ внутри join для начала
Аноним 27/08/20 Чтв 01:12:20 #146 №1789223 
>>1789208
все какие то особые спец курсы ищут
я вот начинал с https://pythonworld.ru/samouchitel-python
ну и про модули разные читал что есть в коробке
остальное догналось в практике и чтением SO
Аноним 27/08/20 Чтв 03:56:51 #147 №1789260 
>>1789131
Да я собсна спрашивал не про пользу знаний из вуза, а про корку. А то я приду со своим юрфаковским бакалавриатом на собес, и меня даже спрашивать по технической части не станут, этого опасаюсь. У меня просто маленькая мухосрань, поэтому я не могу как в москве или питере ходить по миллиону собесов так сказать из спортивного интереса, и переезжать в ближайшие пару лет не варик.
Аноним 27/08/20 Чтв 05:12:55 #148 №1789275 
Аноны, подскажите плз про модуль os, а именно про os.environ. Мой скажем так наставник посмотрел прогу, которую я по его заданию накропал и сказал, что нужно вместо вбития логина и пароля от скайпа прямо в коде (прога должна некоторые данные слать через скайп) как-то брать логин и пароль через os.environ. Чет гуглю, вроде эта хуйня вообще для другого используется, что я не понимаю?
Аноним 27/08/20 Чтв 05:22:38 #149 №1789277 
>>1789275
upd Ну я понимаю, что можно создать переменную окружения на моем компе, и использовать ее в коде. Но тогда у других людей на компе она не запустится, и в чем тогда преимущество перед просто вбитием своих данных в код ручками? Или можно просто в отдельном файле создать словарь с логином и паролем, будет почти тот же эффект, что и от осэнвирона.
Аноним 27/08/20 Чтв 08:20:43 #150 №1789314 
>>1789277
Преимущество в том, что пароли не сливаются при передаче исходников, в т.ч. через гитхаб и подобное.
Это примерно как приватный ключ для ssh, у тебя всё работает и заебись.
Аноним 27/08/20 Чтв 08:43:39 #151 №1789321 
>>1789314
т.е. преимуществ по сравнению с тем, что я например залью пассы в файлик, который потом на гитхаб не буду заливать и импортирую из него переменную пассворд нет?
Аноним 27/08/20 Чтв 08:50:06 #152 №1789325 
>>1789321
Ну тут готовый механизм, а там файлик, ебля с gitignore, пояснения, что должен ещё быть файлик с таким-то форматом и т.д.
Аноним 27/08/20 Чтв 08:55:33 #153 №1789328 
>>1789277
1. Тестовая среда.
2. Недообфускация, чтобы ты в коде случайно не оставил личные данные при заливке на GitHub.

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

Очевидно проверяет наличие пустых строк и строк длиннее 32 символов, которые не начинаются на "#".
Вопрос: Как это написать не так громоздко и более читаемо?
Аноним 27/08/20 Чтв 09:39:54 #158 №1789351 
>>1789343
re.match(r'[^#\n].{,31}$', string)
Аноним 27/08/20 Чтв 09:47:16 #159 №1789360 
>>1789351
Мне нужно True/False получить, а не строку.
Аноним 27/08/20 Чтв 09:53:18 #160 №1789363 
>>1789360
Без матча будет None, так что можно проверять.
Аноним 27/08/20 Чтв 10:14:33 #161 №1789392 
>>1789351
Близко, но не то. Посмотри внимательнее условия:
Пустая строка даёт True
Строка длиннее 32 символов И не начинающаяся с # даёт True
Строка длиннее 32 символов И начинающаяся с # даёт False
Твоё регулярное выражение в последних двух случаях выдаст True.
Аноним 27/08/20 Чтв 10:23:47 #162 №1789402 
pycharm64uR6gl03JvU.png
pycharm64N00aKu9piY.png
Объясните еще ньюфагу, что за ебанина. Я же явно использую модуль os, почему импорт горит серым, как-будто не использую, и когда жму контрол-альт-о, которое должно пофиксить импорты по пеп 8 - он такой серый импорт просто стирает
Аноним 27/08/20 Чтв 10:24:03 #163 №1789403 
>>1789402
это пучарм, если вдруг что
Аноним 27/08/20 Чтв 10:25:58 #164 №1789405 
>>1789392
Вообще-то # с длинной никак не связан в оригинальном выражении. Чтобы был связан, там нужны скобки.
Аноним 27/08/20 Чтв 10:40:30 #165 №1789427 
>>1789405
Ты уверен? Я протестил сейчас и всё как я сказал. Поставил скобки для наглядности.
Аноним 27/08/20 Чтв 10:59:12 #166 №1789446 
>>1789427
Да, что-то я не сообразил.
Ну тогда так.
re.match(r'#.+|.{1,33}$', string.rstrip())
Аноним 27/08/20 Чтв 11:05:33 #167 №1789453 
>>1789446
Отлично, спасибо. Эх и ебля с регулярными выражениями.
Аноним 27/08/20 Чтв 11:22:11 #168 №1789478 
>>1789446
Чето я не понял. Как вот это условие реализовано:

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

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

ИЛИ

2. от 1 до 33 любых символа до конца строки
Аноним 27/08/20 Чтв 11:34:09 #169 №1789501 
>>1789478
Хватить меня путать, лол.
Если начинается с #, то ограничения на длинну нет. Так это работает в оригинальной строчке и в этой регулярке.
Аноним 27/08/20 Чтв 11:41:05 #170 №1789517 
>>1789501
Так у тебя матчит все строки начинающиеся с #, хотя не должно
Аноним 27/08/20 Чтв 11:42:02 #171 №1789519 
>>1789517
ну так инвертировать надо.
Аноним 27/08/20 Чтв 11:43:56 #172 №1789523 
>>1789519
=.="
Аноним 27/08/20 Чтв 11:44:21 #173 №1789525 
>>1789501
>>1789478
Там должно быть {1.32}, так как больше 32 нельзя.
>>1789517
Так если условие не выполняется, то будет None и if None, то уже у меня там мутится всякое. Всё работает.
Аноним 27/08/20 Чтв 11:47:09 #174 №1789530 
>>1789334
Я про хранение credentials в целом, бро.
Аноним 27/08/20 Чтв 11:51:11 #175 №1789536 
>>1789525
Достаточно if not re.match
Аноним 27/08/20 Чтв 11:54:22 #176 №1789539 
>>1789536
Я думал это только с False прокает. Что ещё считается not? 0, False, None.
Аноним 27/08/20 Чтв 11:55:07 #177 №1789541 
>>1789539
Все что пусто - то False
Аноним 27/08/20 Чтв 11:56:09 #178 №1789542 
>>1789539
https://docs.python.org/3/library/stdtypes.html#truth-value-testing
Да и в любом классе можно определить __bool__ и оно будет работать в булевом контексте как надо.
Аноним 27/08/20 Чтв 12:35:31 #179 №1789574 
Анончики, пользуюсь модулем logging.
Как мне логировать инфу/дебаг в один файл, а ошибки - во второй?
Аноним 27/08/20 Чтв 12:46:36 #180 №1789589 
>>1789574
логгинг в питоне какой то базовый "все пишут в 1 файл"
если нужно в больше то нужно мудрить
какие то конфиги, какие то фильтры. брррр.

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

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

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

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

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

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


Аноним 27/08/20 Чтв 12:51:39 #181 №1789596 
>>1789589
Ну это звучит очень разумно, да
Аноним 27/08/20 Чтв 12:56:46 #182 №1789609 
>>1789208
хочешь научиться языку решай литкод/хаккерранк
Аноним 27/08/20 Чтв 13:04:30 #183 №1789622 
>>1789574
>>1789589
Ладно. Походу ничего лучше, как открывать каждый раз файл лога ошибок при обработке оных и писать туда все, нет. Хех.
Аноним 27/08/20 Чтв 13:06:05 #184 №1789627 
>>1789622
Почему бы не писать в один файл, а уже при чтении фильтровать на что смотреть?
Аноним 27/08/20 Чтв 13:06:22 #185 №1789628 
>>1789627
ТЗ
Аноним 27/08/20 Чтв 13:12:00 #186 №1789639 
>>1789628
Ну в твоей задаче проще создать пару хендлеров
https://stackoverflow.com/questions/18911737/using-python-logging-module-to-info-messages-to-one-file-and-err-to-another-file
Аноним 27/08/20 Чтв 13:19:20 #187 №1789650 
>>1789639
Даже в этом решении нет полного разделения. Те логи, что уровня WARNING, энивей попадают в дебаг. Дурацкая иерархия.
Аноним 27/08/20 Чтв 13:19:40 #188 №1789652 
>>1789650
>попадают в инфо
Быстрофикс
Аноним 27/08/20 Чтв 13:25:59 #189 №1789669 
>>1789650
ну обычно разделяют по minlevel. ведь эти файлы потом еще и читать нужно
Аноним 27/08/20 Чтв 13:29:02 #190 №1789676 
А че, все пользуются logging изкоробки? Не могу альтернатив найти
Аноним 27/08/20 Чтв 13:34:16 #191 №1789681 
>>1789650
> Те логи, что уровня WARNING, энивей попадают в дебаг.
ну так создайте наследника от нужного хендлера и перегрузите метод filter где и решайте подходят ли данные записи для этого хендлера
Аноним 27/08/20 Чтв 13:53:12 #192 №1789695 
image.png
Извиняюсь, что немного не по теме, но основной на Пистоне.
Как вывести id в html?
Аноним 27/08/20 Чтв 13:54:28 #193 №1789698 
>>1789695
какая разница на чем основной, если представленный кусок требует знания жс. а не питона
Аноним 27/08/20 Чтв 14:23:53 #194 №1789744 
s = set()
for i in s:
....print(False)
else:
....print(True)
почему выводит True?
и 2 вопрос: почему некоторые щитают что конструктор в питоне это __init__, а другие __new__?
Аноним 27/08/20 Чтв 14:29:43 #195 №1789757 
>>1789676
там их кста дахуа, и подсветкой и без, и надстройки над основным логгингом
https://github.com/search?l=Python&q=python+logging&type=Repositories
но я читал шо нужно всё равно уметь пользоваться из стандартной либы, опять же от задачи зависит
Аноним 27/08/20 Чтв 14:30:44 #196 №1789761 
>>1789744
>почему выводит 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)
Аноним 27/08/20 Чтв 14:30:47 #197 №1789762 
>>1789744
else для for срабатывает, если не было break вроде.
Довольно ебанутая и неочевидная конструкция.
Аноним 27/08/20 Чтв 14:36:10 #198 №1789766 
>>1789574
мб стоит попробовать pip install loguru
Аноним 27/08/20 Чтв 15:05:02 #199 №1789795 
>>1789761
а понял, туплю
Аноним 27/08/20 Чтв 15:48:29 #200 №1789883 
>>1789589
Не совсем понял, ты же можешь создать пул хэндлеров и просто ротировать их путем оверлоада выбирая тип лога .debug, .warning и так далее. Не вариант?
Аноним 27/08/20 Чтв 16:10:13 #201 №1789947 
>>1789766
> loguru
О! Спасибо, годнота.
Аноним 27/08/20 Чтв 16:20:53 #202 №1789970 
>>1789883

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

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

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

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

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


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

когда хендлер и его уровень гвоздями прибит к логгеру - это сильно мешает



Аноним 27/08/20 Чтв 16:30:14 #203 №1789993 
А Microsoft Visual Studio Code с питоном работает как-то не очень, да? Постоянно какие-то ошибки всплывают, подсвечиваются и проверить питонофайл можно только запустив в итоге. Лучше поменять IDE или там надо что-то допиливать в нем?
Аноним 27/08/20 Чтв 16:30:17 #204 №1789994 
>>1789883
можно конечно использовать хак для getLogger(name) где если server.api.internal то ему хендлер который пишет в тот же файл но фильтр INFO

но это и будет то же самое. Просто выраженное в коде, а не на уровне конфига "сообщения вот от этого логгера направь отдельно вон туда учитывая минлевел"
добавить звездочку и конфиг и вот и получится то, что я описываю
Аноним 27/08/20 Чтв 16:30:37 #205 №1789995 
>>1789574
Опа, знаю твое задание, тянка делает его же)))
Аноним 27/08/20 Чтв 16:39:27 #206 №1790013 
>>1789970
Ты можешь указать 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.
Аноним 27/08/20 Чтв 16:41:48 #207 №1790017 
>>1789993
IntelliSense и PyLance включи.
Аноним 27/08/20 Чтв 16:42:02 #208 №1790018 
>>1790013
как бы не то же самое ну вообще
Аноним 27/08/20 Чтв 16:54:03 #209 №1790042 
>>1790018
ну ты же можешь сделать override методов, только тебе придется каждый раз делать операцию по добавлению хэндлера и его удалению

def warn(msg):
logger.addHandler(self.warn_handler)
logger.warning(msg)
logger.removeHandler(self.warn_handler)
Аноним 27/08/20 Чтв 17:00:29 #210 №1790050 
>>1790042
ты почему то все время смотришь на уровень сообщения

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

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

В первом случае если нужно извернутся то придется писать кастомные хендлеры с фильтрацией + еще в сам код проекта лезть чтобы в каком то месте изменить вызываемое имя логгера (а иначе как его отличить от других). А во втором такой универсальный перенаправлятор уже готов, все в конфиге, код не трогаешь
Аноним 27/08/20 Чтв 17:02:29 #211 №1790053 
>>1790050
Все, дошло. Если это был модуль A, отрази логи в файле error.log, если ошибка в модуле B, то отрази в логе b_error.log.
Тогда есть резон использовать fluentd и уже на его основе правил распределять потоки логов.
Аноним 27/08/20 Чтв 17:06:21 #212 №1790058 
>>1790050
Где-то видел на гитхабе кастомные реализации логгера. На самом деле в Питоне пакет давно уже не менялся, и асинхронка была и сразу форматирование в JSON на лету и кастомные поля. Мне кажется крупные компании какие-то писали, я как-то просто дублировал логирование путем записи в файл и в БД. Только недавно начал натыкаться на нормальные инструменты.
Аноним 27/08/20 Чтв 17:07:37 #213 №1790060 
>>1790042
>каждый раз делать операцию по добавлению хэндлера и его удалению
да нафиг надо. проще один раз сделать такой хендлер, который на основе заданных правил и имея на руках имя логгера и левел зарулит куда его нужно правилам, нежели играть в костыли с тому, что дает модуль logging с его "родительскими хендлерами)

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

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

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

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

>fluentd и уже на его основе правил распределять потоки логов.
ну это уже тонкости. главное концепт. почему то все всегда выбирают первый вариант и приходится немного, но лепит лисапеды что позволительно в пет проектах, но не в работе же
Аноним 27/08/20 Чтв 17:10:42 #214 №1790071 
>>1790060
>почему то все всегда выбирают первый вариант
это я про логгеры в разных языках. Вроде бы простая концепция с доп уровнем правил "кого куда". но такая редкость.
Аноним 27/08/20 Чтв 17:11:45 #215 №1790073 
>>1790060
Только шарп компилируемый и для них другие требования по предоставлению информации диагностической. Та же Java напримерм начинает более полный traceback показывать и т.п.

>в работе
Зависит от того, кто потом логи читает. Так уж лучше в единое хранилище ELK запихнуть, не? Главное доказать, что оверхед если и будет, то он окупаемый за счет, того что даже макака сможет прочитать информацию и понять, где началась жопа.
Аноним 27/08/20 Чтв 17:22:27 #216 №1790085 
>>1790073
>Только шарп компилируемый
это не играет роли. просто логирование это одно. а диагностика это другое. сложно понять разницу. логироание это больше про "что делали", а диагностика больше про метрики

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

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

зы: я уже потерял нить беседы )

Аноним 27/08/20 Чтв 17:26:45 #217 №1790090 
>>1790085
JSON в файле и JSON в какой нибудь NoSQL БД разные вещи. Отказал внешний сервис - читай файлы, а для аналитики фильтруй, строй графики. не?
Аноним 27/08/20 Чтв 17:30:44 #218 №1790093 
>>1790090
я тебя не понимаю. складывать во внешний сервис да по сети еще нужно тогда, когда в этом есть смысл.
Иначе это реально оверхед на ровном месте. А файлам то чего отказывать. Хотя конечно однопоточная природа питона может влиять - у нас может быть 20 воркеров процессов и какать в 1 файл затруднительно.

Ну еще может быть смысл если утебя есть инструментарий для работы с логами где то, а для файлов нужного тебе нет, а прям вот очень надо чего то там анализировать и графики строить.
Аноним 27/08/20 Чтв 17:54:23 #219 №1790110 
Как в bs4 сделать исключение для определенного класса?

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

В данном случаи, при выборе класса а, в soup.text было только а
Аноним 27/08/20 Чтв 17:56:57 #220 №1790113 
>>1790110
1 непонятен вопрос
2 почему бы не использовать то, что поддерживает xpath
Аноним 27/08/20 Чтв 17:58:50 #221 №1790116 
>>1790113
1. можно сделать без исключения. Мне надо достать условно говоря а, но при использовании .text, подтягивается еще и b
2. сайт выдает уебанский html, и все в таком виде, ничего с этим поделать не могу
Аноним 27/08/20 Чтв 18:08:26 #222 №1790120 
>>1790116
ну вот твой случай
https://stackoverflow.com/questions/28685753/how-to-only-get-inner-text-of-a-tag-in-beautifulsoup-excluding-the-embedded-one/28685959

а вообще xpath рулит
Аноним 27/08/20 Чтв 18:09:21 #223 №1790121 
>>1790120
спасибо, хуево искал

ясен хуй, а вообще json рулит)
Аноним 27/08/20 Чтв 18:13:09 #224 №1790126 
>>1790121
один раз выучить xpath и уровень свободы в парсинге вырастет в бесконечные разы. Заодно и не выгонят "он знает xpath как его выгонишь. без него ж никто не разберется"

>а вообще json рулит)
Будет, когда там будут коментарии. тогда можно будет и питон выбросить. Но пока что мир иной.

Аноним 27/08/20 Чтв 18:16:17 #225 №1790136 
>>1790126
Откуда этот xpath вообще вылез?
Я помню, что это была ископаемая технология для дрочения ископаемого хмл, а теперь дохуя мода опять, но для парсинга. Из-за селениума и его тестов?
Аноним 27/08/20 Чтв 18:22:38 #226 №1790146 
>>1790136
он никогда не был ископаемым
он всегда был самым мощным языком запросов к xml (ну и конечно html)

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

кстати есть еще и jsonpath но кто о нем хотя бы слышал) Народ ничем не интересуется

Аноним 27/08/20 Чтв 18:25:35 #227 №1790151 
>>1790146
Потому что сам хмл уже давно легаси, вот и ископаемый.
Не знают, потому что он был нужен только всяким энтерпразам для дрочения этого самого хмл, у них там любая хуйня на нем была, а в каких-то жабах может и до сих пор, лол.
Аноним 27/08/20 Чтв 18:29:15 #228 №1790156 
>>1790151
>сам хмл уже давно легаси
от этого html не перестал быть "приложением языка xml" (с) вики
А значит xpath на нем работает. И в реальности ничего мощнее xpath и нет.
регулярки сразу нах
а css селекторы не имеют нужной гибкости
Аноним 27/08/20 Чтв 18:35:51 #229 №1790160 
>>1790156
По-моему, последние версии селекторов примерно догоняют по возможностям, но ещё массово не заимплеменчены.
Так что может и закопают обратно скоро, есть ли смысл учить.
Аноним 27/08/20 Чтв 18:37:15 #230 №1790161 
>>1790160
не будет никогда равенства возможностей. css селекторы идут другим путем
Аноним 27/08/20 Чтв 18:41:21 #231 №1790166 
>>1790160
я про то, что возможностей css селекторов можно хватать
особенно учитывая селектор + немного кода
но если устроить сравнение то css не сможет охватить все случаи что может xpath

а я выучил xpath и нафиг мне эти "а как в этом вашем css замудрить"
Аноним 27/08/20 Чтв 18:57:30 #232 №1790175 
>>1790166
В 95% случаев достаточно простого или среднего селектора или даже встроенных в тот же суп хуиток. xpath как раз для мудрения всякой йобы.
Аноним 27/08/20 Чтв 19:27:42 #233 №1790186 
Что используют в питоне для написания GUI?
Аноним 27/08/20 Чтв 19:32:45 #234 №1790190 
>>1790186
ты штоле погуглил бы свой вопрос, биндинги ко многим ui есть, выбирай любой
Аноним 27/08/20 Чтв 19:34:52 #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)

Аноним 27/08/20 Чтв 19:41:13 #236 №1790201 
>>1790186
слезы и страдание
Аноним 27/08/20 Чтв 19:49:12 #237 №1790204 
>>1790201
>>1790190
Бля, мне нужно сварганить GUI приложуху, которая бы записывала и дёргала данные из самой простой SQL базы. Вот смотрю варианты. В молодости плотно сидел на Дельфях, возвращаться не хочу.
Аноним 27/08/20 Чтв 19:59:32 #238 №1790221 
>>1790204
есть pyqt4(устарел), pyqt5, pySlide(чет там с основной лицензией qt, это типо фришная) ну и GTK, Wxwidgets, бери pyqt5 для вката
есь книжка справочник прохоренок, дронов pyqt5
https://rutracker.org/forum/viewtopic.php?t=5369996
Аноним 27/08/20 Чтв 20:00:04 #239 №1790223 
>>1790194
звездочки сьел двач, во втором варианте две звезды перед kwargs
Аноним 27/08/20 Чтв 20:04:30 #240 №1790231 
>>1790223
всё, понял, распаковка по имени
Аноним 27/08/20 Чтв 20:06:37 #241 №1790233 
>>1790221
Пасиба, анон. Добра.
Аноним 27/08/20 Чтв 20:08:39 #242 №1790235 
>>1790233
а забыл, еще tkinter на это gui tcl/tk но там типо юзается для очень легковестных гуи и сама либа tkinter не в ооп стиле, может юзаться для бека matplot, но qt ща популярный
Аноним 27/08/20 Чтв 20:13:09 #243 №1790242 
>>1790235
Ага, останавлюсь на Qt пока.
Аноним 27/08/20 Чтв 20:51:31 #244 №1790262 
изображение.png
изображение.png
Создаю юзера и выдаю ему все права - пик 1.
Создаю курсор с тем же логином/паролем - пик 2.

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

Почему так?
Аноним 27/08/20 Чтв 20:57:24 #245 №1790267 
>>1790262
В гранте ещё хост вроде должен быть, с которого можно пускать.
Аноним 27/08/20 Чтв 20:58:53 #246 №1790270 
>>1790267
Спасибо, пойду читать.
Аноним 27/08/20 Чтв 21:19:50 #247 №1790281 
Несколько раз натыкался что pip желательно вызывать через python -m pip - почему?
Аноним 27/08/20 Чтв 21:45:47 #248 №1790300 
>>1790281
Читай что такое path и как командная строка находит путь к программе по её имени.
Аноним 27/08/20 Чтв 21:59:31 #249 №1790313 
>>1790281
потому что если у тебя несколько питонов неизвестно чей пип ты вызовешь
и вызовешь ли вообще
а -m pip вызывает нужный pip
Аноним 27/08/20 Чтв 22:08:22 #250 №1790319 
>>1790313
а нефиг пипкать не из венв

python -mvenv huemoe
cd huemoe
source bin/activate

pip install huemoe
Аноним 27/08/20 Чтв 22:17:19 #251 №1790325 
>>1790319
а зачем не venv вообще?
вот допустим я пользователь. у меня в системе по дефолту 2.7 которую не выцарапать 3.6 которую не выцарапать и 3.8 которая мне нужна для выполнения моих скриптов
мне изоляция нафиг не всралась, а уже зоопарк
Аноним 28/08/20 Птн 00:18:24 #252 №1790429 
>>1790319
>>1790325
На кой чёрт нужны эти ваши венв, если есть докер или на худой конец piploc/pythonloc? Неужели так сложно прописать алиасы python/pip на последний питон в bashrc?

Научитесь наконец-то пользоваться шеллами.
Аноним 28/08/20 Птн 00:21:34 #253 №1790430 
>>1790429
Принцип тот что в докере, но ещё проще. Просто разворачиваешь кастомный венв под каждый проект и они не пересекаются.
Аноним 28/08/20 Птн 00:23:28 #254 №1790431 
>>1790429
Докер это не замена venv, а дополнение
Точно также как сидеть на бэкенде и утверждать что дрочево с деплоем приложений, nginx и линуксом "для лохов", т.к. есть docker-compose
Аноним 28/08/20 Птн 00:31:45 #255 №1790437 
>>1790431
В каком месте это дополнение? Никогда не пользовался венв внутри докера. Для чего оно в докере?
Аноним 28/08/20 Птн 00:38:20 #256 №1790441 
>>1790437
В том что когда тебе таки придется залезть внутрь venv по той или иной причине, ты не упадешь на спину в припадке "сложна сложна мы такого не проходили"
прям как новоявленные вкатывальщики, которые утверждают что математика и алгоритмы прогеру нинужны
Аноним 28/08/20 Птн 00:49:28 #257 №1790449 
>>1790441
Много математики знаешь? Функтор от монады отличишь?
Аноним 28/08/20 Птн 01:23:49 #258 №1790469 
Пагни, подскажите простейший RESTAPi тесты на питохе и обычных запрос POST с Боди \ респонс. Есть такое?
Аноним 28/08/20 Птн 01:30:47 #259 №1790475 
>>1790429
>Неужели так сложно прописать алиасы python/pip на последний питон в bashrc?
У себя прописать можно
Везде прописывать не выйдет
Аноним 28/08/20 Птн 01:32:30 #260 №1790478 
>>1790430
Мне не нравится оверхед в виде копии питона в венв
Аноним 28/08/20 Птн 01:44:00 #261 №1790484 
>>1790429
ты что идиот? а если у меня несколько проектов.

в одном один, в другом другие еще и разных версий
Аноним 28/08/20 Птн 01:44:41 #262 №1790485 
>>1790478
ты что идиот? там симлинк
Аноним 28/08/20 Птн 01:46:45 #263 №1790488 
>>1790484
Это тебе по работе нужно так? Или ты сам для себя так пишешь, что-то на 3.5, что-то на 2.7, что-то на 3.8? Если по работе, почему ещё не используете там докер? Вряд ли же у вас там гуй какой-нибудь. И ещё вопрос, почему не обновляете питон в проекте?
Аноним 28/08/20 Птн 01:47:28 #264 №1790489 
>>1790475
А зачем их прописывать везде? Везде это где например?
Аноним 28/08/20 Птн 01:49:52 #265 №1790492 
>>1790488
я про зависимости скорее, тут у меня версия либы 1.1, а в другом венве 2.1

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

еще плюс в venv, то что твоей ide/lsp меньше индексировать зависимости
Аноним 28/08/20 Птн 01:50:35 #266 №1790493 
>>1790478
Там нет копии питона, но есть копии библиотек.
Аноним 28/08/20 Птн 02:04:13 #267 №1790501 
>>1790492
Ох уж эти макопроблемы.
> тут у меня версия либы 1.1, а в другом венве 2.1
> меньше индексировать зависимости
Ну так piploc/pythonloc это тот же самый венв, только попроще, как в жс. Разве что не из коробки. Ладно, может быть и хорошо что ты привык использовать венв.
Аноним 28/08/20 Птн 03:06:14 #268 №1790512 
>>1790469
Бамп.
Кто-то пользовался requests модулем?
Аноним 28/08/20 Птн 03:12:07 #269 №1790515 
>>1790512
Нет. Первый раз слышу про такой.
Аноним 28/08/20 Птн 03:13:39 #270 №1790516 
>>1790488
суть венвов не столько в разных версиях питонов, сколько в разных версиях либ к нему ( тока не отвечай нахуйя, не поймешь зачем, просто проигнорируй)
Аноним 28/08/20 Птн 03:23:50 #271 №1790518 
Стикер
>>1790516
Нахуя))000)
Аноним 28/08/20 Птн 03:28:14 #272 №1790521 
>>1790518
Па приколу чиста
Аноним 28/08/20 Птн 06:07:20 #273 №1790562 
>>1790515
Пздц. Я думал тут форум профессионалов.
Аноним 28/08/20 Птн 08:35:28 #274 №1790605 
>>1790501
>Ну так piploc/pythonloc это тот же самый венв
только непонятно как с этим жить

как удостовериться что локально все пакеты что нужно они локально
как потом обновлять это все
Аноним 28/08/20 Птн 10:01:30 #275 №1790662 
Поясните в двух предложениях, зачем нам нужен Докер и\или его контейнеры? Может на конкретном примере с Питохой? Спасибо.
Аноним 28/08/20 Птн 10:05:09 #276 №1790666 
>>1790489
заходишь на чужую систему че то настроить.
Аноним 28/08/20 Птн 10:06:32 #277 №1790669 
>>1790662
только если хочется огородить приложуху по памяти или по доступам туда сюда.
иначе он не нужен
Аноним 28/08/20 Птн 10:20:59 #278 №1790685 
>>1790669
>Не нужен
>CI/CD
Ясно
Аноним 28/08/20 Птн 10:24:40 #279 №1790692 
>>1790685
Дада каждый 0.5й юзает ci/cd
Аноним 28/08/20 Птн 10:30:58 #280 №1790701 
>>1790692
Ты про вкатышей или мейнтейнеров? После PR всегда автотесты гоняют.
Аноним 28/08/20 Птн 10:32:52 #281 №1790703 
>>1790701
про обитателей этого треда
Аноним 28/08/20 Птн 10:38:24 #282 №1790707 
>>1790703
Если тебе не нужно, то и всем не нужно? Бро...
Аноним 28/08/20 Птн 11:02:56 #283 №1790738 
>>1790562
Ну так ты спрашивай сразу что тебе надо, а не устраивай перекличку. Конечно же реквестами пользовались все кто хоть немного трогал питон.
Аноним 28/08/20 Птн 11:02:57 #284 №1790739 
Поясните за итераторы и генераторы плз. 3 недели уже ковыряю язык, уже пытался для себя писать что-то простое, разбирался в апи, и было норм, а тут я прям пиздец тону, внимание теряется, все плывет, не могу слушать лектора/воспринимать текст почти сразу, как пытаюсь вникнуть. Это вообще сильно нужная и постоянная используемая вещь, или это просто надо иметь в виду, чтобы понимать как работает for и для общего развития, а для работы в вебе это не особо надо?
Аноним 28/08/20 Птн 11:04:49 #285 №1790744 
>>1790739
Алсо, я правильно понял, что list comprehension в русском зовут генератором списка, но это не имеет отношения к тому, что в целом зовется генератором, и это косяк русского языка?
Аноним 28/08/20 Птн 11:06:23 #286 №1790747 
>>1790605
Если ты такой параноик, то пидорасить sys path. Самая лучшая воспроизводимость всё равно будет только в докере.
Аноним 28/08/20 Птн 11:08:36 #287 №1790749 
>>1790666
Худшее что можно сделать на чужой системе это с пылу с жару запустить пип. Там как раз не нужны никакие алиасы и удобности.
Аноним 28/08/20 Птн 11:11:43 #288 №1790753 
>>1790669
Крайне диванное утверждение. Главная фишка докера не изоляция и ограничение ресурсов, а охуенная воспроизводимость окружений и удобство доставки на сервера.
Аноним 28/08/20 Птн 11:14:21 #289 №1790757 
>>1790753
>а охуенная воспроизводимость окружений
а она нужна в питоне? ну чтобы вот прямо аж ваще
только если юзаешь что то крайне сишное
Аноним 28/08/20 Птн 11:14:43 #290 №1790759 
>>1790749
>системе это с пылу с жару запустить пип.
чойта. если для этого туда и зашел
Аноним 28/08/20 Птн 11:16:03 #291 №1790760 
>>1790739
Генератор это объект, у которого есть метод «высрать новое значение». Практически то же что итератор, только нет заранее готового контейнера со значениями. List comprehension не является генератором, а вот generator comprehension является. Это тот же что и list, только скобочки круглые.
Аноним 28/08/20 Птн 11:18:20 #292 №1790763 
>>1790747
я не параноик.
просто нет четкого понимания как заполнить этот локальный пип нужными пакетами чтобы ничего лишнего и не пропустить чего чтобы потом на целевой машине не было ай?

или на продакшене уже это не юзается?
Аноним 28/08/20 Птн 11:19:42 #293 №1790766 
>>1790757
Все знают докер, докер всё делает автоматически, зачем убивать время на чтение твоих наколенных ридми и делать всё руками? Или проверять очередной мейкфайл на пиздецы.
Аноним 28/08/20 Птн 11:21:38 #294 №1790767 
>>1790766
>Все знают докер, докер всё делает автоматически
недавно ставил пипи сервер локальный
сначала докер там прописывал его строку запуска сооружал
а потом как пип пакет и строку запуска

количество мозгоебли оказалось одинаковым
Аноним 28/08/20 Птн 11:21:57 #295 №1790768 
>>1790763
На продакшене я настоятельно рекомендую докер. А вот локально пиплок, как по мне, удобнее венва. Ну и как напишешь requirements так и будет же.
Аноним 28/08/20 Птн 11:26:46 #296 №1790774 
>>1790767
А теперь попробуй модифицировать этот сервер и расшарить модификацию в команде. Вот самое простое, поменяй тайтл на главной.
Аноним 28/08/20 Птн 11:28:33 #297 №1790776 
>>1790759
Иди к админу и выясняй что и как запускать. Нечего на серверах рандомить.
Аноним 28/08/20 Птн 11:29:33 #298 №1790778 
>>1790774
могу забрать исходники и сбацать свой докер образ
или свой whl

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

что сказать то хотел?
Аноним 28/08/20 Птн 11:30:04 #299 №1790780 
>>1790776
а я и не рэндомлю
я ж и говорю что -m pip даст то что нужно
а не "авось повезет"
Аноним 28/08/20 Птн 11:32:57 #300 №1790782 
>>1790778
Окей, счастливо поебаться.
>>1790780
Тут сыглы, хули.
Аноним 28/08/20 Птн 11:34:51 #301 №1790784 
>>1790782
слился товарищ )))
заметь. а я даже не стал использовать аргумент "а нахера мне шарить дистр своего пиписервера товарищам по команде", им сервер нужен, а не дистр

ну то такое

>Тут сыглы, хули.
мая твая нипанимат
Аноним 28/08/20 Птн 11:37:21 #302 №1790785 
Про докер читайте о проблеме «works for me», или «у меня локально работает». Эта хуйня съела миллионы человекочасов, не дав ничего взамен. Само собой, если ты делаешь библиотеку, которую потом выложишь на pypi, докер тебе нахуй не сдался. Но если работаешь в команде бэкендеров, без этого никуда.
Аноним 28/08/20 Птн 11:42:50 #303 №1790791 
>>1790784
Слился как дешёвка))0 Задавлен аргументами)) Та мне чо, свет сошёлся на твоём благополучии? Страдай, я не против.
Аноним 28/08/20 Птн 11:45:28 #304 №1790795 
>>1790791
все просто
прагматизм
будет нужен докер - поставлю докер
стоит докер - использую докер
ставить целый докер ради одного пиписервера - крайне спорное решение
в итоге стоит пакет, а на той машине где стоит пипи докер нахер не нужен (только память зря жрет)

я не умаляю заслуг докера но
прагматизм а не "докеееер хочу докееееер"
Аноним 28/08/20 Птн 11:48:33 #305 №1790798 
>>1790791
впрочем признаю, что я уже не в ту степь пошел
ибо выставил себя как потребитель, а не разработчик

Аноним 28/08/20 Птн 11:52:10 #306 №1790801 
Работаю на Flask. Пишу файлообменник рандомный.
ПРи загрузке файла он рандомит путь к файлу правильный, но при попытке скачать высирает всегда одинаковый файл.
В чем трабл?
Аноним 28/08/20 Птн 11:52:45 #307 №1790802 
>>1790795
Докер жрет с гулькин хуй. Куда проще заменять сервера, если на них требуется только докер. Композе ап и всё работает. А тут надо целый день чета там ставить настраивать. Почитай про infrastructure as a code, люди даже ресурсы в облаке описывают текстовыми файлами в терраформе. Докер примерно об этом же, описание как поставить в виде короткого текстовика, который каждый у себя может запустить и развернуть если ты ушёл в отпуск.
Аноним 28/08/20 Птн 11:53:55 #308 №1790804 
Почему такое ощущение, что в тредю орудуют агрессивные школьники/студенты первых курсов?
Аноним 28/08/20 Птн 11:59:47 #309 №1790812 
>>1790804
те кто работают и занят делом не ходят на такие форумы
Аноним 28/08/20 Птн 12:00:26 #310 №1790813 
>>1790804
А теперь в треде орудуют эйджисты?
Аноним 28/08/20 Птн 12:02:01 #311 №1790815 
>>1790802
То что докер что то упрощает - не значит, что все остальные подходы разом устарели.
И про "все знают докер" это враки
Да и применимость тоже преувеличена.
Ты можешь быть мамкин фрилансер. Можешь писать код, который не позиционируется как продукт. Можешь кодить пакеты для пипи. Да мало ли что.
Аноним 28/08/20 Птн 12:12:55 #312 №1790829 
>>1790815
Ну само собой, здесь есть прекрасная статья об уровнях упаковки вплоть до зашивки в хардварь https://packaging.python.org/overview/
Если люди заводят разговор про изоляцию, венвы, несовместимость питонов, то высока вероятность что им нужен докер.
Аноним 28/08/20 Птн 12:15:09 #313 №1790833 
>>1790815
>>1790829
да вы зоебали, нахера вы друг другу хотите доказать абсолютность чего либо, любой инструмент выбирается под задачу, хуле тут спорить, а? А?
Аноним 28/08/20 Птн 12:22:03 #314 №1790845 
>>1790813
Скорее, если бы они не детектились по постам, то никто бы и не был против
Аноним 28/08/20 Птн 12:22:46 #315 №1790846 
c48787a0-4259-47a3-b32a-ddb4f311c753.jpg
> любой инструмент выбирается под задачу
> пук

Топ 10 бесполезных комментариев в каждом айтишном обсуждении.
Аноним 28/08/20 Птн 12:28:34 #316 №1790856 
image.png
>>1790846
но твой то еще бесполезнее
Аноним 28/08/20 Птн 12:39:07 #317 №1790876 
dkdewkew.jpg
>>1790856
Твоя правда.
Аноним 28/08/20 Птн 13:18:23 #318 №1790930 
Screenshot 2020-08-28 at 15.17.41.png
Пацаны, а подобные выравнивания в коде стоит делать, или нет?
Аноним 28/08/20 Птн 13:23:37 #319 №1790938 
>>1790930
Смотря сколько платят
Аноним 28/08/20 Птн 13:25:28 #320 №1790940 
>>1790930
Гугли black, если хочешь раз и навсегда освободить мозг от форматирования кода. Ещё почитай про феномен bikeshedding: чем проще тема, тем больше времени и внимания ей уделяется.
Аноним 28/08/20 Птн 13:28:19 #321 №1790946 
>>1790930
Если однотипные данные, относящиеся к одному и тому же, то да.
Т.е., всякие словари, наборы переменных и т.д. Как у тебя на пикче точно нет.
Аноним 28/08/20 Птн 13:28:33 #322 №1790947 
>>1790829
>венвы,
он полезен хотя бы тем что не нужно засирать системный питон кучей пакетов, которые нужны только для проекта
и одно это необходимости докера не влечет
Аноним 28/08/20 Птн 13:34:36 #323 №1790955 
>>1790938
>>1790940
>>1790946

Понял, спасибо.
Особенно этот господин пояснил по хардкору >>1790946
Аноним 28/08/20 Птн 13:36:29 #324 №1790960 
>>1790955
Большинство даже с однотипными данными этого не делает. Просто есть любители украшать всё подряд.
Аноним 28/08/20 Птн 13:38:49 #325 №1790963 
image.png
>>1790960
Аноним 28/08/20 Птн 13:39:15 #326 №1790964 
image.png
Аноним 28/08/20 Птн 14:46:58 #327 №1791032 
>>1790501
>Ну так piploc/pythonloc это тот же самый венв, только попроще, как в жс. Разве что не из коробки
в этом и суть. в том же пишарме поддержка венв, а пиплока аж ничуть
Аноним 28/08/20 Птн 14:54:35 #328 №1791041 
>>1790963
опять дрочить..
Аноним 28/08/20 Птн 15:08:45 #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


проблема в пробелах? если да, то, как исправить ее?
Аноним 28/08/20 Птн 15:12:18 #330 №1791070 
>>1791065
проблема в пропущенной : после фор
Аноним 28/08/20 Птн 15:22:43 #331 №1791084 
>>1791070
ты имеешь в виду, что нужно так:
https://ideone.com/fork/jz1p1W

в таком случае, выдает ошибку
Аноним 28/08/20 Птн 15:26:41 #332 №1791088 
>>1791084
Поправил. Лишняя скобка и отступы кривые.все работает
Аноним 28/08/20 Птн 15:28:29 #333 №1791092 
>>1791088
Ты же в курсе, что найти ошибку и поправить быстрее, чем пилить пост на сосаку?
Аноним 28/08/20 Птн 15:30:44 #334 №1791093 
>>1791092
Я не вкатыш. Детектор чини.
Аноним 28/08/20 Птн 17:03:11 #335 №1791184 
>>1791093
Скатыш?
Аноним 28/08/20 Птн 17:04:05 #336 №1791186 
>>1791184
Миддл-скатыш.
Аноним 28/08/20 Птн 17:58:32 #337 №1791234 
>>1790744
да
Аноним 28/08/20 Птн 17:59:59 #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())
Аноним 28/08/20 Птн 18:06:22 #339 №1791241 
>>1791235
Ча? Получить ид последней инсерт записи чтоли?
Аноним 28/08/20 Птн 18:11:08 #340 №1791246 
>>1791235
Транкейт траблицы тут для теста, надеюсь?
Аноним 28/08/20 Птн 18:14:51 #341 №1791253 
>>1791235
после lower оно уже никак не может быть равно строке с заглавными буквами, в первой же строчке дичь какая то дальше смотреть не вижу смысла
Аноним 28/08/20 Птн 18:15:03 #342 №1791254 
>>1791241
Не, привязать в бд к айдишнику человека. Вкшный айдишник
Аноним 28/08/20 Птн 18:17:50 #343 №1791264 
>>1791253
Не заметил, по привычке поставил заглавные. До этого было иначе, без заглавных.
Аноним 28/08/20 Птн 18:24:39 #344 №1791277 
>>1791235
Или процедуры или ОРМ, не надо это говно сюда тащить, пожалуйста. Объебешься в синтаксисе и у тебя весь код в тыкву превратится. И сверку строки делай через паттерны regex.
Аноним 28/08/20 Птн 19:43:01 #345 №1791359 
>>1790963
Есть код этой хуйни?
Аноним 28/08/20 Птн 19:51:59 #346 №1791364 
>>1790785
То есть это верзион контрол тул по сути? Можешь объяснить, что конкретно он делает, не просто он изолирует или тп. А вот, допустим ты написал код, Вася написал код. Вы его пушаете гитом в мастер, как здесь связан Докер?
Аноним 28/08/20 Птн 19:53:33 #347 №1791366 
>>1790738
Спасибо. У меня собес скоро вводный по реквестам\API тестам именно.
Например, почему или даже зачем нам нужны параметры в методе Гет?
Тоже самое для пост, какие конкретно параметры мы должны дать для Пост метод, в чем разница в таком случае?
Аноним 28/08/20 Птн 19:57:40 #348 №1791372 
>>1791364
Нет, он позволяет многим людям поднимать одинаковое окружение. Это как файл с образом виртуалки, но без оверхеда.
Аноним 28/08/20 Птн 20:01:09 #349 №1791375 
>>1790760
>Генератор это объект
Ловите профессора. В Питоне каждая пылинка это объект, я бы за такой ответ тебе перезвонил.
Аноним 28/08/20 Птн 20:11:36 #350 №1791386 
>>1791372
Понял, короче это изолированный сервер, среда, которая настраивается как рабочая под девов куда все и синхронятся. так?
>оверхеда
Что такое оверхед?
Аноним 28/08/20 Птн 20:34:29 #351 №1791413 
>>1791386
Нет, поднимает каждый у себя, но у всех получается идентичный.
>Что такое оверхед?
Накладные расходы. Например, виртуализация имеет оверхед, у докера намного меньше, потому что он работает на живой системе, но изолированно от нее.
Аноним 28/08/20 Птн 20:48:37 #352 №1791424 
image.png
Товарищи, пытаюсь завебскраппить каталог двача для одного персонального проекта. Нужно получить конкретно каталог /b/ раздела, но дело в том, что мой скрипт не подгружает треды в каталоге. Причиной тому может быть то, что они прогружаются немного позже, чем сама страница. Вопрос в том, как сделать так, чтобы прогрузить весь контент страницы в html.
Аноним 28/08/20 Птн 20:52:15 #353 №1791427 
>>1791424
дикий респект тому, кто подскажет возможное решение
Аноним 28/08/20 Птн 20:52:29 #354 №1791428 
>>1791424
сделай что нибудь типа
драйвер.нажми_кнопку("пробел") N раз
Аноним 28/08/20 Птн 20:52:58 #355 №1791429 
>>1791428
а не, там элементу это отсылается, поэтому возьми какой нидь боди
Аноним 28/08/20 Птн 20:55:46 #356 №1791433 
>>1791424
https://2ch.hk/b/catalog_num.json
Аноним 28/08/20 Птн 20:59:51 #357 №1791441 
>>1791424
>Вопрос в том, как сделать так, чтобы прогрузить весь контент страницы в html.
Сделать ожидание до момента, когда нужный элемент прогрузится, Селениум предоставляет такую возможность. И убери бьютифулсоуп, он нахуй не нужен
Аноним 28/08/20 Птн 21:01:55 #358 №1791444 
KK9cJdfVu4g.jpg
>>1791375
У двачеров видимо с логикой туговато. Истинность частного случая не несёт за собой ложности общего.
> я бы за такой ответ тебе перезвонил
Синдром вахтёра на максималках.
Аноним 28/08/20 Птн 21:09:51 #359 №1791448 
>>1791364
Пушится в гит Dockerfile, который есть набор инструкций как собрать какой-то образ. Выбрать можно даже дистрибутив, то есть работаешь ты в федоре, а на проекте принято использовать убунту. Пожалуйста, делаете всё в образе от убунты. Там и компилятор совпадёт, и cmdline утилиты, и переменные окружения, и пути куда что ставится.

Двачеры почему-то думают что венв это железная изоляция, хотя это всего лишь хак с path/pythonpath, который сработает только есть весь проект и все его зависимости написаны на чистом питоне, и у всех жёстко одинаковая версия (включая третью цифру) самого питона. Венв хороший инструмент, но если у тебя случилось так что локально работает, а на продакшене падает, то надо потестить уже в докере.
Аноним 28/08/20 Птн 21:12:09 #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())

Аноним 28/08/20 Птн 21:12:28 #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
Аноним 28/08/20 Птн 21:16:03 #362 №1791455 
>>1791452
Это называется urlencoding, это способ сериализовать структуру в поток байт. Фиксить это не нужно, так и должно быть. print(response.request.body) — смотри тут внимательно, ты реквест принтишь, то что ты отослал, а не принял в ответ.
Аноним 28/08/20 Птн 21:18:46 #363 №1791458 
>>1791455
> ты реквест принтишь
В этом и цель. Сервер говорит, что пользователя не существует, поэтому я принтил реквест, чтобы разобраться, что не так. Через браузер с теми же данными все работает. Единственное, что отличается - %40 вместо @.
Аноним 28/08/20 Птн 21:20:31 #364 №1791461 
>>1791451
> человек командой выбирает один регион
Вот это выражение я не понял. Команда выбирает регион? Ну так добавь поле команде. А если нужно подтянуть в селекте для игрока используй джойн или подзапрос. Вместо кода лучше схему БД запости.
Аноним 28/08/20 Птн 21:21:51 #365 №1791462 
>>1791458
Как ты делаешь "через браузер", покажи.
Аноним 28/08/20 Птн 21:33:39 #366 №1791473 
1598639617861.png
>>1791462
На пике запрос через браузер. Сервер авторизовывает и возвращает токен. При таких же заголовках и теле запроса через requests авторизация не проходит и возвращается текст в utf-16 "пользователь не найден"
Аноним 28/08/20 Птн 21:34:29 #367 №1791474 
>>1791448
>Двачеры почему-то думают что венв это железная изоляция
не думают.
они думают что городить огород с докерами геморнее и это так
Аноним 28/08/20 Птн 21:38:51 #368 №1791480 
>>1791473
Смотри, у тебя в браузере content-type: application/json, это другой способ кодирования. Вместо параметра data нужно использовать параметр json, иначе будет content-type: application/x-www-form-urlencoded.
Аноним 28/08/20 Птн 21:41:36 #369 №1791482 
>>1791480
Во, теперь работает, спасибо
Аноним 28/08/20 Птн 21:52:56 #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


Аноним 28/08/20 Птн 21:54:22 #371 №1791492 
>>1791433
Не шарил за это, жсон это балдеж. респект!
Аноним 28/08/20 Птн 21:57:22 #372 №1791494 
>>1791492
Если что-то подгружается не сразу, то смотришь ходящие запросы, оно подгружается в основном как раз в виде жсона.
А то знатоки уже налетели с селениумом. Браузер скачал готовые данные, отрендерил в хтмл, а они потом обратно руками дрочат.
Аноним 28/08/20 Птн 22:11:07 #373 №1791510 
>>1791494
Вообще ты мне намного облегчил задачу. Я сейчас ещё осознал, что треды можно получать тоже в виде джсона. Я об этом даже не задумывался. Огромная благодарочка, анон
Аноним 28/08/20 Птн 22:33:05 #374 №1791520 
>>1791490
Смотри в сторону 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"),)

Приблизительно так должно быть.
Аноним 28/08/20 Птн 23:11:36 #375 №1791535 
>>1791494
>А то знатоки уже налетели с селениумом.
У него изначально был селениум, мало ли что он хотел делать
Аноним 29/08/20 Суб 00:06:02 #376 №1791570 
Пагни, такая задача.

В функции есть набор символов, например "abca", нужно вывести все возможные значения комбинаций этих символов, но чтобы они не повторялись типа aabc, а только abca, acab и тд.
Так и не дошло до меня как делать, интеврьюер сказал, что нужно было делать луп в лупе, в лупе, но я не понял все равно. Спасибо.
Аноним 29/08/20 Суб 00:12:59 #377 №1791576 
>>1791570
>#A = [a,b,c]
#B = [a, b, c]
#A B (concurrent letters are not same) = [ab, ac, ba, bc, ca, cb] = C
# C
B
Я насобирал такую вот хуйню, но так и не понял.
Аноним 29/08/20 Суб 00:21:18 #378 №1791579 
>>1791570
>>1791576
Есть функции итертулс для комбинаций, можно сделать что-то типа
[i+j for i in a for j in a if i !=j]
Аноним 29/08/20 Суб 00:27:47 #379 №1791584 
>>1791579
Охуенно! Спасибо! Именно оно.
Теперь как развернуть этот лист компрохенсив в нормальный, чтобы посмотреть логику?
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)

так что ли?
Аноним 29/08/20 Суб 00:36:55 #380 №1791590 
>>1791584
Да, только циклы местами поменяй
Аноним 29/08/20 Суб 00:39:14 #381 №1791591 
>>1791590
Всё правильно там, слева направо разворачивается.
Аноним 29/08/20 Суб 00:43:47 #382 №1791595 
>>1791591
Разве компрехеншены не справо-налево раскладываются? Типо внешний цикл основной - внутренний идет уже как выражение основного
Аноним 29/08/20 Суб 00:45:21 #383 №1791596 
>>1791570
У тебя это перестановки, а не комбинации. Суть в чём, ты фиксируешь один символ, убираешь его из колоды, спускаешься в рекурсию, отпускаешь символ, берёшь следующий.

https://ideone.com/8Xvl1J
Аноним 29/08/20 Суб 00:47:06 #384 №1791598 
Или тебе ещё нужно отфильтровать чтобы двух одинаковых подряд не было?
Аноним 29/08/20 Суб 00:47:45 #385 №1791599 
>>1791595
Легко проверить же https://ideone.com/0DREzl
Как видно, первым идет 0, а дальше строка.
Аноним 29/08/20 Суб 00:48:44 #386 №1791600 
С фильтром
https://ideone.com/nNK2J8
Аноним 29/08/20 Суб 00:48:50 #387 №1791601 
>>1791596
Ловите Лутца!
Аноним 29/08/20 Суб 00:56:50 #388 №1791604 
>>1791599
Действительно
Аноним 29/08/20 Суб 02:24:44 #389 №1791625 
>>1791520
а что мне это даст?
Аноним 29/08/20 Суб 03:20:25 #390 №1791636 
>>1791596
Нормас, спасибо. Сразу и не монимаю что происходит. Буду разбираться.
Аноним 29/08/20 Суб 03:21:53 #391 №1791637 
>>1791600
Что такое фильтр?
Аноним 29/08/20 Суб 03:40:37 #392 №1791643 
Есть тут Селениум пацаны?
Как кликнуть элемент, если имеем вот такое? Вопрос, кликнить на текс в строчке 10?

><div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
Аноним 29/08/20 Суб 03:46:47 #393 №1791644 
>>1791643
можншь открыть разработку в браузере нажать пкм элемент и скопировать его по xpath, дальше найти его в селениуме по хпатх и кликнуть
Аноним 29/08/20 Суб 04:12:54 #394 №1791645 
>>1791637
> чтобы они не повторялись типа aabc, а только abca, acab и тд.
То есть я получившиеся перестановки ещё профильтровал и оставил те что без двух одинаковых букв рядом. Не знаю нужно ли это было.
Аноним 29/08/20 Суб 08:31:18 #395 №1791678 
Есть книга по алгоритмам без зауми в которой не подразумевается что я должен очень хорошо знать формальную математику ? Как минимум с объяснениями этой математики и лучше что бы с Пайтоном но не обязательно. Каков положняк по данному вопросу ?
Аноним 29/08/20 Суб 09:45:00 #396 №1791689 
image.png
У меня задание прочекать все папки в директории, и если в ней есть файлик с .py - выписывать название папки. Почему я стакаюсь на одной папке и не перехожу в следующую с этим кодом? Если сделать просто:
a = os.walk('.)
print(next(a))
print(next(a))
print(next(a))
print(next(a))
...
то он нормально обходит папочки, что в моем коде всё ломает?
Аноним 29/08/20 Суб 09:54:44 #397 №1791690 
>>1791689
Ну смари малёк, ты сам с какого города ?
Аноним 29/08/20 Суб 09:55:53 #398 №1791691 
>>1791690
Щито блядь? С мухосранска
Аноним 29/08/20 Суб 10:04:30 #399 №1791693 
image.png
>>1791689
блядь, думал не хватает одного цикла for, но все та же хуйня преследует...
Аноним 29/08/20 Суб 10:29:33 #400 №1791703 
>>1791691
Кароч деревня, бросай это дело. Не твоё. Поверь.
Аноним 29/08/20 Суб 11:01:14 #401 №1791720 
>>1791693
Ты хоть почитай документацию на эти функций. Пиздец.
Аноним 29/08/20 Суб 11:28:30 #402 №1791736 
>>1790801
Попробуй открыть новую чакру, у меня не выходит телепатически считать твой код
Аноним 29/08/20 Суб 11:30:51 #403 №1791738 
>>1791366
>Например, почему или даже зачем нам нужны параметры в методе Гет?
У тебя не с Питоном проблемы. А с TCP/IP и сетями в целом. Читай Танненбаума и протоколы прикладного уровня (HTTP в частности)
Аноним 29/08/20 Суб 11:32:55 #404 №1791739 
>>1791738
а они тут причем?
ни питон ни тср ни таннебаум ни хттп не имеют отношения к этому вопросу
Аноним 29/08/20 Суб 11:34:23 #405 №1791740 
>>1787217 (OP)
Часто приходится работать одновременно с питоновским кодом и с жс-кодом, что из IDE лучше юзать? У меня стоит pycharm, там есть что-то вроде расширенной версии, она поможет? Или лучше брать другой редактор? В пайчарме просто навигация по проекту и по Гиту довольно удобная
Аноним 29/08/20 Суб 11:40:49 #406 №1791746 
>>1791739
При всем
Не знаешь основ HTTP но лезешь в requests? Ты серьезно?
Питон это прикладной язык, "обертка" для работы с более сложными сущностями, о чем может быть речь если ты не знаешь даже примерно сути этих сущностей?
Аноним 29/08/20 Суб 11:42:08 #407 №1791748 
>>1791746
>но лезешь в requests
это не я лезу. но где там про requests?
Аноним 29/08/20 Суб 11:45:14 #408 №1791750 
>>1791689
Тебе дело говорят -> >>1791720
Почитай про модуль os и os.getcwd в частности. Не додумывай как функции работают

>>1791748
Да ты заебал. Ты на собес идешь. Тебе простительно не знать основ работы инета и http если ты хочешь быть QA-интерном, в противном случае ты будешь как шимпанзе, которую научили нажимать на 1 конкретную кнопку на клавиатуре
Аноним 29/08/20 Суб 12:59:46 #409 №1791789 
>>1791738
лол, че сразу не олифера то сразу?
Аноним 29/08/20 Суб 13:22:42 #410 №1791809 
>>1791740
В пучарме Про, точно есть дополнения. А так все на VSCode давно перекатились.
Аноним 29/08/20 Суб 13:30:22 #411 №1791814 
Я чет немного не понял или неправильно сделал. Внутри папки с проектом есть папка, а внутри текстовый файл. И через питоноскрипт этот файл открывается если путь к нему сделать "D:/проекты/пидор/test/test.txt". Можно ли как-то сделать так чтобы надо было просто указать папку внутри проекта типа "/test/test.txt" ?
Аноним 29/08/20 Суб 13:41:29 #412 №1791822 
>>1791814
Ты можешь получить путь в __file__ и потом присобачить оставшийся путь.
Аноним 29/08/20 Суб 13:44:27 #413 №1791824 
>>1791814
Можно, но без слеша вначале.
Аноним 29/08/20 Суб 14:31:40 #414 №1791848 
конструктор в питоне __new__ или __init__?
Аноним 29/08/20 Суб 14:39:58 #415 №1791850 
>>1791848
init
Аноним 29/08/20 Суб 14:41:37 #416 №1791851 
>>1791850
мне прост на собесе сказали шо это не совсем конструктор, а иницилиазатор
Аноним 29/08/20 Суб 14:42:53 #417 №1791852 
>>1791851
А что есть "конструктор"?
Аноним 29/08/20 Суб 14:44:35 #418 №1791853 
изображение.png
>>1791852
Аноним 29/08/20 Суб 14:46:57 #419 №1791855 
>>1791853
есть документация? как его вызвать?
Аноним 29/08/20 Суб 14:49:12 #420 №1791857 
>>1791855
идешь в магаз и отдаешь бумажки или цифры (валюта) и приобретаешь эту сомнительно полезную материю и потом соеденияешь её в различные образы
Аноним 29/08/20 Суб 14:49:56 #421 №1791858 
>>1791857
Тоесть правильно ли я понимаю, что это не вызываемый объект?
Аноним 29/08/20 Суб 14:50:44 #422 №1791861 
>>1791858
что значит правильно понимать? как ты можешь понять что правильно, а что нет?
Аноним 29/08/20 Суб 14:52:30 #423 №1791862 
>>1791861
Ясно, где-то гвидо обосрался значит, ну остается теперь только одно, идти компилировать тайпскрипт в жс.
Аноним 29/08/20 Суб 14:54:06 #424 №1791863 
>>1791862
то есть я победил?
Аноним 29/08/20 Суб 14:54:31 #425 №1791865 
>>1791848
new
Как и в любом языке. Не слушай долбоебов. Спроси лучше себя "каким образом init может быть конструктором если первый же аргумент который он получает это конкретный инстанс класса"?
Аноним 29/08/20 Суб 14:56:10 #426 №1791866 
>>1791863
незнаю кого ты побеждал, я вообще другим анонистом был
Аноним 29/08/20 Суб 14:58:17 #427 №1791868 
изображение.png
>>1791865
https://www.interviewbit.com/python-interview-questions/
Здесь например написано шо это конструктор
Ну его задача это выделять память под объехты и инициализировать элементы
Аноним 29/08/20 Суб 15:00:31 #428 №1791870 
>>1791866
значит победил тебя
Аноним 29/08/20 Суб 15:03:14 #429 №1791874 
>>1791868
Пишут хуйню. __new__ выделяет память и создает конкретный объект. Любому у кого недвузначный IQ это очевидно
Аноним 29/08/20 Суб 15:06:17 #430 №1791876 
>>1791874
init тогда инциализатором щитать? Если new конструктор класса, а init конструктор данных?
Аноним 29/08/20 Суб 15:12:04 #431 №1791882 
>>1791876
Само понятие "конструктора" в Питона весьма извращено и часто "конструктором" называют __init__ хотя конечно это нихрена не так. Де-факто init это конечно "инициализатор"
В любом нормальном языке ты создаешь инстансы следующим образом:

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

Ничего не напоминает?
Аноним 29/08/20 Суб 15:14:04 #432 №1791883 
>>1791882
Лол с плюсами конечно напортачил, там по-другому немного конечно. Если захочу создать не статически массив то надо наебенить что-то вроде:

int * arr;
arr = new int [5];
Аноним 29/08/20 Суб 15:19:26 #433 №1791886 
>>1791882
спасибо за разжёвывание

в крестах разве не
class AB {
AB() {
// init
}
}
Аноним 29/08/20 Суб 16:49:47 #434 №1791938 
Чет в последнее время все чаще натыкаюсь на хуйню, типа "а на линуксе еще можешь сделать так, для винды не подходит". На всяких курсах и видосах лекторы все в основном на линуксах показывают, вроде я слышал и на работе с большим шансом будет линух. Есть ли смысл накатывать на виртуалку какую-нибудь убунту и разбираться с ней, если 20 лет сидел на винде? На работе будет надо линуксом владть скорее всего?
Аноним 29/08/20 Суб 16:54:51 #435 №1791940 
>>1791938
>Есть ли смысл накатывать на виртуалку какую-нибудь убунту
Есть смысл поставить себе второй системой линух и работать на нем
Иначе про разработку забудь
Аноним 29/08/20 Суб 16:56:34 #436 №1791943 
Снимок.PNG
Работяги обьясните чего от меня хотят плез ?
Аноним 29/08/20 Суб 16:59:46 #437 №1791944 
>>1791938
Под изучение самого питона не стоит, но дальше знания линупса уровня не бояться консоли очень и очень не помешают.
Аноним 29/08/20 Суб 17:15:07 #438 №1791957 
>>1791943
знания алгебры класса так 11
Аноним 29/08/20 Суб 17:18:48 #439 №1791961 
>>1791957
Ну скожи хотя бы по русски братик, я подучу куда смотреть я вообще ничего не понял с описания
Аноним 29/08/20 Суб 17:39:39 #440 №1791979 
>>1791961
ну из заданной строки вычисляешь производную , а потом х в том что получилось меняешь на второй аргумент функции считаешь как обычное выражение и ретернишь результат, думаю в интеренте есть какие нить онлайн калькуляторы диференциалов, можешь поискать и потыкать чтобы лучше понять
Аноним 29/08/20 Суб 17:42:33 #441 №1791983 
>>1791979
так же скорее всего в каком нить нампае уже все готово, надо только суметь засунуть это туда
Аноним 29/08/20 Суб 19:07:41 #442 №1792048 
>>1791938
обычно на работе владеют тобой

хихик
Аноним 29/08/20 Суб 19:19:17 #443 №1792055 
>>1791938
> накатывать на виртуалку какую-нибудь убунту и разбираться с ней
Да, но не графическую. Накати серверную. Оставь графику пердолям из /s/, а сам учи основы ОС: что такое монтирование, пермишены и владение файлами, пайпы, шелл, контейнеры, компиляторы, мейкфайлы итд.
Аноним 29/08/20 Суб 19:26:01 #444 №1792060 
>>1792055
не графическую(первым же делом htop,mc,aptitude,elink)
Аноним 29/08/20 Суб 20:51:09 #445 №1792102 
image.png
image.png
image.png
https://habr.com/ru/company/oleg-bunin/blog/512650/

Меня всегда интересовал вопрос: как подобные существа живут? И главное: не противно ли им каждое утро видеть свое красноглазое зашкваренное ебало в зеркале?
Аноним 29/08/20 Суб 20:52:49 #446 №1792104 
>>1792102
Нормальный код, чего тебе не нравится?
Аноним 29/08/20 Суб 20:55:35 #447 №1792106 
>>1792104
То, что Белый Человек пишет через async/await. Что в жс, что в питоне
Аноним 29/08/20 Суб 20:57:43 #448 №1792108 
>>1792104
Пасаны говорили - сиди жми кнопки целый день и дохуя плотят.
А тут сложна, ууу задроты сука.
Аноним 29/08/20 Суб 21:01:09 #449 №1792109 
>>1792108
Ты асинхронный код хоть раз в жизни писал/читал? А поддерживал уже написанный на проекте?
я - да, за любые выкрутасы с коллбеками вместо адекватной асинхронщины ты получил бы залупой по лбу от сеньора
Аноним 29/08/20 Суб 21:04:26 #450 №1792112 
>>1792109
Асинхронно парсил хтмл регулярками с помощью goto.
Аноним 29/08/20 Суб 21:06:53 #451 №1792114 
>>1792106
>То, что Белый Человек пишет через async/await. Что в жс, что в питоне
Я думал тебе type hints и лямбды не понравились. Насчет async/await ничего сказать не могу - я мамкин дата саентист и никогда их не использовал.
Аноним 29/08/20 Суб 21:21:24 #452 №1792129 
>>1791738
Спасибо. Лекции по сетям я читать вроде бы не собирался. Мне бы просто в двух словах пояснить, что к чему. Ну и я не на сетевого инженера иду.
Аноним 29/08/20 Суб 21:43:09 #453 №1792142 
Да ну, зачем мне английский язык, я же не собираюсь переезжать куда-то
Аноним 29/08/20 Суб 22:47:08 #454 №1792202 
Как правильно запустить небольшого питонобота на удаленном сервере?
Я кажется делаю что-то не то и когда запускаю сразу два разных через команды

python3 test1.py &
python3 test2.py &

то они как-то странно работают (то ли отключаются через некоторое время то ли еще что), когда я отключаюсь от сервера.
Может ли быть проблема в том, что рядом с основной выполняющейся командой в коде я писал print('что-то там, для проверки выполнения команды') ?
Но если я запускаю эти скрипты по отдельности, то они работают даже после отключения от сервера
Аноним 29/08/20 Суб 23:04:40 #455 №1792219 
>>1792202
убери принты и попробуй если еще так не сделал, потому что сам сталкивался с проблемами при попытке запуска в фоне скриптов которые печатают в консоль
Аноним 29/08/20 Суб 23:22:56 #456 №1792231 
>>1792202
Потому что надо запускать демонов
Гугли unix daemon и daemon python, в принципе если тебе похуй, можешь просто прочитать главу про daemonize и скопипасть код в Python Cookbook от Бизли, она там есть
Аноним 30/08/20 Вск 00:04:57 #457 №1792264 
>>1792202
& должен отваливаться после отключения. Чтобы не отваливался можно запустить через nohup.
Или вариант с удобствами - tmux, потом можно будет подключаться обратно.
Аноним 30/08/20 Вск 00:34:43 #458 №1792298 
>>1792202
Эта есть проблема, скрипты прибиваются, если им некуда вывод сохранять. Не разбирался почему, у питона есть история, а у ноды, например, нет.

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

Это перенаправление обычного вывода(1) и вывода ошибок (2) в никуда. Тогда всё прекрасно работает. Ну или в файл сохранять.
Аноним 30/08/20 Вск 00:36:13 #459 №1792302 
>>1792298
> pythom3 test.p1 1> /dev/null 2>/dev/null &
Ну и амперсант в конце, конечно
Аноним 30/08/20 Вск 00:39:59 #460 №1792307 
>>1792298
Первый раз такое слышу.
Ну и тогда уж command > /dev/null 2>&1
Аноним 30/08/20 Вск 02:07:15 #461 №1792364 
twisted до сих пор актуален или хуйня ебаная? Какие есть альтернативы?
Аноним 30/08/20 Вск 02:15:00 #462 №1792365 
>>1792364
asyncio
Аноним 30/08/20 Вск 06:34:53 #463 №1792399 
Кто-то юзал json validator на питохе? Можете в двух словах пояснить за него плиз.
Аноним 30/08/20 Вск 07:14:47 #464 №1792408 
>>1792399
> json validator на питохе
Какой из этих двухсот?
Аноним 30/08/20 Вск 09:09:45 #465 №1792426 
>>1792408
>schema
Аноним 30/08/20 Вск 11:01:27 #466 №1792463 
>>1792365
А что в итоге лучше и почему?
Аноним 30/08/20 Вск 15:14:59 #467 №1792688 
>>1792463
Оба все равно подвержены GIL, с asyncio нагляднее и чище код, вместо asyncio loop можно взять uvloop, синтаксис не поменяется
мимокрок
Аноним 30/08/20 Вск 15:17:20 #468 №1792690 
>>1792202
Читай маны про systemd. Stdout интерпретатора можно направить в файл или же потом в journal посмотреть. Раньше советовали обертки или circus, но они банально устарели. Systemd довольно мощный инструмент.
Аноним 30/08/20 Вск 15:23:19 #469 №1792693 
>>1792102
>За что мы любим Никиту Соболева — только он умеет писать на Питоне так, что хочется плакать и переходить на Джаву.

Мало того что он дрочит httpx, где майнтейнера сами советовали использовать взрослый aiohttp, так ещё и плодит всякую хуйню вместо кода. Httpx обратно совместим с requests, отсюда и проблемы. Хватит пинать хуи трупы уебищных синхронных либ. Исключение zeep, пушто вариантов больше нет. SOAP нынче не модно.
А так даже pysnmp легко заменяется хуяк-хуяк либой aiosnmp. Она простая, на asyncio и конечно же без yield и callback.
Аноним 30/08/20 Вск 15:27:10 #470 №1792698 
>>1789076

Работаю питонистом уже 2 года. Вышки нет.
Начинал в регионе, в маленькой аутсорс-компании.
Сейчас в дс, в мыле.
Но недавно восстановился на заочку, чтобы таки получить корочку(будет легче заводить трактор)
Аноним 30/08/20 Вск 15:28:30 #471 №1792699 
>>1791938
Если пишешь сервисы, то только линукс. Если у тебя шиндоус поставь WLS2. В продакшене будет или докер или AWS. Ты же понимаешь, что хуй ты спрячешь говнокод питоновский? Обфускация на уровне контейнера уже лучше.
Аноним 30/08/20 Вск 15:29:27 #472 №1792701 
>>1792698
О, расскажи про tarantool. Как оно? Реально ноухаю или местный костыль?
Аноним 30/08/20 Вск 15:44:56 #473 №1792722 
>>1792698
Чем конкретно занимаешься?
Аноним 30/08/20 Вск 15:54:57 #474 №1792737 
>>1792219
>>1792231
>>1792264
>>1792298
>>1792690
Спасибки, вроде заработало.
Аноним 30/08/20 Вск 15:58:53 #475 №1792744 
>>1792701
Не работал с ним сам.
Местным костылем бы не назвал, потому что его покупают(b2b) версию довольно крупные конторы.
Но, насколько знаю, развитие опенсорс-версии на какое-то заглохла. И только сейчас начинают его возобновлять
Аноним 30/08/20 Вск 15:59:33 #476 №1792747 
>>1792722
деванон
Аноним 30/08/20 Вск 16:30:50 #477 №1792770 
>>1792688
>Оба все равно подвержены GIL
Епт, а ниче что асинхронкам похуй на GIL? Мультитрединг/асинхронка это в принципе разные концепции конкурентного пограмирования
Аноним 30/08/20 Вск 16:43:53 #478 №1792780 
>>1792770
А ничего что асинкио использует потоки и по факту при наличии GIL это всего лишь сахар?
Аноним 30/08/20 Вск 17:02:45 #479 №1792801 
>>1792770
Пишешь из будущего, где пихон стал эталоном Энтерпрайза?
Аноним 30/08/20 Вск 17:08:19 #480 №1792807 
>>1792780
>асинкио использует потоки
Что?
Асинкио использует epoll/select, это другой подход, чем потоки.
Аноним 30/08/20 Вск 17:18:08 #481 №1792812 
>>1792693
>Никиту Соболева
Хех, а ведь я когда-то курсы от него смотрел - очень адектавно все объяснял
Аноним 30/08/20 Вск 19:40:54 #482 №1792931 
Если мне нужно воспользоваться только адной или парочкой функций из модуля, то будет плохой практикой полный импорт модуля?

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

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

Сильно ли эти два варианта отличаются в плане потребления "ресурсов"?
Аноним 30/08/20 Вск 19:41:42 #483 №1792933 
>>1792931
>адной
одной
глупофикс
Аноним 30/08/20 Вск 20:07:41 #484 №1792950 
>>1792931
>то будет плохой практикой полный импорт модуля?
Да. Особо ничего хорошо, если не нужно, то зачем его подгружать?!
Аноним 30/08/20 Вск 20:16:08 #485 №1792960 
>>1792950
А что насчет памяти? Правда что будет больше памяти жрать?
Аноним 30/08/20 Вск 20:30:19 #486 №1792988 
>>1792960
да, из за того, что таким образом ты имортируешь все объекты из модуля у каждого из которого свой вес, в отличии от поштучного где ты импортируешь всего один объект из модуля
Аноним 30/08/20 Вск 20:43:46 #487 №1793010 
>>1792931
абсолютно одинаково

при импорте всегда происходит выполнения кода в модуле который импортируется
разница между этими подходами только что из этого импортируемого модуля попадет в текущее пространство имен.
Аноним 30/08/20 Вск 20:45:06 #488 №1793012 
>>1793010
Т.е. анон выше не прав?
Аноним 30/08/20 Вск 20:48:56 #489 №1793017 
>>1793012
не прав.

польза есть если у тебя условный импорт внутри if, ведь импорт может не произойти.
иначе разница только в засранности пространства имен модуля
Аноним 30/08/20 Вск 20:51:51 #490 №1793021 
>>1793017
Спасибо анон. Просто я люблю импортировать с полным именем, чтобы понимать что к чему относится.
Аноним 30/08/20 Вск 22:21:16 #491 №1793076 
>>1793017
>не прав
>>1793010
>>при импорте всегда происходит выполнения кода в модуле который импортируется
Аноним 30/08/20 Вск 22:35:17 #492 №1793081 
>>1793076
Все верно же
Анон, который не прав, пишет что есть разница в потреблении памяти.

Но ее нет.

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

Аноним 30/08/20 Вск 22:46:18 #493 №1793085 
>>1793081
>как ссылка
не как ссылка, а как объект в памяти
Аноним 30/08/20 Вск 22:46:50 #494 №1793087 
>>1793085
>а как объект в памяти
шта?
Аноним 30/08/20 Вск 22:48:32 #495 №1793092 
>>1793087
Если надо объяснять, то не надо объяснять
Аноним 30/08/20 Вск 23:00:23 #496 №1793101 
>>1793092
Ясно все с твоей аргументацией


Аноним 30/08/20 Вск 23:03:37 #497 №1793104 
>>1792426
Ну чо пояснять, есть стандарт, это реализация стандарта. Валидатор сам описывается жсоном. Питонячая реализация вполне качественная и расширяемая, приспособить для сваггера можно.
Аноним 30/08/20 Вск 23:03:44 #498 №1793105 
Пагни, как держать себя в форме в плане алгоритмов? На работе понятное дело с ними почти не встречаюсь, для интервью подтянулся, устроился на работу, вот спустя почти два года снова начал готовиться к интервью и я просто охуел насколько просели мои знания и способности решать даже элементарные вещи.
Аноним 30/08/20 Вск 23:07:35 #499 №1793108 
>>1793104
Чем отличается от обочного requests тогда? Удобством?
Аноним 30/08/20 Вск 23:14:07 #500 №1793111 
>>1792463
Если коротко, то лучше го. В целом что на твистеде, что на торнаде, что на асинкио можно делать успешные проекты. Но асинкио в последние годы развивался куда более интенсивно, и он архитектурно правильнее, не нужно манкипатчить всю стандартную библиотеку. Вроде бы ещё он быстрее, так как там оптимизировали переключения в корутинах.

> подвержены GIL
Чёт орнул. Асинхронное приложение по определению не занимается суровыми вычислениями, там только перекладывание между потоками IO.
Аноним 30/08/20 Вск 23:20:36 #501 №1793116 
>>1792102
Этот чел очень упорот на всяких линтерах и чекерах. Ему уже кто только не говорил что надо язык менять. Но видимо жлобность галерного погонщика не даёт просто так заплатить за другой язык больше. Хочется и дёшево и красиво.
Аноним 30/08/20 Вск 23:22:17 #502 №1793117 
>>1793108
Ну это как спросить чем отличается солнце от самосвала.
Аноним 30/08/20 Вск 23:23:24 #503 №1793119 
>>1793105
> насколько просели мои знания и способности решать даже элементарные вещи
Чем же ты таким на работе занимался? Траву красил?
Аноним 30/08/20 Вск 23:32:16 #504 №1793123 
>>1793111
>Советует Go, заточенный под мультядерные системы
>Ну там ток I/O )))))) GIL норм)))
Аноним 30/08/20 Вск 23:47:16 #505 №1793133 
>>1793123
Хуйня. Питонов можно несколько запустить, если уж так хочется пригрузить проц. Про GIL пишут в основном клинические перфекционисты, для которых гил это такой вселенский фатальный недостаток, хотя на практике ой как сложно в него упереться, если ты занимаешься не вычислениями или играми. Тащемта даже это решается экстеншенами на си/цитоне, там можно отпускать гил, к примеру так делает numpy.

Го советую потому что он щас модный, и асинки это его киллер фича. Что-то такое, несложное, обслуживающее вебсокеты — самое оно.
Аноним 30/08/20 Вск 23:53:17 #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
...

Никаких ошибок не происходит, но при этом файл базы не создается, миграции не применяются.
Аноним 30/08/20 Вск 23:53:51 #507 №1793142 
>>1793133
>хотя на практике ой как сложно в него упереться
мне бы ваше счастье.

а го говно примитивное
Аноним 30/08/20 Вск 23:57:16 #508 №1793148 
Кто пишет блять все эти книги типа пок пок пишем игры на питухоне?
На нем вообще пишут игры, кроме карт на раздевание и хентай-новелок?
Аноним 30/08/20 Вск 23:58:01 #509 №1793149 
>>1793141
Ошибся.
Файл - создается
Миграция - не накатывается
Аноним 31/08/20 Пнд 00:02:28 #510 №1793155 
>>1793142
> мне бы ваше счастье
Расскажи о своём опыте, очень интересно.
Аноним 31/08/20 Пнд 00:03:23 #511 №1793156 
>>1793133
>Го советую потому что он щас модный
Курсы по 18500 продаешь или дващерам скидки?

Го вообще под другие задачи был создан, как и Rust. Вернее так: были конкретные задачи, для которых не было готового инструмента или он не отвечал требованиям бизнеса.
И фишка Го нихуя не горутины, а как раз таки возможность загрузить мультипроцессорную железку. Это как сказать что фишка JS это минимальный вес кода.
Lua был создан под конкретные задачи, Java пилили под задачи Сириус бизнеса, Раст пилили под задачи Mozilla, Питон же сначала изрыгнули as is, потом на пике популярность вышли талмуды PEP "бля, а чо так сделали? Теперь надо переделать, вот теперь заебись". Twisted же тоже не просто так появился.
Сейчас в opensource дохуя всего, что было сделано для внутреннего использования. Но бывает "первая доза бесплатно". Это просто к слову, вспомнилось что-то.
Аноним 31/08/20 Пнд 00:05:14 #512 №1793157 
>>1793148
Смотря что для тебя игры. Киберпанк и крузис точно не на питоне. Книги согласен, скорее вводят в заблуждение, для игор надо C++ или шарп, или жабу если фанат майнкрафта. Хотя наебенить прототип можно и на питоне.
Аноним 31/08/20 Пнд 00:06:06 #513 №1793158 
>>1793155
а что тут необычного. это в примитивных вещах пришел запрос в базусходит и выдал
а если что то нужно с данными еще делать, а то и вообще бд нет, то проц занят.
Аноним 31/08/20 Пнд 00:10:08 #514 №1793161 
>>1793156
Что сказать-то хотел? Бизнес какой-то, доза, какие-то задачи мозилла. Это какие интересно были задачи у мозиллы? Раст же пет проектом был.
> возможность загрузить мультипроцессорную железку
Такое можно делать на чём угодно, даже на питоне.
> фишка Го нихуя не горутины
А что тогда? Или давай иначе, кому нахер всрался го без горутин?
Аноним 31/08/20 Пнд 00:12:48 #515 №1793162 
>>1793161
>Такое можно делать на чём угодно, даже на питоне
мимокрок, но будем честными - на питоне не очень удобно ядра загружать
не для всех задач подходит
Аноним 31/08/20 Пнд 00:14:08 #516 №1793164 
>>1793158
> нужно с данными еще делать, а то и вообще бд нет, то проц занят
Ты каким местом читал мои посты? И второе, ну понятно масштабировать вертикально из-за гил сложно, а горизонтально пробовал?

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

Тебе шашечки или ехать? Java Core - 1 год, Котлин ещё один, а в Питоне за год можно что-то уже сдавать и отрефакторить. Работать будет в любом случае.
Аноним 31/08/20 Пнд 00:15:06 #518 №1793166 
>>1793162
Расскажи для каких не подходит.
Аноним 31/08/20 Пнд 00:15:52 #519 №1793167 
>>1793157
Я к тому, что игр на питоне не существует. 99% из существующих - это детские поделки на готовом движке для вн - ренпи. Поэтому мне интересно, нахуя такие книги пишут inb4 чтобы заработать лавандос на дебилах. Ну ведь реально, язык для этого не подходит, у него нет ни малейшей ниши в геймдеве, нет хороших примеров, нет инструментов для этого. Про майнкрафт и джаву - это не благодаря языку, а скорее вопреки.
Аноним 31/08/20 Пнд 00:18:55 #520 №1793168 
>>1793161
>Пет проект
>Software you know and love, like Firefox, Dropbox, and Cloudflare, uses Rust.
Прост чуваки в свободное время пилили, портфолио на ГитХаб забивали, ага.

Аноним 31/08/20 Пнд 00:21:16 #521 №1793170 
>>1793166
была у меня задача поиска дублей видео в сотнях тыщ
сделал отпечатки и нужно было сравнивать каждый с каждым

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

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

на шарпе все оказалось просто и в плане памяти и скорости и проход на шарпе 4 минуты (на моей машине конечно)

Аноним 31/08/20 Пнд 00:28:04 #522 №1793175 
>>1793170
И от чего такое расхождение, на чём просадка производительности у питона?

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

Но надо полагать, что основной ресурс съедает сравнение одного видео и другого. Там какая-то специальная либа для этого или что?
Аноним 31/08/20 Пнд 00:31:56 #523 №1793181 
>>1793167
> нет хороших примеров, нет инструментов для этого
Вот здесь в точечку. Ну хотя блендер есть. Книги наверное могут быть полезны для тех кто знает питон и боится крестов.
Аноним 31/08/20 Пнд 00:33:56 #524 №1793184 
>>1793175
>И от чего такое расхождение,
от того что я знаю шарп
выжав из однопотока питона все я пошел в шарп и там все приятно
а в питоне как я уже говорил непонятно как параллелить такой огромный список между процессами.

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

ключевое слово МУДРИТЬ. Для питониста, который знает только питон, нет выхода и он считает такую еблю вприсядку необходимым злом
у меня же пукан горит от того как приходится танцевать в питоне
Аноним 31/08/20 Пнд 00:34:22 #525 №1793185 
>>1793170
> обход на питоне занимал 5 часов
> проход на шарпе 4 минуты
О, это очередной феномен переписали с технологии XX на технологию YY, и сразу стало хорошо. И конечно же это заслуга технологии YY, а то что мы всё переписали и заново осознали проект, этого не было.
Аноним 31/08/20 Пнд 00:37:54 #526 №1793186 
>>1793184
> такой огромный список между процессами
Есть очереди, есть раунд робин. Можешь хоть в файл написать чё кому сравнивать. Очереди на процесспулах делаются супер изи.

> ключевое слово МУДРИТЬ. Для питониста, который знает только питон, нет выхода и он считает такую еблю вприсядку необходимым злом
Кек. Во всём виноват конечно же гил. Даже в том что ты не знаешь питон. Если ты так хорошо пишешь на шарпе, зачем ты начал делать это на питоне?
Аноним 31/08/20 Пнд 00:40:30 #527 №1793188 
>>1793185
Замечание не в тему

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

Аноним 31/08/20 Пнд 00:40:54 #528 №1793189 
>>1793175
>И от чего такое расхождение, на чём просадка производительности у питона?
У питона нет нормальной многопоточности. Чтобы использовать несколько ядер надо создавать процессы, а у каждого процесса своя виртуальная память. На линуксе питон создает новые процессы через fork и данные для чтения копировать не нужно. На винде такого нет и данные будут копироваться всегда. Вдобавок, что на винде что на линуксе по любому придется копировать назад результат. Если результат большой (например, картинка), то копирование его назад может убить всю производительность. В таком случае единственный вариант - переписывать кусок кода на крестах.
Аноним 31/08/20 Пнд 00:51:34 #529 №1793205 
>>1793186
>Есть очереди
эффективность у них слабовата чтобы решать задачу "в лоб"
>Очереди на процесспулах делаются супер изи
изи. но скорость не сравнить

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

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

Аноним 31/08/20 Пнд 00:51:34 #530 №1793206 
>>1793175
>шарить данные между процессами медленно
в 3.8 подвезли
https://docs.python.org/3/library/multiprocessing.shared_memory.html
Аноним 31/08/20 Пнд 00:55:06 #531 №1793211 
>>1793189
Зачем тебе на лету создавать и прибивать постоянно процессы?

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

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

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

И там и там можно жить, но степень удобства различается в разы.
И чем больше задача требует коммуникации между потоками, тем хуже все в процессах.
Аноним 31/08/20 Пнд 01:03:39 #533 №1793233 
>>1793211
>Ты делаешь несколько процессов-воркеров и между ними распределяешь задания, и всё.
У каждого воркера своя память. Мне, например, нужно было декодировать с огромной скоростью картинки и использовать их в основном процессе. Каждую картинку питон копировал сначала в процесс воркера, а потом назад в основной процесс, что занимало 90% времени. При использовании потоков такой хуйни бы не было.
Аноним 31/08/20 Пнд 01:04:28 #534 №1793238 
>>1793205
Как-то мутно это всё. Уверен что ты там что-то не так делал. Ну да, трединг позволяет не копировать ничего между процессами, но это нужно в основном игроделам каким-нибудь, у которых только ну никак неделимый стейт.
Аноним 31/08/20 Пнд 01:07:39 #535 №1793247 
>>1793233
Почему нельзя картинку взять сразу в воркере? Зачем её прогружать в мастере? Судя по всему у тебя мастер как-то агрегировал эти картинки. Мог ли воркер сделать частичную агрегацию на своей стороне, а потом отдать только результат для финального мержа?
Аноним 31/08/20 Пнд 01:08:08 #536 №1793249 
При случае можно перекатиться:
>>1793243 (OP)
>>1793243 (OP)
>>1793243 (OP)
>>1793243 (OP)
Аноним 31/08/20 Пнд 01:11:27 #537 №1793252 
>>1793233
> что занимало 90% времени
Может у тебя там сериализация тормозила? Или мастер тупил. Ну реально, звучит как хуета что оперативка не справляется с копированием.
Аноним 31/08/20 Пнд 01:22:26 #538 №1793272 
>>1793247
>>1793252
>>1793271 →
Аноним 31/08/20 Пнд 01:50:50 #539 №1793299 
>>1793117
В смысле? Я делаю запрос реквеста и потом в ручную парсю джесон и делаю валидацию. Или использую готовую библиотеку.
Вот и спрашиваю, какая разница?
Аноним 31/08/20 Пнд 01:51:30 #540 №1793301 
>>1793119
Пишу бэкенд. Но извини конечно я там задачи алгоритмов не решаю.
Аноним 23/10/20 Птн 13:35:24 #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
чтобы прервать цикл.
Заранее спасибо

Аноним 23/10/20 Птн 19:06:39 #542 №1837917 
можно ли как-то создать рамки ввода? к примеру указать что a = input() меньше 10 и больше 1
comments powered by Disqus

Отзывы и предложения