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

Ответить в тред Ответить в тред
Питон тред №90 /python/ Аноним 03/06/20 Срд 07:52:24 17116091
zmija1.gif 73Кб, 400x292
400x292
van-rossum.png 825Кб, 660x682
660x682
500F127442295pS[...].jpg 120Кб, 500x316
500x316
Тред, посвящённый языку программирования Питон, #90

Предыдущий: >>1699561 (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: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.

текущая шапка (90): https://dumpz.org/bASGKD8cCFDf
Аноним 03/06/20 Срд 10:37:14 17116492
Юбилейный тред, всех с праздником
Аноним 03/06/20 Срд 10:57:15 17116633
>>1711164 →
>Кстати, а как добавлять или убавлять обьекты поиска
Я не разбираюсь, но предполагаю, что нейроночке скармливается кадр и она просто выдает вероятности сразу по всем объектам, по которым была обучена. То есть убрать, скорее всего, нельзя. Вполне достаточно будет игнорировать ненужное, что-то вроде if CLASSES[idx] == 'dog': print('ne nujno').
>>1711241 →
Или она просто подумала, что ты через пару месяцев уйдешь на работу получше, а у нее и без тебя текучка.
Аноним 03/06/20 Срд 11:19:41 17116774
image.png 15Кб, 374x273
374x273
Анончики, я знаю, вы тут, возьмите на работу, пожалуйста
Аноним 03/06/20 Срд 15:49:20 17119905
15904974803960.jpg 65Кб, 764x1024
764x1024
посоны, устроился джуном, через две недели выходить на работу.
Как я понял, придется писать скрипты, пайплайны.

Что лучше подучить чтобы не обосраться на испытательном сроке, ранее программистом не работал.
Аноним 03/06/20 Срд 15:50:34 17119936
Почему ListView в джанге не выдает пагинацию, как надо? Задал я значение paginate_by, но на всех страницах ?page= один и тот же результат (а если обратиться к заведомо невалидной странице скажем ?page=99999 то будет 404 как и должно)
С чего бы это? Кто-то сталкивался?
Аноним 03/06/20 Срд 15:52:01 17119967
>>1711990
>что подучитт
Бля, а у них самих ты это узнать не потрудился?
Аноним 03/06/20 Срд 15:56:17 17120018
изображение.png 560Кб, 400x600
400x600
Уволился с работы, хочу перекатиться на новую, только удаленно. Но синдром самозванца заставляет нервничать, кажется что слишком жирно просить 100-120к с моим опытом. Я middle web-разработчик, в общем 3 года опыта, из них 1,5 года на python. Высшего нет.

Помогите ответами:
1. Какие задачи у вас были, когда вы были миддлом? Было бы круто с примером.
2. Норм ли просить такую сумму с моим опытом?
3. Что нужно знать и уметь, чтобы зарабатывать такую сумму?
Аноним 03/06/20 Срд 16:01:44 17120079
>>1712001
3. нужно не смотреть эту старую пизду про анальников.
Аноним 03/06/20 Срд 16:17:27 171202810
Сап. Есть скрипт, который производит действия с директориями и файлами. В нем есть команда переноса:

shutil.move(os.path.join(root,file),pathCopy)

Если запускать его через python.exe, то все ОК. Но если скомпилировать в exe через PyInstaller и запустить, то на директориях с определенными символами в названии ругается на несуществующий путь. В частности, с этим ’ (right single quotation mark).

Чует моя жопа, что проблема с кодировками, но не могу понять где.
Аноним 03/06/20 Срд 16:25:23 171203611
>>1711996
Я не надеялся что меня возьмут, а тут оффер пришел.
Ну на дваче же всегда можно получить советов мудрых
Аноним 03/06/20 Срд 16:28:23 171203912
>>1712028
Ну сделай принт этих параметров перед выполнением и смотри.
Аноним 03/06/20 Срд 16:37:01 171204513
>>1712039
я с принтами и выводил, путь был правильный и одинаковый в обоих вариантах. Даже делал обертку Path() на всякий случай.
Аноним 03/06/20 Срд 20:18:38 171225214
Есть короткая книга или длинная статья про эту хуйню с await/async?

Я умею в многопоточность на другом языке через обычные мьютексы и потоки и там мне всё понятно, но вот это понять не могу - просто не могу найти пример где параллельно выполняются две обычные блокирующие функции - а без такого примера я не могу понять в чём смысл этого await. Все статьи обрывочные, в одной идёт gather, в другой wait - одни и те же задачи выполняются разными способами и никакой цельной картины сложить не получается.
Аноним 03/06/20 Срд 20:29:52 171228315
>>1712252
книг нет, статей дохуя, просто гуглишь и все.
Вообще если ты не понимаешь зачем тебе, то забей хуй, скорее всего тебе это не нужно
Аноним 03/06/20 Срд 20:35:15 171229316
Аноним 03/06/20 Срд 20:41:16 171230417
>>1712283
Мне нужно выполнять параллельно обычные блокирующие задачи (без модификации кода задач в виде расстановки async или ещё чего-то), при это задачи должны иметь возможность создавать новые задачи и ждать их завершения в некоторых случаях.
Вопрос не к концепции асинхронщины, а скорее к конкретным примерам кода и синтаксису - я пока даже не приблизился к.
Аноним 03/06/20 Срд 20:52:19 171231918
>>1712036
Советы ты должен был получать у конкретного работодателя. У всех стек и принципы варьируются
Аноним 03/06/20 Срд 20:56:47 171232219
>>1712252
На realpython (ангельский) ищи статью. Была где-то
Аноним 03/06/20 Срд 21:15:31 171233420
>>1712252
Для полноценного понимания полезно опуститься в историю, посмотреть то же видео с "дедом", что в шапке. Это чтобы понять нюансы и какие-то подводные камни.

Если идти сверху, а не снизу, то await - это ожидание результата.

Если по общему смыслу, главное отличие от многопоточного программирования.
В многопоточном программировании у тебя переключение потоков исполнения происходит в произвольный момент времени. В схеме async-await у тебя переключение потоков возможно ТОЛЬКО на операции await.

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

Так на всех платформах. А вот техническая реализация уже может сильно отличаться, свои нюансы везде. В питоне их довольно много.
Аноним 03/06/20 Срд 21:20:23 171234121
>>1712304
>Мне нужно выполнять параллельно обычные блокирующие задачи (без модификации кода задач в виде расстановки async или ещё чего-то
Не получится. В таком варианте только многопоточное программирование.

Для async-await необходимо, чтобы код был асинхронным, чтобы блокирующие операции, сетевые, использовали специальные примитивы для асинхронности. Это совсем другой стек.

Просто расставить async-await не поможет совсем.
Аноним 03/06/20 Срд 22:06:11 171239322
>>1712341
>В таком варианте только многопоточное программирование.
threading?
>Это совсем другой стек.
А, ну и отлично. Мне просто ирл посоветовали async-await для моей задачи - мол удобная штука, то что тебе нужно, а я всё не пойму каким боком её прикладывать. Видимо что-то попутали.
Правда изучить её тоже хотелось бы - для этого и спрашиваю, в первую очередь.

Аноним 03/06/20 Срд 22:14:20 171240223
>>1712393
погугли что такое GIL, что такое celery
Аноним 03/06/20 Срд 22:40:14 171241324
Чуваки, я джавист, сегодня моя судьба сложилась так, что пришлось переводить с вашего пайтона на родную джаву код без документации и за полдня работы я осознал, что не хочу обратно в джаву, ваш пайтон просто охуеть какой лаконичный и простой и если он такой же функциональный, как все пишут, то я остаюсь. Охуеть блять разрыв шаблонов у меня
Аноним 03/06/20 Срд 22:48:43 171242525
>>1712413
Просто сама Жаба каличная и многословная для 2020, щито поделать
Если хочешь в мобилках копаться, лучше иди в Котлин - Жаба скрещенная с Питонухом, а в Пистоне в основном либо веб-бэкенд либо машоб и датасоенс (но тут совсем иные приколы)
Аноним 03/06/20 Срд 22:55:42 171243226
>>1712425
Вэб-бэкэнд подходит весьма. Мне не с кем поделиться, но я просто до сих пор в шоке от такой разницы и почему я столько лет не совал носа никуда, кроме жабы.
Аноним 03/06/20 Срд 23:06:51 171243827
>>1712432
глянь также на flutter о мобильной разработке, очень чёткий, как бонус можно писать сразу на все мобильные платформы и веб.
04/06/20 Чтв 00:04:10 171246928
Сап питонач, знакомый джун пограмист на жабе хочет совета мудрого, заодно и меня подначивает мимо долбоеба без навыков. Что вы можете ему посоветовать для познания азов машинного обучения? Язык книги не важен, хотелось бы что то свежее и желательно с глубоким погружением в тему и мат часть. А я пойду почитаю питон для детей.
Аноним 04/06/20 Чтв 00:09:34 171247529
>>1711609 (OP)
Всем привет.
Есть некая задача - смотреть с сайта состояние некой переменной, при каком-то заданном её изменении - оперативно уведомлять меня. Как это можно сделать?
Пока что план такой:
запилить скрипт в крон
при первой прокатке скрипта сохранить значение переменной в файл
затем сравнивать значение с этим значением
Если оно расходится - аларм - активируем какой-то скрипт на ?????
На что-то, на какое-то оперативное оповещение меня. Например, в телеге сообщение написать
import telebot;
В теории что-то там может прокатить.

Получается, крон каждую минуту прокатывать? А есть какие-то иные варианты? Бох с ним с кроном (хотя интересно), тут скорее про телебот. Есть ли какое-то околотиповое решение?
Аноним 04/06/20 Чтв 00:19:35 171248630
>>1712475
>Есть ли какое-то околотиповое решение?
есть
Аноним 04/06/20 Чтв 00:54:12 171250431
>>1712486
Подскажи, в какую сторону копать?
Аноним 04/06/20 Чтв 01:36:25 171252732
>>1712469
Советую ему задрочить математику
04/06/20 Чтв 01:37:41 171252833
>>1712527
Лул, знакомый удивился объему математики в этой теме.
Аноним 04/06/20 Чтв 01:46:19 171253034
Как получать вывод ошибок сторонних программ в питоне?
У меня есть код например
cmd = 'ffmpeg -i file.mp4 newfile.mp4'
p = subprocess.call(cmd, shell = True)
Когда всё нормально программа ffmpeg отработает без вывода. Но если я допустим ошибусь в пути или параметрах ffmpeg должна выдать что-то типа "No such file or directory".
Я это всё делаю в блокноте юпитере. И в консоли откуда я сам юпитер запускаю это отображается. Как мне собственно это "No such file or directory" вывести уже в блокноте?
Аноним 04/06/20 Чтв 03:06:19 171255835
2020-06-04-03:0[...].png 19Кб, 667x178
667x178
Аноним 04/06/20 Чтв 03:08:57 171255936
>>1712558
Хотя в 3.5 вроде добавили subprocess.run() и он по дефолту ждет пока процесс закончится и сохраняет в proc.sterr ошибки в указаной в функции кодировке.
Аноним 04/06/20 Чтв 03:54:00 171256637
>>1712559
> subprocess.run() и он по дефолту ждет пока процесс закончится и сохраняет в proc.sterr
у меня p.stderr() выдает 'NoneType' object is not callable
Нашел простой пример result = subprocess.run('ls'). Эта команда должна выдать список файлов. Но у меня вместо того чтобы в юпитере это отобразить отображается в консоли из которой я юпитер запустил.
>>1712558
А это сработало. Как раз то что надо выводит. Но при замене Popen на call или run уже не работает.
Аноним 04/06/20 Чтв 04:01:30 171256938
>>1712432
такая же хуйня
мимоплюсовик
Аноним 04/06/20 Чтв 04:04:34 171257139
>>1712566
>subprocess
в run укажи capture_output=True
и stderr это не функция, там () не нужен.
Аноним 04/06/20 Чтв 04:06:52 171257440
>>1712569
Кстати что посоветуете из книг почитать, чтобы не для чайников но подробно и охуеть, как на питоне можно?
Аноним 04/06/20 Чтв 04:10:20 171257641
>>1712571
>в run укажи capture_output=True
Ну и да. Если не вкурсе еще, stdout - обычный вывод, stderr - ошибки.
Аноним 04/06/20 Чтв 04:31:05 171257942
test
Аноним 04/06/20 Чтв 08:16:18 171262243
Чёт маленько не догоняю: в чем разница между функциями вида .zalupa() и zalupa()?
Аноним 04/06/20 Чтв 08:22:28 171262344
>>1712622
То метод, а это функция.
Аноним 04/06/20 Чтв 10:05:07 171265945
>>1711993
Скорее всего ошибка в темплейте, смотри в нем, или сюда кидай кусок с пагинацией
Аноним 04/06/20 Чтв 12:25:58 171274646
>>1712623
А в чем между ними разница? Вот обе допустим возводят число в квадрат - какая разница между ними будет?
Аноним 04/06/20 Чтв 13:22:19 171283247
py.png 12Кб, 1060x192
1060x192
Салют, у меня есть url, нужно поменять там значения from и to. Пытаюсь сделать через urllib, но он не хочет собирать мне все нормально.
В словаре данные меняются, но потом, когда пытаюсь собрать ссылку, то возвращает прошлую.

[Output]:
Вот я распарсил ссылку
{'orgId': ['1'], 'from': ['1589972154000'], 'to': ['1589972739000'],....

Поменял параметры
{'orgId': ['1'], 'from': ['1555926954000'], 'to': ['1555938339000'],....

Пытаюсь собрать и выдает старую ссылку
http://192.168.150.138:3000/render/d-solo/htddR-gGz/jmeter-dashboard?orgId=1&from=1589972154000&to=1589972739000....
Аноним 04/06/20 Чтв 14:05:10 171289048
>>1712746
Одно находится в каком-то классе, а другое глобальное?
Аноним 04/06/20 Чтв 14:24:33 171292049
Аноним 04/06/20 Чтв 14:47:17 171294750
Гвидо всё, что вы тут всё перекатываете-то?!
Аноним 04/06/20 Чтв 14:57:31 171295751
Аноним 04/06/20 Чтв 15:00:52 171295952
>>1712569
для быстрого переката сгодится A byte of Phyton, есть на русском и бесплатно. Марк Лутс Изучаем Python - эта уже поглубже. А дальше все завист от направления
Аноним 04/06/20 Чтв 15:01:23 171296153
Аноним 04/06/20 Чтв 15:36:29 171299954
Как по-божески настроить поведение class based View в джанге в зависимости от того, залогился юзер или нет? Дергать постоянно if self.request.user.is_authenticated?
Аноним 04/06/20 Чтв 15:50:26 171301555
>>1712504
Ананончики хочу в хакинг какие библиоткеи кроме сокета учить
Аноним 04/06/20 Чтв 16:06:05 171303156
>>1713015
Earnest Wish Python Hacking для начала
Но ты не осилишь. Там к тому же еще и 2й питон
Аноним 04/06/20 Чтв 16:47:04 171309357
Аноним 04/06/20 Чтв 18:05:29 171317158
>>1713093
На самом деле не обязательно лол
Декоратор хорош, когда у нас много вьюх, которые так надо кастомизировать. Когда вьюх мало но логика в зависимости от выбранного случая обширная, надо захерачить композицию (отдельный класс-посредник), ему и делегировать исполнение
Тут джавист тусовался, он подробнее пояснит, отдельный паттерн для этого говна был
Аноним 04/06/20 Чтв 18:19:46 171318659
class Meta:
model = Model
fields = ['file', 'file1']

def __init__(self, user, args, kwargs):
super(ModelForm, self).__init__(
args, kwargs)
self.user = user

def clean(self):
Объясните, пожалуйста, что за фигня super? Встречается в некоторых формах.
Аноним 04/06/20 Чтв 18:21:42 171318860
Аноним 04/06/20 Чтв 18:47:43 171322161
>>1713186
Вызывается конструктор родительского класса.
Аноним 04/06/20 Чтв 19:01:58 171322862
>>1712832
Попробовал сделать urlStr = urlsStr._replace()
Теперь передает значения, но все значения в квадратных скобках
orgId=['1']&from=['1555926954000']&to=['1555938339000']&var-data_source=['InfluxDB-Jmeter']
Аноним 04/06/20 Чтв 19:28:28 171325263
>>1713171
>Тут джавист тусовался, он подробнее пояснит, отдельный паттерн для этого говна был
Это называется примеси, но суть в любом случае та же что у декораторов. Для class-based лучше миксины, для функций - декораторы.
Аноним 04/06/20 Чтв 19:54:33 171327764
>>1713228
Потому что ты пихаешь туда списки с одним элементом, убери квадратные скобки.
Аноним 04/06/20 Чтв 20:35:34 171330965
Сап питонач, на сколько в питоне важно знание математике, если важно и обязательно, то на каком уровне?
боюсь сложных уравнений
Аноним 04/06/20 Чтв 21:55:12 171338766
failedfield.png 9Кб, 710x331
710x331
modelinfo.png 6Кб, 674x116
674x116
>>1711609 (OP)
Котаны, трабла с добавлением записей через админку django
Есть у меня возможность добавления ссылки на сторонний ресурс, включает в себя собственно ссылку ref (кто бы мог подумать?), название title и сурс (source – ForeignKey на модель Site, по сути hostname самого ресурса, в примере на 1м пикриле это был бы yandex.ru) – сурсов ограниченное число – около 10
Как вы поняли, я хочу иметь возможность задать в некоторых случаях значение сурса=null, вроде как, судя по 2му пикрилу, в моделях я все прописал, но ебучая админка Джанги при попытке простого добавления записи ругается, что я должен обозначить поле source. С хера ли?
Аноним 04/06/20 Чтв 21:58:23 171339267
success.png 3Кб, 506x80
506x80
>>1713387
Да, я пробовал добавлять посты через python manage.py shell – все добавляется лол. То есть это что-то не то с формами админки

Для дебага прописал print(“save method”) внутри метода Post.save – он даже не вызывается, когда пытаюсь добавить запись в админке, то есть форма сразу выдает error и до ORM даже запрос не доходит
Аноним 04/06/20 Чтв 22:50:14 171345568
Есть ли способ получить нормальную многопоточность на питоне, которая задействовала бы все ядра процессора? threading отметается из-за GIL. multiprocessing не является адекватной заменой, поскольку каждый процесс имеет свою память - если результата вычислений больший, то копирование его назад убьет весь прирост производительности. numba не работает с библиотеками. Пока что у меня один вариант - выносить кусок кода за пределы питона и писать многопоточность на крестах. Нужная мне библиотека (OpenCV) работает и на питоне, и на крестах.
Аноним 04/06/20 Чтв 23:16:53 171348269
Видал на сайтах боковые или ниспадающие панели, на которых посетитель может поставить определенные галочки или как-то по-другому заполнить поля, и контент, который он будет видеть, будет фильтроваться соответствующим образом… Как такое запилить в Джанго?

Для удобства эта фича будет только у зарегистрированных юзеров, очевидно что нужно вкинуть на страницу какую-то форму, которая будет обрабатывать данные, введенные юзером однако:
1. Где хранить эти данные? Внутри модели User? Это не зашквар? (да и надо учитывать что система будет часто расширяться и видоизменяться, поэтому надо в соответствии с этим пилить архитектуру)
2. Нужны норм виджеты, я не особо шарю в верстке и юзал немного Бутстрап, но тех же моднявых разномастных переключателей там не видал
Аноним 04/06/20 Чтв 23:18:05 171348570
>>1713387
null-то ты поставил, а blank - нет)
Аноним 04/06/20 Чтв 23:44:28 171351971
>>1713455
> Пока что у меня один вариант - выносить кусок кода за пределы питона
Это единственный вариант, наверное должен понимать почему без GIL начнется пиздец с памятью.
Аноним 04/06/20 Чтв 23:47:14 171352472
Господа, объясните пожалуйста ньюфагу правильную последовательность в Django.
Т.е., есть у нас следующее:
URL - маршрутизатор
Views - контроллер
Models - модель
Templates - шаблон
Т.е., какая очередность написания/внесения корректировок в файлы? Сначала шаблон, потом модель, дальше контроллер и в конце маршрутизатор, так что ли?

Deffenst 05/06/20 Птн 03:47:27 171365673
Вкатился недавно в питон. Сейчас читаю книгу прям совсем для чайников, детей, ибо по другому хуй вольюсь. Что читать дальше. Что бы не терять интерес и не сбиваться с курса?
Аноним 05/06/20 Птн 05:03:31 171366574
>>1713524
Лучше сперва писать модель, потом вьюху, а шаблон тебе может и не понадобиться если у тебя api endpoint. Маршрутизатор это одна строчка в routes, хуле там писать? Модель будет для тебя опорой.
Аноним 05/06/20 Птн 08:15:24 171369375
>>1713656
Понять что вкат в 2020 невозможен и устроиться в Пятерочку
Аноним 05/06/20 Птн 09:31:14 171371676
>>1713656
Практиковаться, делать что-нибудь полезное тебе. Скриптики там под комп и все такое.
Аноним 05/06/20 Птн 10:58:52 171375677
Аноним 05/06/20 Птн 11:02:00 171375878
>>1713656
да почему у вас всех нет идей что писать?

мимо адмен, но в 40 лет вынужден изучать петон.
Аноним 05/06/20 Птн 11:04:35 171375979
>>1713756
Метод (не статический) работает в контексте объкета. В питоне ты этот контекст объекта можешь заметить по передаче self первым аргументом в метод. У функции по дефолту такого контекста нет, хотя ей за просто так можно передать объект или что вообще надо для работы. Ну и да, вызываются методы чаще всего через точку.
Твой пример с простым возведением числа в квадрат хуево наглядный. Но допустим у нас есть класс Float, который кое-какие методы имеет.
float_object = Float(10.0)
float_as_is = 10.0

float_object.square() -> метод, выполнит возведение в квадрат на собственном значении.
square(float_as_is) -> функция, выполнит возведение в квадрат на том, что ей явно передается в качестве аргумента.

Пример все равно хуевый и малопнятный, это же всего лишь флоат.
Аноним 05/06/20 Птн 11:06:22 171376080
Питоны, такая ситуация:
Есть модель с filefield, путь до файла выглядит примерно так media/files/user.id/123456.png, соответственно при смене id в url, можно получить файлы другого пользователя, что нежелательно.
Как обычно решается такое? Пока только придумал добавлять рандомную строку в url.
Аноним 05/06/20 Птн 11:26:08 171376681
Как в словарях хранить имя в качестве ключа, а в качестве значения - число, которое можно менять? Значения в словарях вообще изменяемы?
Аноним 05/06/20 Птн 11:27:33 171376782
>>1713766
А в чем проблема? Хранишь и изменяешь.
Аноним 05/06/20 Птн 11:28:16 171376883
>>1713766
dict = {'name': 1}
Да, изменяемы.
dict['name'] = 2

Ты точно это хотел спросить?
Аноним 05/06/20 Птн 11:38:54 171377584
>>1712999
1)
from django.contrib.auth.mixins import LoginRequiredMixin
...
class WhateverView(LoginRequiredMixin, View):
...

2)
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
...
@method_decorator(login_required, name='dispatch')
class WhateverView(View):
...
Аноним 05/06/20 Птн 11:49:12 171378785
27578480.png 12Кб, 336x158
336x158
45388240.png 77Кб, 251x205
251x205
Сап^_^, я Начинающий Геймдевелопер На Пайтон лаба в универе, необходимо расставить объекты в рандомных местах, использую randint со стандартным сидом, видимо, из-за этого объекты ставятся в +- одно место, т.к. вызываются почти одновременно?
В общем, как лучше решить эту проблему, чтобы объекты были расставлены адекватно, а не наслаивались друг на друга?
Аноним 05/06/20 Птн 11:53:13 171379486
>>1713760
Попробуй
https://github.com/edoburu/django-private-storage

Можно костылями сделать protected_serve. Что-то вроде

re_path(r'^{}(?P<path>.*)$'.format(settings.MEDIA_URL[1:]), protected_serve)

def protected_serve(request, path, document_root=settings.MEDIA_ROOT, show_indexes=False):
....obj = Модель.objects.get(file=path)
....if obj.user.pk != request.user.pk:
........return HttpResponseForbidden()

Но это очень плохая идея.
Аноним 05/06/20 Птн 13:47:39 171389587
>>1713482
Сохраняй данные в куках, если они не шибко запарные или важные
Аноним 05/06/20 Птн 14:06:24 171389988
Без названия.jpg 8Кб, 201x251
201x251
>>1712475
>>1712504
Бамп няшечкой для привлечения внимания к острой проблеме
Аноним 05/06/20 Птн 14:15:14 171390089
>>1713899
тебе зачем? и что ты хочешь от нас узнать? Типовый решений дохуя от celery и airflow, до скрипта в кроне
Аноним 05/06/20 Птн 14:18:17 171390190
>>1713895
А меня пацаны за это пидором не назовут? А то потом будет такая кличка навсегда, мне батя говорил
Аноним 05/06/20 Птн 14:18:25 171390291
>>1713900
Не, мне уровнем пониже.
Типовое решение как послать уведомление куда-то, например в телегу. Есть какой-то модуль, про который погуглить, который так делает?
Аноним 05/06/20 Птн 14:32:42 171390892
Аноним 05/06/20 Птн 14:42:04 171391293
Ебана, достаю я такой запрос во вью через request.POST.get("categories") - в этом параметре должен храниться список (Array) строк, дебаг через print об этом и говорит. Когда вытаскиваю его оттуда, в результате получается одна строка (последняя в этом списке). Это что за нах?
Аноним 05/06/20 Птн 14:55:51 171392094
>>1713912
Сцука, читаю про query_string и QueryDict. Если у этой хрени в значениях список, то она отдает всегда последний элемент, при обращении по ключу...
Вот нахера? В чем профит подобного? Хрен ли он не может мне сразу список отдать? json может, а это манда почему нет?
Аноним 05/06/20 Птн 15:15:53 171393595
>>1713482
1. Стандартный вариант создать под это дело модель, прикрутить ее к модели user https://docs.djangoproject.com/en/3.0/topics/auth/customizing/#extending-user
2. Это тебе скорее всего нужен моднявый UI kit, вроде primeNG, попробуй поискать bootstrap ui kit, если так привычнее будет. Есть даже вероятность, что найдешь ui kit специально под джангу.
>>1713787
Я бы поделил всё поле на квадраты и с помощью randint выбирал квадрат из списка и размещал объект на нем. Правда, я не уверен, что это разрешено условиями задачи.
Аноним 05/06/20 Птн 15:17:45 171393796
>>1713920
Ты что-то накосячил.
Имя этого поля с []?
Аноним 05/06/20 Птн 15:27:14 171395997
>>1713935
Уже решил, добавив поля объектам и проверку на перекрытие. НО спс за овтет.
Аноним 05/06/20 Птн 15:50:59 171397898
>>1713937
В QueryDict (питоновский/джанговский объект из request.POST), согласно документации значения обрабатываются именно так: https://docs.djangoproject.com/en/3.0/ref/request-response/#django.http.QueryDict Чтобы достать список, надо юзать не get а getlist (опять же: нахуя?..)
А в куках блин вообще никаких Array нет, только string
Когда домой приду, скрины закину, чтоб яснее было
Аноним 05/06/20 Птн 16:22:29 171405599
Image 689.png 18Кб, 620x386
620x386
Есть такой код. Поясните почему переменная word не видна внутри async def event_message(ctx)? Пишет Unresolved reference 'word'. Как правильно надо делать?
Аноним 05/06/20 Птн 16:32:18 1714063100
>>1714055
Зачем тебе вообще инпут внутри бота? Ты что вообще сделать хочешь?
Аноним 05/06/20 Птн 16:34:00 1714066101
>>1714063
Хочу сделать игру в угадай слово. Инпутом собственно слова и хотел забивать.

Ну так почему word не виден и как вообще можно сделать то что я хочу?
Аноним 05/06/20 Птн 16:44:33 1714077102
Аноним 05/06/20 Птн 16:53:26 1714085103
>>1714066
Ну меня есть подозрение, что если внутри def event_message(ctx) написать "global word", то оно возможно заработает. Но это как-то совсем убого.
>>1712001
Здесь одни новички, ты лучше нас всё знаешь.


Аноним 05/06/20 Птн 16:56:47 1714089104
>>1714085
>если внутри def event_message(ctx) написать "global word", то оно возможно заработает
Работает! И вроде даже делает что мне надо.
>Но это как-то совсем убого.
А это почему? Как можно еще решить мою задачу?
Аноним 05/06/20 Птн 17:04:55 1714110105
Почему так мало бэка на питоне в ДС?
Аноним 05/06/20 Птн 17:06:11 1714112106
>>1714110
Слишком много ресурсов жрёт.
Аноним 05/06/20 Птн 17:32:25 1714169107
>>1714110
Бэк равномерно размазан между платформами и много разве что джавы, а всякие там шарп, пыха, питон, нода борятся за свои 10-15% рынка
Аноним 05/06/20 Птн 18:06:29 1714214108
По каким книгам/видео лучше изучать паттерны проектирования на python?
Аноним 05/06/20 Птн 18:12:33 1714219109
>>1714214
>паттерны проектирования
По любым понятным.
>на python?
Вся эта хуета к языку вообще не привязана, общеязыковые конструкции, так что лучше даже не ищи на питоне.
Аноним 05/06/20 Птн 21:24:48 1714477110
>>1713908
Короче, не идёт.
https://pastebin.com/L2gB4nty
ВОт так примерно обстоят дела.

Потом нашел вот такую штуку
https://github.com/python-telegram-bot/python-telegram-bot
Говорят, что она даже лучше телебота, но я не могу найти для него никакого образца обычной отправки сообщения
Просто одно сообщение, там куча всякой непонятной хуерги.
Аноним 05/06/20 Птн 21:28:15 1714484111
Аноним 05/06/20 Птн 21:37:59 1714503112
>>1714484
Не, ну я же не совсем валенок все же хоть немного уважаю сидящих здесь людей, и не читая и не попробовав разобраться самостоятельно, просто так спрашивать не буду
Там написана строка, которая позволяет отправлять сообщение
bot.send_message(chat_id=chat_id, text="I'm sorry Dave I'm afraid I can't do that.")
но описание (правильно ли сказать класса) bot нигде нет.
А еще что именно импортировать
А ещё нужен ли тот самый __name__ == '__main__'
Аноним 05/06/20 Птн 21:51:47 1714535113
15887905626960.jpg 99Кб, 1280x999
1280x999
Анон, посоветуй разнообразных по сложности и смыслу задач на списки и строки, пожалуйста.
Аноним 05/06/20 Птн 22:49:27 1714618114
>>1713959
>добавив поля объектам
Что ты там перекрыл? Прямо внутри User полей новых нафигачил?
Аноним 05/06/20 Птн 23:03:51 1714629115
щито делает оператор &= в питоне?
Аноним 05/06/20 Птн 23:05:02 1714637116
>>1714629
например тут:


def compare(string1, string2):
..if len(string1) != len(string2):
....return False
..result = True
..for c1, c2 in zip(string1, string2):
....result &= c1 == c2

..return result
Аноним 05/06/20 Птн 23:11:20 1714640117
>>1714637
Тоже самое, что x += 1, но булевые значения.
Т.е. в твоем коде True & True или True & False.
Хотя довольно норкоманское решение.
Аноним 05/06/20 Птн 23:13:42 1714643118
Аноним 05/06/20 Птн 23:23:41 1714653119
58358378353.png 3Кб, 885x23
885x23
>>1713978
QueryDict, который ответственен за всю эту хрень
Аноним 06/06/20 Суб 01:30:47 1714733120
>>1713693
вкат всегда возможен. хочешь жить - умей вертеться
Аноним 06/06/20 Суб 03:07:39 1714751121
>>1712469
недавно начал учить змею, как раз начал с этой книги)
Аноним 06/06/20 Суб 11:17:24 1714827122
Антош. Почему aiopg'шная sqlalchemy не sqlalchemy вообще блять?
Декларативно объявить модель нельзя. Просто взять и кверисет получить нельзя. Какие то движки, какая то хуйня. У меня есть очень простой кусок кода на фласке, пытаюсь переписать на aiohttp, помоги мне антош..https://ru.stackoverflow.com/questions/1137172/Как-читать-и-писать-из-базы-с-aiopg-sa
Аноним 06/06/20 Суб 13:28:48 1714902123
Как смочь в эксепшены?
Вот этот подход, что везде можно натыкать эксепт вместо предварительных проверок как-то пиздец странен.
Аноним 06/06/20 Суб 14:06:25 1714919124
>>1714827
Взять орм где это можно сделать, очевидно же.
Аноним 06/06/20 Суб 17:20:59 1715019125
code.png 84Кб, 836x746
836x746
изображение.png 3Кб, 273x143
273x143
Есть веб-страница, и на ней есть таблица, которую мне надо спарсить. Проблема в том, что на выходе я получаю только тэги, без данных между ними пик 2. Что я делаю не так?
Аноним 06/06/20 Суб 17:29:45 1715022126
>>1715019
Пытаешься спарсить динамическую страничку как статичную
Аноним 06/06/20 Суб 17:31:31 1715023127
>>1715022
Понял. Буду дальше изучать. Спасибо!
Аноним 06/06/20 Суб 17:49:44 1715031128
image.png 113Кб, 1366x768
1366x768
Вопрос по скрипту:

1. Как сделать так, чтобы он реагировал не только на 'quit', но и на 'Quit', 'QUIT', 'QUit' и так далее? Я уже спрашивал про кейс-инсенситивы, но бля никак не могу усвоить как их решать. Мне нужно чтоб написанное сверялось с quit.lower(), но как хоть убей не пойму.

https://ideone.com/j9Zlv0
Аноним 06/06/20 Суб 17:52:50 1715035129
Аноним 06/06/20 Суб 17:53:08 1715036130
>>1715031
pizza.lower() == 'quit' баран.
Аноним 06/06/20 Суб 17:55:08 1715038131
image.png 115Кб, 250x249
250x249
Аноним 06/06/20 Суб 18:02:20 1715040132
Такой вопрос - как отсортировать словарь по значению? Т.е. чтобы {AAA: 1, BBB: 5, CCC: 3} стало {BBB: 5, CCC: 3, AAA: 1}
Аноним 06/06/20 Суб 18:07:17 1715044133
Аноним 06/06/20 Суб 18:12:52 1715046134
Аноним 06/06/20 Суб 18:19:06 1715051135
>>1714214
Есть хороший сайт - рефакторинг гуру. Там и примеры на пистоне есть.
Аноним 06/06/20 Суб 18:47:10 1715057136
>>1715044
А пример можешь написать?
Аноним 06/06/20 Суб 18:47:19 1715058137
Гоняю тоже понемногу парсинг через bs4... Как найти элементы(ы) класса zalupa, которые обязательно лежат внутри класса pizda?

<h2 class="pizda">
<div class="zalupa">content here</div>
</h2>
Аноним 06/06/20 Суб 18:55:32 1715062138
>>1715058
soup = beautifulsoup(page)
pizda = soup.find("pizda")
zalupa = pizda.find("zalupa")
Аноним 06/06/20 Суб 19:05:57 1715070139
>>1715062
Это если элемент 1... А если их несколько? Через цикл for гонять список от pizda = soup.findAll("pizda")? Неужели лучше способа нет?
Аноним 06/06/20 Суб 19:09:34 1715075140
>>1715058
Есть вопрос попизже: как искать дата-атрибуты блэт?
Вот допустим есть у нас <ul data-creation="custom_style"> и че с ним делать? Как определить data-creation в поисковых критериях? Явно заданные дефис херится из-за синтаксиса
Аноним 06/06/20 Суб 19:18:13 1715093141
>>1715040
Во первых нахуй тебе СЛОВАРЬ сортировать? элементы в словаре захешированны и доступ по ключу к ним за О(1)
>>1715057
import collections

dickt = {'AAA': 1, 'BBB': 5, 'CCC': 3}

sorted_x = sorted(dickt.items(), key=lambda kv: kv[1],reverse=True)
sorted_dict = collections.OrderedDict(sorted_x)
> OrderedDict([('BBB', 5), ('CCC', 3), ('AAA', 1)])
Аноним 06/06/20 Суб 19:23:15 1715097142
Capture.PNG 11Кб, 420x334
420x334
>>1715070
>>1715062
>>1715058
html = """<h2 class="pizda">
<div class="zalupa">content here</div>
</h2>"""
soup = BeautifulSoup(html,'html.parser')
soup.findAll('h2',{'class':'pizda'})
soup.findAll('h2',{'class':'pizda'})[0].text
Аноним 06/06/20 Суб 19:24:15 1715098143
>>1715075
soup.findAll('ul',{'data-creation':'custom_style'})
Аноним 06/06/20 Суб 19:53:06 1715122144
>>1715093
>> OrderedDict([('BBB', 5), ('CCC', 3), ('AAA', 1)])
Так и я могу. На выходе получается не словарь, а какая то хуйня вроде кортежа. А мне надо чтобы на выходе стало именно {BBB: 5, CCC: 3, AAA: 1} Можно ли так сделать?
Аноним 06/06/20 Суб 19:59:58 1715126145
>>1715122
чем тебя эта хуйня вроде кортежа не устраивает? фунционирует точно так же как и словарь
Аноним 06/06/20 Суб 20:00:47 1715127146
>>1715126
>чем тебя эта хуйня вроде кортежа не устраивает?
тем, что это уже не словарь.
Аноним 06/06/20 Суб 20:07:09 1715130147
d2.PNG 37Кб, 470x814
470x814
>>1715127
А что тогда? Утиный тест проходит Если нечто выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, и есть утка.
Аноним 06/06/20 Суб 20:08:45 1715132148
Аноним 06/06/20 Суб 20:14:20 1715136149
Image 696.png 10Кб, 634x248
634x248
>>1715130
>>1715132
Мне надо чтобы итоговый результат при принте выглядел как ААА - 1, БББ - 2 и так далее. Я пока вот такую хуйню сотворил. Если бы можно было нормально сортировать словарь - было бы удобней.
Аноним 06/06/20 Суб 20:14:34 1715137150
>>1715093
С какой-то версии ОрдередДикт уже не нужен, сделали чтоб в дефолтном сохранялся порядок.
Аноним 06/06/20 Суб 20:16:40 1715141151
>>1715136
Параша какая-то. В чём суть задачи?
Аноним 06/06/20 Суб 20:20:15 1715145152
Image 717.png 22Кб, 656x507
656x507
>>1715141
Это кусок бота для игры в крокодил. Полный текст игры выглядит вот так. Я имя победителя добавляю в словарь и присваиваю ему единицу. А потом сортирую словарь по убыванию и вывожу его в виде Имя - Очки.

Так что твой вариант выше не канает.
Аноним 06/06/20 Суб 20:23:08 1715147153
Аноним 06/06/20 Суб 20:31:58 1715157154
x.PNG 7Кб, 592x204
592x204
>>1715145
d = {'AAA': 1, 'BBB': 5, 'CCC': 3,'DDD':9}

for k,v in sorted(d.items(),key=lambda x: x[1],reverse=True):
print(f"{k} - {v}")
Аноним 06/06/20 Суб 20:40:31 1715162155
>>1715147
>>1715157
Не очень понял что такое k v и k, d[k] и как они берутся
Аноним 06/06/20 Суб 20:42:38 1715166156
>>1715162
k - key , v - value , ключ-значение короче, их отдаёт объект d.items() когда по нему итерируешься
Аноним 06/06/20 Суб 20:49:40 1715170157
Аноним 06/06/20 Суб 20:52:35 1715172158
>>1715166
А как работает key=lambda kv: kv[1]? Сам использую, но смысла не понимаю как оно работает.
Аноним 06/06/20 Суб 21:01:29 1715175159
>>1715097
Ты просто нашел все элементы h2.pizda, а что если этот заголовок не будет внутри себя содержать div.zalupa?
Аноним 06/06/20 Суб 21:04:31 1715179160
>>1715172
Внутри питона, при сортировке, вызывается эта функция/лямбда вместо того чтобы просто взять элемент.

https://ideone.com/7Qq20n
1 - отсортированы как есть
2 - отсортированны в зависимости от квадрата числа
Аноним 06/06/20 Суб 21:04:50 1715180161
>>1715172
dict.items выдает список туплей key,value, и элемент 1 это value, по которому и сортируется.
Аноним 06/06/20 Суб 21:11:02 1715183162
>>1711609 (OP)
Анончики, выручайте
есть строка
time_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
Она записывает в файл время в формате 2020-06-06 21:06:25
А теперь мне нужно достать из файла это время и сделать некоторые действия с текущим временем, которое записано уже указанной командой
Когда я вычитаю, он ожидаемо пишет мне, что нельзя вычитать из str str
Как можно преобразовать эти самые стр?
datetime(time_now) - тоже не преобразовывает, говорит, что нужен инт, а не str
Аноним 06/06/20 Суб 21:13:02 1715184163
>>1715183
Должна быть обратная функция, которая так же по шаблону парсит.
Гуглите, Шура.
Аноним 06/06/20 Суб 21:15:18 1715185164
>>1715183
> datetime.now().strftime('%Y-%m-%d %H:%M:%S')
datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
Аноним 06/06/20 Суб 21:34:16 1715202165
Как "вытащить" основное имя домена? Есть у нас ссылка https://2ch.hk/pr/res/1711609.html как нам вытащить из нее https://2ch.hk ? Да, протокол тоже нужно, чтобы по этой ссылке потом можно было перейти
Аноним 06/06/20 Суб 21:37:46 1715204166
Аноним 06/06/20 Суб 21:38:36 1715205167
>>1715202
m = re.match(r'(https?://[^/]+)', s)
m[1]
Аноним 06/06/20 Суб 21:57:02 1715220168
>>1715175
если тебе див залупа надо то в чем проблема?
soup.findAll('div',{'class':'zalupa'})
Аноним 06/06/20 Суб 22:39:35 1715243169
Как найти текущий месяц?.. Знаю, что есть вот этот способ:

from datetime import datetime
today = datetime.today()
current_month = today.month

НО мне нужен месяц именно в строчном формате (здесь today.month выдаст число 6). Например сейчас я хочу чтобы вывелась строка "June". Мне че, словарь для этого делать? (выглядеть будет ппц ущербно)
Аноним 06/06/20 Суб 22:41:07 1715244170
>>1715243
на самом деле мне надо получать лишь первые 3 английские буквы месяца (чтобы потом их передавать в api), но это уже частности, любой довен замутит срез строки
Аноним 06/06/20 Суб 22:44:24 1715250171
Аноним 06/06/20 Суб 22:44:59 1715252172
gyubzyq87xmx.png 149Кб, 828x801
828x801
>>1715244
За такое апи надо руки отрывать.
Аноним 06/06/20 Суб 22:45:09 1715253173
>>1715244
> первые 3 английские
today.strftime('%b')
Аноним 06/06/20 Суб 22:47:16 1715258174
Аноним 06/06/20 Суб 23:01:53 1715277175
>>1715220
Потому что есть еще div'ы с классом zalupa, но вот они уже не лежат внутри h2 и нафик не сдались, лишь засирают результаты парсинга
Аноним 06/06/20 Суб 23:03:01 1715280176
>>1715277
Также внутри h2 иногда может не оказаться этого div.zalupa, что снова поднасирает
Аноним 06/06/20 Суб 23:04:17 1715281177
>>1715277
ну сделай сначала поиск h2 потом поиск залупы в h2, в чем сложности?
Аноним 06/06/20 Суб 23:07:25 1715284178
Для случаев сложне найти одиночную хуйню проще искать селекторами. Они мощнее и одинаковы везде.
Аноним 06/06/20 Суб 23:11:13 1715287179
image.png 7Кб, 634x282
634x282
>>1715281
Просто в css-селекторах Белый Человек может задать условие, которое будет выполняться только если один селектор является дочерним для другого, как на пикриле да, такая нотация в питонухе не сработает и через findAll вернется пустой список
Я офигею, если узнаю что такого нет в bs4 и надо обязательно плодить циклы вручную
Аноним 06/06/20 Суб 23:13:14 1715289180
>>1715287
ты бы лучше реальный кусок html кода выдал, а не тот искусственный пример, может бы и высрали тебе решение
Аноним 07/06/20 Вск 12:24:18 1715492181
изображение.png 6Кб, 239x225
239x225
Почему мой код сервера на pythonanywhere.com не работает и что за (зачем нужен) WSGI?

Там что-то про http написано - но мне оно не нужно, я хочу просто принять пакеты по udp со своим собственным протоколом общения, как если бы я у себя дома двойным кликом запустил py-файл. Это возможно на pythonanywhere.com?
Аноним 07/06/20 Вск 12:34:02 1715496182
>>1715492
Вряд ли там открыто что-то кроме хттп(с) портов.
Аноним 07/06/20 Вск 12:55:52 1715520183
>>1715496
И зачем это нужно, если оно ничего не может?
А где мне тогда проверить мою программу на 40 строк с общением по udp кроме локалхоста?
Аноним 07/06/20 Вск 13:14:54 1715529184
>>1715520
Это как шаред хост для пхп, сайтики и любые скрипты выдающие текст может.
Ты можешь поднять виртуалку с бриджем, например. Будет как отдельный хост в локалочке.
Аноним 07/06/20 Вск 13:33:35 1715547185
image.png 16Кб, 1065x210
1065x210
>>1711609 (OP)
Блять я заебался. Как пофиксить эту ошибку?
Аноним 07/06/20 Вск 13:52:05 1715573186
>>1715529
Но это же ничем не отличается от локалхоста. Я скорее хочу проверить как оно будет работать с маленькой скоростью соединения и пингом, каким образом будут теряться пакеты или перемешиваться их очерёдность, и всё в таком роде.
Аноним 07/06/20 Вск 13:53:54 1715579187
В Джанго у меня есть модель Group и модель Post (ForeignKey из Post канешн указывает на Group)
Как мне отфильтровать посты Post, группа которых называется определенным образом, скажем где Group.name == "Solid"?
Фильтрация через Q(group.name="Solid") не катит, т.к. точечная нотация там запрещена синтаксисом
Аноним 07/06/20 Вск 14:03:45 1715591188
Аноним 07/06/20 Вск 14:06:12 1715593189
>>1715579
Post.objects.filter(group__name=="SOLID")
Аноним 07/06/20 Вск 14:17:19 1715623190
Аноним 07/06/20 Вск 15:11:38 1715696191
image.png 3Кб, 522x190
522x190
Как "подавить" ошибки в формах? У меня обычная django.forms.Form, в которой галочками надо выбрать сайты (Sites) и жмякнуть Confirm, чтобы данные отправились на бэк. В принципе можно вообще ничего не выбирать и нажать Confirm, на бэк просто отправится пустой список и это норм (никаких редиректов не происходит, страница не меняется). Но когда я ничего не выбираю, Джанго предупреждает меня (пикрил) что типо так не стоит делать. Как убрать это предупреждение?
Аноним 07/06/20 Вск 15:54:30 1715735192
1516769908121.png 10Кб, 899x195
899x195
Kivy как установить?
Копипастил всё с оф. сайта, а получил гору ошибок непонятных. Хотел им отписать, но там пикрилейтед.
Аноним 07/06/20 Вск 15:55:32 1715736193
Аноним 07/06/20 Вск 15:55:49 1715737194
>>1715735
Я не ойтишник если что, просто для одной программы эта шляпа идёт в зависимостях.
Аноним 07/06/20 Вск 19:21:18 1715933195
Анон, подскажи, плиз, как можно решить задачу на Python.

Дано:
- tuple вида x =( 'A', 'B', 'A', 'C', 'A' ).
- список вида b = [ '1', '2' ]

Необходимо получить список tuple вида ( порядок tuple внутри списка неважен )
c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
...
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]

Аноним 07/06/20 Вск 19:34:51 1715948196
Аноним 07/06/20 Вск 19:38:34 1715949197
>>1715948
itertools.product мне сделает:
C = [ ( 'A', '1' ),
( 'A', '2' ),
( 'B', '1' ),
( 'B', '2' ),
.......
( 'A', '2' )

А мне нужно

c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
( 'A2', 'B2', 'A1', 'C1', 'A1' ),
.......
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]
Аноним 07/06/20 Вск 19:38:55 1715950198
>>1715933

print("c = [ ( 'A1', 'B1', 'A1', 'C1', 'A1' ),
( 'A2', 'B1', 'A1', 'C1', 'A1' ),
( 'A1', 'B2', 'A1', 'C1', 'A1' ),
...
( 'A2', 'B2', 'A2', 'C2', 'A2' ) ]")
Break
Аноним 07/06/20 Вск 19:42:48 1715953199
>>1715950
Не, мне print не нужен. Потом дальше массив используется в программе
Аноним 07/06/20 Вск 19:52:04 1715964200
>>1715949
писать код за тебя мы не хотим. не можешь? читай книжки. Не умеешь читать? пиздуй нахуй отсюда.
Аноним 07/06/20 Вск 19:55:38 1715968201
>>1715953
Прости, я до массивов не дошел, только закончил переменные и присвоение
Аноним 07/06/20 Вск 20:23:25 1716001202
гудгейм возвращает JSON дерьмо в виде вот такого текста - ['{"type":"message"', '"data":{"channel_id":"1168"', '"user_id":218096', '"user_name":"Mr.Freeeze"', '"user_rights":0', '"premium":0', '"premiums":[]', '"resubs":{}', '"staff":0', '"color":"simple"', '"icon":"none"', '"mobile":0', '"payments":0', '"paymentsAll":{"21264":1}', '"isStatus":0', '"message_id":1591539634552', '"timestamp":1591539635', '"text":":peka: а в сундуке тряпка и 2 монетки"}}']

Как мне это все дерьмо разобрать назад на отдельные элементы? Не имел до этого дело с JSON.
Аноним 07/06/20 Вск 20:56:02 1716031203
Capture.PNG 45Кб, 762x822
762x822
>>1715949
Держи братик, наговнокодил для тебя.

import itertools
import pandas as pd
import numpy as np

x = ('A', 'B', 'A', 'C', 'A')
b = ['1', '2']
y = [''.join(x) for x in list(itertools.product(x,b))]
c = np.array(pd.DataFrame(list(itertools.permutations(y,5))).drop_duplicates()).tolist()
Аноним 07/06/20 Вск 20:57:00 1716033204
2020-06-07 2056[...].png 61Кб, 713x799
713x799
>>1716001
Как же вы сэр охуели
Аноним 07/06/20 Вск 20:57:05 1716034205
Реально ли в моделях джанги вычленить значение из дескриптора-поля? Я хочу внутри одного из методов класса взять поле self.title и привести его к нижнему регистру: self.title.lower() но вот только lower() это операция со строками, а self.title это CharField (IDE говорит мне о том же)
Аноним 07/06/20 Вск 20:58:21 1716038206
>>1716001
>Не имел до этого дело с JSON
Ну ты соня, тебя даже вчерашний шторм не разбудил...
Аноним 07/06/20 Вск 20:59:15 1716040207
>>1716033
>>1716038
Я только недавно вкатился в питон, до этого не был знаком с ЯП.
Аноним 07/06/20 Вск 21:00:08 1716041208
>>1716040
И с гуглом не был знаком?
Аноним 07/06/20 Вск 21:32:07 1716069209
>>1716041
Я почитал про json. Получается я неправильно написал что я хочу. Я использую готовый питоновский вебсокет. И он возвращает с сайта строку в виде что я выше писал. Это как я уже понял нихуя не json. И эту строку я уже сам разделил по ,. Но это получается коряво потому что некоторые параметры внутри себя имеют кучу запятых + само поле текст может иметь текст с пробелами.

Вопрос - как уже готовую строку разделить на отдельные элементы?
Аноним 07/06/20 Вск 22:00:07 1716108210
>>1716069
Если из твоей хуйни убрать одинарные кавычки то будет обычный жсон. Хз, откуда оно там взялись и зачем.
Аноним 07/06/20 Вск 22:21:12 1716142211
>>1711609 (OP)
Всем привет
Запилил первый осознанный класс, и тут возникли проблемы
Грубо говоря, есть класс, на входе у него одна переменная, остальные высчитываются по разных хитровыдуманным методом на основе значения этой самой переменной
Но у данного класса есть пара значений, которые он берет из другого файла, если грубо, то это прошлые значения некоторых его параметров.
Так как экземпляров класса много, я не могу вписать в def __init__(self, name): забор переменной из текстового файла, ведь там будут лежать переменные для нескольких экземпляров.
При этом если задать пустую переменную, а потом поменять, то просто так не поменять =((((
Нашел какой-то хитровыдуманный способ
https://qna.habr.com/q/301659
а есть что-то попроще, чтобы не пилить новый класс, который обджект и что-то там делает?
Или как лучше сделать? Придумать хитровыдуманный алгоритм, чтобы изх текстового файла брало именно то, что нам нужно?
Аноним 07/06/20 Вск 22:22:33 1716145212
>>1715184
>>1715185
Да, вчера докопался до истины, осознал. Спасибо!
Аноним 07/06/20 Вск 22:33:03 1716157213
>>1716142
Была мысль объявить еременную global, но я объявляю переменные как self.permennaya, а self не объявить
Аноним 07/06/20 Вск 22:33:21 1716158214
>>1716142
Я не совсем понял, но посмотри, что такое class attributes.
Аноним 07/06/20 Вск 22:57:37 1716189215
Зачем нужны сессии Джанго? Я юзаю обычные куки и все норм, в чем профит сессий перед куками?
Аноним 07/06/20 Вск 23:01:38 1716196216
>>1716189
Сессия хранится на сервере, а кука в браузере, это разные вещи вообще.
Можешь в печеньке хранить айди сессии и получить персистенцию.
Аноним 07/06/20 Вск 23:06:01 1716199217
>>1716196
Эм... а разве это не заебно - хранить данные сессий на серваке, забивая лишнюю память?
Аноним 07/06/20 Вск 23:12:43 1716206218
>>1716199
Главный аспект тут - это безопасность. С клиента тебе может любая хуйня приходить, а на сервере всё лежит спокойно.
Плюс есть лимиты на куки, они нужны для небольших значений, не будешь с каждым запросом пересылать портянку.
Ну и т.д. Почитай какую-то теорию, это фундаментальный вопрос для любых веб-приложений.
Аноним 07/06/20 Вск 23:17:23 1716209219
>>1716206
Хотя тот же ебанутый асп.нет всю свою хуйню пересылает в формах скрытыми полями, лол. Пришлось ещё поверху навешивать безопасность и прочее. Норкоманы.
Аноним 07/06/20 Вск 23:24:14 1716217220
1586724992982.jpg 112Кб, 1280x720
1280x720
>>1716199
> заебно - хранить данные сессий на серваке, забивая лишнюю память
Вообще похую.
Аноним 07/06/20 Вск 23:33:30 1716228221
>>1716217
А как же это потом масштабировать?
Аноним 07/06/20 Вск 23:34:55 1716232222
>>1716228
Хранится в БД и всё себе масштабируется.
Аноним 07/06/20 Вск 23:35:03 1716233223
В питоне есть счетчик вызова функции?
Dir'ом пользовался, ничего не нашел
Аноним 07/06/20 Вск 23:37:44 1716238224
>>1716233
Лол, зачем?
Можно запилить декоратором.
Аноним 07/06/20 Вск 23:54:04 1716253225
>>1716238
Я с декораторами не дружу, не получилось понять их.
Делаю проектик один, функция выдает элемент списка и в следующий раз выдает уже следующий

Есть решение через костыль (сделал класс) но мне кажется есть решение проще
Аноним 07/06/20 Вск 23:58:54 1716259226
Безымянный.png 7Кб, 677x268
677x268
>>1716253
Код, так будет проще понять что я хочу, хех
Аноним 07/06/20 Вск 23:59:01 1716260227
unnamed.jpg 18Кб, 320x320
320x320
Аноним 07/06/20 Вск 23:59:45 1716261228
>>1716260
Не подходит, нужно чтобы значения выводились в строгом порядке
Аноним 08/06/20 Пнд 00:02:43 1716263229
Аноним 08/06/20 Пнд 00:04:32 1716266230
Сука... Проект джанго работал на sqlite, в принципе запускался как надо, решил перенести на Postgres, залил настройки как надо (уже однажды ставил себе Postgres), только захотел сделать миграции и вот такая херня начала вылезать:
django.db.utils.ProgrammingError: ОШИБКА: отношение "news_signature" не существует

Ну что этой падле надо? Каких к черту отношений не существует? (news - имя приложения, signature - имя одной из моделей в нижнем регистре) Их и не должно существовать блять, я же только первую миграцию провожу. Бомбит сука
Аноним 08/06/20 Пнд 00:04:56 1716268231
Аноним 08/06/20 Пнд 00:05:32 1716269232
>>1716268
Почему не может-то?
Аноним 08/06/20 Пнд 00:06:20 1716270233
>>1716269
Элементы должны выводиться в строгом порядке
Аноним 08/06/20 Пнд 00:07:04 1716271234
>>1716269
будет не костыль тогда.

>>1716270
так выводи их в строгом порядке.
Аноним 08/06/20 Пнд 00:07:13 1716272235
>>1716270
И генератор так не может, потому что что?
Аноним 08/06/20 Пнд 00:07:45 1716273236
>>1716270
Только попорядку
Обратился к функции - она отдала первый элемент
и так до последнего, где все начинается заново
Аноним 08/06/20 Пнд 00:10:03 1716277237
>>1716272
наверно потому что ему нужно постоянное напряжение. я так и не понял в чём проблема.
Аноним 08/06/20 Пнд 00:10:22 1716278238
>>1716271
Сейчас все работает, но решение мне не очень нравиться
self.i будет расти => память выделяться, не надо такого
Аноним 08/06/20 Пнд 00:12:50 1716280239
>>1716277
Я не понимаю до конца как работает генератор значит)
Я обращаюсь к фунции, она возвращает элемент первый массива, и так до конца массива где снова возвращается первый элемент

Задача стоит максимально непонятно, знаю
Аноним 08/06/20 Пнд 00:13:09 1716281240
>>1716278
что у тебя функция делает, давай показывай. будем думать, как генератор из неё бляднуть.
Аноним 08/06/20 Пнд 00:14:52 1716283241
>>1716281
Выше кинул скрин же
Аноним 08/06/20 Пнд 00:15:56 1716284242
>>1716233
Через замыкание (nonlocal), на основе замыкания собственно пилится декоратор и все норм
Есть еще решение дауна (но рабочее): передавать в функцию mutable значение по дефолту и использовать стремное поведение питона себе на пользу - сохранять в этот словарь или список свои значения, правда главное не накосячить и случайно не положить туда что-то снаружи
Аноним 08/06/20 Пнд 00:16:47 1716285243
>>1716266
Короче: убрал все файлы из проекта кроме models. Делал миграции для каждой модели отдельно. Вроде получилось. Хуй знает что это за залупа и как в принципе ее фиксить в крупных проджектах
Аноним 08/06/20 Пнд 00:18:03 1716287244
>>1716283
ах, тебе нужна функция с внутренним состоянием. понятно.
не проще ли будет извне по глобальной переменной перебирать список? решение не такое ебливое, но такое же по стрёмности.
Аноним 08/06/20 Пнд 00:18:26 1716288245
>>1716259
> return lst[self.i % len(lst) - 1]
Я нихуя не понял
Аноним 08/06/20 Пнд 00:19:47 1716289246
>>1716288
Заведи у себя на компе и поймешь
>>1716287
Тоже самое получится же, а в декораторы я не умею
Аноним 08/06/20 Пнд 00:28:23 1716292247
Аноним 08/06/20 Пнд 00:29:52 1716295248
>>1716292
Красава, ща попробую переделать у себя
Аноним 08/06/20 Пнд 00:32:42 1716298249
>>1716292
Ебать, спасибо нахой. Все работает как нужно.

Мда, ну я конечно и вафельный рожок
Аноним 08/06/20 Пнд 00:47:09 1716308250
>>1716158
>>1716142
Докопался до истины. Как оказалось, для того, чтобы успешно изменять переменную класса конкретного экземпляра, сначала нужно создать этот конкретный экземпляр.
=(((((
Аноним 08/06/20 Пнд 00:48:44 1716309251
>>1716308
Што? Переменная класса одна на все инстансы, переменная инстанса у каждого своя. Что тебе надо-то?
Аноним 08/06/20 Пнд 01:26:50 1716330252
Можно как-то при помощи фласка напрямую принтить текст в textarea, не используя JS? Пишу что-то вроде переводчика, где рядом две textarea, и ты в одну вводишь текст, сабмитишь, и в другой получаешь изменённый вариант. Погуглив, нашёл только с JS ответы.
Аноним 08/06/20 Пнд 01:31:08 1716333253
>>1716330
Суёшь в темплейт. В теймплете выводишь. В чём проблема-то?
Аноним 08/06/20 Пнд 01:43:34 1716343254
>>1716333
А так мультилайном можно принтить? И разве можно так напрямую в textarea отправлять? Если ты имеешь в виду "render_template("intex.html", textarea=my_text)".
Аноним 08/06/20 Пнд 01:46:50 1716344255
>>1716031
Спасибо большое!
Подскажи еще, плиз, как-то можно оставить только уникальные списки.
НО. Уникальность проверять без учета сортировки.

То есть, допустим список A = [ 'A1', 'B1', 'A1', 'B1' ] и список B = [ 'A1', 'A1', 'B1', 'B1'] будут считаться неуникальными, поскольку в них одни и те же элементы, пусть и в другом порядке.
А, например, списки A = [ 'A1', 'A1' ] и B = [ 'A1', 'A2' ] уникальными, так как в них различные элементы
Аноним 08/06/20 Пнд 02:04:00 1716350256
>>1716344
Ладно, это я заговнокодил сам.
еще раз спасибо
Аноним 08/06/20 Пнд 02:17:10 1716354257
terrydavis250.jpg 27Кб, 250x375
250x375
Петян, такое дело. Скрипт разрастается, функции добавляются, чики-пуки. Думаю ради фана замутить TUI как в утилах нортона под DOS, да и через коммандную строку уже не комильфо передавать конфигурацию. Конфиг чисто по старинке в ini файл ебану, чтоб дух старой школы был. configparser тут как раз в стандартной либе пистона есть. Так вот, вопрос вообше про конфигурацию и всю хуйню. Думаю с сделать класс/объект (назовём его для краткости Иннокентий) с конфигурацией, при инициализации пусть там будут захаркачены настройки/константы/значения по умолчанию. Так же у Иннокентия будет задача при каждом старте программы проверять наличие ini конфига, загружать его, и обновлять из него свои внутренние значения. Сама же прога будет обращаться к Иннокентию чтоб взять какие-то настройки/константы/значения. Ещё программа (давай называть её Епифания) может будет просить переписывать эти значения у Иннокентия. Ну вообще я хуй его знает, будет просить или сама перепишет, тут уж как они договорятся, я вообще за равноправие в семье, если женщина делает всю работу. Это например если дойду до того, что в свой TUI впихну вкладочку, где опции можно пенять.

Ну как Петян, дело? Я тут походу MVC придумал, да?
Аноним 08/06/20 Пнд 02:19:46 1716357258
>>1716350
чёу, counter из collections нашёл?
Аноним 08/06/20 Пнд 05:25:17 1716426259
Screenshot2020-[...].jpg 219Кб, 1080x2340
1080x2340
Screenshot2020-[...].jpg 356Кб, 1080x2340
1080x2340
>>1716108
Пробую работать с json по примерам. Запускаю и пишет что json не имеет атрибута .load. Что не так?
Аноним 08/06/20 Пнд 05:25:22 1716427260
>>1716343
> имеешь в виду render_template
Да.
Аноним 08/06/20 Пнд 07:35:42 1716449261
>>1716426
Ты назвал файл жсон.пу и он лезет впереди системного при импорте.
Аноним 08/06/20 Пнд 09:18:23 1716482262
Screenshot2020-[...].jpg 70Кб, 1080x2340
1080x2340
Screenshot2020-[...].jpg 143Кб, 1080x2340
1080x2340
>>1716449
И правда, теперь работает. Но теперь у меня другой вопрос: я добавляю в файл со значениями через : значения как в моем посте вот тут >>1716001, но получаю ошибку, что ожидалась запятая.

Почему у меня такой формат не канает? В посте выше все значения также через двоеточия были.
Аноним 08/06/20 Пнд 09:29:50 1716487263
Аноним 08/06/20 Пнд 10:55:38 1716537264
Screenshot2020-[...].jpg 77Кб, 1080x627
1080x627
>>1716487
Тоже выдает ошибку в месте где я значение после двоеточия добавил.
Аноним 08/06/20 Пнд 11:01:41 1716544265
>>1716537
Так а хули у тебя там квадратные скобки? Это для массивов. key-value с фигурными.
Аноним 08/06/20 Пнд 11:02:53 1716546266
>>1716537
погугли что такое json и почему внутри квадратных скобок не мб двоеточия
Аноним 08/06/20 Пнд 11:03:27 1716547267
аноны, мне одному кажется, что нюфани в край охуели?
Аноним 08/06/20 Пнд 11:06:37 1716553268
>>1711609 (OP)
Есть скрипт, проверяющий сотню тысяч строк данных на предмет валидности, необходимо записывать лог по каждой строке (номер строки и результат: success или fail), лог надо херачить во внешний файл (но можно и бд, мне похрену) csv или txt
Как это сделать наиболее производительно? Запись в файл либо вывод на экран отнимают время и ресурсы CPU, как "распаралелить" сами вычисления и запись данных?
Аноним 08/06/20 Пнд 11:09:14 1716556269
>>1716553
В файлах есть буферизация, не ссы.
Аноним 08/06/20 Пнд 11:11:41 1716563270
Главное правило любого pr-треда: не постить syntax errors с просьбой помощи
Один хрен где у тебя этот error: sql, питонух, жс или лисп. Он говорит о том, что ты не знаешь синтаксиса языка, который юзаешь. Поэтому не надо плез действовать на нервы людям, юзай иде с помощью в синтаксисе и учи язык
Аноним 08/06/20 Пнд 11:22:10 1716581271
>>1716556
Иная ситуация: у нас постоянно работает некий скрипт, проверяющий результаты поступающих на вход строк и записывающий результат в бд (либо отсылающий их на сторонний серв через REST), как замутить асинхронную либо параллельную обработку данных?
Аноним 08/06/20 Пнд 11:30:45 1716594272
>>1716581
Основной скрипт принимает и складывает в очередь, остальные кушоют из нее и шлют куда надо.
Аноним 08/06/20 Пнд 11:33:14 1716601273
>>1716581
Хм, кстати, а что это за зашкварная херня, что после отсылки request я обязательно должен тратить время и ждать response? Может мне похеру, дошли данные или нет? Как не получать ответов и продолжить исполнение скрипта?
Аноним 08/06/20 Пнд 11:41:17 1716610274
>>1716594
На веб-сервере только как это будет выглядеть интересно... flask или django потянут такое? (я других фреймворков не знаю прост) Они оба синхронные по своей природе а с очередями там я не особо знаком
Аноним 08/06/20 Пнд 11:43:06 1716614275
Аноним 08/06/20 Пнд 11:53:32 1716628276
Аноним 08/06/20 Пнд 12:34:38 1716666277
Аноним 08/06/20 Пнд 13:53:49 1716702278
image.png 34Кб, 558x241
558x241
image.png 47Кб, 605x273
605x273
Аноны, есть метод в Вьюсете DRF (пик1), пытаюсь написать тест для него (пик2), но получаю, что доступ к методу мне закрыт:
{'detail': ErrorDetail(string='You do not have permission to perform this action.', code='permission_denied')}
Хотя я же делаю аутентификацию, и изменяю пользователя, созданного сетапе и на это разрешение должно быть.
Аноним 08/06/20 Пнд 14:41:46 1716743279
У меня есть файл с куками, мне нужно зайти через эти куки на сайт. Как мне это сделать, анон, выручай
Аноним 08/06/20 Пнд 14:51:08 1716755280
>>1716743
А в чем проблема? Значения у тебя есть, добавляешь их в запросы.
Аноним 08/06/20 Пнд 14:55:32 1716756281
>>1716755
Спасибо. Недавно вкатился и поставил такую задачу себе, но инфы не нашел нигде
Аноним 08/06/20 Пнд 15:12:57 1716767282
>>1716702
Пробовал в тесте создавать токен, а не получать?
token = Token.objects.create(user=self.user)
Аноним 08/06/20 Пнд 15:24:28 1716770283
>>1716767
Токен создается при создании пользователя с помощью триггера
Аноним 08/06/20 Пнд 15:25:46 1716772284
>>1716770
В том смысле что токен там точно лежит
Аноним 08/06/20 Пнд 15:38:53 1716785285
У меня в веб-приложухе на джанго периодически отправляются запросы к сторонним серверам, которые могут вернуть исключения или зашкварные response_code вроде 429, 404 и т.п. мне нужно в таком случае как-то оповещать об этом админа (меня). В той же джанго есть вроде как способ отправлять email, но вот незадача: можно "собрать" дохрена подобных ошибок разом и по итогу почтовый ящик будет засран всяким говном. Че делать?
Аноним 08/06/20 Пнд 15:51:59 1716798286
>>1716755
Можешь, пожалуйста, написать пример. Мне тоже нужно такое.
Аноним 08/06/20 Пнд 15:52:31 1716800287
image.png 145Кб, 1366x768
1366x768
Есть такой вот скрипт. Я хочу добавить while цикл, чтоб он просил меня ввести возраст пока я не введу стоп-слово. Мой цикл не работает - он бесконечный.

И я не могу добавить проверку age.lower() == 'quit'. Выскакивает ошибка AttributeError: 'int' object has no attribute 'lower'. Но мне то нужно чтоб если ввелись цифры, то они должны стать не str, а int, то есть на цифры нужно среагировать как на цифры, а на слово как на слово.

https://ideone.com/u50pgm
Аноним 08/06/20 Пнд 15:57:22 1716808288
>>1716800
Напиши while True or age == "quit'. В чем проблема?
Аноним 08/06/20 Пнд 15:58:30 1716809289
Аноним 08/06/20 Пнд 16:01:11 1716815290
>>1716808
В одной строке писать? Он выдает EOL while scanning string literal.
Аноним 08/06/20 Пнд 16:08:54 1716818291
Аноним 08/06/20 Пнд 16:12:55 1716821292
>>1716818
Объясни плиз, почему у меня был бесконечный цикл, а у тебя нет.
Аноним 08/06/20 Пнд 16:17:07 1716824293
>>1716798
Ну для того же requests
s = requests.Session()
s.cookies.update(ck)
В ck словарь с печеньками.
Аноним 08/06/20 Пнд 16:18:59 1716827294
>>1716821
У тебя инпут был вне цикла. Ты один раз вводил значение в age (в первой строке), а потом это значение проверял по кругу в цикле while. В итоге у тебя всего два варианта: либо age == 'quit' и ты сразу выходишь из цикла, либо ты бесконечно проверяешь age и живешь в проклятом мире, который сам же и создал.
Аноним 08/06/20 Пнд 16:29:51 1716848295
unstoppable.PNG 51Кб, 1275x763
1275x763
>>1716821
Можешь попробовать еще вот сюда зайти: http://www.pythontutor.com/visualize.html , ввести свой код, нажать кнопочку "visualize execution" и пошагово смотреть что там у тебя происходит.
Аноним 08/06/20 Пнд 16:38:03 1716868296
>>1716196
Хм, блять, поставил я такой себе сессии вместо куков понимаешь ли и теперь когда юзер разлогинивается, данные теряются нах. Куки-то в браузере хранились и поэтому после повторного логина данные никуда не девались
Это фишка сессий такая? Долговременное хранение данных в принципе невозможно? Кукам я сам выставлял время жизни
Аноним 08/06/20 Пнд 16:51:54 1716884297
>>1716848
То же самое можно же через брейк поинты делать, зачем левый сайт?
Аноним 08/06/20 Пнд 16:55:15 1716887298
>>1716868
Ну если разлогинивается, то теряются. Если не разлогинивается, то не теряются, лол. Это настраиваемо.
Для постоянных данных есть БД, ты получашь нужные записи при логине и можешь настроить сессию.
Аноним 08/06/20 Пнд 17:00:01 1716892299
>>1716884
Чтобы не объяснять, что такое брейкпойнты
Аноним 08/06/20 Пнд 17:00:12 1716893300
>>1716887
Вообще, я тебе рекомендую прочитать какую-то книжку именно по вебдеву, там все эти процессы и подходы поясняются, потому что они уже давно изучены и обкатаны и в общем не меняются.
Ещё сразу же полезно читнуть литературку по нападению-защите на веб-приложения, это тоже очень многое проясняет.
Аноним 08/06/20 Пнд 17:03:10 1716894301
>>1716892
>>1716884
Я знаю, что такое брейкпоинты, просто у меня пока настолько простенькие скрипты, что ни разу не приходилось ими пользоваться.
Аноним 08/06/20 Пнд 17:16:31 1716907302
Есть тут сисадмины, которым реально пригодился питон? Чё с ним делаете?
Аноним 08/06/20 Пнд 17:17:04 1716910303
Аноним 08/06/20 Пнд 17:22:14 1716915304
>>1716894
Но я-то не знал, что ты знаешь. Поэтому решил, что так тебе будет проще и вопросов меньше
Аноним 08/06/20 Пнд 17:31:07 1716919305
>>1716915
Не-не, я ж без претензии, тебе больше спасибо за ответы и сайт годный. Я только начал учить while цикл и плохо понимаю как он работает.
Аноним 08/06/20 Пнд 17:38:19 1716923306
>>1716907
Сисадмины? Че?
Питон язык для веб-приложений, а не веб серверов лол. Если и юзается админом то только для облегчения доступа к сети, вместо десятка curl-ов или nmap-а из терминала
Аноним 08/06/20 Пнд 18:22:50 1716959307
Аноним 08/06/20 Пнд 19:16:50 1717000308
Как обратиться к элементу в словаре, который находится внутри другого словаря? Например есть:

{"type":"string","data":{"someshit": 123, "anothershit": 456}}

Как получить значения someshit и anothershit?
Аноним 08/06/20 Пнд 19:22:40 1717009309
>>1717000
x = название твоего словаря

print(x[type][someshit])
Аноним 08/06/20 Пнд 19:24:00 1717010310
>>1717009
тьфу, не type, а data конечно. Короче сперва ключ, в котором сидит другой словарь и сразу ключ следующего словаря.
Аноним 08/06/20 Пнд 19:30:20 1717016311
>>1717009
>>1717010
А почему ошибка string indices must be integers может вылезать?
Аноним 08/06/20 Пнд 19:36:35 1717020312
>>1717016
потому что string indicies не integers
Аноним 08/06/20 Пнд 19:42:42 1717027313
Image 719.png 7Кб, 874x175
874x175
Image 722.png 6Кб, 418x205
418x205
>>1717020
Логично. Но почему когда я делаю это на тестовой строке(1) - все получается. А когда делаю тоже самое на реальных сообщениях(2) из чата - получается ошибка string indices must be integers?
Аноним 08/06/20 Пнд 19:58:34 1717038314
>>1717027
ты уверен что на втором скрине у string = message тип dict?
Аноним 08/06/20 Пнд 20:01:19 1717044315
>>1717038
Строка слева - это то что я получаю в message делая print.

Сделал chat_string = json.loads(message), а остальное оставил без изменений и заработало. Не понял в чем разница между message и json.loads(message)
Аноним 08/06/20 Пнд 20:04:55 1717046316
>>1717044
разница между строкой и словарем примерно как между твоей шлюхой мамашей и арбузом
Аноним 08/06/20 Пнд 20:33:22 1717069317
>>1717046
Сходи нахуй. Делаю print обоих и получаю:

{"type":"channel_counters","data"{"channel_id":"5","clients_in_channel":"735","users_in_channel":507}}

{'type': 'channel_counters', 'data': {'channel_id': '5', 'clients_in_channel': '735', 'users_in_channel': 507}}

В обоих вариантах словари, разница лишь в форматировании - в одинарных или двойных кавычках у элементов и пробелах после запятых.
Аноним 08/06/20 Пнд 20:35:05 1717073318
>>1717069
Блядь. Двоеточие после data в первой строке это я случайно затер. Строки абсолютно одинаковые.
Аноним 08/06/20 Пнд 20:36:29 1717074319
>>1717073
Говорят типы разные
Он делает принт
Аноним 08/06/20 Пнд 20:38:41 1717075320
>>1717074
Так я вывожу содержимое переменных, что не так?
Аноним 08/06/20 Пнд 20:40:19 1717078321
Аноним 08/06/20 Пнд 20:40:51 1717079322
>>1717075
ну значит json.loads просто меняет кавычки
Аноним 08/06/20 Пнд 20:41:29 1717080323
>>1717078
И как ты типы проверил?)
Аноним 08/06/20 Пнд 20:44:46 1717083324
>>1717079
И что меняется? От типа кавычек зависит что-ли вылезит ошибка string indices must be integers или нет? Хуита какая-то.

>>1717080
Через type. Что не так?

Аноним 08/06/20 Пнд 20:45:23 1717084325
image.png 11Кб, 802x168
802x168
>>1717078
>Проверил типы. У обоих
><class 'str'>
><class 'str'>
Нет.
Аноним 08/06/20 Пнд 20:49:57 1717088326
90107e80b038d5d[...].jpg 31Кб, 500x370
500x370
Аноним 08/06/20 Пнд 20:50:27 1717089327
Аноним 08/06/20 Пнд 20:54:45 1717094328
15916345633591.png 23Кб, 418x205
418x205
>>1717089
ты ток не плачь
освоишь ты свое прогромирооне
Аноним 08/06/20 Пнд 20:56:23 1717098329
>>1717069
ебать ты тупой. то что ты там принтишь, никак не должно тебя ебать, в __repr__ хоть что можно засунуть.
Аноним 08/06/20 Пнд 21:31:46 1717127330
Аноним 08/06/20 Пнд 21:35:50 1717130331
Аноним 08/06/20 Пнд 21:36:03 1717131332
>>1717127
Не просто создавай экземпляр класса, а добавляй в лист.
Аноним 08/06/20 Пнд 21:37:43 1717135333
Аноним 08/06/20 Пнд 21:42:22 1717136334
>>1717135
cs = []

for ...:
    cs.append(Class(...))

for c in cs:
c.func1()
c.func2()
Аноним 08/06/20 Пнд 21:47:15 1717138335
>>1717136
ебать как ты пробелы поставил вначале?

for i in range(10):
cs.apppend()
Аноним 08/06/20 Пнд 21:53:03 1717139336
>>1717127
Лучше напиши, что вообще препдологается сделать, а не как.
А то ты явно переусложняешь с этими классами.
Аноним 08/06/20 Пнд 22:26:57 1717164337
>>1717138
Как в трифорсе, nbsp. Во второй части сожралось почему-то (или забыл)
Аноним 08/06/20 Пнд 22:49:40 1717173338
Аноним 09/06/20 Втр 01:22:05 1717224339
Приветы
А где читать/смотреть мануалы, как делать боевые бекенд штуки, если ты вкатыш?
Иными словами, меня интересует архитектура и использование паттернов проектирования наверное
Вот я хочу склепать асинк веб приложение (групповой чятик) с минимальным кол-вом тупого копипаста сниппетов в целях обучения
Я понимаю, что мне как минимум нужна бдшка, слой логики для работы с ней, хттп сервер
К примеру, я выбрал sanic + gino + какой-то менеджер задач + што-то ещё
Но дело в том, что во в гитхабах этих либ есть только узкие примеры, демонстрирующие их конкретные методы
А как это все собрать в полноценное приложение и чтобы оно не выглядело пиздец вырвиглазно, немного непонятно..
Аноним 09/06/20 Втр 01:39:32 1717233340
>>1717224
Если вкатыш, то надо забыть про асинк и чятики, потому что технологии не самые приятные, лучше напиши банально и синхронно с нуля какой-нибудь круд с админкой, регистрацией, авторизацией, подтягиванием по крону консольной командой инфы в бд, и т.д, очередью для чего-то
Аноним 09/06/20 Втр 01:41:56 1717234341
.JPG 54Кб, 1143x580
1143x580
Почему код на пикрелейтед возвращает html файл, а не txt? При этом, если скачивать в мозилле, то сначала предлагает сохранить как html, но записывает на диск как txt, а если в хроме скачивать, то прямо в html и сохраняет.
Что-то не так с хедерами?
Аноним 09/06/20 Втр 01:51:57 1717236342
>>1717234
Отбой.
Нужно было 'Content-Type': 'text' добавить.
Аноним 09/06/20 Втр 03:54:57 1717260343
images.jpeg 7Кб, 221x228
221x228
Петян, а накидай годных тулз/программ на питоне для коммандной строки, которые используют конфигурационные файлы для своих нужд. Но так, чтобы код был открытый, красивый и лаконичный. Мне посмотреть, поковырять.
Аноним 09/06/20 Втр 04:51:44 1717267344
Аноним 09/06/20 Втр 05:12:59 1717271345
>>1717267
прааасти, но ты перрррвый начал буксовать и быковать
Аноним 09/06/20 Втр 05:33:25 1717274346
>>1717271
Нихуя, ты там боевые картиночки постить начал. Надо адекватней реагировать на вопросы новичков
Аноним 09/06/20 Втр 05:55:33 1717278347
Мне надо пересылать информацию между двумя разными программамм на питоне. С помощью чего это лучше всего сделать?
Аноним 09/06/20 Втр 06:04:20 1717280348
Аноним 09/06/20 Втр 14:36:47 1717590349
Сап, подскажите, кроме книг, есть ресурсы по типу learn.javascript только для Питона ?
Аноним 09/06/20 Втр 15:27:27 1717664350
за ООП базар Аноним 09/06/20 Втр 16:37:09 1717717351
есть двойное наследование и продукт его любви c, упрощённые пример:

class A:
  foo = "foo"
class B:
  bar = "bar"
class A:
  baz = "baz"

c = C()

можно ли c кастовать обратно в А? допустим, мне в одном месте нужна будет только та хуйня, что в c привнёс класс A.
Аноним 09/06/20 Втр 16:41:14 1717719352
>>1717717
Чет у тебя код не соответствует вопросу.
>можно ли c кастовать обратно в А?
Можно. Если там вообще под капотом кастинг происходит, а не утиная проверка.
Аноним 09/06/20 Втр 16:41:49 1717720353
изображение.png 57Кб, 792x783
792x783
Аноним 09/06/20 Втр 16:56:33 1717737354
>>1717719
ну мне надо будет что-то такое, пишу псевдокод:

> c = C()
> c.foo = "dicks"
> a = (A) c
> a.foo
'dicks'
> a.__dir__()
[..., 'foo', ...]


а так, это скорей всего XY-проблема, вы мне сейчас насуёте лучших решений если начну рассказывать зачем мне это, пока не рискну это делать.
Аноним 09/06/20 Втр 17:11:12 1717749355
изображение.png 21Кб, 818x132
818x132
изображение.png 12Кб, 1134x60
1134x60
Бля челы, решил тут обмазаться вскодом вместо пичарма и чет сразу же обосрался
Линтер вроде успешно подключился, а вот форматтер как-то не совсем
Почему может не работать?
Точнее оно работает, но явно не так, как должно
Допустим, вот этот фрагмент никак не форматируется, хотя на демо сайте yapf работает, как нужно.
Короче блин, как прикрутить исправления кода в духе пичарма?
Аноним 09/06/20 Втр 17:40:25 1717772356
1591717180676.jpg 134Кб, 720x832
720x832
Хоть кто-нибудь итт смог на начальные позиции устроиться?
Аноним 09/06/20 Втр 18:25:21 1717825357
>>1717772
перл и смузи, будешь рабом, беги
Аноним 09/06/20 Втр 18:47:41 1717851358
151118966915742[...].png 153Кб, 700x525
700x525
>>1717136
Вчера забыл сказать спасибо.
Вот, собственно.
Картинка для выражения эмоций.
Аноним 09/06/20 Втр 18:47:53 1717852359
Screenshot 2020[...].png 34Кб, 443x182
443x182
Нужно экспертное мнение гуру джанги. Возможно ли запилить кастомное поле в модели, которое сможет хранить два строковых значения и фильтроваться по любому из них? Про ArrayField я в курсе, но с ним надо весь проект перелопачивать и заменять user_id на user_id__icontains. Надеюсь наебать систему кастомным полем.
Аноним 09/06/20 Втр 20:16:57 1717981360
Применимы ли принципы SOLID питоне?

Смотрю вроде на примерах пока все, ну кроме разделения интерфейсов наверное, кажется лютым капитанством.
Когда смотришь антипримеры как делать не стоит - вообще не понимаешь каким надо быть дебилом что бы так писать.
Вроде и так понятно что надо делать так.
Аноним 09/06/20 Втр 20:31:58 1717992361
Аноним 09/06/20 Втр 20:34:20 1717994362
>>1717981
А кажется потому, что ресурсы, по которым все учатся, обычно следуют как раз SOLID. SOLID - это не новое изобретение, которому нужно учиться отдельно, а вполне себе самые общие принципы современного ООП. И их по ходу дела изучаешь, даже не зная, что это так называется.
Аноним 09/06/20 Втр 20:34:58 1717995363
>>1717772
>сперл/пиздон
>системное программирование
>помешанный на коде специализд за смузи
ебать комбо
Аноним 09/06/20 Втр 20:36:15 1717998364
>>1717992
Есть какой-то реальный пример применения последнего принципа? В джанге какой-нибудь возможно? Везде нахожу только совсем игрушечные примеры, не укладывается в голове как это применять.
Аноним 09/06/20 Втр 20:38:33 1718001365
>>1717981
SOLID - это тупо полиморфизм и здравый смысл.
С динамической типизацией интерфейсов нет.
Реализуешь сразу метод в классе.
Если только с макаками работаешь, то придется запиливать пустой класс, который бросается исключениями, если не реализовать методы.
Аноним 09/06/20 Втр 20:40:02 1718002366
>>1717998
2 Scoops of Django годная книга по best practise
Но насчет интерфейсов ебать себе мозги лишний раз не стоит хотя в 3.9 таки допиливают эту хрень
Аноним 09/06/20 Втр 20:41:24 1718003367
>>1717852
Можно
Но надо штудировать доки Джанги и возможно Postgres. Там большая мозгоебля с правильной имплементацией кастомных полей
Аноним 09/06/20 Втр 20:43:29 1718005368
Аноним 09/06/20 Втр 20:44:27 1718006369
>>1717852
Хз правильно ли так делать, но можешь сделать поле ArrayField, затем привязать к классу кастомный менеджер модели, в котором перепилить метод get. Он будет реализовывать icontains внутри себя, чтобы не заменять это везде в проекте.
Аноним 09/06/20 Втр 20:47:12 1718011370
>>1718002
>>1718001
Я просто буду устраиваться на работу снова в ближайшее время, вот хочу знать что отвечать на собеседовании если спросят про солид и как это применяется именно в питоне
Аноним 09/06/20 Втр 20:48:01 1718012371
>>1718003
Чувствую, что кроличья нора слишком глубока окажется.

>>1718006
О, про менеджеры я как-то и забыл, кстати. Должно сработать, я думаю. Тут правда еще вопрос, можно ли индексировать ArrayField и будет ли эта схема такой же быстрой, как простой CharfField с db_index=True, но это потом бенчмарками померяю.
Аноним 09/06/20 Втр 20:48:40 1718016372
>>1718011
Сколько уже питон изучаешь? Пет-проект намутил?
Аноним 09/06/20 Втр 20:51:59 1718021373
>>1718016
2 года работал бэкендером на питоне, но о таких вещах как solid даже не задумывался. Сейчас вникаю во все это, и кажется что интуитивно соблюдал все это, кроме инверсии зависимостей. Ее пока не могу постигнуть. Вроде все очень просто, но как и зачем это делается именно в питоне не понимаю.
Аноним 09/06/20 Втр 21:27:50 1718041374
Аноним 09/06/20 Втр 21:30:26 1718043375
Аноним 09/06/20 Втр 21:34:19 1718046376
>>1717852
Звучит как XY Problem. Какая проблема решается? Если значения только два, то их нужно хранить в разных полях. Если нужно, чтобы пара была уникальна, их можно объединить в композитный ключ.

Например, https://stackoverflow.com/questions/28712848/composite-primary-key-in-django

Если значений много, то только отдельная таблица.
Аноним 09/06/20 Втр 21:42:48 1718054377
>>1718046
Там немного ебланская система, где у всех юзеров есть уникальные в пределах отдельной Txxxxx команды айдишники вида Uxxxxx и у некоторых юзеров глобально уникальные айдишники вида Wxxxxx. Т.е. однозначно юзера идентифицировать можно по паре Txxxxx + Uxxxxx либо по одному Wxxxxx, если он у него есть. Первая часть с T + U реализована, теперь надо добавить поддержку W. Желательно так, чтобы не переделывать весь проект. В связи с чем я хотел бы сделать поле, чтобы кверисету было все равно U или W айдишник ему передали, он сам внутри разберется, как искать.
Аноним 09/06/20 Втр 21:52:24 1718066378
>>1718011
идёшь на собеседование - заеби своего оппонента уточняющими вопросами на его кукарёхи. во-первых, сойдёшь за умного, во-вторых подчеркнёшь ничтожество его ёбнутые вопросы. пример:

ХУЙ: знаком ли вам solid и то, как эти принципы используются в питоне?
ТЫ : а для чего вам нужны эти принципы и как их используют у вас?
ХУЙ: да я сам не знаю, вот ищу кого, кто бы мне подсказал.
ТЫ : крайне вероятно, что с вашими маленькими проектами он вам нахуй не нужен. солид красивый концепт на бумажке, но на практике всё выходит, как выходит. простите блять за мат.
ХУЙ: но в книге про агильное программирование...
ТЫ : а я ебашу KISS расрашенным в стиле американской группы.
ХУЙ: а причём тут американская группа?
ТЫ : а причём тут агильное программирование?
ХУЙ: ладно. может квиксорт на листочке набросаете?
ТЫ: а вы синтактический анализ и интерпретацию тоже на листочке будете делать? зачем вам квиксорт? используете часто, но не нагуглили его? вас чем-то не устраивает встроенный тимсорт в питоне?
ХУЙ: нет.
ТЫ : тогда почему вы спрашиваете про квиксорт?
ХУЙ: я вижу, как-то не задалось у нас.
ТЫ : у вас часто так?
Аноним 09/06/20 Втр 22:03:44 1718086379
>>1718066
Я обычно в ответ на тупые вопросы сразу в лоб спрашиваю, сколько у собеседующего см член, если это кун. Пока он тупит, достаю смартфон и показываю фотки своего 21 см бойца. Чухан начинает краснеть и понимать, что проигрывает, тут-то я и занимаю доминирующее положэение
Аноним 09/06/20 Втр 22:06:32 1718089380
>>1718086
А если тян, спрашиваешь глубину?
Аноним 09/06/20 Втр 22:09:57 1718091381
изображение.png 126Кб, 933x533
933x533
изображение.png 148Кб, 1594x611
1594x611
изображение.png 22Кб, 1089x326
1089x326
>>1718041
Можно я тебе хуй отсосу? Хоть у меня все равно ничего не работает, но хоть инструкция к действию есть.
На винде просто ад и ужас и пакет не хочет устанавливаться вообще никак и ошибки непонятные, на распбиан ВМ версия Тенсорфлоу не хочет подниматься выше 0.11, но ошибка более осмысленная.
Видимо версия ТФ слишком маленькая, и чего-то не хватает. Что-то он не может найти.

(По факту мне нужен реалтаймовое распознавание машин и людей, с выводом всего говна в консоль.(Или в файл))
(Я сюда уже обращался с https://pastebin.com/B9JNBhuW таким говном, сказали что тут можно выводить label. Но выводит оно все по очереди, а не все сразу. И распознавание медленное, камера дерганная) Подумал что вот этот код с 10 строчками можно будет допилить до реалтайма, Он вроде как считается быстрым распознаванием, и выводит все.
Но чет хуйня.
Аноним 09/06/20 Втр 22:14:00 1718093382
>>1718091
Рекомендуют анаконду под дата сатанизьмы, млы и прочую хуйню. Типа там умные люди порешали все зависимости.
Аноним 09/06/20 Втр 22:17:14 1718096383
>>1718093
Благодарствую.
Качаю, сейчас попробую. Может там заработает.
Аноним 09/06/20 Втр 22:19:07 1718097384
>>1718066
> SOLID
> а для чего вам нужны эти принципы и как их используют у вас?
суть питонистов
Аноним 09/06/20 Втр 22:24:15 1718100385
изображение.png 77Кб, 871x340
871x340
Модуля нет, но он есть. Великолепно просто. Я бомбом.
Сложно, сложно, нихуя не понятно.
Аноним 09/06/20 Втр 22:37:39 1718115386
>>1718100
Он у тебя из индексированных файлов был вытащен. А его зависимости у тебя уже установлены поэтому requirement already satisfied
Аноним 09/06/20 Втр 22:43:18 1718117387
>>1718054
С точки зрения строения БД, ни U (без T), ни W как главные ключи использовать нельзя. Композитный (T, U) можно, а W, я так понимаю, всегда опциональный.

В любом случае, должно быть два индекса - по (T, U) и по W. Соответственно, два-три поля (например, tid , userid и globaluserid) в модели.

Из приятных новостей, можно добавить новый Lookup наподобие iexact: https://docs.djangoproject.com/en/3.0/howto/custom-lookups/

С ним как минимум можно добавить возможность писать .get(userid with globals='W01').
Не уверен, но вероятно возможно добавить таким образом псевдо-поле. Т. е. у тебя есть поля localuserid и globaluserid, а искать все еще можно по .get(userid all types='W01').

Но это все страшно как-то.
Аноним 09/06/20 Втр 22:44:05 1718118388
>>1718115
Не понял.
Да в любом случае, он не видит.
Я пипаю его, он пипается, но всем насрать. Код не видит.
Аноним 09/06/20 Втр 22:49:50 1718121389
Сейчас надо бы перенести проект на Убунту (потому что на винде redis-server работает через пизду), так что встал вопрос: куда и как установить Питон?.. В Винде у меня 3 версии Питона: 2.7, 3.7 и 3.8 - каждый интерпретатор лежит в своей папке в C:\Program Files, а далее по надобности создается среда venv для проекта
Как такое заделать в линухе? apt install python просто установит самую последнюю версию дистрибутива, обновив предыдущую же
Аноним 09/06/20 Втр 22:51:24 1718122390
>>1718121
Как минимум Питон и Питон 3 живут отдельно.
Питон не обновится до Питон3
Аноним 09/06/20 Втр 22:56:09 1718125391
>>1718121
Ну питон2 и питон3 живут одновременно, а вот с 3.7 + 3.8 легко и просто не получится. Ты уверен, что они оба тебе нужны? Там же вроде все обратно совместимо.
Аноним 09/06/20 Втр 23:07:16 1718133392
Аноним 09/06/20 Втр 23:08:19 1718135393
>>1718121
sudo apt install python3.7 python3.8 python2.7
Далее создаешь venv указывая
virtualenv -p python3.7 py37
Аноним 09/06/20 Втр 23:21:01 1718144394
>>1718121
Смотря какую убунту будешь ставить. В 18.04 штатный питон 3.6, например.

Надо ставить специальный репозиторий, ищи по ключевым словам deadsnakes. Так ты можешь одновременно несколько разных питонов поставить.

Вызывать их будешь командой, например python3.8 proga.py

Другой вариант - поставить докер и через докер много питонов. Но тут много камней и грабель, только ради этого не стоит.

Свои папки тоже стоит создать, но уже для virtualenv.

Короче глянь на deadsnakes и ещё про виртуальные окружения, если вдруг с ними пока не работал, не знаю как на винде принято.
Аноним 09/06/20 Втр 23:23:24 1718146395
Аноним 10/06/20 Срд 00:16:45 1718184396
sparre-7.jpg 507Кб, 1300x1300
1300x1300
Помоги, анон!
Внутри Фляги завёл глобальный словарь USERS, в USERS['username'] храню экземпляры юзеров, которые "онлайн". На каждом запросе имею объект USERS[session['username']] -> class User.
Да, мсье знает толк в извращениях и не хочет городить датацентр под редис ради пары десятков клиентов в день.
Так вот, на локальной машине всё просто замечательно, а у хостера эта глобальная несчадно уничтожается от запроса к запросу. Можно ли это как-то пофиксить? Или может есть более рациональный способ передавать экземпляр класса внутри сессии без использования глобальных переменных и всяких дачных овощей?
Аноним 10/06/20 Срд 00:20:17 1718187397
>>1718184
Короче говоря, как нативными средствами сохранить и передать увесистые данные пользователя (в куки всё не влезет), идентифицируемого посредством сессии?
Аноним 10/06/20 Срд 00:26:13 1718190398
Наверное нужно пояснить, что такая поза нужна, чтобы пользователь мог генерить фоновый процесс и общаться с ним через пайп, который потеряется, если не сохранить объект, породивший процесс. Его я и сохраняю в глобалке.
То что я делаю вообще имеет смысл, или мне надо сделать перерыв и сходить на природу?
Аноним 10/06/20 Срд 00:52:09 1718209399
изображение.png 171Кб, 1920x1080
1920x1080
Что происходит?
Что это?
Почему нет imageai в анаконде и нужно устанавливать отдельно?

И почему так долго идет проверка каких-то конфликтов?
Какая-то лютая херня, уже час где-то идет.
Аноним 10/06/20 Срд 00:58:43 1718213400
>>1718190
Чето сложно. Если совсем уж методами из коробки, то храни данные в sqlite. Если не совсем из коробки, то редис простой же. Или может хостер твой предоставляет какой-нибудь mysql бесплатно? Самостоятельные попытки что-нибудь собрать - в той или иной мере переизобретение изложенного выше. Вся инфраструктура веба расчитана на то, что процессы сервера можно без потерь уничтожать и пересоздавать. Идти против течения будет тяжело.
Аноним 10/06/20 Срд 01:07:46 1718218401
1483611828830.jpg 159Кб, 1080x1339
1080x1339
Аноним 10/06/20 Срд 01:15:40 1718227402
>>1718218
Ну, я бы не страдал хуйней, если бы не руководитель учебного проекта.
Кококо, делайте распознавание, там за день можно сделать, сам давно занимался, но там легко, чо вы такие тупые, где результат, ну и так далее
Каквсигда.
Аноним 10/06/20 Срд 01:17:49 1718233403
>>1718227
Какой курс? Это действительно легко, если есть хоть немного опыта.
Аноним 10/06/20 Срд 01:20:59 1718238404
>>1718233
У меня нет мозгов, и я не занимался питоном, как таковым. Я чисто гуглом программирую.
Второй курс, при том что это мой долг, и со мной дрочат первокуры.


Аноним 10/06/20 Срд 01:37:49 1718246405
>>1718238
>Я чисто гуглом программирую.
Если умеешь в гугл, то проблем быть не должно.

Конкретно по твоему вопросу - в репозитории анаконды есть далеко не все библиотеки. Если чего нет - ставь через pip. Через анаконду проще ставить библиотеки, с зависимостями не только на питоне, например Tensorflow, которому нужен cudnn. Для всего остального разницы нет.
Аноним 10/06/20 Срд 01:48:30 1718251406
изображение.png 12Кб, 525x280
525x280
изображение.png 171Кб, 1920x1080
1920x1080
197239af-4d8d-4[...].png 128Кб, 1920x1080
1920x1080
>>1718246
> Если чего нет - ставь через pip
Вроде если через пип, то устанавливает просто на питон.
И если вот так написать conda install -c powerai imageai как тут, то будут собственно конфликты.
Если conda install imageai то меня просто нахуй пошлют.
Аноним 10/06/20 Срд 01:59:32 1718257407
>>1718251
Ставь прыщинукс
Потом
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --user
export PATH=$PATH:$HOME/.local/bin в .bashrc
python3 -m venv my_cool_proj/.venv
cd my_cool_proj
source my_cool_proj/.venv/activate
pip instal al you need
Аноним 10/06/20 Срд 02:02:33 1718258408
>>1718257
>python3 get-pip.py --user
>export PATH=$PATH:$HOME/.local/bin в .bashrc

можешь без этого
Это если хочешь глобально в хомяка ставить пакеты

pip install --user al you need
Аноним 10/06/20 Срд 02:05:09 1718259409
>>1718258
Незабудь поставить
apt install build-essential python3-dev python3-distutils
Аноним 10/06/20 Срд 02:05:44 1718260410
Аноним 10/06/20 Срд 02:07:16 1718262411
>>1718251
>Вроде если через пип, то устанавливает просто на питон.
Для начала активируй окружение созданное анакондой командой activate.
>И если вот так написать conda install -c powerai imageai как тут, то будут собственно конфликты.
Ты кроме этого ничего не ставил? Пересоздай заново окружение:

conda create -n temp python=3.7

Активируй его:

activate temp

И устанавливай библиотеку командой:

conda install -c powerai imageai

У меня все работает на винде, прыщи не нужны.
Аноним 10/06/20 Срд 02:13:11 1718264412
изображение.png 170Кб, 1920x1080
1920x1080
изображение.png 180Кб, 1920x1080
1920x1080
>>1718258
>>1718262

ПОЛУЧИЛОСЬ ГОСПОДИ ПОЛУЧИЛОСЬ ГОСПОДИ АЛЛИЛУЯ ДАЙ БОГ ВАМ ВСЕМ ЗДОРОВЬЯ.
Шоб деньги водились, и там тыры пыры.

Но прыщеблядикс не понадобился, хоть и есть расбиан на виртуалочке. От скуки клацнул pip без троечки, и установилось куды надобно.Удивительно, бладжд. Я довен.

Тэк, интересно, а можно источником засунуть камеру, хммммммм.
Аноним 10/06/20 Срд 02:13:47 1718265413
>>1718264
Правда не знаю, варнинги какие-то лезли, хмммм. Хотя заработало.
Аноним 10/06/20 Срд 02:40:07 1718271414
Петян, к словарю можно как к объекту обращаться?

есть один класс. а есть один словарь, который генерируется. можно быриком собрать это дерьмо так, чтоб ключи словаря стали полями класса?
Аноним 10/06/20 Срд 02:46:28 1718272415
Аноним 10/06/20 Срд 02:55:20 1718273416
А что из себя представляет фуллстек сеньор-помидор питонист? Что ни вакансия на летнюю практику, то писать машинку. Это прикольная вещь, вот только там две с половиной либы юзать да яйца чесать во время прогона эпох. А для чего ещё питон активно используется, что ему трудно найти замену и где они "принят" стандартным языком в какой-либо сфере?
Аноним 10/06/20 Срд 02:56:55 1718274417
>>1718272
ну я пока делаю так:

class belmando:
  pass
bodyparts = {"arms": 2, "legs" : 2, "dicks": 1 }
b = belmondo()
for key, value in bodyparts.items():
  b.__setattr__(key, value)

оно всё прекрасно и хорошо, но можно ж как-то слинковать,
чтоб при изменениях bodyparts менялись и поля, и наоборот.
хуй его знает, какой нить враппер повесить там, что при обращении
к полям, он сначала смотрел в словаре.
Аноним 10/06/20 Срд 03:00:03 1718275418
>>1718273
Фулстеки помидорами не становятся. Помидор должен знать глубоко. Фулстек это обычный раб на галере. Питон там или пых, без разницы
Аноним 10/06/20 Срд 03:00:59 1718276419
>>1718272
кстати спасибо за ссылку, вроде годно.
Аноним 10/06/20 Срд 03:09:00 1718278420
Аноним 10/06/20 Срд 03:14:24 1718279421
>>1718278
блять, ну нахуя мне наследовать от словаря.
Аноним 10/06/20 Срд 03:15:27 1718280422
>>1718279
Ну не насдедуй, закомпозь внутри
Аноним 10/06/20 Срд 03:27:40 1718282423
>>1718280
ну я хуй его знает, как бы всё это хитро сделать. короче расклад такой, есть ini файл с конфигами, который может переписать пользователь. есть у меня внутри дефолтные значения, там просто для большей части оказалось легче comprehension их нагенерировать в словарь. моя хуета будет запускаться, создавать этот словарь, потом щупать конфиг на предмет переопределения и всё это будет сохраняться в бельмандо. в бельманде ещё пару констант, настроеек и прочего говна будет держать. своего рода модель чтоли или state. а уже остальные части будут дёргать бельманду для работы. годно?
Аноним 10/06/20 Срд 05:00:47 1718323424
Аноним 10/06/20 Срд 07:56:23 1718402425
Поясните за сокеты. Есть 2 различные программы, перекидывание данных из одной в другую я хочу сделать через сокет. Данные передаются, но при этом стопорится выполнение всей остальной программы.

Как сделать чтобы выполнение шло параллельно? Что-то пробовал асинк, но нихуя не получилось.
Аноним 10/06/20 Срд 08:03:03 1718403426
10/06/20 Срд 09:17:33 1718438427
>>1718402
Че пояснять? все сам понял. Делай асинк .
Аноним 10/06/20 Срд 10:09:58 1718449428
>>1718282
Зачем тебе вообще щупать ini файл? При запуске программы забирай из него значения, пихай их в бельмондо. Если настройки можно изменять не только через ini, то все изменения передавай в бельмондо, а по завершению программы сохраняй все в ini. Тебе, по большом счету, для этого нужно в бельмондо два метода .load_from_ini, .save_to_ini. В .load_from_ini и твори свою магию со словарями и setattr
>>1718402
https://asyncio.readthedocs.io/en/latest/tcp_echo.html
Берешь пример, проверяешь, если работает, то накручиваешь сверху своих хотелок.
Аноним 10/06/20 Срд 10:58:50 1718465429
>>1718125
нихуя не совместимо, kivy под 3.8 не работает
Аноним 10/06/20 Срд 11:03:28 1718470430
>>1718264
Камеру можно через open cv подключить, потом фреймы из камеры подаешь в сетку, сетка делает аутпут в отдельную картинку, этот файл крутишь на показ в бесконечном цикле, но фпс будет дико хуевым сразу говорю, реал тайма 30фпс не будет
Аноним 10/06/20 Срд 11:59:33 1718501431
Мне надо отправить пост-запрос на сайт, но он постоянно отказывает в доступе, мол запрос подозрительный. Юзер-агент в хидерах есть. Что ему может быть нужно и как это достать через браузер? Там запросы проходят и их можно смотреть, но я почти ничего в этом не понимаю.
Использовать селениум или что-то подобное не могу, нужно делать много таких запросов одновременно, а там браузер открывается на каждый.
Аноним 10/06/20 Срд 12:03:11 1718506432
>>1718501
Может быть печенье, могут быть токены в заголовках.
Запрос подозрительный в каком смысле? Ололо, вы бот? Или 403 или
там ошибка какая-то?
Аноним 10/06/20 Срд 12:16:36 1718523433
>>1718506
Скачал заголовки запроса и куки, тепепь просто ждёт и кидает эксепшон про истечение времени и закрытие соединения на той стороне.
Насчет подозрительности ничего не сказано, просто не нравится и всё. Возвращает код 200 и жсон, в нем эта строка.
Аноним 10/06/20 Срд 12:25:06 1718532434
>>1718523
Ну хуй знает, надо смотреть.
Аноним 10/06/20 Срд 12:32:56 1718547435
>>1718501
селениум можно запустить в headless режиме, тогда браузера ты не увидешь. и про много запросов ты наверно припезднул, много это несколько десятков тысяч в секунду, а тво сто это так, шутеечки.
Аноним 10/06/20 Срд 12:34:00 1718551436
>>1718532
По сабмиту формы сайт делает три пост запроса, яндекс, гугл, и на внутреннюю страницу, которая и отдаёт жсон с ответом. Так вот, если перейти на это страницу самому по ссылке с параметрами, тоже кидает отказ.
На нужную мне страницу передаётся капча, хотя я ничего не заполнял. Капча каждый раз разная.
Аноним 10/06/20 Срд 12:36:26 1718553437
Так, запрос в яндекс -- это трекер, а вот в гугл сайт стучится за капчёй. И что с этим делать?
Уже начал ковырять селениум, но проблема в том, что у меня ноут, и не самый мощный, а запросов пара тысяч в секунду примерно.
Аноним 10/06/20 Срд 12:37:47 1718555438
>>1718551
Если это рекапча, тогда понятно.
Она может быть невидима и спрашивать свои задачки только если ты подозрительный. Это хуевый вариант, но можно решить с помощью апи с обезьянками.
Аноним 10/06/20 Срд 12:41:43 1718560439
Я может чего-то не понимаю, но что сложного делать прекомпиляцию классов и функций до импортирования/исполнения модуля? Вот из одного класса А я вызываю конструктор другого класса В, однако ж в таком случае В обязан быть объявлен перед А. Типо логично да? Но вот с практической точки зрения профита никакого, лишь излишние траблы пограмизду. Это та же история как и с __future__.annotations без которого аннотации нереально запилить без предварительного объявления
Аноним 10/06/20 Срд 12:44:56 1718568440
>>1718555
По сабмиту идёт вызов рекапчи через жабасрипт, это можно как-то фейкнуть или сделать самому?
Аноним 10/06/20 Срд 12:46:24 1718570441
>>1718568
Насколько я знаю, нет надежного метода автоматического решения.
Да и если ты будешь много отправлять, она всё равно быстро начнет сыпать задачки.
Аноним 10/06/20 Срд 12:49:17 1718575442
Аноны, можно как-то передать доп инфу в Exception? Я в коде бросаю свой кастомный эксепшн, который представляет неверный status_code во время обращения к стороннему ресурсу (404 скажем). Мне бы во время объявления эксепшна как-то закинуть в него инфу об этом status_code, чтобы вышестоящий блок try/except смог его обработать и сохранить
Как такое мутить?
Аноним 10/06/20 Срд 12:51:12 1718577443
>>1718575
Наследуешься от Exception и в конструкторе добавляешь свои кастомные хуитки.
Аноним 10/06/20 Срд 13:15:01 1718604444
>>1718577
Заделал, вроде работает, но к этому идет сопутствующий вопрос: как выйти разом из множества функций? Пока вижу только вариант с броском эксепшна, возвращать None и потом проверять результат каждого вызова на None лишь чтобы самому сделать return None - зашкварная херня
Аноним 10/06/20 Срд 13:19:36 1718611445
>>1718604
> Пока вижу только вариант с броском эксепшна
Так и рекомендуется.
Аноним 10/06/20 Срд 13:21:33 1718613446
>>1718604
> Пока вижу только вариант с броском эксепшна
Так не рекомендуется.
Аноним 10/06/20 Срд 14:15:55 1718639447
Аноним 10/06/20 Срд 14:26:16 1718649448
>>1718604
Если у тебя нештатная ситуация - то для этого исключения и нужны.

А у тебя нештатная, раз ты проверяешь промежуточные функции на None и меняешь ветвь исполнения на этом основании.

Не рекомендуется базовые ветви исполнения завязывать на исключения. Условный пример - ты делаешь рекурсивный поиск по дереву, и как только находишь что тебе надо, так делаешь исключение.
Аноним 10/06/20 Срд 18:17:05 1718820449
Есть два массива, один является срезом второго:
a = [0, 1, 2, 0, 1, 2, 3, 4, 0, 4]
b = [1, 2, 3, 4]
Нужно вернуть смещение b по отношению к a. Есть что-то готовое, или костылить свой метод на index и проверках?
Аноним 10/06/20 Срд 18:55:05 1718833450
>>1718820
Если надо за время O(len(a)), то самописное решение по аналогии с поиском подстроки.
Аноним 10/06/20 Срд 20:42:39 1718904451
Есть способ заставить писать логи модуля logging при помощи разных цветов - красным ошибки, желтым ворнинги и скажем синим инфо-сообщения?
Аноним 10/06/20 Срд 21:20:59 1718923452
Поделитесь историями, у кого на какой теме больше всего буксовало изучение питона, если такое было?
Аноним 10/06/20 Срд 23:24:46 1719014453
Анон у меня хуй не встает на ван Россума что делать?
Аноним 10/06/20 Срд 23:36:00 1719018454
>>1718923
Асинхронка конечно.
Аноним 10/06/20 Срд 23:38:12 1719021455
>>1718904
Я вот так извращался:
def say(i, text):

colors = [30, 32, 34, 35, 36, 93, 30, 32, 34, 35, 36, 93]
return log.info(f"\033[{colors}m Worker-{i} said: {text}")
Переделай под себя.
Аноним 10/06/20 Срд 23:46:52 1719027456
hernandez1.jpg 48Кб, 650x366
650x366
Есть ли хотя бы в теории какая-нибудь реализация декоратора не для функции, а для следующей строки, что бы там ни было, чтобы не городить
try:
a = 42/0
except:
return "хуй"

а вместо этого писать что-то вроде этого:
@exception("хуй")
a = 42/0
Круто же, ну! Реально это вообще?
Аноним 10/06/20 Срд 23:53:24 1719031457
>>1719021
Сорян, индекс отвалился, colors конечно же:
return log.info(f"\033[{colors}m Worker-{i} said: {text}")

И это на линуксе, на винде не знаю, будет ли работать.
Аноним 10/06/20 Срд 23:55:54 1719033458
>>1719031
Короче вакаба зачем-то режет индекс, сам найдёшь где он должен быть.
Аноним 10/06/20 Срд 23:58:30 1719035459
>>1718820
Если они небольшие, то можно заджойнить и искать подстроки, а так да, циклы-проверочки.
Аноним 11/06/20 Чтв 00:45:22 1719061460
Аноним 11/06/20 Чтв 04:55:52 1719103461
Такой вопрос. Программа использует файлы из отдельной папки для своей работы. Иерархия такая - есть папка Программа, в ней 2 папки: папка Питон, в которой окружение питона и сама программа, и папка Данные, в которой различные файлы.

Как сделать чтобы путь сохранялся при переносе папки в другое место?
Аноним 11/06/20 Чтв 05:20:09 1719105462
Аноним 11/06/20 Чтв 09:18:45 1719141463
>>1717772
Забыли дописать про зарплату в 30К
Аноним 11/06/20 Чтв 09:59:41 1719156464
2EVxWd7d.jpg 23Кб, 385x367
385x367
Вот делаю я какой-то скрипт для работы с данными. Т.е. читаем файл, делаем ахалай-махалай и пишем новый файл.
Надо ли там ловить эксепшены с файлами? Я щитаю, упадет и заебись, всё понятно.
Надо ли пихать контекстные менеджеры и вообще закрывать файлы? Вот я понаоткрывал файлов и пишу в них по ходу работы. Потом в конце они сами отвалятся.
Видел, что пишут в структуры, а потом в конце высирают всё сразу с with. По-моему, это какая-то хуйня.
Аноним 11/06/20 Чтв 10:02:58 1719157465
>>1719156
Жопу тоже можно не подтирать, говно вылезло и заебись, вконце дня например всё равно мыться если, само все почистится. По-моему, вытирать жопу каждый раз это какая-то хуйня.
Аноним 11/06/20 Чтв 10:08:42 1719162466
>>1719157
А без криявляний?
Мне интересна практическая ценность, а не так нада, патамушта так нада.
Аноним 11/06/20 Чтв 10:42:42 1719177467
>>1719162
А ты для чего вообще прогаешь?

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

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

Ты, блеядь, программист или кто? Ты должен сам понимать, что тебе нужно в конкретной задаче.
Аноним 11/06/20 Чтв 10:43:29 1719179468
А мне вот интересно, где должны обрабатываться исключения? В вызывающей функции или вызываемой?
Если в вызываемой, то она может закрысить важную инфу и передавать неверные данные, а если в родительской, то тогда пропадает принцип единой ответственности.
Как правильно делать?
Аноним 11/06/20 Чтв 10:50:54 1719184469
>>1719177
Да это всё понятно, мне интересны бест практисы, а не полтора простейших кейса из учебника.
Аноним 11/06/20 Чтв 10:52:03 1719185470
>>1719179
Тебе надо думать о принципах инкапсуляции и замкнутости.

Функция должна делать свою работу и максимально изолировать вызывающий контекст от ненужной информации и головной боли.

Что нужно и не нужно уже зависит от логики программы.

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

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

Потому что вызывающий код понятия не имеет, что ты там открываешь, в каком формате данные и т.п. Ему нужно получить результат или характер ошибки, если ошибка была.
Аноним 11/06/20 Чтв 11:00:19 1719188471
>>1719184
Смотри, как реализованы разные библиотеки и пакеты, которыми ты пользуешься. Просто снаружи, для тебя как для пользователя.

Общий принцип - любой поведение должно быть понятным и документированным.

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

Эти данные могут лежать в файле или в сети. Формат хранения может быть json, yml, xml, pickle, sqlite или ещё какой-нибудь. В функцию ты просто передаёшь имя, а по префексу-расширению делаешь выводы.

Тебе нужно или получить данные, или код ошибки. При этом для тебя ошибка может быть или вида "не удаётся считать источник", или "в источнике нет данных".

Разработчику не нужно знать о всём том лесе ошибок, которые могут возникнуть. Поэтому каждую ошибку ты обрабатываешь внутри, а наружу кидаешь итоговую, и снаружи ловишь исключения только одного-двух видов, вместо нескольких десятков. Такой общий подход.
Аноним 11/06/20 Чтв 11:00:53 1719190472
>>1719185
Спасибо. Получается функция должна ловить у себя исключения и при невозможности принять меры по этому поводу, возбуждать и возвращать новые, более понятные?

И ещё вопросик:
Метод класса должен изменять переменную класса и возвращать ошибку, или возвращать значение, которое уже вне его присваивается перменной класса?
Аноним 11/06/20 Чтв 11:17:30 1719197473
>>1719190
>Метод класса должен изменять переменную класса и возвращать ошибку, или возвращать значение, которое уже вне его присваивается перменной класса?
Тебе как разработчику решать, как удобнее.

Вообще общий принцип - данные должны быть или корректными, или их не быть вообще. Это критично для БД, файлов, сетевых пакетов и некоторых действий.

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

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

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

В общем тебе решать, в каких случаях как тебе удобнее. Может быть потом ты по своему сбойному объекту-файлу-базе может восстановить источник ошибки, например.
Аноним 11/06/20 Чтв 11:22:08 1719198474
Аноны, поясните как применяется принцип инверсии зависимостей из solid в питоне? Там же нет интерфейсов, на которые нужно завязывать эти зависимости.
Аноним 11/06/20 Чтв 11:30:48 1719200475
>>1719198
утиная типизация
Protocol
Dependence Injection
Аноним 11/06/20 Чтв 12:16:18 1719223476
>>1719200
Dependency
медленнофикс
Аноним 11/06/20 Чтв 12:17:27 1719224477
>>1717772
У меня среди знакомых есть 3 истории успеха, где люди реально с нуля вкатывались и довольно быстро устраивались, правда там шарпист, явист и тестировщик. Я сосу хуй, я относительно недавно вкатился и знаний у меня реально не хватает, поэтому пока даже не бомбит.
Аноним 11/06/20 Чтв 12:17:58 1719225478
>>1719200
Получается, мы просто договариваемся (например, описываем в комментариях), что класс должен реализовывать такие-то методы и все?
Аноним 11/06/20 Чтв 12:25:07 1719229479
>>1719225
ты про Protocol не погуглил даже
Аноним 11/06/20 Чтв 13:07:54 1719244480
>>1719105
Правильно я понимаю что сделав вот так я получу путь к папке, в которой питоновский файл находится?

import os

my_path = os.getcwd()
my_dir = os.path.split(my_path)
my_dir = my_dir[0]

Я все правильно делаю?
Аноним 11/06/20 Чтв 13:18:05 1719251481
>>1719244
Нет, cwd это рабочая директория, она может быть другой при запуске.
Смотри __file__
Аноним 11/06/20 Чтв 13:31:03 1719267482
>>1719251
Так я планирую хранить файл питона в конкретной папке и запускать его всегда оттуда. Вот >>1719103

Разве мой вариант выше не будет всегда работать?
Аноним 11/06/20 Чтв 13:31:40 1719269483
>>1711609 (OP)
Всем привет
Есть одна задача для души
Есть сложная функция, в которой есть х и у, известна сумма этих х и у, необходимо узнать, при каком соотношении этих xy будет получено максимальное значение.
Наверное, с этой задачей я сам как-то справился бы

Но задача несколько интереснее
Дальше речь про некоторую игру, так что кого смущает - не читайте
Есть сложная функция, описывающая урон персонажа в которой есть х и у, известна сумма этих х и у, а еще есть некоторое дерево талантов, которое влияет на эу самую формулу. Дерево по своей сути простое (просто меняет количество х, у или какой-то множитель формулы), но это именно дерево, т.е. некоторые таланты незлья взять, пока не взяты другие.
Подскажите, как оценить максимальное значение функции при заданных х,у и числе талантов?
Как вообще такое гуглить? Подскажите, в какую сторону смотреть. Наверняка есть какое-то типовое (хотя бы чуть-чуть) решение, чтобы хоть как-то сузить количество циклов
Аноним 11/06/20 Чтв 13:38:27 1719273484
>>1719267
Если запускать всегда оттуда, то будет, но можно и без такого условия.
Аноним 11/06/20 Чтв 13:49:24 1719284485
>>1719273
А как ещё можно запускать? Из консольки что-ли? А если через ярлык запускать .py файл - мой вариант все равно будет работать?
Аноним 11/06/20 Чтв 14:03:35 1719299486
>>1719284
Да, из консоли, по крону ещё.
Наверное, будет.
Аноним 11/06/20 Чтв 14:04:24 1719301487
>>1719284
Просто пропиши относительный путь, тебе же дали ссылку.
Из "Питон" в "Данные" в твоем случае путь будет "../Данные"
Аноним 11/06/20 Чтв 14:07:02 1719303488
>>1719299
А если сделать ярлык, который ссылается на батник, который запускает .py и находится в той же папке?
Аноним 11/06/20 Чтв 14:08:03 1719305489
>>1719269
Пока что пришла мысль сделать перебор всех возможных талантов, просчитывать для них функцию и выбрать максимальное значение
как-то так

Я вообще по адресу тредом? Здесь такое практикуют?
Аноним 11/06/20 Чтв 14:11:25 1719311490
>>1719301
А если вообще просто без os.getcwd() или __file__ прописать

f = open(f'../testfile.txt', 'r')

То файл, который в папке выше откроется в любом случае?
Аноним 11/06/20 Чтв 14:16:42 1719322491
Аноним 11/06/20 Чтв 14:20:55 1719331492
>>1719322
В общем надо проверять с ярлыками и смотреть что лучше. Спасибо.
Аноним 11/06/20 Чтв 14:29:14 1719344493
>>1719331
Нормальный вариант это chdir на __file__ и тогда уже относительно всегда будет отрабатывать.
Аноним 11/06/20 Чтв 14:30:23 1719346494
>>1719344
Как это целиком выглядеть будет?
Аноним 11/06/20 Чтв 14:34:23 1719349495
>>1719346
os.chdir(os.path.dirname(os.path.abspath(__file__)))
Аноним 11/06/20 Чтв 14:35:36 1719351496
Привет объясните дауну, для чего нужны штуки типа redis и rabbitmq?
Я понял, что вот редис - это типа такая база данных, только выглядит, как обычный словарь. Т.е это такой альтернативный более упрощенный способ хранения данных (вместо sql бд), правильно?
А вот для чего используется второе, не совсем понятно
Аноним 11/06/20 Чтв 14:58:20 1719391497
>>1719269
Это в общем-то типичный минимакс/оптимизация/нелинейное погромирование. Гули его.
Если x и y целые, то вообще брутфорсом перебрать можно же.
Аноним 11/06/20 Чтв 15:01:54 1719404498
>>1719351
>Т.е это такой альтернативный более упрощенный способ хранения данных (вместо sql бд), правильно?
Не только. Он еще гораздо быстрее, так как все данные храняться в оперативной памяти
>А вот для чего используется второе, не совсем понятно
Это брокер сообщений. К примеру, у тебя есть 2 сервиса, и тебе нужно выстроить коммуникацию между ними. Когда в одном происходит какое-то событие (например, создан новый товар), но этот сервис через рэббит отправляет сообщение во второй сервис, типа создай этот товар на складе.
Аноним 11/06/20 Чтв 15:02:57 1719406499
>>1719351
Это менеджер очередей. У тебя есть синхронная апа1, которая активно срёт данными, и синхронная апа2, которая эти данные потребляет. Чтобы сбаласировать их напрямую через апи надо много поесть говна.

Раббит - это ящик, первая апа складывает в этот ящик данные, вторая апа из него берёт данные. Как только в ящике становится больше N сообщений ты можешь это отследить и запускает ещё один экземпляр апы2, чтобы брать из ящика сообщения в два потока.
Аноним 11/06/20 Чтв 15:04:11 1719408500
>>1719404
Еще фишка рэббита в том, что если сервис, который читает сообщения, не будет доступен на момент отправки, то он сохранит сообщение в очереди, пока сервис не станет доступен. Еще он масштабируется на несколько серверов, если нагрузка большая. Впрочем, как и редис.
Аноним 11/06/20 Чтв 15:11:47 1719427501
>>1719404
>храняться
хранятся, конечно же
самофикс
Аноним 11/06/20 Чтв 15:28:36 1719468502
Нубский вопрос. Поясните за названия переменных. Какие имена часто используются людьми, которые уже зарезервированны и которые лучше не использовать? Например, выше по треду я называл файл json.py и это вызывало конфликт.
Аноним 11/06/20 Чтв 15:46:46 1719518503
>>1719468
есть имена из стандартной либы вроде hash, id, json их лучше не перекрывать

общепринято для переменных добавлять _ в конце hash_, id_, json_

для файлов сложнее, обычно просто называют по другому, мол, json_utils или json_validators, либо в кровавом ентерпрайзе могут разруливать такое через тот факт, что запускаемый файл лежит в родительской папке и импортят вроде project.json
Аноним 11/06/20 Чтв 15:47:08 1719521504
>>1719391
>>1719269

типичный...
Я чет даже не знаю, как запрос составить.

Да, х и у целые. Даже натуральные.
Первая часть решается следующим коротеньким циклом
https://pastebin.com/JFKX3Jyg
МОжет, не очень филигранно, но зато действует.
А вот как пришить сюда таланты ебаные? Хуй знает

Какая мысль меня посетила: для всех вариантов талантов просчитать этот цикл, но как просчитать все варианты талантов?
К примеру, у нас есть талант А Б С Д, у каждого из этих талантов 10 уровней, каждый уровень таланта Б требует уровень таланта А. Как можно взять все вариации для 10 талантов?
Это уже уже ояебу вариантов, а в каждом этом варианте нужно всять еще варианты для первого цикла, бля, это майнинг уже какой-то.
Аноним 11/06/20 Чтв 16:04:08 1719552505
>>1719518
>общепринято для переменных добавлять _ в конце hash_, id_, json_
Так именуют только мудаки, которые ничего тяжелея хера в руках не держали длиннее print('Hello, world') не писали.
Аноним 11/06/20 Чтв 16:06:41 1719560506
>>1719518
>в кровавом ентерпрайзе
Каким образом нормальная структура проекта соотносится обязательно с тырпрайзом?
Аноним 11/06/20 Чтв 16:14:27 1719572507
>>1719552
посмотри исходники django там кода больше чем print hello world

>>1719560
json такое себе название для модуля, обычно возникает в ентерпрайз велосипедах
Аноним 11/06/20 Чтв 17:22:03 1719647508
>>1719572
Встречается или имеет место? Стиль такой блевотен по одной причине - белые люди читают слева направо, так что id и id_ выглядят практически одинаковыми, отсюда _ никакой полезной нагрузки не несет.
Аноним 11/06/20 Чтв 17:42:55 1719669509
>>1719647
ты предлагаешь перекрывать видимость? или писать длинные имена?
Аноним 11/06/20 Чтв 17:46:25 1719673510
Что за херня, аноны? Вкатываюсь во flask, чтобы выключить сервер написано нажать ctrl+c и это не работает. Что я могу делать не так ?
Аноним 11/06/20 Чтв 17:52:59 1719681511
>>1719673
если консоль в ide, то она может перекрывать сигналы терминала
Аноним 11/06/20 Чтв 18:21:24 1719701512
Аноним 11/06/20 Чтв 18:27:50 1719705513
>>1719681
работаю в pycharm, если он влияет, то как пофиксить или обойти?
>>1719701
как это должно помочь?
Аноним 11/06/20 Чтв 18:28:08 1719706514
Аноним 11/06/20 Чтв 18:28:49 1719707515
>>1719706
пробовал, не помогло
Аноним 11/06/20 Чтв 18:28:57 1719708516
изображение.png 97Кб, 1920x1080
1920x1080
изображение.png 93Кб, 1920x1080
1920x1080
>>1718470
Мне бы аутпут в консольку шоб выводило. Чтобы типо всю хуйню что программа видит на кадре, пусть срет в консолью
Нашел код-образец видео захвата, и хотел на сделать по аналогии, ибо занимаюсь методом научного тыка, так сказать,
for eachObject in detections:
print(eachObject["name"] , " : " , eachObject["percentage_probability"] )
Засунул это в конец SD.py файлика. Хотел чтобы получилось как в FD. Нихуя не выводит.

Наверно обьекты при видео сьемке не так называются. Какие-нибудь .VideoObject
Кстати, если запускать, то по итогу вообще 1 фрейм, каждые 5 сек, лул.
Но этого в принципе должно хватить. Мне "умные светофоры" делать, там хоть каждые 10 секунд, не важно.
Надо правда убрать запись видео, а то она тоже жрет ресурсы.
Аноним 11/06/20 Чтв 19:04:20 1719747517
изображение.png 139Кб, 1920x1080
1920x1080
Нашел вывод всего дерьма в консольку.
Но выводит крайне грязно. Скобачки))), Букафки. Но меня все равно радует.
Ну надо наверно написать конвертер отпут строки в что-то полезное, и выводить как белый человек.
Аноним 11/06/20 Чтв 19:12:54 1719761518
Аноним 11/06/20 Чтв 19:13:53 1719763519
Аноним 11/06/20 Чтв 19:35:47 1719783520
>>1719404
>>1719406
Ага благодарю спасибо!
У меня тут просто переходный период от чтения док и решения задачек на алгоритмы к написанию первого осмысленного пет-проекта (онлайн голосовалку с аутентификацией, статистикой, защитой от дублирования голосов и прочих штуковин)
Но первое, что приходит в голову - просто написать кучу обычных реквестов... пук-среньк...
А хочется сразу прикрутить "взрослых" технологий
Аноним 11/06/20 Чтв 19:38:50 1719789521
изображение.png 114Кб, 1920x1080
1920x1080
А в чем разница? Кроме сортирования по алфавиту?
Мне нужно что-то вроде пропуска ненужных символов или их удалении.
Или я неправильно пользуюсь? Вроде питон имеет в своем распоряжении охуенный иструментарий из функций, которые я не знаю :(
На сишке я бы как долбоеб прогнал бы всю строку, и принудительно убрал бы ненужные символы.

Как из обычной командной строки вылезти в анакондовскую?
Заебало cdхаться до нужной папки.
Я видимо долбоеб. Так еще и ctrl+c почему-то не работает.
Аноним 11/06/20 Чтв 19:47:28 1719796522
Вот завидую я таким людям - нихуя не знает, а сразу лезет в какую-то йобу с головой.
Аноним 11/06/20 Чтв 19:51:18 1719802523
Аноним 11/06/20 Чтв 20:29:08 1719835524
Посоны, как там у вас на рынке ситуация?
А то мне тут печёт с однокашника по физфаку, с которым мы потом вместе мнс'ами в нии были. Учился он не очень, работу делал тоже не очень, статей в первый-второй квартиль в отличии от меня не писал, кандидатскую тоже не сделал. Свалил в дс на пистон в ML или в AI, причём пока работали вместе он каких-то результатов в кодинге не показывал, может конечно он на работе не усирался. Хотя computational materials scince, где мы работали, вполне интересная область, и есть куда пайтон приложить.
Говорит, сейчас у него через год работы 150к+, позицию не знаю. Как так?
Аноним 11/06/20 Чтв 20:48:30 1719861525
>>1719835
кадровый голод
половина кандидатов вообще не понятно какого хуя отзываются на пайтон девелопера, не знаю про args/kwargs например а хотят 200к, другая половина какие-то ебанутые чуваки вроде тех что пишут по 10к в одном файле или используют венгерскую нотацию. Таким образом чуваков, которых хоть как-то можно во что-то напрячь ну из 10 собесов будет 1 и тот съебет в другую контору.
Аноним 11/06/20 Чтв 21:32:40 1719894526
>>1719835
Работа в industry везде оплачивается лучше, чем в академии. Это даже от страны не зависит. Computational materials scince - звучит круто, думаю, вполне можно поторговаться за ЗП.
Аноним 11/06/20 Чтв 21:47:53 1719910527
>>1719894
> звучит круто
Поэтому и не написал "компьютерное моделирование" или дословно "вычислительное материаловедение".
Академия, действительно, оплачивается средне. Я много работаю и получаю 75к в нии, работая нс'ом со степенью кфмн. Немного, но для науки норм.
Аноним 11/06/20 Чтв 23:30:58 1719987528
А как убрать лишние символы из listа?
Что-то не нашел функцию специально для листа. Только для стрингов понапридумали.
Может я бака?
Аноним 11/06/20 Чтв 23:32:30 1719990529
>>1719987
>лишние символы
Какие именно?
Аноним 11/06/20 Чтв 23:35:17 1719992530
>>1719990
Фигурные скобки, одинарные кавычки.
Аноним 11/06/20 Чтв 23:39:48 1719998531
>>1719992
>Фигурные скобки, одинарные кавычки.
Все равно непонятно, в чем заключается задача. Каждый элемент листа состоит из одного символа или из нескольких? По-моему тебе нужно что-то вроде этого (для листа l):

[x for x in l if re.match('[a-zA-Z]+', x)]
Аноним 11/06/20 Чтв 23:47:26 1720001532
>>1719998
Может это ХУ проблема, так сказать.
У нас есть вот такой допустим лист.
{'cup': 1, 'bottle': 1, 'person': 2}
Мне нужно подсчитать сколько челиков.
Позже этим же алгоритмом подсчитать допустим кол-во челиков здесь
{'bottle': 1, 'cup': 1, 'person': 1, 'vase': 1}
А после и здесь
{'bottle': 2, 'person': 1, 'toothbrush': 1, 'vase': 1}
И так далее пока я не стопну.

Я думал что если убрать кавычки и скобки, написать считывалку будет проще.
Хотя похоже одинаково.
Аноним 11/06/20 Чтв 23:53:34 1720007533
>>1720001
>{'cup': 1, 'bottle': 1, 'person': 2}
Это не лист, а словарь. Просто вытаскиваешь количество людей и всe.

n_people = d['person']
Аноним 12/06/20 Птн 00:06:19 1720010534
>>1720007
ПАСИБА :3 Я просто тупая бака и языка не знает.
Поискал что такое словарь, и сделал такъ.
rng = 0
rng = output_count.get('person')
print(rng)
Получилось.

Штош, осталось сделать вывод этого говна на ардуину.
Аноним 12/06/20 Птн 01:36:10 1720049535
>>1711609 (OP)
Вот задача: Напишите программу, которая получает три вещественных числа в одной строке, разделенных пробелом, как-то преобразует их и выводит их на экран как показано в примере:
В выводе используйте 1 функцию print()!

Input 1:
3.14 2.718 10.0
Output 1:
32 103 210
Input 2:
1.0 2.0 3.0
Output 2:
12 31 23

Вот код:
a, b, c = map(float, input().split())
a = int(a)
b = int(b)
c = int(c)
print((a, b, sep=''), (c, a, sep=''), (b, c, sep=''))

Пишет: SyntaxError: invalid syntax в пятой строке
Аноним 12/06/20 Птн 03:17:56 1720092536
>>1720049
sep='' и пробелы явно a,b,' ', 'c'
Аноним 12/06/20 Птн 06:45:53 1720111537
Через что лучше работать с электронными таблицами excel, open office? Нужно искать по значаниям в ячейках сравнивать перезаписывать по определенным условиям
Аноним 12/06/20 Птн 08:42:01 1720122538
Аноним 12/06/20 Птн 10:01:38 1720158539
>>1720111
если эксель, то можно pandas заюзать.
Аноним 12/06/20 Птн 10:05:36 1720159540
>>1720158
> если эксель
В том то и дело, что нужно для екселя и опенофиса одновременно, тк файлы в перемешку
Аноним 12/06/20 Птн 10:13:45 1720163541
>>1720159
ну тогда или pyexcel/pyexcel-ods или как уже писали openpyxl
Аноним 12/06/20 Птн 10:15:39 1720164542
>>1720049
a, b, c = map(float, input().split())
a = int(a)
b = int(b)
c = int(c)
print ((a, b), (c, a), (b, c), sep='')

не?
Аноним 12/06/20 Птн 10:16:49 1720165543
парни подскажите как сравнить по столбцу 2 csv файла без заголовков. и если строка со 2го совпадает с первым дописать в совпадающую строку в 1м определенный текст?
Аноним 12/06/20 Птн 10:24:20 1720168544
>>1719835
Ему блат подвалил, але
Его научрук туда пропихнул, чтт непонятного?
Аноним 12/06/20 Птн 10:25:48 1720169545
ThreadPoolExecutor будет работать внутри джанго/фласка? (для взаимодействия с сетью)
Аноним 12/06/20 Птн 10:27:53 1720170546
Есть шанс вкатится после 33? Хотя бы чисто по фану для себя начать, год назад пробовал стартовать дошел до простенького реддит бота, но забросил, сейчас сам в своем коде не могу разобраться. Имею вышку по инженерной спецухе, производство, 3дэ моделинг, как то можно с пистоном совместить?
Аноним 12/06/20 Птн 11:31:35 1720196547
>>1720170
> Есть шанс вкатится после 33?
Да, но учти, кадровый голод не просто так. Не смотря на огромное количество вкатывальщиков ситуация принципиально не меняется.
> 3дэ моделинг, как то можно с пистоном совместить?
Сам не моделер, но какие-то плагины на блендера вроде на питоне пишутся. Ты должен лучше знать
Аноним 12/06/20 Птн 11:42:35 1720205548
Аноним 12/06/20 Птн 11:46:42 1720210549
Screenshot20200[...].png 106Кб, 789x740
789x740
Познакомился с peewee, запихиваю json в базу циклами и
второй день не могу победить пикрил.
Сначала всё норм, но где-то на 2 группе данных вываливается ошибка на выделенной строке. Смотрю содержимое element_group_through - одинаковые значения как в первой так и во второй колонке присутствуют, т.е. успешно записались, значит проблема не в этом. Кто сталкивался? Что ей от меня нужно?
Аноним 12/06/20 Птн 20:39:25 1720762550
>>1720210
Если и для группы, и для элемента выполнится ветка "get", то ты действительно попытаешься засунуть точно такую же связь, которая была вставлена, когда в предыдущий раз группа или элемент (или обе сущности) были созданы.

А вообще:

1. Посмотри, какие constraints тебе нагенерировал фреймворк в таблицах : http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#print_model

2. Выведи в терминал конкретные запросы, которые ты делаешь (https://stackoverflow.com/questions/32691602/how-to-get-sql-query-from-peewee) и посмотри, что из этого может нарушать целостность.

3. Не уверен, что тебе это нужно, но у тебя нет ограничений на уникальность групп и элементов. Группу с одним и тем же названием можно создать несколько раз.
Аноним 21/06/20 Вск 16:04:32 1729653551
>>1719031
Работает в pycharm на винде. В обычном терминале - офк нет
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов