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

Ответить в тред Ответить в тред
Питон тред №98 /python/ Аноним 25/08/20 Втр 04:24:17 17872171
15977792511830.png 54Кб, 474x474
474x474
Тред, посвящённый языку программирования Питон, #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 17872522
Screenshot204.jpg 87Кб, 1405x437
1405x437
>>1787217 (OP)
пидорское видео на английском с бесполезным историческим погружением когда замените на нормальное руководство по асинкам?
Аноним 25/08/20 Втр 08:28:08 17872593
image.png 9Кб, 731x122
731x122
>>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 17872754
>>1787259
Лучше не лезь туда без опыта, соснешь.
Сама рекапча это виртуальная машина, там какая-то хуйня крутится. Точно проверяются мышковые ивенты и история айпи - если он слишком запален или много раз подряд решает - то будет усложняться и насыпать ещё, много перепроверок для одного решения и т.д.
Короче, наебешься знатно, а хорошего решения не получишь. Хорошее решение рекапчи - обезьянки-решатели.
Аноним 25/08/20 Втр 10:59:26 17873475
Сап програмач.Ньюфаг пайтон девелоперу нужна помощь, которой он несказано будет рад и благодарен.Суть вопроса такова:
Нужно написать функцию которая будет переносить строку если та превышает лимит в 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 17873686
вкотился
Аноним 25/08/20 Втр 11:29:18 17873807
>>1787275
>Лучше не лезь туда без опыта, соснешь.
Но опыт же где то набирать надо.

>Короче, наебешься знатно, а хорошего решения не получишь. Хорошее решение рекапчи - обезьянки-решатели.
Мне надо не решать её, а просто сделать РеКапча Виджет на Питоне, что бы решать её из своего приложения, а не из браузера.
Видимо придётся по красноглазить недельку другую, раз уж мне единственному такая идея в голову сбрела..
Аноним 25/08/20 Втр 12:12:22 17874548
>>1787347
Это ты опять со своими чеками? Тебе же в прошлом треде все сделали, не?
Аноним 25/08/20 Втр 12:22:26 17874689
>>1787454
Там не все помогли.Да и задание тут уже не с чеком.Входящими данными может быть любой текст, который должен переносится по лимиту символов.
Аноним 25/08/20 Втр 12:41:59 178748510
>>1787468
>Там не все помогли
Вот же сволочи ленивые. Сейчас мы все исправим, братиш. Вот глянь сюда https://ideone.com/tSQeUv
Это заготовочка по переносу строк. Но надо чтобы ты точнее сформулировал правила переноса и что является серединой слова, потому что из тобою написанного ни черта не понятно что где обрезаем.
Аноним 25/08/20 Втр 12:58:23 178750911
Аноним 25/08/20 Втр 13:37:37 178754512
>>1787380
> раз уж мне единственному такая идея в голову сбрела..
Видел такую хуйню в какой-то качалке с файлопомоек, так они сделали экстеншен для браузера под рекапчу. Наверное, как раз чтобы не ебаться с жабаскриптом.
Аноним 25/08/20 Втр 14:01:55 178757513
>>1787485
Ну смотри, по логике моего препода у нас есть какая-то строка.Эта функция считает количество символов, и если оно не превышает лимита то записываем полностью всю строку.Если заканчивается пробелом, то записываем до последнего пробела, а переносим уже все что после последнего пробела.В общем обрезаем по пробелу, и такого пункта как "середина слова" нет.
Аноним 25/08/20 Втр 14:12:44 178759114
Хочу чтобы моя функция принимала только конкретные агрументы, а если аргументы не те = выдавала ошибку. Куда гуглить?
Аноним 25/08/20 Втр 14:30:23 178761115
Аноним 25/08/20 Втр 14:31:50 178761516
>>1787575
Ты ленивый и тупой чёрт, за которого уже всё сделали и надо только марафет чуть-чуть навести.

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

Оказывается, несмотря на отсутствие ограничений на размер URL в HTTP, на практике их дохуя в разных программах и в hyper тоже.
Аноним 25/08/20 Втр 14:39:46 178763518
Аноним 25/08/20 Втр 14:50:41 178766119
>>1787633
aiohttp смотри, Client который.
Аноним 25/08/20 Втр 14:56:48 178767220
>>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 178767521
>>1787672
Мне не тип надо. Есть функция. Если её вызвать без аргумента или с аргументом "withBackUp", то она должна выполниться, делая бекап файла перед выполнением. Если же аргумент "withoutBackUp" - бекап не делать. Хочу сделать чтобы на любые другие аргументы была ошибка.
Аноним 25/08/20 Втр 15:05:16 178767822
>>1787611
Блин, я так и делал, но у меня ВЫДАВАЛО ОШИБКУ)))))))). На самом деле он выдавал не ту ошибку. Теперь всё работает. Спасибо.
Аноним 25/08/20 Втр 15:08:51 178768123
>>1787675
А если параметр hui, то чтобы вычислял длинну хуя.
Делаешь один дефолтный параметр backup=False, можно его кейвордом передать, всё.
Аноним 25/08/20 Втр 15:10:32 178768424
>>1787635
Спасибо большое доброанон.Добра тебе.
Аноним 25/08/20 Втр 15:11:33 178768825
>>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 178772526
изображение.png 2Кб, 422x285
422x285
Аноны, как я могу двигать объекты в html с flask беком? Речь идет о следующем:
Аноним 25/08/20 Втр 16:05:44 178773927
>>1787725
объясни подробнее, задача непонятна
Аноним 25/08/20 Втр 16:11:30 178774628
>>1787688
>else:
>print('Umadbruh?')
Няш, ну я не такой даун, чтобы про else/if спрашивать. Мне нужно чтобы интерпретатор слал нахуй, а не printом ругаться.
Аноним 25/08/20 Втр 16:11:31 178774729
>>1787739
Существует 2 области на сайте, пользователь перетаскивает объект с одной области в другую. Что-то вроде kaiten'a.
Аноним 25/08/20 Втр 16:27:20 178776430
>>1787746
Все же ты даун.

raise Exception('I am really stupid')
Аноним 25/08/20 Втр 16:28:07 178776631
>>1787764
Ну что же ты обиделся то?
Аноним 25/08/20 Втр 16:39:27 178777732
>>1787747
ну делаешь модель область
делаешь модель объект
делаешь ManyToMany
Аноним 25/08/20 Втр 17:39:20 178783633
ELDOdnHWoAADubA.jpg 36Кб, 569x528
569x528
Какие подводные если сразу начать учить django скипая любой учебник по python ?
Аноним 25/08/20 Втр 17:43:02 178783934
>>1787836
Никаких. Быстрее осилишь джангу - быстрее возьмут сразу синьором-помидором и будешь на галере руководить.

>>1787766
потому что можно загуглить как кидать ошибки интерпретатору?
Аноним 25/08/20 Втр 17:49:56 178784235
>>1787777
Вот только достаточно было бы взять библиотеку JS чтобы не городить костыли.
Аноним 25/08/20 Втр 19:04:45 178790136
>>1787842
Пишу чисто ради гита
Аноним 25/08/20 Втр 19:08:35 178790737
Аноним 25/08/20 Втр 19:09:21 178791038
>>1787907
Он потом пихается в резюме на джуна
Аноним 25/08/20 Втр 19:10:22 178791339
>>1787910
ну так учи сам (говно)гит раз уж очень надо
писать что то ради гита - не понимаю
Аноним 25/08/20 Втр 19:13:19 178791740
Аноним 25/08/20 Втр 19:14:55 178792241
>>1787917
дякую боже шо я юзаю гитхаб без гита
Аноним 25/08/20 Втр 19:19:55 178793242
>>1787901
Ну ок, правда читал в антипаттернах проблему Uber, когда была дырка в HTML шаблонах, и можно было инъекцию сделать в бэке в базу.
Приложение Vue можно на NodeJS запускать вообще отдельно.
Аноним 25/08/20 Втр 19:23:04 178793943
>>1787932
>Приложение Vue можно на NodeJS запускать вообще отдельно.
Ну это дополнительные проблемы добавляются, а писать хуйню тоже не хочется. Тогда такую страницу не стоит клепать для резюме?
Аноним 25/08/20 Втр 19:25:55 178794244
>>1787939
Для резюме делай конечно. Чем больше покажешь тем лучше.

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

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

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

for name in contact_names

Почитай доки пожалуйста. Говнокод у тебя. Чтобы было наглядно раздели на функции. А так макарон на одна большая. Сам же запутаешься.
Аноним 25/08/20 Втр 23:21:34 178810066
Аноним 25/08/20 Втр 23:41:57 178811967
>>1788087
Да, на месте пользования не стоит python, поэтому запускаю через сгенереный дома exe файл, возможности просто запустить cmd от админа и ввести python my_file.py нет
Аноним 25/08/20 Втр 23:50:47 178812368
Аноним 26/08/20 Срд 00:16:39 178814169
Аноны что у вас было на гитхабе, когда устроились на работу и сильно ли это повлияло
Аноним 26/08/20 Срд 00:28:17 178814970
>>1788119
Так собери манифест или запусти exe от админа. Elevate в случае шиндоуса 50/50
Аноним 26/08/20 Срд 00:30:15 178815071
>>1788086
ой пиздец пиздец, ты каких то методов понабрался и воротишь просто ёбаныйрот... Наверни ещё курсов.
Аноним 26/08/20 Срд 00:44:16 178815772
>>1788097
>>1788123
>>1788150
Кек. Да я 5 день учу питон. До этого вообще не знал, что такое программирование. Просто почувствовал, что задачка должна решаться проще.
Аноним 26/08/20 Срд 00:52:52 178816573
>>1788157
Зачем сюда что-то постить, если ты учишь питон 5 дней?! Очевидно, что всем похуй.
Аноним 26/08/20 Срд 00:59:42 178817274
>>1788165
Это же элементарно. На борде любой может выложить говна на всеобщее обозрение и каждый мимокрок его занюхнёт. Ты просто оказался этим мимокроком.
Аноним 26/08/20 Срд 03:07:43 178822975
>>1788141
Ничего. Никак.
Был опыт с прошлых мест работы, все. На вопрос "пилили пет-проекты?" ответил, что нет, я вне работы этой хуйней не занимаюсь.
Аноним 26/08/20 Срд 03:42:13 178823476
Блядский имгур не хочет принимать мою мобилку при регистрации. Какой хостинг посоветуете, чтобы было максимальное простое api для вкатыша? мне чисто несколько картинок в проге загрузить.
Аноним 26/08/20 Срд 09:31:42 178836677
>>1788119
Напиши на powershell и не страдай
Аноним 26/08/20 Срд 09:42:29 178839878
если мне нужно на другой пеке запустить скрипт, где хуй знает какой питон и вообще есть ли он, и я не собираюсь делать промышленное решение, норм тема копировать туда venv и запустить батником с указанным путем до .exe?
а то почитал про всякие паковщики для винды - там ебаная муть, мне пока лень разбираться
Аноним 26/08/20 Срд 09:46:56 178840879
Аноним 26/08/20 Срд 09:48:59 178841180
>>1788398
>лень
Ну и иди нахуй тогда? На SO разжеваны все варианты.
Аноним 26/08/20 Срд 10:13:50 178844281
Аноним 26/08/20 Срд 10:23:46 178845182
>>1788442
Чем запуск скрипта с рядом лежащим окружением на повершелле отличается от батника?
Аноним 26/08/20 Срд 10:30:40 178845583
>>1788451
Powershell не для запуска скрипта из окружения. Просто берешь и без задней мысли переписываешь скрипт на powershell. И ни питон, ни окружение не нужны.
Аноним 26/08/20 Срд 10:32:28 178845984
>>1788455
>Напиши на powershell
>не страдай
Как это сделать? Умереть в процессе?
Аноним 26/08/20 Срд 12:10:12 178854485
Аноним 26/08/20 Срд 12:56:33 178857986
>>1788544

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

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

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

так что питоновский декоратор не имеет ничего общего с паттерном "декоратор". Ну разве что он может создать обертку (как частный случай)
Аноним 26/08/20 Срд 12:57:35 178858087
>>1788451
анальными ограничениями с политикой запуска.
Аноним 26/08/20 Срд 13:13:44 178859188
>>1788544
В общем в декоратор передается декорируемый объект и что вернет декоратор - то и попадет в пространство имен. А декоратор внутри себя может сделать что хочет и вернуть что хочет. В декоратор может уйти функция, а вернется int и будет у тебя int переменная в итоге.
Бесполезно, но главное суть
Аноним 26/08/20 Срд 14:04:34 178865989
>>1788579
>>1788591
Всё, разобралс, не хватало примеров, спасибо
Аноним 26/08/20 Срд 14:25:45 178868690
Двач, помоги, есть у меня в папке файл с .мп4 расширением и я его хочу переименоать с
return os.rename('.mp4', url[-10:]+'.mp4')
Как мне прописать нормальное регулярное выражение в '
.mp4' и не качать лишние модули. Так и не понял просто как регулярки в самом питоне работают
Аноним 26/08/20 Срд 14:32:44 178869891
>>1788686
В питоне регулярки не часть языка, они сидят в искаробочной либе re.
Аноним 26/08/20 Срд 14:40:06 178870792
>>1788686
Тебе надо ренейм вызвать для всех файлов, заканчивающихся на mp4?
Ренейм же вроде один файл/директорию переименовывает, нет? Мне лень смотреть.
В цикле наиграй список файлов, проверь что заканчивается на mp4 через какой-нибудь endswith или регуляркой типа .*\.mp4$, потом ренейм.
Либо я не понял что-то.
Аноним 26/08/20 Срд 14:43:37 178871393
>>1788707
Я хочу удалять файл после переименования, просто я скачиваю его и мне нужно знать точное название из его url, поэтому я хочу просто использовать регулярнку на 1 файл, кто-нибудь может мне подсказать что мне нужно запихнуть в '.mp4', я не понимаю, ибо r'.mp4$' не работает
Аноним 26/08/20 Срд 14:45:33 178871694
>>1788713
str = re.sub(r'regex', 'replace', str)
Аноним 26/08/20 Срд 15:02:20 178874195
Если кому-то понадобится, то по итогу самым удобным оказалось таккое использовать:
return os.rename(glob.glob("*.mp4")[0], url[-10:]+'.mp4')
Аноним 26/08/20 Срд 15:04:01 178874496
> glob.glob("*.mp4")[0]
ебать норкоман
Аноним 26/08/20 Срд 15:12:45 178875497
>>1788744
a = []
b = [[], []]

bool(a) # False
bool(b) # True
Почему bool(b) True?
Аноним 26/08/20 Срд 15:13:31 178875698
>>1788754
Потому что пустой список кастуется в фолс, а б уже не пустой список.
Аноним 26/08/20 Срд 15:16:05 178876099
>>1788756
а, точно, вот я слоупок
Аноним 26/08/20 Срд 15:29:40 1788765100
Можно ли писать return await handler(request) ?
Аноним 26/08/20 Срд 16:36:24 1788835101
IMG202008261635[...].jpg 305Кб, 1080x829
1080x829
Кто это, блять?
Почему мне его постоянно показывает Яндекс?
Аноним 26/08/20 Срд 17:16:51 1788898102
Аноним 26/08/20 Срд 17:18:03 1788901103
в реализациях Jython (java) и IronPython (С#) нет GIL потому что они созданы поверх других VM? и они уже берут потоки из их реализаций, тогда как там устроены потоки и почему GIL там нет?
Аноним 26/08/20 Срд 17:18:51 1788903104
>>1788901
имею ввиду что java/net не имеет подобного механизма
Аноним 26/08/20 Срд 17:20:01 1788904105
>>1788901
>в реализациях Jython (java) и IronPython (С#) нет GIL потому что они созданы поверх других VM?
Да, но это заброшенное говно мамонта, которое контрибьютит 2.5 компании
Аноним 26/08/20 Срд 17:24:26 1788908106
>>1788904
согласен, меня больше интересует краткая информация как допустим реализована многопоточность без GIL, хотя я только ща сформулировал свой вопрос который меня интересовал, пойду гуглить, хотя если кто-то бросит инфу типо таблицу сравнения мб, буду благодарен
Аноним 26/08/20 Срд 17:38:57 1788916107
>>1788908

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

У жавы и шарпа в каждый объект встроен невидимый мутекс.
Аноним 26/08/20 Срд 17:53:21 1788928109
Аноним 26/08/20 Срд 17:56:16 1788932110
>>1788172
Ты ещё и токс.. Пиздуй на курсы
Аноним 26/08/20 Срд 18:02:09 1788942111
>>1788908
>многопоточность без GIL
Для начала там GC работает по иному принципу, а не по инкременту/декременту счетчика ссылок
В ЖС тоже многопоточности как таковой нет, но асинхронка там тащит
Аноним 26/08/20 Срд 18:05:43 1788945112
>>1788942
есть ссылочки почитать?
Аноним 26/08/20 Срд 18:11:21 1788946113
>>1788765
Можно, экономишь байты. Потом правда можешь запутаться
Аноним 26/08/20 Срд 18:22:28 1788952114
Аноны, что следует подучить для стека на джуна, в данный момент Django/Aiohttp, Celery, Docker, SQL (MySQL), Redis, RabbitMQ
Аноним 26/08/20 Срд 18:24:44 1788954115
>>1788952
+фронт (верстка и ванильный жс хотя бы)
+Postgres
Аноним 26/08/20 Срд 18:25:09 1788955116
>>1788908
нашёл себе норм материал покрывающий большую часть моих вопросов о gil, linux, потоках, сравнениях, на скорости х2 зоебис идет
https://www.youtube.com/watch?v=AWX4JnAnjBE
Аноним 26/08/20 Срд 18:26:15 1788956117
>>1788954
что нужно знать о postgres джуну? типо пояснить за индексы? типы данных?
мимокрокодил
Аноним 26/08/20 Срд 18:28:13 1788957118
Аноним 26/08/20 Срд 18:28:38 1788958119
>>1788956
Базовые макакские операции:
работа с консолью - создание/менеджмент юзеров, обычные sql-query
работа с pgadmin
понимание индексов, constraints и возможно views
Аноним 26/08/20 Срд 18:28:41 1788959120
Аноним 26/08/20 Срд 18:29:27 1788962121
>>1788958
Все есть в оф документации (кроме pgadmin возможно), даже pdf скачать можно
Аноним 26/08/20 Срд 18:32:17 1788967122
>>1788954
Ну немного с ванильным ЖСом знаком + на Vue с каким-нибудь Vuetify в принципе смогу сверстать сайт, просто не подумал что стоит указать к питон-скилам.
>+Postgres
Основное же в принципе как в MySQL кроме наворотов постгреса, но спасибо, подучу тогда еще
Аноним 26/08/20 Срд 18:33:02 1788970123
>>1788967
> стоит указать к питон-скилам.
asyncio. модно молодежно
Аноним 26/08/20 Срд 18:34:17 1788972124
>>1788970
>asyncio
Не о чем. Это фреймворк-каркас. Асинхронка строится поверх него. Лучше указывать aiohttp, tornado или fastapi
Аноним 26/08/20 Срд 18:34:54 1788974125
изображение.png 4Кб, 380x67
380x67
>>1788959
звучит громко также как и web 2.0 скатилса
но переделывать никто конечно же не будет
Аноним 26/08/20 Срд 18:40:19 1788977126
>>1788972
ну да. я про то что нужно указать чистое асинкиошное типа "подвержен современным веяниям", а не "люблю динозавров"
потому не торнадо, но фастапи
Аноним 26/08/20 Срд 20:20:30 1789028127
>>1788959
Там же с 15 сентября. И явно будет топить за родной GoLang и Java.
Аноним 26/08/20 Срд 20:21:33 1789029128
>>1788977
Ну так можно ещё и сказать, что 3.5 говно, пойду только если 3.7+, лол.
Аноним 26/08/20 Срд 20:25:47 1789031129
>>1789028
там отборочные завтра заканчиваются
Аноним 26/08/20 Срд 21:13:15 1789076130
Аноны, кто работает питон разработчиком и не фрилансит, а именно полноценно, расскажи, есть у вас техническая вышка или нет? Интересно, какой примерно % таких, насколько это требуется (можно конечно спросить в работа треде, но пограмист программисту рознь, раз уж я начал питон учить, хочется и ответ получить именно от питонистов)
лох 26/08/20 Срд 21:37:22 1789090131
Пацанессы, где обрабатываете ошибки бизнес логики из интеракторов? Во вьюхах ловите или в глобальном хенделере транслируете в API исключения?
Аноним 26/08/20 Срд 22:15:19 1789120132
>>1789076
> есть у вас техническая вышка
Ну, я начал работать когда остался в компании после практики на третьем курсе. Так что тут ответить даже не знаю как, нужна не нужна вышка. По тому что я смотрел и знаю, питон самый доступный (ну, может второй после JS) для вката без вышки. Правда большинство компаний все равно страхуются, непонятно зачем, и берут только людей с вышкой. Поэтому все равно стоит внимательно следить за вакансиями, ну и потому что язык хайпует, то часто это выливается в какие-то крутые ХАКА-МАРА-ФОНО-ТОНЫ с отбором в виде череды тестовых заданий где "20 лучшим предложат работу в такой-то компании".
Аноним 26/08/20 Срд 22:23:20 1789131133
>>1789076
Я магистр по радиотехнике из питерского Политеха. И что? По специальности я мог лишь перекатываться в байтоебство на МК и ПЛИСинах (причем учил я по большей степени это все сам, таких пар у нас не было)
Из курса универа конкретно мне помогли лишь пары товарища Синепола про сети, все остальное я учил сам
Аноним 26/08/20 Срд 22:25:45 1789133134
Аноним 26/08/20 Срд 23:01:26 1789152135
>>1789029
а че сразу лол. то что всегда на острие современного тоже ценят кое где
Аноним 26/08/20 Срд 23:16:09 1789174136
>>1789152
Ага и смотрю удаленку бэкэнда питона: flask/django. Хочешь эджи стайл - ML. Короче это как RoR, поезд ушел. Java/Go на какое-то время займет умы погонщиков. Пока не будет нормального ORM с асинхронкой остаётся только DRF и CRUD пилить.
Облизнулся на GraphQL, но какая-то непонятная херня, опять же привязка только к SQLAlchemy, а там асинхронкой и не пахнет.
Остаётся только надеяться и двигаться в сторону ML.
Аноним 26/08/20 Срд 23:41:57 1789192137
дык сосредоточься на концепциях. пиши на многих языках чтобы впитать парадигмы.
сменить язык будет легко

Аноним 26/08/20 Срд 23:53:40 1789199138
>>1789174
>SQLAlchemy, а там асинхронкой и не пахнет
Ниче что в алхимии можно спокойно поставить движок вроде aiopg и будет тебе асинхронка? Ты peewee для этого не обязан накатывать
Аноним 26/08/20 Срд 23:57:53 1789200139
Парни, может кто примерно прочитать что в этом 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 1789203140
>>1789199
Не в обиду мейнтейнерам, но это только 1 коннектор. Если есть легаси на MySQL или просто решили использовать MariaDB/Percona, то уже все сложнее.
Аноним 27/08/20 Чтв 00:16:18 1789205141
Аноним 27/08/20 Чтв 00:26:34 1789208142
Суп. Я не разработчик, но появился варик послать меня нахуй на обучение питону за корпоративные бабки, но как я понимаю, всюду сейчас ебаные инфоцыгане. Подскажите, мб все-таки есть какой-то толковый онлайн-курс по питону? Мне вкатываться не надо, но освоить азы, чтобы они были структурированны - вполне помогло бы, т.к. на работе имею дело с ботом на ямле и питоне.
Аноним 27/08/20 Чтв 00:34:59 1789210143
>>1789208
На edx бесплатные курсы же есть, знание ангельского обязательно.
Тебе все равно никто про все возможные подводные камни не расскажет. Такого в принципе не может быть, сам шишки набиваешь или смотришь кто уже набил их на SO.
А при чем тут yaml? Это markup language как xml/toml. Отвратительный, но его рэдхат толкает.
Аноним 27/08/20 Чтв 00:41:08 1789214144
image.png 221Кб, 508x330
508x330
>>1789210
>На edx бесплатные курсы же есть, знание ангельского обязательно.
Я пробовал кучу курсов уже, хуй знает, не идет без тутора. Я наверное тупой просто.
>А при чем тут yaml?
А вот тут не ебу, такой стек.
Аноним 27/08/20 Чтв 01:06:53 1789221145
>>1789205
Да не суть какие модели даже на самом деле, не въезжаю зачем там and_ и or_ внутри join для начала
Аноним 27/08/20 Чтв 01:12:20 1789223146
>>1789208
все какие то особые спец курсы ищут
я вот начинал с https://pythonworld.ru/samouchitel-python
ну и про модули разные читал что есть в коробке
остальное догналось в практике и чтением SO
Аноним 27/08/20 Чтв 03:56:51 1789260147
>>1789131
Да я собсна спрашивал не про пользу знаний из вуза, а про корку. А то я приду со своим юрфаковским бакалавриатом на собес, и меня даже спрашивать по технической части не станут, этого опасаюсь. У меня просто маленькая мухосрань, поэтому я не могу как в москве или питере ходить по миллиону собесов так сказать из спортивного интереса, и переезжать в ближайшие пару лет не варик.
Аноним 27/08/20 Чтв 05:12:55 1789275148
Аноны, подскажите плз про модуль os, а именно про os.environ. Мой скажем так наставник посмотрел прогу, которую я по его заданию накропал и сказал, что нужно вместо вбития логина и пароля от скайпа прямо в коде (прога должна некоторые данные слать через скайп) как-то брать логин и пароль через os.environ. Чет гуглю, вроде эта хуйня вообще для другого используется, что я не понимаю?
Аноним 27/08/20 Чтв 05:22:38 1789277149
>>1789275
upd Ну я понимаю, что можно создать переменную окружения на моем компе, и использовать ее в коде. Но тогда у других людей на компе она не запустится, и в чем тогда преимущество перед просто вбитием своих данных в код ручками? Или можно просто в отдельном файле создать словарь с логином и паролем, будет почти тот же эффект, что и от осэнвирона.
Аноним 27/08/20 Чтв 08:20:43 1789314150
>>1789277
Преимущество в том, что пароли не сливаются при передаче исходников, в т.ч. через гитхаб и подобное.
Это примерно как приватный ключ для ssh, у тебя всё работает и заебись.
Аноним 27/08/20 Чтв 08:43:39 1789321151
>>1789314
т.е. преимуществ по сравнению с тем, что я например залью пассы в файлик, который потом на гитхаб не буду заливать и импортирую из него переменную пассворд нет?
Аноним 27/08/20 Чтв 08:50:06 1789325152
>>1789321
Ну тут готовый механизм, а там файлик, ебля с gitignore, пояснения, что должен ещё быть файлик с таким-то форматом и т.д.
Аноним 27/08/20 Чтв 08:55:33 1789328153
>>1789277
1. Тестовая среда.
2. Недообфускация, чтобы ты в коде случайно не оставил личные данные при заливке на GitHub.

По-хорошему надо в хэш перегонять и в конфигурации по типу toml/yaml/ini писать.
Аноним 27/08/20 Чтв 08:58:47 1789329154
>>1789328
И что с этим хешем потом делать, норкоман?
Аноним 27/08/20 Чтв 09:01:47 1789331155
Аноним 27/08/20 Чтв 09:04:20 1789334156
>>1789331
А, это про скайп. Разговор был про вообще, вариант с env много где применяется.
Аноним 27/08/20 Чтв 09:26:11 1789343157
Привет, анон. Недавно изучаю программирование, так что не пинайте. Есть такая строчка:
if string == "" or string == "\n" or not string.startswith("#") and len(string.rstrip()) > 33:

Очевидно проверяет наличие пустых строк и строк длиннее 32 символов, которые не начинаются на "#".
Вопрос: Как это написать не так громоздко и более читаемо?
Аноним 27/08/20 Чтв 09:39:54 1789351158
>>1789343
re.match(r'[^#\n].{,31}$', string)
Аноним 27/08/20 Чтв 09:47:16 1789360159
>>1789351
Мне нужно True/False получить, а не строку.
Аноним 27/08/20 Чтв 09:53:18 1789363160
>>1789360
Без матча будет None, так что можно проверять.
Аноним 27/08/20 Чтв 10:14:33 1789392161
>>1789351
Близко, но не то. Посмотри внимательнее условия:
Пустая строка даёт True
Строка длиннее 32 символов И не начинающаяся с # даёт True
Строка длиннее 32 символов И начинающаяся с # даёт False
Твоё регулярное выражение в последних двух случаях выдаст True.
Аноним 27/08/20 Чтв 10:23:47 1789402162
pycharm64uR6gl0[...].png 5Кб, 682x23
682x23
pycharm64N00aKu[...].png 3Кб, 235x67
235x67
Объясните еще ньюфагу, что за ебанина. Я же явно использую модуль os, почему импорт горит серым, как-будто не использую, и когда жму контрол-альт-о, которое должно пофиксить импорты по пеп 8 - он такой серый импорт просто стирает
Аноним 27/08/20 Чтв 10:24:03 1789403163
>>1789402
это пучарм, если вдруг что
Аноним 27/08/20 Чтв 10:25:58 1789405164
>>1789392
Вообще-то # с длинной никак не связан в оригинальном выражении. Чтобы был связан, там нужны скобки.
Аноним 27/08/20 Чтв 10:40:30 1789427165
>>1789405
Ты уверен? Я протестил сейчас и всё как я сказал. Поставил скобки для наглядности.
Аноним 27/08/20 Чтв 10:59:12 1789446166
>>1789427
Да, что-то я не сообразил.
Ну тогда так.
re.match(r'#.+|.{1,33}$', string.rstrip())
Аноним 27/08/20 Чтв 11:05:33 1789453167
>>1789446
Отлично, спасибо. Эх и ебля с регулярными выражениями.
Аноним 27/08/20 Чтв 11:22:11 1789478168
>>1789446
Чето я не понял. Как вот это условие реализовано:

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

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

ИЛИ

2. от 1 до 33 любых символа до конца строки
Аноним 27/08/20 Чтв 11:34:09 1789501169
>>1789478
Хватить меня путать, лол.
Если начинается с #, то ограничения на длинну нет. Так это работает в оригинальной строчке и в этой регулярке.
Аноним 27/08/20 Чтв 11:41:05 1789517170
>>1789501
Так у тебя матчит все строки начинающиеся с #, хотя не должно
Аноним 27/08/20 Чтв 11:42:02 1789519171
>>1789517
ну так инвертировать надо.
Аноним 27/08/20 Чтв 11:43:56 1789523172
Аноним 27/08/20 Чтв 11:44:21 1789525173
>>1789501
>>1789478
Там должно быть {1.32}, так как больше 32 нельзя.
>>1789517
Так если условие не выполняется, то будет None и if None, то уже у меня там мутится всякое. Всё работает.
Аноним 27/08/20 Чтв 11:47:09 1789530174
>>1789334
Я про хранение credentials в целом, бро.
Аноним 27/08/20 Чтв 11:51:11 1789536175
>>1789525
Достаточно if not re.match
Аноним 27/08/20 Чтв 11:54:22 1789539176
>>1789536
Я думал это только с False прокает. Что ещё считается not? 0, False, None.
Аноним 27/08/20 Чтв 11:55:07 1789541177
>>1789539
Все что пусто - то False
Аноним 27/08/20 Чтв 11:56:09 1789542178
Аноним 27/08/20 Чтв 12:35:31 1789574179
Анончики, пользуюсь модулем logging.
Как мне логировать инфу/дебаг в один файл, а ошибки - во второй?
Аноним 27/08/20 Чтв 12:46:36 1789589180
>>1789574
логгинг в питоне какой то базовый "все пишут в 1 файл"
если нужно в больше то нужно мудрить
какие то конфиги, какие то фильтры. брррр.

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

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

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

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

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

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


Аноним 27/08/20 Чтв 12:51:39 1789596181
>>1789589
Ну это звучит очень разумно, да
Аноним 27/08/20 Чтв 12:56:46 1789609182
>>1789208
хочешь научиться языку решай литкод/хаккерранк
Аноним 27/08/20 Чтв 13:04:30 1789622183
>>1789574
>>1789589
Ладно. Походу ничего лучше, как открывать каждый раз файл лога ошибок при обработке оных и писать туда все, нет. Хех.
Аноним 27/08/20 Чтв 13:06:05 1789627184
>>1789622
Почему бы не писать в один файл, а уже при чтении фильтровать на что смотреть?
Аноним 27/08/20 Чтв 13:06:22 1789628185
Аноним 27/08/20 Чтв 13:12:00 1789639186
Аноним 27/08/20 Чтв 13:19:20 1789650187
>>1789639
Даже в этом решении нет полного разделения. Те логи, что уровня WARNING, энивей попадают в дебаг. Дурацкая иерархия.
Аноним 27/08/20 Чтв 13:19:40 1789652188
>>1789650
>попадают в инфо
Быстрофикс
Аноним 27/08/20 Чтв 13:25:59 1789669189
>>1789650
ну обычно разделяют по minlevel. ведь эти файлы потом еще и читать нужно
Аноним 27/08/20 Чтв 13:29:02 1789676190
А че, все пользуются logging изкоробки? Не могу альтернатив найти
Аноним 27/08/20 Чтв 13:34:16 1789681191
>>1789650
> Те логи, что уровня WARNING, энивей попадают в дебаг.
ну так создайте наследника от нужного хендлера и перегрузите метод filter где и решайте подходят ли данные записи для этого хендлера
Аноним 27/08/20 Чтв 13:53:12 1789695192
image.png 9Кб, 567x133
567x133
Извиняюсь, что немного не по теме, но основной на Пистоне.
Как вывести id в html?
Аноним 27/08/20 Чтв 13:54:28 1789698193
>>1789695
какая разница на чем основной, если представленный кусок требует знания жс. а не питона
Аноним 27/08/20 Чтв 14:23:53 1789744194
s = set()
for i in s:
....print(False)
else:
....print(True)
почему выводит True?
и 2 вопрос: почему некоторые щитают что конструктор в питоне это __init__, а другие __new__?
Аноним 27/08/20 Чтв 14:29:43 1789757195
Аноним 27/08/20 Чтв 14:30:44 1789761196
>>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 1789762197
>>1789744
else для for срабатывает, если не было break вроде.
Довольно ебанутая и неочевидная конструкция.
Аноним 27/08/20 Чтв 14:36:10 1789766198
>>1789574
мб стоит попробовать pip install loguru
Аноним 27/08/20 Чтв 15:05:02 1789795199
Аноним 27/08/20 Чтв 15:48:29 1789883200
>>1789589
Не совсем понял, ты же можешь создать пул хэндлеров и просто ротировать их путем оверлоада выбирая тип лога .debug, .warning и так далее. Не вариант?
Аноним 27/08/20 Чтв 16:10:13 1789947201
>>1789766
> loguru
О! Спасибо, годнота.
Аноним 27/08/20 Чтв 16:20:53 1789970202
>>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 1789993203
А Microsoft Visual Studio Code с питоном работает как-то не очень, да? Постоянно какие-то ошибки всплывают, подсвечиваются и проверить питонофайл можно только запустив в итоге. Лучше поменять IDE или там надо что-то допиливать в нем?
Аноним 27/08/20 Чтв 16:30:17 1789994204
>>1789883
можно конечно использовать хак для getLogger(name) где если server.api.internal то ему хендлер который пишет в тот же файл но фильтр INFO

но это и будет то же самое. Просто выраженное в коде, а не на уровне конфига "сообщения вот от этого логгера направь отдельно вон туда учитывая минлевел"
добавить звездочку и конфиг и вот и получится то, что я описываю
Аноним 27/08/20 Чтв 16:30:37 1789995205
>>1789574
Опа, знаю твое задание, тянка делает его же)))
Аноним 27/08/20 Чтв 16:39:27 1790013206
>>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 1790017207
>>1789993
IntelliSense и PyLance включи.
Аноним 27/08/20 Чтв 16:42:02 1790018208
>>1790013
как бы не то же самое ну вообще
Аноним 27/08/20 Чтв 16:54:03 1790042209
>>1790018
ну ты же можешь сделать override методов, только тебе придется каждый раз делать операцию по добавлению хэндлера и его удалению

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В данном случаи, при выборе класса а, в soup.text было только а
Аноним 27/08/20 Чтв 17:56:57 1790113220
>>1790110
1 непонятен вопрос
2 почему бы не использовать то, что поддерживает xpath
Аноним 27/08/20 Чтв 17:58:50 1790116221
>>1790113
1. можно сделать без исключения. Мне надо достать условно говоря а, но при использовании .text, подтягивается еще и b
2. сайт выдает уебанский html, и все в таком виде, ничего с этим поделать не могу
Аноним 27/08/20 Чтв 18:08:26 1790120222
Аноним 27/08/20 Чтв 18:09:21 1790121223
>>1790120
спасибо, хуево искал

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

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

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

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

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

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

а я выучил xpath и нафиг мне эти "а как в этом вашем css замудрить"
Аноним 27/08/20 Чтв 18:57:30 1790175232
>>1790166
В 95% случаев достаточно простого или среднего селектора или даже встроенных в тот же суп хуиток. xpath как раз для мудрения всякой йобы.
Аноним 27/08/20 Чтв 19:27:42 1790186233
Что используют в питоне для написания GUI?
Аноним 27/08/20 Чтв 19:32:45 1790190234
>>1790186
ты штоле погуглил бы свой вопрос, биндинги ко многим ui есть, выбирай любой
Аноним 27/08/20 Чтв 19:34:52 1790194235
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 1790201236
Аноним 27/08/20 Чтв 19:49:12 1790204237
>>1790201
>>1790190
Бля, мне нужно сварганить GUI приложуху, которая бы записывала и дёргала данные из самой простой SQL базы. Вот смотрю варианты. В молодости плотно сидел на Дельфях, возвращаться не хочу.
Аноним 27/08/20 Чтв 19:59:32 1790221238
>>1790204
есть pyqt4(устарел), pyqt5, pySlide(чет там с основной лицензией qt, это типо фришная) ну и GTK, Wxwidgets, бери pyqt5 для вката
есь книжка справочник прохоренок, дронов pyqt5
https://rutracker.org/forum/viewtopic.php?t=5369996
Аноним 27/08/20 Чтв 20:00:04 1790223239
>>1790194
звездочки сьел двач, во втором варианте две звезды перед kwargs
Аноним 27/08/20 Чтв 20:04:30 1790231240
>>1790223
всё, понял, распаковка по имени
Аноним 27/08/20 Чтв 20:06:37 1790233241
>>1790221
Пасиба, анон. Добра.
Аноним 27/08/20 Чтв 20:08:39 1790235242
>>1790233
а забыл, еще tkinter на это gui tcl/tk но там типо юзается для очень легковестных гуи и сама либа tkinter не в ооп стиле, может юзаться для бека matplot, но qt ща популярный
Аноним 27/08/20 Чтв 20:13:09 1790242243
>>1790235
Ага, останавлюсь на Qt пока.
Аноним 27/08/20 Чтв 20:51:31 1790262244
изображение.png 3Кб, 410x49
410x49
изображение.png 5Кб, 743x95
743x95
Создаю юзера и выдаю ему все права - пик 1.
Создаю курсор с тем же логином/паролем - пик 2.

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

Почему так?
Аноним 27/08/20 Чтв 20:57:24 1790267245
>>1790262
В гранте ещё хост вроде должен быть, с которого можно пускать.
Аноним 27/08/20 Чтв 20:58:53 1790270246
>>1790267
Спасибо, пойду читать.
Аноним 27/08/20 Чтв 21:19:50 1790281247
Несколько раз натыкался что pip желательно вызывать через python -m pip - почему?
Аноним 27/08/20 Чтв 21:45:47 1790300248
>>1790281
Читай что такое path и как командная строка находит путь к программе по её имени.
Аноним 27/08/20 Чтв 21:59:31 1790313249
>>1790281
потому что если у тебя несколько питонов неизвестно чей пип ты вызовешь
и вызовешь ли вообще
а -m pip вызывает нужный pip
Аноним 27/08/20 Чтв 22:08:22 1790319250
>>1790313
а нефиг пипкать не из венв

python -mvenv huemoe
cd huemoe
source bin/activate

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

Научитесь наконец-то пользоваться шеллами.
Аноним 28/08/20 Птн 00:21:34 1790430253
>>1790429
Принцип тот что в докере, но ещё проще. Просто разворачиваешь кастомный венв под каждый проект и они не пересекаются.
Аноним 28/08/20 Птн 00:23:28 1790431254
>>1790429
Докер это не замена venv, а дополнение
Точно также как сидеть на бэкенде и утверждать что дрочево с деплоем приложений, nginx и линуксом "для лохов", т.к. есть docker-compose
Аноним 28/08/20 Птн 00:31:45 1790437255
>>1790431
В каком месте это дополнение? Никогда не пользовался венв внутри докера. Для чего оно в докере?
Аноним 28/08/20 Птн 00:38:20 1790441256
>>1790437
В том что когда тебе таки придется залезть внутрь venv по той или иной причине, ты не упадешь на спину в припадке "сложна сложна мы такого не проходили"
прям как новоявленные вкатывальщики, которые утверждают что математика и алгоритмы прогеру нинужны
Аноним 28/08/20 Птн 00:49:28 1790449257
>>1790441
Много математики знаешь? Функтор от монады отличишь?
Аноним 28/08/20 Птн 01:23:49 1790469258
Пагни, подскажите простейший RESTAPi тесты на питохе и обычных запрос POST с Боди \ респонс. Есть такое?
Аноним 28/08/20 Птн 01:30:47 1790475259
>>1790429
>Неужели так сложно прописать алиасы python/pip на последний питон в bashrc?
У себя прописать можно
Везде прописывать не выйдет
Аноним 28/08/20 Птн 01:32:30 1790478260
>>1790430
Мне не нравится оверхед в виде копии питона в венв
Аноним 28/08/20 Птн 01:44:00 1790484261
>>1790429
ты что идиот? а если у меня несколько проектов.

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

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

еще плюс в venv, то что твоей ide/lsp меньше индексировать зависимости
Аноним 28/08/20 Птн 01:50:35 1790493266
>>1790478
Там нет копии питона, но есть копии библиотек.
Аноним 28/08/20 Птн 02:04:13 1790501267
>>1790492
Ох уж эти макопроблемы.
> тут у меня версия либы 1.1, а в другом венве 2.1
> меньше индексировать зависимости
Ну так piploc/pythonloc это тот же самый венв, только попроще, как в жс. Разве что не из коробки. Ладно, может быть и хорошо что ты привык использовать венв.
Аноним 28/08/20 Птн 03:06:14 1790512268
>>1790469
Бамп.
Кто-то пользовался requests модулем?
Аноним 28/08/20 Птн 03:12:07 1790515269
>>1790512
Нет. Первый раз слышу про такой.
Аноним 28/08/20 Птн 03:13:39 1790516270
>>1790488
суть венвов не столько в разных версиях питонов, сколько в разных версиях либ к нему ( тока не отвечай нахуйя, не поймешь зачем, просто проигнорируй)
Аноним 28/08/20 Птн 03:23:50 1790518271
Стикер 127Кб, 500x500
500x500
Аноним 28/08/20 Птн 03:28:14 1790521272
Аноним 28/08/20 Птн 06:07:20 1790562273
>>1790515
Пздц. Я думал тут форум профессионалов.
Аноним 28/08/20 Птн 08:35:28 1790605274
>>1790501
>Ну так piploc/pythonloc это тот же самый венв
только непонятно как с этим жить

как удостовериться что локально все пакеты что нужно они локально
как потом обновлять это все
Аноним 28/08/20 Птн 10:01:30 1790662275
Поясните в двух предложениях, зачем нам нужен Докер и\или его контейнеры? Может на конкретном примере с Питохой? Спасибо.
Аноним 28/08/20 Птн 10:05:09 1790666276
>>1790489
заходишь на чужую систему че то настроить.
Аноним 28/08/20 Птн 10:06:32 1790669277
>>1790662
только если хочется огородить приложуху по памяти или по доступам туда сюда.
иначе он не нужен
Аноним 28/08/20 Птн 10:20:59 1790685278
Аноним 28/08/20 Птн 10:24:40 1790692279
>>1790685
Дада каждый 0.5й юзает ci/cd
Аноним 28/08/20 Птн 10:30:58 1790701280
>>1790692
Ты про вкатышей или мейнтейнеров? После PR всегда автотесты гоняют.
Аноним 28/08/20 Птн 10:32:52 1790703281
>>1790701
про обитателей этого треда
Аноним 28/08/20 Птн 10:38:24 1790707282
>>1790703
Если тебе не нужно, то и всем не нужно? Бро...
Аноним 28/08/20 Птн 11:02:56 1790738283
>>1790562
Ну так ты спрашивай сразу что тебе надо, а не устраивай перекличку. Конечно же реквестами пользовались все кто хоть немного трогал питон.
Аноним 28/08/20 Птн 11:02:57 1790739284
Поясните за итераторы и генераторы плз. 3 недели уже ковыряю язык, уже пытался для себя писать что-то простое, разбирался в апи, и было норм, а тут я прям пиздец тону, внимание теряется, все плывет, не могу слушать лектора/воспринимать текст почти сразу, как пытаюсь вникнуть. Это вообще сильно нужная и постоянная используемая вещь, или это просто надо иметь в виду, чтобы понимать как работает for и для общего развития, а для работы в вебе это не особо надо?
Аноним 28/08/20 Птн 11:04:49 1790744285
>>1790739
Алсо, я правильно понял, что list comprehension в русском зовут генератором списка, но это не имеет отношения к тому, что в целом зовется генератором, и это косяк русского языка?
Аноним 28/08/20 Птн 11:06:23 1790747286
>>1790605
Если ты такой параноик, то пидорасить sys path. Самая лучшая воспроизводимость всё равно будет только в докере.
Аноним 28/08/20 Птн 11:08:36 1790749287
>>1790666
Худшее что можно сделать на чужой системе это с пылу с жару запустить пип. Там как раз не нужны никакие алиасы и удобности.
Аноним 28/08/20 Птн 11:11:43 1790753288
>>1790669
Крайне диванное утверждение. Главная фишка докера не изоляция и ограничение ресурсов, а охуенная воспроизводимость окружений и удобство доставки на сервера.
Аноним 28/08/20 Птн 11:14:21 1790757289
>>1790753
>а охуенная воспроизводимость окружений
а она нужна в питоне? ну чтобы вот прямо аж ваще
только если юзаешь что то крайне сишное
Аноним 28/08/20 Птн 11:14:43 1790759290
>>1790749
>системе это с пылу с жару запустить пип.
чойта. если для этого туда и зашел
Аноним 28/08/20 Птн 11:16:03 1790760291
>>1790739
Генератор это объект, у которого есть метод «высрать новое значение». Практически то же что итератор, только нет заранее готового контейнера со значениями. List comprehension не является генератором, а вот generator comprehension является. Это тот же что и list, только скобочки круглые.
Аноним 28/08/20 Птн 11:18:20 1790763292
>>1790747
я не параноик.
просто нет четкого понимания как заполнить этот локальный пип нужными пакетами чтобы ничего лишнего и не пропустить чего чтобы потом на целевой машине не было ай?

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

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

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

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

ну то такое

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

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

Аноним 28/08/20 Птн 11:52:10 1790801306
Работаю на Flask. Пишу файлообменник рандомный.
ПРи загрузке файла он рандомит путь к файлу правильный, но при попытке скачать высирает всегда одинаковый файл.
В чем трабл?
Аноним 28/08/20 Птн 11:52:45 1790802307
>>1790795
Докер жрет с гулькин хуй. Куда проще заменять сервера, если на них требуется только докер. Композе ап и всё работает. А тут надо целый день чета там ставить настраивать. Почитай про infrastructure as a code, люди даже ресурсы в облаке описывают текстовыми файлами в терраформе. Докер примерно об этом же, описание как поставить в виде короткого текстовика, который каждый у себя может запустить и развернуть если ты ушёл в отпуск.
Аноним 28/08/20 Птн 11:53:55 1790804308
Почему такое ощущение, что в тредю орудуют агрессивные школьники/студенты первых курсов?
Аноним 28/08/20 Птн 11:59:47 1790812309
>>1790804
те кто работают и занят делом не ходят на такие форумы
Аноним 28/08/20 Птн 12:00:26 1790813310
>>1790804
А теперь в треде орудуют эйджисты?
Аноним 28/08/20 Птн 12:02:01 1790815311
>>1790802
То что докер что то упрощает - не значит, что все остальные подходы разом устарели.
И про "все знают докер" это враки
Да и применимость тоже преувеличена.
Ты можешь быть мамкин фрилансер. Можешь писать код, который не позиционируется как продукт. Можешь кодить пакеты для пипи. Да мало ли что.
Аноним 28/08/20 Птн 12:12:55 1790829312
>>1790815
Ну само собой, здесь есть прекрасная статья об уровнях упаковки вплоть до зашивки в хардварь https://packaging.python.org/overview/
Если люди заводят разговор про изоляцию, венвы, несовместимость питонов, то высока вероятность что им нужен докер.
Аноним 28/08/20 Птн 12:15:09 1790833313
>>1790815
>>1790829
да вы зоебали, нахера вы друг другу хотите доказать абсолютность чего либо, любой инструмент выбирается под задачу, хуле тут спорить, а? А?
Аноним 28/08/20 Птн 12:22:03 1790845314
>>1790813
Скорее, если бы они не детектились по постам, то никто бы и не был против
Аноним 28/08/20 Птн 12:22:46 1790846315
c48787a0-4259-4[...].jpg 142Кб, 1040x663
1040x663
> любой инструмент выбирается под задачу
> пук

Топ 10 бесполезных комментариев в каждом айтишном обсуждении.
Аноним 28/08/20 Птн 12:28:34 1790856316
image.png 4214Кб, 1920x1440
1920x1440
>>1790846
но твой то еще бесполезнее
Аноним 28/08/20 Птн 12:39:07 1790876317
dkdewkew.jpg 10Кб, 300x225
300x225
Аноним 28/08/20 Птн 13:18:23 1790930318
Screenshot 2020[...].png 14Кб, 264x142
264x142
Пацаны, а подобные выравнивания в коде стоит делать, или нет?
Аноним 28/08/20 Птн 13:23:37 1790938319
>>1790930
Смотря сколько платят
Аноним 28/08/20 Птн 13:25:28 1790940320
>>1790930
Гугли black, если хочешь раз и навсегда освободить мозг от форматирования кода. Ещё почитай про феномен bikeshedding: чем проще тема, тем больше времени и внимания ей уделяется.
Аноним 28/08/20 Птн 13:28:19 1790946321
>>1790930
Если однотипные данные, относящиеся к одному и тому же, то да.
Т.е., всякие словари, наборы переменных и т.д. Как у тебя на пикче точно нет.
Аноним 28/08/20 Птн 13:28:33 1790947322
>>1790829
>венвы,
он полезен хотя бы тем что не нужно засирать системный питон кучей пакетов, которые нужны только для проекта
и одно это необходимости докера не влечет
Аноним 28/08/20 Птн 13:34:36 1790955323
Аноним 28/08/20 Птн 13:36:29 1790960324
>>1790955
Большинство даже с однотипными данными этого не делает. Просто есть любители украшать всё подряд.
Аноним 28/08/20 Птн 13:38:49 1790963325
image.png 21Кб, 121x678
121x678
Аноним 28/08/20 Птн 13:39:15 1790964326
image.png 14Кб, 543x204
543x204
Аноним 28/08/20 Птн 14:46:58 1791032327
>>1790501
>Ну так piploc/pythonloc это тот же самый венв, только попроще, как в жс. Разве что не из коробки
в этом и суть. в том же пишарме поддержка венв, а пиплока аж ничуть
Аноним 28/08/20 Птн 14:54:35 1791041328
Аноним 28/08/20 Птн 15:08:45 1791065329
только начал изучать питон, прошу, помогите мне с кодом

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 1791070330
>>1791065
проблема в пропущенной : после фор
Аноним 28/08/20 Птн 15:22:43 1791084331
Аноним 28/08/20 Птн 15:26:41 1791088332
>>1791084
Поправил. Лишняя скобка и отступы кривые.все работает
Аноним 28/08/20 Птн 15:28:29 1791092333
>>1791088
Ты же в курсе, что найти ошибку и поправить быстрее, чем пилить пост на сосаку?
Аноним 28/08/20 Птн 15:30:44 1791093334
>>1791092
Я не вкатыш. Детектор чини.
Аноним 28/08/20 Птн 17:03:11 1791184335
Аноним 28/08/20 Птн 17:04:05 1791186336
Аноним 28/08/20 Птн 17:58:32 1791234337
Аноним 28/08/20 Птн 17:59:59 1791235338
Сап двач, пишу бота для вк на питоне с 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 1791241339
>>1791235
Ча? Получить ид последней инсерт записи чтоли?
Аноним 28/08/20 Птн 18:11:08 1791246340
>>1791235
Транкейт траблицы тут для теста, надеюсь?
Аноним 28/08/20 Птн 18:14:51 1791253341
>>1791235
после lower оно уже никак не может быть равно строке с заглавными буквами, в первой же строчке дичь какая то дальше смотреть не вижу смысла
Аноним 28/08/20 Птн 18:15:03 1791254342
>>1791241
Не, привязать в бд к айдишнику человека. Вкшный айдишник
Аноним 28/08/20 Птн 18:17:50 1791264343
>>1791253
Не заметил, по привычке поставил заглавные. До этого было иначе, без заглавных.
Аноним 28/08/20 Птн 18:24:39 1791277344
>>1791235
Или процедуры или ОРМ, не надо это говно сюда тащить, пожалуйста. Объебешься в синтаксисе и у тебя весь код в тыкву превратится. И сверку строки делай через паттерны regex.
Аноним 28/08/20 Птн 19:43:01 1791359345
>>1790963
Есть код этой хуйни?
Аноним 28/08/20 Птн 19:51:59 1791364346
>>1790785
То есть это верзион контрол тул по сути? Можешь объяснить, что конкретно он делает, не просто он изолирует или тп. А вот, допустим ты написал код, Вася написал код. Вы его пушаете гитом в мастер, как здесь связан Докер?
Аноним 28/08/20 Птн 19:53:33 1791366347
>>1790738
Спасибо. У меня собес скоро вводный по реквестам\API тестам именно.
Например, почему или даже зачем нам нужны параметры в методе Гет?
Тоже самое для пост, какие конкретно параметры мы должны дать для Пост метод, в чем разница в таком случае?
Аноним 28/08/20 Птн 19:57:40 1791372348
>>1791364
Нет, он позволяет многим людям поднимать одинаковое окружение. Это как файл с образом виртуалки, но без оверхеда.
Аноним 28/08/20 Птн 20:01:09 1791375349
>>1790760
>Генератор это объект
Ловите профессора. В Питоне каждая пылинка это объект, я бы за такой ответ тебе перезвонил.
Аноним 28/08/20 Птн 20:11:36 1791386350
>>1791372
Понял, короче это изолированный сервер, среда, которая настраивается как рабочая под девов куда все и синхронятся. так?
>оверхеда
Что такое оверхед?
Аноним 28/08/20 Птн 20:34:29 1791413351
>>1791386
Нет, поднимает каждый у себя, но у всех получается идентичный.
>Что такое оверхед?
Накладные расходы. Например, виртуализация имеет оверхед, у докера намного меньше, потому что он работает на живой системе, но изолированно от нее.
Аноним 28/08/20 Птн 20:48:37 1791424352
image.png 17Кб, 543x286
543x286
Товарищи, пытаюсь завебскраппить каталог двача для одного персонального проекта. Нужно получить конкретно каталог /b/ раздела, но дело в том, что мой скрипт не подгружает треды в каталоге. Причиной тому может быть то, что они прогружаются немного позже, чем сама страница. Вопрос в том, как сделать так, чтобы прогрузить весь контент страницы в html.
Аноним 28/08/20 Птн 20:52:15 1791427353
>>1791424
дикий респект тому, кто подскажет возможное решение
Аноним 28/08/20 Птн 20:52:29 1791428354
>>1791424
сделай что нибудь типа
драйвер.нажми_кнопку("пробел") N раз
Аноним 28/08/20 Птн 20:52:58 1791429355
>>1791428
а не, там элементу это отсылается, поэтому возьми какой нидь боди
Аноним 28/08/20 Птн 20:55:46 1791433356
Аноним 28/08/20 Птн 20:59:51 1791441357
>>1791424
>Вопрос в том, как сделать так, чтобы прогрузить весь контент страницы в html.
Сделать ожидание до момента, когда нужный элемент прогрузится, Селениум предоставляет такую возможность. И убери бьютифулсоуп, он нахуй не нужен
Аноним 28/08/20 Птн 21:01:55 1791444358
KK9cJdfVu4g.jpg 19Кб, 470x360
470x360
>>1791375
У двачеров видимо с логикой туговато. Истинность частного случая не несёт за собой ложности общего.
> я бы за такой ответ тебе перезвонил
Синдром вахтёра на максималках.
Аноним 28/08/20 Птн 21:09:51 1791448359
>>1791364
Пушится в гит Dockerfile, который есть набор инструкций как собрать какой-то образ. Выбрать можно даже дистрибутив, то есть работаешь ты в федоре, а на проекте принято использовать убунту. Пожалуйста, делаете всё в образе от убунты. Там и компилятор совпадёт, и cmdline утилиты, и переменные окружения, и пути куда что ставится.

Двачеры почему-то думают что венв это железная изоляция, хотя это всего лишь хак с path/pythonpath, который сработает только есть весь проект и все его зависимости написаны на чистом питоне, и у всех жёстко одинаковая версия (включая третью цифру) самого питона. Венв хороший инструмент, но если у тебя случилось так что локально работает, а на продакшене падает, то надо потестить уже в докере.
Аноним 28/08/20 Птн 21:12:09 1791451360
Сап двач, пишу бота для вк на 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 1791452361
Пытаюсь авторизоваться на сайте через 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 1791455362
>>1791452
Это называется urlencoding, это способ сериализовать структуру в поток байт. Фиксить это не нужно, так и должно быть. print(response.request.body) — смотри тут внимательно, ты реквест принтишь, то что ты отослал, а не принял в ответ.
Аноним 28/08/20 Птн 21:18:46 1791458363
>>1791455
> ты реквест принтишь
В этом и цель. Сервер говорит, что пользователя не существует, поэтому я принтил реквест, чтобы разобраться, что не так. Через браузер с теми же данными все работает. Единственное, что отличается - %40 вместо @.
Аноним 28/08/20 Птн 21:20:31 1791461364
>>1791451
> человек командой выбирает один регион
Вот это выражение я не понял. Команда выбирает регион? Ну так добавь поле команде. А если нужно подтянуть в селекте для игрока используй джойн или подзапрос. Вместо кода лучше схему БД запости.
Аноним 28/08/20 Птн 21:21:51 1791462365
>>1791458
Как ты делаешь "через браузер", покажи.
Аноним 28/08/20 Птн 21:33:39 1791473366
1598639617861.png 38Кб, 1346x434
1346x434
>>1791462
На пике запрос через браузер. Сервер авторизовывает и возвращает токен. При таких же заголовках и теле запроса через requests авторизация не проходит и возвращается текст в utf-16 "пользователь не найден"
Аноним 28/08/20 Птн 21:34:29 1791474367
>>1791448
>Двачеры почему-то думают что венв это железная изоляция
не думают.
они думают что городить огород с докерами геморнее и это так
Аноним 28/08/20 Птн 21:38:51 1791480368
>>1791473
Смотри, у тебя в браузере content-type: application/json, это другой способ кодирования. Вместо параметра data нужно использовать параметр json, иначе будет content-type: application/x-www-form-urlencoded.
Аноним 28/08/20 Птн 21:41:36 1791482369
>>1791480
Во, теперь работает, спасибо
Аноним 28/08/20 Птн 21:52:56 1791490370
Ребят, есть модель книги, есть модель главы. у каждый книги есть главы и они пронумерованы 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 1791492371
>>1791433
Не шарил за это, жсон это балдеж. респект!
Аноним 28/08/20 Птн 21:57:22 1791494372
>>1791492
Если что-то подгружается не сразу, то смотришь ходящие запросы, оно подгружается в основном как раз в виде жсона.
А то знатоки уже налетели с селениумом. Браузер скачал готовые данные, отрендерил в хтмл, а они потом обратно руками дрочат.
Аноним 28/08/20 Птн 22:11:07 1791510373
>>1791494
Вообще ты мне намного облегчил задачу. Я сейчас ещё осознал, что треды можно получать тоже в виде джсона. Я об этом даже не задумывался. Огромная благодарочка, анон
Аноним 28/08/20 Птн 22:33:05 1791520374
>>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 1791535375
>>1791494
>А то знатоки уже налетели с селениумом.
У него изначально был селениум, мало ли что он хотел делать
Аноним 29/08/20 Суб 00:06:02 1791570376
Пагни, такая задача.

В функции есть набор символов, например "abca", нужно вывести все возможные значения комбинаций этих символов, но чтобы они не повторялись типа aabc, а только abca, acab и тд.
Так и не дошло до меня как делать, интеврьюер сказал, что нужно было делать луп в лупе, в лупе, но я не понял все равно. Спасибо.
Аноним 29/08/20 Суб 00:12:59 1791576377
>>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 1791579378
>>1791570
>>1791576
Есть функции итертулс для комбинаций, можно сделать что-то типа
[i+j for i in a for j in a if i !=j]
Аноним 29/08/20 Суб 00:27:47 1791584379
>>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 1791590380
>>1791584
Да, только циклы местами поменяй
Аноним 29/08/20 Суб 00:39:14 1791591381
>>1791590
Всё правильно там, слева направо разворачивается.
Аноним 29/08/20 Суб 00:43:47 1791595382
>>1791591
Разве компрехеншены не справо-налево раскладываются? Типо внешний цикл основной - внутренний идет уже как выражение основного
Аноним 29/08/20 Суб 00:45:21 1791596383
>>1791570
У тебя это перестановки, а не комбинации. Суть в чём, ты фиксируешь один символ, убираешь его из колоды, спускаешься в рекурсию, отпускаешь символ, берёшь следующий.

https://ideone.com/8Xvl1J
Аноним 29/08/20 Суб 00:47:06 1791598384
Или тебе ещё нужно отфильтровать чтобы двух одинаковых подряд не было?
Аноним 29/08/20 Суб 00:47:45 1791599385
Аноним 29/08/20 Суб 00:48:44 1791600386
Аноним 29/08/20 Суб 00:48:50 1791601387
Аноним 29/08/20 Суб 00:56:50 1791604388
Аноним 29/08/20 Суб 02:24:44 1791625389
Аноним 29/08/20 Суб 03:20:25 1791636390
>>1791596
Нормас, спасибо. Сразу и не монимаю что происходит. Буду разбираться.
Аноним 29/08/20 Суб 03:21:53 1791637391
Аноним 29/08/20 Суб 03:40:37 1791643392
Есть тут Селениум пацаны?
Как кликнуть элемент, если имеем вот такое? Вопрос, кликнить на текс в строчке 10?

><div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
Аноним 29/08/20 Суб 03:46:47 1791644393
>>1791643
можншь открыть разработку в браузере нажать пкм элемент и скопировать его по xpath, дальше найти его в селениуме по хпатх и кликнуть
Аноним 29/08/20 Суб 04:12:54 1791645394
>>1791637
> чтобы они не повторялись типа aabc, а только abca, acab и тд.
То есть я получившиеся перестановки ещё профильтровал и оставил те что без двух одинаковых букв рядом. Не знаю нужно ли это было.
Аноним 29/08/20 Суб 08:31:18 1791678395
Есть книга по алгоритмам без зауми в которой не подразумевается что я должен очень хорошо знать формальную математику ? Как минимум с объяснениями этой математики и лучше что бы с Пайтоном но не обязательно. Каков положняк по данному вопросу ?
Аноним 29/08/20 Суб 09:45:00 1791689396
image.png 62Кб, 880x543
880x543
У меня задание прочекать все папки в директории, и если в ней есть файлик с .py - выписывать название папки. Почему я стакаюсь на одной папке и не перехожу в следующую с этим кодом? Если сделать просто:
a = os.walk('.)
print(next(a))
print(next(a))
print(next(a))
print(next(a))
...
то он нормально обходит папочки, что в моем коде всё ломает?
Аноним 29/08/20 Суб 09:54:44 1791690397
>>1791689
Ну смари малёк, ты сам с какого города ?
Аноним 29/08/20 Суб 09:55:53 1791691398
>>1791690
Щито блядь? С мухосранска
Аноним 29/08/20 Суб 10:04:30 1791693399
image.png 65Кб, 843x553
843x553
>>1791689
блядь, думал не хватает одного цикла for, но все та же хуйня преследует...
Аноним 29/08/20 Суб 10:29:33 1791703400
>>1791691
Кароч деревня, бросай это дело. Не твоё. Поверь.
Аноним 29/08/20 Суб 11:01:14 1791720401
>>1791693
Ты хоть почитай документацию на эти функций. Пиздец.
Аноним 29/08/20 Суб 11:28:30 1791736402
>>1790801
Попробуй открыть новую чакру, у меня не выходит телепатически считать твой код
Аноним 29/08/20 Суб 11:30:51 1791738403
>>1791366
>Например, почему или даже зачем нам нужны параметры в методе Гет?
У тебя не с Питоном проблемы. А с TCP/IP и сетями в целом. Читай Танненбаума и протоколы прикладного уровня (HTTP в частности)
Аноним 29/08/20 Суб 11:32:55 1791739404
>>1791738
а они тут причем?
ни питон ни тср ни таннебаум ни хттп не имеют отношения к этому вопросу
Аноним 29/08/20 Суб 11:34:23 1791740405
>>1787217 (OP)
Часто приходится работать одновременно с питоновским кодом и с жс-кодом, что из IDE лучше юзать? У меня стоит pycharm, там есть что-то вроде расширенной версии, она поможет? Или лучше брать другой редактор? В пайчарме просто навигация по проекту и по Гиту довольно удобная
Аноним 29/08/20 Суб 11:40:49 1791746406
>>1791739
При всем
Не знаешь основ HTTP но лезешь в requests? Ты серьезно?
Питон это прикладной язык, "обертка" для работы с более сложными сущностями, о чем может быть речь если ты не знаешь даже примерно сути этих сущностей?
Аноним 29/08/20 Суб 11:42:08 1791748407
>>1791746
>но лезешь в requests
это не я лезу. но где там про requests?
Аноним 29/08/20 Суб 11:45:14 1791750408
>>1791689
Тебе дело говорят -> >>1791720
Почитай про модуль os и os.getcwd в частности. Не додумывай как функции работают

>>1791748
Да ты заебал. Ты на собес идешь. Тебе простительно не знать основ работы инета и http если ты хочешь быть QA-интерном, в противном случае ты будешь как шимпанзе, которую научили нажимать на 1 конкретную кнопку на клавиатуре
Аноним 29/08/20 Суб 12:59:46 1791789409
>>1791738
лол, че сразу не олифера то сразу?
Аноним 29/08/20 Суб 13:22:42 1791809410
>>1791740
В пучарме Про, точно есть дополнения. А так все на VSCode давно перекатились.
Аноним 29/08/20 Суб 13:30:22 1791814411
Я чет немного не понял или неправильно сделал. Внутри папки с проектом есть папка, а внутри текстовый файл. И через питоноскрипт этот файл открывается если путь к нему сделать "D:/проекты/пидор/test/test.txt". Можно ли как-то сделать так чтобы надо было просто указать папку внутри проекта типа "/test/test.txt" ?
Аноним 29/08/20 Суб 13:41:29 1791822412
>>1791814
Ты можешь получить путь в __file__ и потом присобачить оставшийся путь.
Аноним 29/08/20 Суб 13:44:27 1791824413
>>1791814
Можно, но без слеша вначале.
Аноним 29/08/20 Суб 14:31:40 1791848414
конструктор в питоне __new__ или __init__?
Аноним 29/08/20 Суб 14:39:58 1791850415
Аноним 29/08/20 Суб 14:41:37 1791851416
>>1791850
мне прост на собесе сказали шо это не совсем конструктор, а иницилиазатор
Аноним 29/08/20 Суб 14:42:53 1791852417
>>1791851
А что есть "конструктор"?
Аноним 29/08/20 Суб 14:44:35 1791853418
изображение.png 248Кб, 500x500
500x500
Аноним 29/08/20 Суб 14:46:57 1791855419
>>1791853
есть документация? как его вызвать?
Аноним 29/08/20 Суб 14:49:12 1791857420
>>1791855
идешь в магаз и отдаешь бумажки или цифры (валюта) и приобретаешь эту сомнительно полезную материю и потом соеденияешь её в различные образы
Аноним 29/08/20 Суб 14:49:56 1791858421
>>1791857
Тоесть правильно ли я понимаю, что это не вызываемый объект?
Аноним 29/08/20 Суб 14:50:44 1791861422
>>1791858
что значит правильно понимать? как ты можешь понять что правильно, а что нет?
Аноним 29/08/20 Суб 14:52:30 1791862423
>>1791861
Ясно, где-то гвидо обосрался значит, ну остается теперь только одно, идти компилировать тайпскрипт в жс.
Аноним 29/08/20 Суб 14:54:06 1791863424
Аноним 29/08/20 Суб 14:54:31 1791865425
>>1791848
new
Как и в любом языке. Не слушай долбоебов. Спроси лучше себя "каким образом init может быть конструктором если первый же аргумент который он получает это конкретный инстанс класса"?
Аноним 29/08/20 Суб 14:56:10 1791866426
>>1791863
незнаю кого ты побеждал, я вообще другим анонистом был
Аноним 29/08/20 Суб 14:58:17 1791868427
изображение.png 48Кб, 1194x359
1194x359
Аноним 29/08/20 Суб 15:00:31 1791870428
>>1791866
значит победил тебя
Аноним 29/08/20 Суб 15:03:14 1791874429
>>1791868
Пишут хуйню. __new__ выделяет память и создает конкретный объект. Любому у кого недвузначный IQ это очевидно
Аноним 29/08/20 Суб 15:06:17 1791876430
>>1791874
init тогда инциализатором щитать? Если new конструктор класса, а init конструктор данных?
Аноним 29/08/20 Суб 15:12:04 1791882431
>>1791876
Само понятие "конструктора" в Питона весьма извращено и часто "конструктором" называют __init__ хотя конечно это нихрена не так. Де-факто init это конечно "инициализатор"
В любом нормальном языке ты создаешь инстансы следующим образом:

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

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

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

в крестах разве не
class AB {
AB() {
// init
}
}
Аноним 29/08/20 Суб 16:49:47 1791938434
Чет в последнее время все чаще натыкаюсь на хуйню, типа "а на линуксе еще можешь сделать так, для винды не подходит". На всяких курсах и видосах лекторы все в основном на линуксах показывают, вроде я слышал и на работе с большим шансом будет линух. Есть ли смысл накатывать на виртуалку какую-нибудь убунту и разбираться с ней, если 20 лет сидел на винде? На работе будет надо линуксом владть скорее всего?
Аноним 29/08/20 Суб 16:54:51 1791940435
>>1791938
>Есть ли смысл накатывать на виртуалку какую-нибудь убунту
Есть смысл поставить себе второй системой линух и работать на нем
Иначе про разработку забудь
Аноним 29/08/20 Суб 16:56:34 1791943436
Снимок.PNG 24Кб, 863x448
863x448
Работяги обьясните чего от меня хотят плез ?
Аноним 29/08/20 Суб 16:59:46 1791944437
>>1791938
Под изучение самого питона не стоит, но дальше знания линупса уровня не бояться консоли очень и очень не помешают.
Аноним 29/08/20 Суб 17:15:07 1791957438
>>1791943
знания алгебры класса так 11
Аноним 29/08/20 Суб 17:18:48 1791961439
>>1791957
Ну скожи хотя бы по русски братик, я подучу куда смотреть я вообще ничего не понял с описания
Аноним 29/08/20 Суб 17:39:39 1791979440
>>1791961
ну из заданной строки вычисляешь производную , а потом х в том что получилось меняешь на второй аргумент функции считаешь как обычное выражение и ретернишь результат, думаю в интеренте есть какие нить онлайн калькуляторы диференциалов, можешь поискать и потыкать чтобы лучше понять
Аноним 29/08/20 Суб 17:42:33 1791983441
>>1791979
так же скорее всего в каком нить нампае уже все готово, надо только суметь засунуть это туда
Аноним 29/08/20 Суб 19:07:41 1792048442
>>1791938
обычно на работе владеют тобой

хихик
Аноним 29/08/20 Суб 19:19:17 1792055443
>>1791938
> накатывать на виртуалку какую-нибудь убунту и разбираться с ней
Да, но не графическую. Накати серверную. Оставь графику пердолям из /s/, а сам учи основы ОС: что такое монтирование, пермишены и владение файлами, пайпы, шелл, контейнеры, компиляторы, мейкфайлы итд.
Аноним 29/08/20 Суб 19:26:01 1792060444
>>1792055
не графическую(первым же делом htop,mc,aptitude,elink)
Аноним 29/08/20 Суб 20:51:09 1792102445
image.png 3Кб, 411x87
411x87
image.png 7Кб, 438x275
438x275
image.png 12Кб, 514x427
514x427
https://habr.com/ru/company/oleg-bunin/blog/512650/

Меня всегда интересовал вопрос: как подобные существа живут? И главное: не противно ли им каждое утро видеть свое красноглазое зашкваренное ебало в зеркале?
Аноним 29/08/20 Суб 20:52:49 1792104446
>>1792102
Нормальный код, чего тебе не нравится?
Аноним 29/08/20 Суб 20:55:35 1792106447
>>1792104
То, что Белый Человек пишет через async/await. Что в жс, что в питоне
Аноним 29/08/20 Суб 20:57:43 1792108448
>>1792104
Пасаны говорили - сиди жми кнопки целый день и дохуя плотят.
А тут сложна, ууу задроты сука.
Аноним 29/08/20 Суб 21:01:09 1792109449
>>1792108
Ты асинхронный код хоть раз в жизни писал/читал? А поддерживал уже написанный на проекте?
я - да, за любые выкрутасы с коллбеками вместо адекватной асинхронщины ты получил бы залупой по лбу от сеньора
Аноним 29/08/20 Суб 21:04:26 1792112450
>>1792109
Асинхронно парсил хтмл регулярками с помощью goto.
Аноним 29/08/20 Суб 21:06:53 1792114451
>>1792106
>То, что Белый Человек пишет через async/await. Что в жс, что в питоне
Я думал тебе type hints и лямбды не понравились. Насчет async/await ничего сказать не могу - я мамкин дата саентист и никогда их не использовал.
Аноним 29/08/20 Суб 21:21:24 1792129452
>>1791738
Спасибо. Лекции по сетям я читать вроде бы не собирался. Мне бы просто в двух словах пояснить, что к чему. Ну и я не на сетевого инженера иду.
Аноним 29/08/20 Суб 21:43:09 1792142453
Да ну, зачем мне английский язык, я же не собираюсь переезжать куда-то
Аноним 29/08/20 Суб 22:47:08 1792202454
Как правильно запустить небольшого питонобота на удаленном сервере?
Я кажется делаю что-то не то и когда запускаю сразу два разных через команды

python3 test1.py &
python3 test2.py &

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

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

Это перенаправление обычного вывода(1) и вывода ошибок (2) в никуда. Тогда всё прекрасно работает. Ну или в файл сохранять.
Аноним 30/08/20 Вск 00:36:13 1792302459
>>1792298
> pythom3 test.p1 1> /dev/null 2>/dev/null &
Ну и амперсант в конце, конечно
Аноним 30/08/20 Вск 00:39:59 1792307460
>>1792298
Первый раз такое слышу.
Ну и тогда уж command > /dev/null 2>&1
Аноним 30/08/20 Вск 02:07:15 1792364461
twisted до сих пор актуален или хуйня ебаная? Какие есть альтернативы?
Аноним 30/08/20 Вск 02:15:00 1792365462
Аноним 30/08/20 Вск 06:34:53 1792399463
Кто-то юзал json validator на питохе? Можете в двух словах пояснить за него плиз.
Аноним 30/08/20 Вск 07:14:47 1792408464
>>1792399
> json validator на питохе
Какой из этих двухсот?
Аноним 30/08/20 Вск 09:09:45 1792426465
Аноним 30/08/20 Вск 11:01:27 1792463466
>>1792365
А что в итоге лучше и почему?
Аноним 30/08/20 Вск 15:14:59 1792688467
>>1792463
Оба все равно подвержены GIL, с asyncio нагляднее и чище код, вместо asyncio loop можно взять uvloop, синтаксис не поменяется
мимокрок
Аноним 30/08/20 Вск 15:17:20 1792690468
>>1792202
Читай маны про systemd. Stdout интерпретатора можно направить в файл или же потом в journal посмотреть. Раньше советовали обертки или circus, но они банально устарели. Systemd довольно мощный инструмент.
Аноним 30/08/20 Вск 15:23:19 1792693469
>>1792102
>За что мы любим Никиту Соболева — только он умеет писать на Питоне так, что хочется плакать и переходить на Джаву.

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

Работаю питонистом уже 2 года. Вышки нет.
Начинал в регионе, в маленькой аутсорс-компании.
Сейчас в дс, в мыле.
Но недавно восстановился на заочку, чтобы таки получить корочку(будет легче заводить трактор)
Аноним 30/08/20 Вск 15:28:30 1792699471
>>1791938
Если пишешь сервисы, то только линукс. Если у тебя шиндоус поставь WLS2. В продакшене будет или докер или AWS. Ты же понимаешь, что хуй ты спрячешь говнокод питоновский? Обфускация на уровне контейнера уже лучше.
Аноним 30/08/20 Вск 15:29:27 1792701472
>>1792698
О, расскажи про tarantool. Как оно? Реально ноухаю или местный костыль?
Аноним 30/08/20 Вск 15:44:56 1792722473
>>1792698
Чем конкретно занимаешься?
Аноним 30/08/20 Вск 15:54:57 1792737474
Аноним 30/08/20 Вск 15:58:53 1792744475
>>1792701
Не работал с ним сам.
Местным костылем бы не назвал, потому что его покупают(b2b) версию довольно крупные конторы.
Но, насколько знаю, развитие опенсорс-версии на какое-то заглохла. И только сейчас начинают его возобновлять
Аноним 30/08/20 Вск 15:59:33 1792747476
Аноним 30/08/20 Вск 16:30:50 1792770477