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

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

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

Предыдущий: >>1752122 (OP)

Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem

Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться

#######################################

ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года

Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.

— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х

— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html

— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0

— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4

— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.

— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)

— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется

— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.

— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.

https://dumpz.org/bASGKD8cCFDf
2 1780961
Продублирую сюда, хули ему надо?
3 1780967
>>0961
Очень просто - если ты не видишь ошибки в ошибочной строчке, значит обосрался в предыдущей.
4 1780970
>>0967
Блядь, все, увидел скобочку, как-то нелогично, сделали бы лучше подчеркивание незакрытой скобки, чем принт просто подчеркивать как косяк
5 1780971
>>0970

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


Ты не закрыл скобку = для интерпретатора это продолжается все то же выражение. Он ебет что ли, как у тебя должно быть все по задумке?
6 1780973
>>0970
Парсится как есть, а не построчно, конструкции могут быть и многострочными.
7 1780974
Начал учить питон. Какой наиболее адекватный способ сделать retry?
17 строка
https://pastebin.com/eF2BqzQQ
8 1780977
>>0974
while not inpNumber:
и внутри твоя хуйня.
9 1780981
>>0977
Спасибо, анон! Шикарно вышло. А то наркоманы всякие советуют @retry из tenacity, который хуй пойми как вообще использовать новичку
10 1780994
Пишу в ТыТрубе "чем плох питон". Вижу видосы с названиями:
Чем так крут Python
10 интересных фактов про Python
Топ-5 причин учить Python новичку прямо сейчас (фить, ха!)

Почему никто особо не говорит о том, что создавать реальный проект на питоне не разумно, ибо слишком много жрёт?
11 1780995
>>0994
Что за проект поясни
12 1780998
>>0995
Ну, например, питонисты кичатся нейросетями и какими-то НАСАми-хуясами. В линуксах, вон, чуть ли не каждая вторая программа на питоне. Зачем? Непонятно. Разве что разрабочики не ценят ресурсы твоего компьютера, оправдываясь отговоркой мол, на на питане просше.
13 1780999
>>0998
Так приведи пример реально проекта
14 1781003
>>0999
"pocketsphinx", который был сначала на C, а теперь, если я не ошибаюсь, в репазиториях только альфа версия на питоне. Делал студенческий проект, типа, голосовой помощник на базе Raspberry Poo, а там скорость отклика очень важна.
15 1781006
>>1003
репОзиториях
Самоисправил.
16 1781009
Питон это ж когда придумал что-то, чтобы по-быстрому написать компилятору питона "сделай заебись", и компилятор хоть и не заебись как быстро, но заебись делает. Чисто проверить жизнеспособность идеи. Нет?
17 1781010
>>1009
Иди отсюда нахуй в ассемблеротред.
18 1781011
>>1010
Сам иди нахуй отсюда в ассемблеротред.
19 1781027
>>1011
Ладно.
20 1781028
>>0981
Орнул.
СОВЕТУЮТ НАДЕЖНЫЙ ИНСТРУМЕНТ
@
ВКАТЫШ НЕ ПОНЯЛ КАК ИСПОЛЬЗОВАТЬ, НЕ РАЗЖЕВАЛИ
@
НАРКОМАНЫ, ПРОСТИТУТКИ
21 1781072
Хелп, при импорте одного модуля .py в другой, питон не видит переменную.

Вот условный код модуля с импортом: https://ideone.com/fork/9g91JC

Вот условный код импортируемого модуля: https://ideone.com/fork/X9yJyw

Выдает ошибку AttributeError: module 'main' has no attribute 'number'

Как фиксить? Пробовал делать from main import number, но не работает.
22 1781077
>>1072
БЫСТРОФИКС
Проебался со ссылками.
В том же порядке:
https://ideone.com/fork/9g91JC
https://ideone.com/fork/YbpmbJ
23 1781101
>>1028
Тебе не кажется что это оверкилл для

try:
inpNumber = int(input())
except Exception:
print("Check Your input")
24 1781111

>эти валидации через намеренный вызов ошибки и ее ловли


Забыл как эта параша называется. Ошибко-ориентированное программирование?
25 1781114
>>1077
Я попробовал создать другой файл с одной переменной и почему-то все работает. Очень прошу, объясните, в чем может быть трабл.
26 1781129
>>0994
Дебилушка человеко-часы тоже ресурс, скоро прямой речью будем кодить.
27 1781132
>>1111
Ну анон, юзер инпут же надо валидировать.
28 1781142
>>1129
Нахуй иди со своей прямой речью и человекочасами в ущерб производительности там, где она важна.
29 1781144
>>1142
Я не виноват что ты гипотетически опережаешь своими потугами свои влажные фантазии, а потом взываешь к локальной справедливости своего манямирка, сосни хуйца лизни тунца
30 1781148
>>1144
читни лутца
31 1781152
>>1148
Лутц читается на последочек довен а я только начал
32 1781153
>>1152
Начинать с питона — питоном закончить.
33 1781167
Как же хочется Диабло шрифт адаптированный, локализованный и полный. Прздец просто
34 1781173
Нет хуйня какая то получилась
35 1781197
Почему в PyCharm такое конченное автоформатирование? Серьёзно, я ни в одном IDE которое юзал для сишки такого не видел.
36 1781249
>>0998
Борщехлеб, ты хоть на одном коммерческом проекте работал?
37 1781251
>>1003
https://github.com/cmusphinx/pocketsphinx вот этот? Там 80% си, а питона 1.5% и то тесты какие-то. Или ты про что?
38 1781269
>>1101
Оверкилл не оверхед. Не вижу причин не попробовать. И tenacity единственная библиотека которая может в корутины, ещё коллбеки писать можно. Документация кстати вся в коде есть с примерами. Это в Java надо доки читать из официального источника, а в Питоне дохуя что в коде (в том числе говнокод майнтейнера)
39 1781273
>>1197
Выбери форматер нормальный их несколько штук на выбор. ПуЧарм жава комбайн и жрет столько же. Из нормального могу вспомнить только NetBeans IDE, Eclipse, Dbeaver(и то надо вручную конфиг коннектора править), все остальное лютое дерьмо.
К тому же ПуЧарм просто дистрибутив Idea с прикрученным пихоном.
40 1781291
>>0956 (OP)
Сколько у вас проектов было на гитхабе когда вкатились? Три штуки пойдет или больше накидать?
41 1781306
>>1291
Когда я вкатился, гитхаба ещё не было.
42 1781329
Есть хоть какие-то бенчмарки на асинхронные вьюхи в новом джанго?
(хотя до поддержки асинхронного доступа в дб все равно это все не имеет смысла)
43 1781333
Господа-петонисты, есть у вас фреймворк, который считается стандартом для пердоленья гуйни?
Гуглятся всякие tkinter, wxpython, pyqt.
Поясните, пожалуйста, вкратце, на что лучше всего обратить внимание и почему.
44 1781338
>>1333
pyqt достаточно мультиплатформенный
есть еще какая-то параша ориентированная на веб-гуи, ей часто дата-соентисты пользуются для быстрой визуализации, на s вроде называется, не помню
45 1781343
>>1338

>ориентированная на веб-гуи


Питонисты свой электрон сделали?
46 1781345
>>1153
Ты тупенький, как такое возможно если Питон это язык которым проще всего можно работать с другими языками ? Учи питон еблан, скоро будущее и синтаксис не понадобится, а вот обширное понимание логического взаимодействия языков ой как пригодится. Даже пиццу не закажешь еблан будешь бегать по тёмным коридорам своей старой пятины с фонарикам и искать розетку и куда воткнуть usb2.0. Кароч не зли меня ебик
47 1781350
>>0994

>слишком много жрёт?


Может, потому, что в абсолютном большинстве случаев речь о том, выполнится действие за 0,02с или за 0,1с? Вроде бы и в 5 раз быстрее, а вроде бы и похуй.
И то не всегда проявляется.
48 1781353
>>0994

>Почему никто особо не говорит о том, что создавать реальный проект на питоне не разумно, ибо слишком много жрёт?


Ты, кажется, пропустил момент, когда время программиста стало дороже железа, на котором выполняется его программа.
49 1781356
>>1350
Ну не скажи, тот же бьютифул суп весьма и весьма тормозной.
Регекспами, которые реализованы на си, можно молотить гигабайтами страницы легко и быстро, а он пердит по полчаса.
50 1781362
>>1356

>Регекспами, которые реализованы на си, можно молотить гигабайтами страницы


Епт, ты хоть раз сам отмолотил с сотню страниц регексами? Че несешь-то?
51 1781364
>>1009
Нет.
Это универсальный язык для любых задач.
С чем-то справляется лучше, с чем-то хуже, как и любой другой инструмент, но в целом хорош.
52 1781366
>>1362
Да, было и по сотню-две.
53 1781368
>>1366
Гигабайт в смысле.
54 1781372
>>1366
А че не полторы тысячи уж тогда?
Из-за неопределенной вложенности и потенциальных человеческих ошибок парсинг html регексами - идиотское занятие. Суть любого парсера html в предусмотрении этих ошибок
image.png343 Кб, 486x694
55 1781377
Еще один школяр-хэллоувордщик с Си спешит поделиться своим "открытием" насчет регулярок
56 1781378
>>1372
Да это всё понятно, но при парсинге именно дохуя однотипных рендеренных страниц одного скрипта это как раз нормально.
57 1781379
>>1362
Я молотил кастомные логи на десятки гигов с говноприложения (там нет шаблона типа log4j, а просто куча лапши, выведенная вручную в произвольных форматах) построчно на пистоне. Не особо быстро на питухоне получалось, зато написать такую дрочилку можно за 5 минут в гугле без знания самого питухона.
58 1781382
>>1377
Ещё один долбоебушек прочитал ГЛАВНОЕ ПРАВИЛО и везде поучает. Ещё про goto расскажи.
59 1781386
>>1382

>про goto


Сишнику-борщехлебу? Это всегда пожалуйста. Таким типам же похуй на все
60 1781388
>>1379
Чисто текстовые строки это хуйня, их разбор идет именно быстрыми регекспами или встроенными методами, которые си.
Бьютифул суп же может парсить быстрым сишним lxml, но тормоза идут именно в стадии построения всех этих структур-деревьев для дальнейшей работы, это происходит на чистом бидоне и тормозит ебовейше.
scr2020-08-19 12-03-05.png3 Кб, 264x130
61 1781389
>>1072>>1077
УМВР, пик.
Что там у тебя не работало-то?
62 1781408
>>1350

>Может, потому, что в абсолютном большинстве случаев речь о том, выполнится действие за 0,02с или за 0,1с? Вроде бы и в 5 раз быстрее, а вроде бы и похуй.



Эм, 0.1с - это слайдшоу, 10 FPS

0.02c - это 50 FPS

Если такая хуйня будет происходить с гуем чего-то интерактивного, не обязательно игорька, то твою скриптоподелку с 10FPS нахуй выбросят и возьмут байтопидорскую, и пусть она с сегофолтами будет хоть раз в час падать зато пользоваться хоть можно.
63 1781438
>>1408
Бля, да как ты заебал, найди работу уже, чтоб подобную чушь не нести
64 1781499
>>1356

>Регекспами


Самый охуенный опыт перемалывания логов регэкспами у меня включал Perl (но там скрипт на 85% был уже готов, я просто подогнал его в паре мест под задачу), вот он быстро справлялся. Но когда мне важно как можно быстрее получить ответ - я пользуюсь Bash (если awk+grep будет достаточно) или Python потому что то, насколько быстро я напишу с лихвой перекроет любое ускорение перемалывания на тех же сях.
HTML'и парсил на bash'е буквально один раз, но думаю, что реализовать штатными средствами других языков то же, что я получил тогда, было бы сложнее.
65 1781508
Вообще логи на похуй парсятся grep-ом, я хрен знает что вы тут развели. Си какое-то блять, ахуеть
sage 66 1781519

>2020


>парсить регекспами

67 1781522
>>1499
Я сам перловик изначально, и да, там всё намного быстрее. Видимо потому что целенаправленно вылизано под такие задачи.
awk тоже баловался, но оно забывается без постоянной практики, которой нет.
68 1781527
>>1519
А что, появилось что-то новое для задач сложнее найти подстроку в строке?
69 1781601
Подскажите, как сгенерировать случайную выборку с заданным распределением (распределение заданно функцей)? Сейчас я делаю так: https://ideone.com/FsWyVl (Онлайн не запускается)
С теоретической точки зрения все должно быть верно
70 1781602
>>1408
Смотри: есть программа, скажем... ХЗ... система генерации отчётов (пусть на основе данных, уже загруженных в RAM, чтобы не париться о тормозах СУБД и задержках на сети). Ты задал параметры отчёта и нажал на кнопку, в одном случае увидел таблицу через 0,02с, в другом - через 0,1с. Ты даже не заметишь разницы, а если и заметишь, то будет плевать.
А главное, что 95% операций, которые работают медленнее, чем хотелось бы, на самом деле либо включают какие-то расчёты, либо тратят время на получение данных или ещё какую херь.
71 1781603
Аноны, скачал пару годно-книг по Nginx'у, думаю залить в репу с книгами.
Стоит ли сделать отдельную папку с веб-серверами?
72 1781605
>>1601
Случайно отправил не дописав
Проблема в том, что метод не работает(возвращает всегда 0.5 или близкие значения), кроме того очень медленный. Как это сделать нормально?
image.png45 Кб, 461x498
73 1781639
Как это оптимизировать у меня скорость в ответы не влазит, что делать ребята ?
74 1781645
>>1639
Ты уроки делаешь чтобы на дваче ответы спрашивать?
75 1781665
>>1603
Nginx'ы раздают Cookbook на ангельском.
76 1781671
>>1645
Да, конечно. А потом двач за меня будет работу работать, мне останется только зарплату получать.
77 1781680
>>1671
зачем тебе список от н? представь что тебе запихнут числа милион и миляон пятсот, сумарно разница 500 но у тебя будет мильяон пятьсот элементов
78 1781685
>>1680
Насколько я понял, чтобы отработать первый for, составляющий собственно список простых чисел. На самом деле там даже немного красиво: никаких проверок делением и без лишних умножений.
79 1781694
>>1685
красиво то может и красиво но судя по всему, на решете О(н^inf) далеко не уедешь в данной задаче
80 1781698
>>1694
Разве решето вообще можно оптимизировать ? И разве оно не самый быстрый алгоритм поиска простых чисел ?
81 1781705
>>1645
Двач это когда уже всё. После этого только последний способ червя-деграданта: посмотреть правильные ответы
82 1781713
>>1698
ну хотя бы если учесть что, каждое второе число делиться на 2 что подразумевает что оно не может быть простым, то половину решета можно уже смело дропать нахуй ¯\_(ツ)_/¯
83 1781731
>>1639
Я ебал алгоритмические задачи, которые нужно наизусть знать, в рот.
Но по твоему коду похоже, что ты заполняешь весь диапазон до n, чего делать не надо.
Вот внизу у тебя вызывается с 100 до 110. Вопрос - нахуя тебе вычислять простые числа до 100?
84 1781753
>>1639
не самый быстрый код по простым числам, но что сможет сделает https://pastebin.com/rm1b3h5Q, возможно что-то предстоит коректнуть
85 1781765
>>1753
а не, поспешил с выводами, чичас сделал тесты, не прошли
86 1781795
>>1713
Ты дебилушка похоже
87 1781800
>>1795
https://pastebin.com/7ZcvB3q1
почему дебилушка? вот я дописал тесты проходят, а теперь покажи как решето с мильонами работает
88 1781803
>>1731
Потому что решето только сначала работает
image.png83 Кб, 896x617
89 1781815
90 1781816
>>1800
Решето быстрее, оно не считает почти
91 1781824
>>1800

>if j * j - 1 > i:


>if (i % j == 0):


Дохуя оптимизатор нашёлся. Умножение и деление в цикле гонять.
92 1781828
Может мне что ни будь заменить на более быстрое ? На кортежи или словари ?
93 1781831
Есть же такой вариант ?
94 1781832
Решето пробивается два раза, получается если делать в кортеже быстрее будет правильно же так?
95 1781834
>>1815
оке был не прав,вспомнил что вообще мой алгоритм предназначался для поиска итого элемента прсотых чисел, а оно быстрее решета, зря я его переделывал под такую задачу
96 1781847
>>0994
Запросы по проводам идут дольше, чем питон думает. Да и программисты дороже компьютеров.
97 1781858
>>1847
Второе конечно уже не так, время пришло пидорашка
98 1781859
>>1343
Есть eel, нормальная вещь.
99 1781902
>>1832
https://pastebin.com/WCQ6kLF5 а вот так?
все тот же дибилушка
100 1781912
>>1902
да и наверное у тебя было, не коенц времени исполнения , а переполнение памяти, как бы лист в 2ляма ощущется прилично в байтах
101 1781917
>>1902
еще я алгоритм проверки на простоту взял самый первый в интернете, можно получше найти
102 1781969
Ща бы лист 2 ляма в питоныче парсить где по умолчанию ютф
103 1782000
>>1273
А откуда весь этот форс "её используют даже в наса"?
104 1782003
>>1273

> форматер нормальный их несколько штук на выбор.


В пучарме можно выбирать? Или ты про IDE?
105 1782028
>>1902
Ладно, восхваляю тебя. Но меня в интернете (в статье на хабре) уверовали что решето - быстрее нету
106 1782071
>>1273
Кажется, я впервые в своей практике вижу слова "нормальный" и "Eclipse" в одном предложении без явного противопоставления.
107 1782092
Хэлоу зяблы. Подскажите, как написать функцию для сортировки по такой идеи:
Вид массива = [[a0,b0],[a1,b1],[a2,b2]....]
В a будут числа типа number. В b будет, либо -1, либо +1, тоже типа number. Нужно отсортировать по а, но если встречаются одинаковые а, то вначале должны идти те массивы, где b = +1, а потом -1.

Вот пример, как это должно получиться:
[[1, 1], [2, 1], [3, 1], [4, 1], [4, -1], [8, -1], [9, -1], [10, -1]]
108 1782098
>>2092
arr=sorted(k,key=lambda x:(x[0],-x[1]))
109 1782099
>>2098
вместо к свой массив
110 1782100
>>2092
z.sort(key=lambda x: (x[0], -x[1]))
111 1782109
>>2100
>>2098
Спасибо, огромное!
112 1782133
Анон, подскажи решение, пожалуйста.
Уже что-то подобное спрашивалось, но нужна модификация.
Есть список, надо извлекать из списка по 5 элементов до самого конца. Проблема в том, что длина списка не кратна длине сабсета (в нашем случае - 5), поэтому недостающие элементы последнего сабсета надо заполнить случайно извлечёнными элементами всего списка.
Т.е. есть some_list = [1,2,3,4,5,6,7,8,9,10,11,12], если длина сабсета 5, то получится 2 полный сабсета, и один не полный. Вот неполный (2 элемента) надо превратить в полный (5 элементов), взяв недостающие 3 элемента случайным образом из всего some_list.
Вот был такой кусок, что к нему прикрутить для заполнения последнего (если он неполный) сабсета?

for i in range(0, len(some_list), 5):
subset = some_list[i:i+5]
113 1782135
>>1408
Ресурс имеет цену тогда, когда он нужен и его не хватает.

Вот, процессорное время это тоже ресурс, но сейчас далеко не всегда он ограничен. В большинстве случаев речь идёт о том, что у тебя какой-то дешёвый процессор загружен на 5% вместо 1%.

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

С другой стороны, использование неудобных языков ведёт к тому, что ты реализуешь меньше функционала, дольше будет реализовывать, сложнее будет отлаживать и поддерживать.
114 1782145
>>2133
ну добавь че нить типа
while len(subset) != 5: subset.append(random.choice(some_list))
правда он может одинаковые взять, но можешь провалидировать
115 1782149
>>2133
Много опций, как сделать правильнее и сложнее, или проще.

1, про случайные элементы, смотри модуль random
import random
функцию random.choices(your_list, k)

Самый простой код
for i in range(0, len(some_list), 5):
____subset = some_list[i:i+5]
____if len(subset) < 5:
________subset += random.choices(some_list, k=5-len(subset))
116 1782151
>>2145
>>2149
Спасибо. Примерно так и предполагал.
Вопрос, насколько while вообще быстр? Стоит его использовать или лучше обходить стороной?
117 1782155
>>2151
глупый вопрос честно говоря, но спишем на непонимание, насколько быстрый алгоритм который ты в него запихнешь,и тактовой частоте твоего проца
118 1782156
>>2151
А какие альтернативы?

В некоторых случаях стоит смотреть на модули вроде itertools, но для этой задачи там прямого решения нет.

Скорость у while нормальная, но всегда может быть, что ты просто что-то делаешь не так и из-за этого просадка в производительности.
119 1782157
>>2071
А какие варианты ещё? Ну чтоб коммьюнити и без мокрописек? Ну а так Oracle просрал наработки Sun и на жаву по сути им до пизды. Начал смотреть что там с Hadoop и Spring что аж кипятком писяют и охерел от зоопарка инструментов.
>>2135
Ну опять же вернёмся к жава. Классный же язык? Да. Вот только JVM всем управляет. Код может быть очень чистым и прям по паттернам, а JVM решит что ей надо 80% RAM и никак иначе.
Я и питоном забивал 1 ядро на 100% фуллтайм, но это такая хуевая реализация multithreading в CPython.

Хуй знает. Сколько раз пытался в жаву, но каждый раз тошниловка начиналась с момента чтения доков. Servlets and servers мать их. Спасибо OTP что хоть что-то отдают, так бы хуй кто с жавы слез.
120 1782158
>>2155
Я про это https://stackoverflow.com/questions/44759869/while-loop-1000-times-faster-than-for-loop
>>2156
Спасибо. Что можно почитать по этой теме, а ещё про временную сложность алгоритмов?
121 1782162
>>2158

>Я про это


Это называется экономить на спичках.
122 1782163
>>2157

>Ну опять же вернёмся к жава. Классный же язык? Да


О боже, нет. Не плюсы, но и там кошмара и ограничений хватает.

>Я и питоном забивал 1 ядро на 100% фуллтайм


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

При этом, правда в том, что это далеко не всегда актуально. И при этом есть методы разгона, pypy, nuitka, инструменты для разгона математики и др.

И да, конечно это не универсальный инструмент для всего. Но вот на джаве я бы что-то делать вместо питона совсем-совсем не хотел бы. И вовсе не из-за JVM.
123 1782165
>>2151
Погоди.
1) ты можешь сразу проверить длину списка и определить будет ли количество сетов целым числом или нет
2) если нет, то добавь недостающие элементы. При том это можно сделать через comprehension.
3) вычленяй сеты.
Список тоже можно через comprehension создать или генератор.
While это просто вход в loop. А что внутри будет зависит от тебя. Я чаще всего использую while для бесконечного цикла: запрос данных - обработка или ожидание данных - обработка. Короче producer/consumer.
Так можно сказать что и if/else медленные и пиздуй Chain Responsibility пиши вместо хуяк-хуяк и готово.
124 1782166
>>1665
Я знаю, их и скачал
125 1782168
>>2158
Там в комментариях даётся ответ, что некорректно тестирование сделано в случае while, ошибка в коде, поэтому такой результат.

for range будет работать быстрее. И решения из itertools для каких-то задач будут работать быстрее, чем если аналогичное решение написать самому, и код короче.

Но в основном тут экономия минимальная, действительно "экономия на спичках".
download.jpg8 Кб, 211x239
126 1782173
>>2158
Там какой-то норкоманский тест.
Проводим битву века: https://ideone.com/KBm9zW
И что мы тут имеем, разница между первым и вторым вариантом в проверке на 9999, это 0.3 секунды, отнимаем её от третьего и получаем - for 0.85, while 0.5.

Форовики соснули!
127 1782175
Изображения с кучей прозрачности ресайзятся пиздец долго в PIL. Если сконвертировать из RGBA в RGB перед этим - то все норм, но это как-то тупо.
128 1782179
>>2165
Спасибо, посмотрю.
129 1782180
>>2173
Я встречал один раз чела, который переписывал код с учетом микрооптимизаций.
Стоило ему выяснить, что один способ быстрее другого - все, пизда, код начинает превращаться в мелену на глазах.
Вишенкой на торте его крошечного айсикью было то, что он мог спокойно при этом подключать тонны левых либ ради одного метода из каждой, работавших как говно. Вот это его вообще ни разу не смущало.
130 1782190
>>2180
Да и наш анон-то, нихуя не шарит ещё, а уже за производительность переживает, молодец какой.
131 1782194
>>2190
Учитывая как современные погромисты выдают софт что для него нужно квантовый комп то любой кто думает про оптимизации просто герой
132 1782197
>>2194
Да, подумал, заменил пару вайлов и уже летает.
Смекалочка!
133 1782199
>>2194
Если это кто думает про оптимизацию раньше, чем приобретает базовые знания для решения простой задачки на 10 строк, то это я бы назвал аутизмом скорее.
И вообще, преждевременные и низкоуровневые оптимизации, особенно если они в ущерб читабельности, идут нахуй.
Если чел собирается выкраивать микросекунды и работать в области, где это важно, то он зря выбрал питухон.
chromej0qqMcQi3F.png115 Кб, 1499x683
134 1782200
Сука, какая же фрустрирующая хуйня, когда решил задачку (не сказать, что долго сидел, минут 10-15), вроде радуешься, потом открываешь решения других людей и как в говно макнули(мой код справа очевидно). Причем как минимум 2е и 3е решение я без проблем понимаю, но почему-то такие лаконичные и красивые вещи вообще в голову не лезут, только такое натужное говно
135 1782201
>>2194
Например? ORM оверхед априори, но зато если ты три-в-одном макака влегкую миграцию сделаешь. Я ебался с процедурами, пушто как раз в одно рыло все и делал и реально пытался в микроменеджмент ресурсов пока не выгорел к хуям.
Надо было гонять данные между микрописькамисервисами из говна и палок. Пытался в Redis, а там без гарантии доставки из очереди и как брокер неочень. Въебал RabbitMQ и сидел довольный как слон. Забил нахуй на пиковые скачки CPU и average load, лол. Тут либо шашечки либо ехать. Питон именно про ехать. Если нужны ресурсы - давай деньги. Если нет денег ни на спецов ни на ресурсы лучше вообще накорню все зарубить нахуй. А то хотят BI и шоб все реалтайме и с кучей выгрузок, а из оборудования два ядра два гига зато от HP. А тут и заказчик хочет хочет въебать потоковое видео на этом говне. Вебсокеты ему подавай, лол. Лишь бы не брать Synology и не платить за лицензии.
Норм вариант же? А ты греби и так чтобы галера плыла вперёд, а не просто поворачивала.
136 1782202
>>2200
Чё? Ты просто неопытный, это нормально.
137 1782204
>>2200
Ну так реши чтобы работало, а потом подумай над йобизацией.
138 1782206
>>2201

>А то хотят BI и шоб все реалтайме и с кучей выгрузок


Мне приходилось как-то строить отчеты из хуйни, которая ваще не рассчитана на аналитическую отчетность. У нее тупо база не приспособлена для этого, данные лежат не как надо, нет срезов, индексов не хватает и тд (вносить свои нельзя, иначе тебе ее снимут с сапорта). Но было нужно, потому что существующая BI система свои ETL запускала только по ночам, а какая-то залупа им нужна была вот прям щас, да еще в дашборде подавай.
Это был ад ебаный. Как ни объяснял я этим бакланам, что хуй оно будет быстро работать - те говорят типа бля ну как-нибудь сделай, нам бы что-то. Делаешь хоть как-то, сразу возмущаются почему медленно так.
139 1782207
>>2204
Хз, а это имеет смысл? Ну т.е. я понимаю, что в целом-то полезно, но вопрос насколько. Вот у меня этот курс, я его почти добил, за ним следует след. курс, где будут учить всяким более сложным штукам, а не основам синтаксиса, и вот собственно вопрос, как выгоднее распорядиться временем (точно не на дваче сидеть, кек), пытаться оптимизировать код уже решенной задачки, или лучше идти дальше по курсу и изучать новые вещи, т.к. сложность будет повышаться, и оно наверное будет форсить меня писать лучше энивей.
140 1782208
>>2200
Все придет со временем как тут тебе и говорят.
И callbacks полюбишь и wrapper освоишь.
От рефакторинга не избавиться, ты же не знаешь сколько раз они свои решения тестировали.
141 1782211
>>2207
Иногда полезно, иногда не очень.
Но в таких писькомерных задачках все к этому стремятся.
В принципе, в процессе изучения оно само придет мало-помалу.
142 1782212
>>2206
Ну я придумал костыль в виде сбора данных ночью, при том из-за уебищных связей и единой базы для всех бизнес процессов (европейские разработчики делали, да-да) все нахуй лочилось, и переноса в свою БД. Алсо, ещё выяснилось что чем больше ID по которым идёт запрос тем медленнее внутри БД собираются данные. На стороне БД уже был боттлнек, лол. В итоге коляска стала множественными асинхронными запросами по ID в 2 часа ночи, когда количество новые записи не критичны.
Ещё заебала тема "а как логи читать?" "ааа мне нужно через REST выгружать 10 строк за сутки". Ссссука. На тяге горящего пукана я бы мог вывести SpaceX на орбиту Марса. Спасибо Хуяндексу за их Clickhouse. На ELK ресурсов же нет.
143 1782213
Объясните вкатышу в чем прикол функции мап. Примеры из простых обучающих видосиков просто можно переписать через for, т.е. у нас есть какая-то функция, какая-то итерируемая хуйня и мы пишем так:
def f(x):
...
a = map(f, s)
можно же переписать как:
def f(x):
...
a = [f(i) for i in s]
144 1782216
>>2213
Вот хороший и наглядные примеры.
https://pyneng.readthedocs.io/ru/latest/book/10_useful_functions/map.html
Ну и map это обратная совместимость.
145 1782218
>>2213
map стал околодепрекейтед после ввода компрехеншенов и генераторных выражений.
146 1782219
>>2213
Мап это наследие ебучего функционального стиля, в реальности используется только шизиками и ньюфагами, ибо делает код нечитаемым. Достоинства в том что в отличии от твоего решения может применяться не только к листам, а ещё работает без копирования, с анонимными функциями, и дешевле чем любой другой способ
147 1782235
>>2219
Всему свое место
148 1782242
>>2213
map действительно немного depricated.

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

В общем забей, в питоне реально не очень нужная вещь. Поскольку в питоне свои фишки, вроде генераторов списков, чего в адекватном виде в большинстве языков нет. Зато анонимные функции в питоне неудобные, из-за чего функциональный стиль плохо переносим на питон.
149 1782265
>>0994

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


Все тяжелые задачи делаются при помощи библиотек, написанных С, которые на питоне имеют лишь интерфейс. В остальных случаях на производительность насрать, поскольку разница в производительности определенного куска кода в 10-100 раз не влияет на общую производительность программы.
150 1782292
>>0994

>Почему никто особо не говорит о том, что создавать реальный проект на питоне не разумно, ибо слишком много жрёт?


У тебя там все реальные проекты это какие-то безумные рендеры, симуляции или бекенды обрабатывающие миллионы запросов в минуту? Люди пилят ПО и даже ентерпрайс ПО и их как-то не ебет отрисовывается их кнопка за 0.00001с или за 0.0001с.
151 1782296
Какую книгу посоветуете, чтобы попробовать питон? питон для детей?
152 1782322
>>2296
Что-то круто взял, питон для одноклеточных сразу бери, или хотя бы питон для домашних животных.
153 1782341
>>0994

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



Лично меня в реальных проектах парит GIL
ну и довольно слабенькая реализация asyncio

не знал бы другие языки не парило бы. Не учите другие языки )
154 1782372
>>2322
"Питон для опущенных"

"Питон и говно - что лучше ?"

"Я и мой питон: справочник начинающего импотента"
155 1782378
А в питухоне можно из строки 'F' сделать переменную ? только без всяких дрочей с Юникодаи и прочего говна ?
156 1782379
Переменную F - Отклеилось. Из 'F' сделать переменную F
157 1782396
>>2379
можно
158 1782413
>>2396
Спасибо
159 1782414
>>2413
всегда рад помочь. обращайтесь
160 1782460
>>2341
Там не хватает нормальных signal handlers, хот и запилили asyncio.run() и вроде как (уже не в 3 ветке) будет уход от GIL для coro. Проблема в менеджменте инстансов интерпретатора как объясняли.
161 1782463
>>2414
Обращусь. Будте покойны
162 1782475
Допустим, вот выдрочил я синтаксис, либы и фреймворки и нашел работу. А где почитать по организации кода для больших и средних проектов, как делать микросервисы и монолиты на пистоне и все такое?
163 1782480
>>2475
А ты собираешься сам начинать большие и средние проекты сразу?
164 1782487
>>2480
Тя волнует как хочу так и начну
165 1782512
>>2480
Ну, если я планирую эволюционировать в мидла и синьора, то про архетиктура знать нужно будет обязательно
166 1782515
>>2379
если вам аналог пхпшного $$var то
globals()['F'] = 'foo'
locals()['F'] = 'foo'

но это изврат
167 1782544
>>2475
Так же как и на других языках. Есть книги по паттернам микросервисов. Найдешь на рутрекере "микросервисы". Про монолиты забудь сразу. Неактуально уже лет 10.
168 1782599
>>2544
Ну вот на работе мы переписывали микросервисы из простых RPC в cqrs и event sourcing, где про такие вещи почитать можно, микросервисы это же очень обобщенно звучит
169 1782612
>>0956 (OP)
Есть задача отсортировать объекты по конкретному полю.
Для этого нужно у каждого объекта сменить тип этого поля с int на str (там вперемешку из Jira приходит и по-умолчанию это вообще list)

Как это проще и правильнее всего сделать?

Ну т.е. я делаю цикл for, в котором перебираю каждый объект из списка объекта и указываю
field = str(field)

А дальше?
170 1782620
>>2612
sorted(my_list, key=lambda x: str(x.my_field))
171 1782657
>>2544

>Про монолиты забудь сразу. Неактуально уже лет 10.


свежо предание )
172 1782681
>>0956 (OP)
Бля, только что был баг из-за вот такого дезигна функции:
def my_shitty_func(value, flag=False, args, kwargs):

args и kwargs канешн разворачиваются через одну и 2 звездочки соответственно, указываю так чтоб макаба не запорола. Когда в другом модуле ее вызывали через my_shitty_func(some_value, args, kwargs) - то есть не указывая параметр flag, то самый левый аргумент из args при разворачивании звездочкой присваивался к flag
Сука, пиздец
173 1782684
>>2657
Не мешай своим монолитом настоящим программистам писать высоконагруженные приложения, в которых при каждом чихе все модули авторизуются между собой, данные бесконечно трансформируются и гоняются туда-сюда по ресту/соапу.
174 1782689
>>2684
а они могут мне рассказать чем старый добрый SOA отличается от их микросервисов, что они так радуются?
175 1782691
>>2620
да это хуевый дезигн
я как-то так стараюсь придерживаться, + чтобы дефолты имели только named_only параметры

def f(pos_only, ✵args, / , pos_or_named, ✵ , named_only, ✵✵kwargs)
176 1782695
>>2689
ничем
микросервисная арх-ра это SOA, но с оглядкой на этот ваш девопс
177 1782708
>>2695
Схуяли?
Приведи пример архитектуры тогда для маркетплейса какого-ниудь.

Учти, что необходимы:
1. Рекомендации на основании запросов
2. Рекомендации на основании покупок
3. Рекомендации на основании топ листа продуктов
4. Рекомендации на основании отзывов покупателей
5. Рекомендации на основании категории в которой клиент ищет продукт.

При твоей архитектуре ты будешь делать просто сервис рекомендаций или разобьешь все на подзадачи?

К тому же надо еще логику лояльности и бонусов реализовывать. Ты хочешь все яйца в одну корзину забросить. Вангую, что еще и БД одна на все, лол.
178 1782712
>>2684
А ок. В питонотреде свидетели .NET/Java EE затесались.

Кроме REST/SOAP больше ничего в голову не приходит? Ну да, ну да... Остальное же типо незащищенное нихуя.
179 1782719
>>2708

> Схуяли?


ну я так в книжке прочитал и в интернете считают также
https://www.talend.com/resources/microservices-vs-soa/

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


делать мне вот нехуй тебе что-то доказывать я вообще другой аноний
180 1782720
>>2712
а ты хочешь предложить grpc?
181 1782725
>>2719

>Many of the chief characteristics of SOA and microservices are similar.


А Python похож на Ruby, НО есть отличия. Жопочтец.
>>2720
Еще есть догадки? Ну ты сможешь, я верю. Как еще реализовать publisher/subscriber, чтобы трендово было?
182 1782730
>>2725
Делаю интеграционную шину на файловом обмене, твои действия?
183 1782734
>>2725

> А Python похож на Ruby, НО есть отличия


а что не так?

> Кроме REST/SOAP больше ничего в голову не приходит? Ну да, ну да... Остальное же типо незащищенное нихуя.


> grpc


> pubsub


погугли хоть что все эти слова значат
184 1782735
>>2730
Менеджмент? Изоляция?
185 1782741
>>2735
Подголовник? Приспособленность?
186 1782742
>>2620
А как распарсить объект?
Оказалось, что поле, по которому я хотел сортировать, может быть пустым, так что метод sorted(my_list, key=lambda x: str(x.my_field)) не работает.

Мне кажется, что будет проще создать свой список массивов и туда перекинуть все данные, после чего и отсортировать.
187 1782745
>>2734

>а что не так?


ПОГУГЛИ!

>погугли хоть что все эти слова значат


акронимы как бы, ну да похуй.
188 1782755
>>2745

> ПОГУГЛИ


ну да похожие языки, более того руби вышел позже и испытал влияние питона
собсна как и soa->микро

> акронимы как бы, ну да похуй


так че там по pubsub и причем тут rest
189 1782757
>>2725

>А Python похож на Ruby, НО есть отличия. Жопочтец


Вода похожа на лед. Но есть отличия)
190 1782763
>>2757
Вода уже лет 10 как не актуальна
191 1782765
>>2763
Грызешь лед вместо воды?
192 1782770
>>2765

> Грызешь лед вместо воды?


Еще есть догадки? Ну ты сможешь, я верю. Как еще реализовать попить/поссать, чтобы трендово было?
193 1782782
>>2770
Ссышь на кухне
Канализация в туалете
Разделение по микросервисному
194 1782784
>>2782
Голову моешь в раковине на кухне, потом ее в ладошках носишь сливать в унитаз.
195 1782787
>>2784

>ее


воду
fix
196 1782788
https://ideone.com/pFCENy

Почему мне пишет

new_issue[new_number]=[new_number,new_issue,new_release,new_status]
TypeError: 'str' object does not support item assignment

?

Если что, хочу сгенерировать новый словарь.
197 1782794
>>2788
У тебя в new_issue лежит summary и это, по всей видимости, строка. Строка не словарь.
198 1782796
>>2794
В плане summary?
Так-то у меня там все значения строки.
Просто я не понял, как динамически задавать словарь key
199 1782802
>>2742
А как тебе нужно сортировать объекты с пустыми полями? В конец или в начало? Если в начало, то
lambda x: str(x.my_field) if x.my_field else '')
200 1782805
>>2802
Честно, я заебался разбираться в структуре объектов, высранных Jira и решил тупо распарсить все в словари, а там уже и отсортировать
201 1782806
>>2796

>В плане summary?


4 строка:
new_issue = cur_issue.fields.summary
А в последней строке new_issue пытаешься как словарь использовать. Просто обзови по-другому, ты в переменных запутался.
202 1782817
Дарова двач, есть вот такой код на питоне
image = np.concatenate((left_image, right_image)).tolist()
r = []
g = [] // двумерные массивы
b = []

for x, row in enumerate(image):
r_row = []
g_row = [] // одномерный массив
b_row = []
for y, pix in enumerate(row):
r_row.append(pix[0])
g_row.append(pix[1]) // элементы одномерного массива добавляются в одномерный массив *_row
b_row.append(pix[2])
r.append(r_row)
g.append(g_row) // одномерные массивы вставляются в двумерный массив
b.append(b_row)
i = np.array([[r, g, b]]) // двумерные массивы собираются в трехмерный массив

Нужно переписать на шарпе. Подскажите, сколько измерений здесь у итогового массива i? (комментарии я писал, когда пытался расшифровать, мб неправильные)
image.png67 Кб, 1093x592
203 1782820
>>2817
Сорри за отступы, вот картинкой
204 1782868
>>2820
сука ты, выложил бы хоть на pastebin какой-нибудь, гандон ебал тебя в рот убегая

> сколько измерений здесь у итогового массива i?
4


https://repl.it/repls/EmbellishedPoorCryptos#main.py
205 1783058
смотрю в документацию, вижу хуй. Сортед вообще какого-то хуя не хочет применять к списку (Another difference is that the list.sort() method is only defined for lists. In contrast, the sorted() function accepts any iterable. во что блядь в документации) А сорт мне на выход выдает говнину нон, вместо самого отсортированного списка. Шо делаю не так?
206 1783075
>>3058
.sort изменяет сам список и возвращает None, вот и получается у тебя None[0], что естественно выдает ошибку
207 1783078
>>3075
Вот так, короч
words.sort()
print(words[0])
208 1783081
>>3058

>смотрю в документацию, вижу хуй


>документация: and returns None


>ты: kokoko.sort()[0]


чел?
209 1783083
>>3058
>>3081

>также документация: just call sorted() function


>sorted([1,2,3])


>ты: kokoko.sorted()


Это функция, а не метод листа, тебе интерпретатор об этом написал же, ну.
210 1783090
>>3058
не умеешь читать и писать, очевидно же:
1) sorted это отдельная функция, а не метод массива
2) метод sort возвращает None, а не сам массив, поэтому индекс от него брать бесполезно
211 1783227
>>3083
>>3058
Опять типичный ошибки нубов, из-за вседозволенности языка. Вот такие макаки и приходят сейчас в ОйТи и учатся они не головой, а методом тыка. Ох, бля.
212 1783281
>>3227
Так у него полный traceback с описанием проблемы. Дебажить инфоцыгане не учат просто. Я спокоен за кококонкуренцию на галерах.
213 1783317
>>3281
ага. а потом тебе в ученики такого дадут
214 1783337
>>1333
Когда-то пробовал pyqt, очень годная вещь по сравнению с tkinterom, только документацию находил онли для c++
215 1783341
>>1834
Я давно простые числа не пробовал находить, их можно быстро без решета искать? Не делил же ты каждое число на все предыдущие
216 1783345
Двач, я тут поработал немного с django и возник вопрос, зачем людям орм, если есть достаточно простой sql синтаксис сам по себе, зачем это кривое встраивание, если все в итоге переводится как я понимаю в обычный sql запрос, но при этом ты ограничен синтаксисом орм, без возможности как-то нормально оптимизировать запросы и делать их более сложными
217 1783351
>>3345
1) чтобы макака могла не знать sql вообще
2) чтобы можно было за 5 минут переехать на другую субд, которую поддерживает orm
218 1783356
Я вот реализовал тут свой небольшой сайт, без выкатывания на продакшн, настроил чуток nginx, немного покопался с gunicorn, сделал бек на джанге и сверстал с помощью бутстрапа(сайт с вопросами и ответами, типа ответов мейл ру, с фильтрами, пагинацией, задаванием вопросов и ответов, регистрацией и прочими мелкими скриптами), в планах еще добавить ajax для лайков вопросам и комментам и возникают вопросы:
1. Как работодатель будет смотреть на проект, не будет же копаться в коде
2. Это достаточный уровень для джуниор?
3. Сколько подобного нужно сделать, чтобы смело идти на собеседования(в планах еще как минимум телеграм бота сделать на том же стаке nginx, gunicorn, django, и минимум еще один сайт, скажите если не прав)
219 1783358
>>3345

> если есть достаточно простой sql синтаксис сам по себе


А теперь ебни какой-то невъебенный запрос. А так можно сделать все в одну короткую строку
220 1783367
>>3345
Почитай про sql injection.
Если хочешь оптимизацию и скорость на стороне сервера:
1. MySQL stored proc как вариант, но заебешься поддерживать. Зато никаких проблем с безопасностью. Есть пользователь который может только запускать процедуры и все.
2. Оптимизация и дебаггинг на стороне сервера и их проводит DBA, а ты только свой код пишешь.
Из минусов, в Postgres с этим будут трудности, там другим путем пошли. При миграции и расширении функционала надо все разворачивать по новой. Опять же, задача DBA.
ORM может быть медленнее, но выигрыш будет во всем, что описал анон выше.
Это нормальная практика с учётом моделей ORM - Pydantic.
По поводу оптимизации скорости работы питона можно холиварить очень долго. Для некоторых пакетов есть плюшки [speedups], например использование simplejson или rapidjson вместо штатной библиотеки.
Недавно смотрел про какие-то оптимизации при компиляции пакета Python, где-то прирост 13-20%, насчёт стабильности никто не писал. Один хрен к 4 версии что-то новое придумают.
221 1783369
>>3356
Выложи демо на Heroku, код могут смотреть. Это из разряда "покажи как решал эту задачу".
222 1783372
>>3356
Забыл совсем. Стэк Django это ещё и Celery в связке с Redis/RabbitMQ (я сразу на FastAPI начал, надо мной никто не стоял с плёткой), в учебниках должны упоминать об этом как и в документации.
223 1783373
Кто-нибудь выполнял такую задачу:
Есть лог файл с устройств в кастомном формате без определения уровня лога. Есть ключевые слова, которые указывают на успешную операцию или сбой в алгоритме. Необходимо будет выискивать такие проблемные места и соотносить с логом более низкого уровня (лог команд по серийному порту), которые дадут более цельную картину, что привело к нарушению алгоритма.
ML в чистом виде?
image.png16 Кб, 453x284
224 1783377
>>0956 (OP)
бле пишу крч парсер ебаный
нахожу элементы по xpath
и тут оказывается такая хуйня что текст который я хочу спарсить это блять не элемент а сука текстнеожиданно(ожидаемо)
скажите плес как это говно спарсить я уже весь этот ебучий селениум передрочил я просто не ебу гугол не знает
элемент пикрелейтед
225 1783383
>>3372
Это обязательно джуну? Просто я пока даже не совсем понимаю зачем redis нужен обычным сайтам, когда sql подойдет, а про celery почитаю, но тогда можно к стэку и какой-нибудь докер требовать, но это уж точно мидл уровень, как и высоконагруженные системы всякте
226 1783386
>>3367
Если я правильно понял, то от инъекций достаточно данные экранировать просто, а вопрос был не о производительности, а скорее о гибкости использования, да и переходить на другие субд не слишком большой плюс, слабо представляю как от обычного postgre/mysql потребуется перейти к чему-то более навороченому. Остается только вариант о том, что проще не учить sql, а писать компактный орм код
227 1783389
>>3358
На практике часто приходится писать невъебенные запросы? На деле вместо select пишется objects, filter, вместо where и убираются промежуточные слова, а невъебенный запрос на орм как раз наверное сложнее реализовать. Пока писал понял плюс орм(как минимум у джанги, с sqlalchemy не работал), джанга хранит query сеты, не делая запрос к бд, пока не потребуется что-то ответить, наверное это действительно полезно
228 1783405
>>3386

>переходить на другие субд не слишком большой плюс, слабо представляю как от обычного postgre/mysql потребуется перейти к чему-то более навороченому


Узко мыслишь.
Представь, что ты пишешь апликуху. Ты же хочешь написать список из кучи СУБД поддерживаемых, чтобы не сужать свой потенциальный круг клиентов, и можно было поставить на любое говно? Хочешь ведь.
SQL-запросы под каждую СУБД писать и тестировать хочешь? Я бы не хотел. Стандарт стандартом, а у каждой СУБД свои специфические функции и операторы есть, заебешься под каждую вести все запросы, все актуализировать и тестировать.
А с ORM тебе не придется вообще ебаться с этим.
Облегчение миграции на другую СУБД тут не основной плюс, но полезный. Спроси у тех, кто переносил с подыхающего sybase на какой-нибудь mssql свои старые поделия.
229 1783411
>>3405

>А с ORM тебе не придется вообще ебаться с этим.


зато придется ебаться с орм )))
230 1783419
есть изменяющийся словарь, чем можно отрендерить блочную диаграмму/гистограмму? посмарел matplotlib с беком tkinter чот сложна там, анимацию пилить еще
231 1783420
>>3383
Redis in memory или как брокер вместо RabbitMQ для Celery. Если почитать практики на Хабре можно запутаться. Мейл.ру вовсю хайпит свой Tarantool, типо превзошли Redis и добавили отказоустойчивости и надёжности. Пока даже не знаю как его щупать. Базы у меня на террабайт нет.
>>3389
Если приходится писать невъебенный запрос уж лучше тогда вьюху запилить или засунуть кочергу в анус DBA.
LRU cache? Вот тебе и кэширование нативное. >>3411
За это деньги платят, что поделать.
Иногда просто ставят задачу и сам ищешь путь как ее выполнить. А потом уже доказываешь, что не говнокод, а фича. Как задачу сформулировали, какая инфраструктура такая и реализация. Хотели Agile - нате.
232 1783421
>>3419
Graphviz смотрел?
233 1783424
Поставил я минт и какая-то залупа пошла. Почему в консоле, когда я пишу pip install выдаётся ошибка шо такого нет. Когда пишу python3 file.py запускается консольный питон и выдает ошибку. Почему виртуаленв не создаётся и не активируется виртуалка?
234 1783433
>>3341
Ну зависит конечно от поставленной задачи, например в прошлой задаче нашелся вариант быстрее решета, а с тем алгоритмом которым я изначально пытался, он быстрее решета искал(в изначальном варианте) итый элемент простых чисел , ну и они оба жрут меньше памяти в отличии от решета, но возможно если задача стоит найти все от 2 до n числа, решето будет быстрее всех по скорости, но и кушать больше памяти офк, если задача стоит просто узнать является число простым, то выше я кидал ссылку на пастбин, там функция была на проверку >>1902
235 1783459
>>3405
Я не особо шарю, есть у нас проект на джанго, будь это сайт, веб-сервис,, бот, и нам нужно его внезапно на 100 серверов установить, так зачем нам нужно использовать какие-то старые бд? Но общую мысль я понял, наверное действительно удобно, просто в голове не могу представить прикладную задачу
236 1783462
>>3433
А, чекнул, все старый перебор до квадрата с прибавлением 2-х, я уж думал я какой-то способ не знаю, спасибо
237 1783465
Что такое асинхронность в Питоне? Может кто-то на словах объяснить плиз. Или вообще Асинхронность в коде.
238 1783466
>>3465

>Или вообще Асинхронность в коде.


У тебя есть склад и колонна грузовиков, едущих забирать груз со склада. Синхронно - 1 грузовик загружается, все остальные ждут; асинхронно - 1 грузовик начинают загружать, в это время то же самое происходит с другими грузовиками, но как только первый загружен - кладовщик пиздует выдавать документы ему.
239 1783473
>>3466
То есть это по сути thread/que?
240 1783479
Кто-то делал автотесты для мобилы? Например, используя питоху позвонить 100 раз на телефон и тп?
Как это делается? Нужно пилить свой фреймворк и юзать эпай звонки или уже есть такое?
241 1783491
>>3473
Нет, асинхронность это асинхронность, а мультитрединг это мультитрединг. Т.е. когда при появлении нового грузовика рядом появляется ещё один разгрузочный центр и грузовик передается разгружаться там.
242 1783544
>>3479
не делал но быстро нагуглил
https://github.com/tzutalin/adb-event-record
243 1783546
>>3389

>а практике часто приходится писать невъебенные запросы?


Отчетность.
Многие не хотят городить DataWareHouse и отчеты ебошатся прямо в проде.
244 1783547
>>3405

> Ты же хочешь написать список из кучи СУБД поддерживаемых, чтобы не сужать свой потенциальный круг клиентов, и можно было поставить на любое говно? Хочешь ведь.


Нет.
Потенциальный круг клиентов купит то, что наилучшим образом подходит к софту и что ему скажут. И запустит в докере.
245 1783549
>>3377
разумеется, у этого элемента есть зацепка выше по дереву и есть подэлементы.
Раньше так делали. А почему именно xpath ? В селениуме по-другому неудобно?
246 1783550
>>3373
эту еботу легко порешает девопс , отдай ее дядям, не программируй, не порть фигуру.
https://www.elastic.co/guide/en/machine-learning/current/xpack-ml.html
247 1783595
>>3550
Задача уже не для прода. Проект закрыт, просто для разминки.
По поводу ELK в курсе конечно же. Кстати оверхед ещё тот, но не всем надо ресурсы считать, когда сроки горят и жопы.
248 1783635
>>3465
Асихронность - это когда ты решил отужинать пиццей с чаем под кинцо. Ты заказываешь пиццу, и пока доставщик не приперся, ты
ставишь чайник, и пока вода не вскипела, ты идешь выбираешь кинцо. И вдруг тебе приспичило посрать, ты сидишь на толчке, в дверь истерично стучит доставщик, на кухне уже пожар, но ты ничего не можешь поделать, потому что у тебя блокирующая операция.
https://ideone.com/vfZrro
249 1783737
Гайзу подскажите по такому вопросу.

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

Как я понимаю это делается так.

1. В таблице юзера (у меня postgresql) добавляю колонку isVerified
2. Создаю вторую таблицу с токенами подтверждения привязанную к таблице с юзерами.
3. При регистрации, выставляю поле isVerified - фолс и генерирую токен, который ссылкой высылаю на почту юзера.
4. На клиенте делаю роут типа /confirm/:id на который ведет ссылки из письма
5. На клиенте на основе этого айди шлю запрос на конфирм, удаляю запись с токеном из БД и ставлю sVerified юзеру - тру.

Я правильно рассуждаю или это иначе делается?
Так же вопрос, какой почтовый сервис лучше использовать?
250 1783749
>>3635
Лучше чем все курсы от Boston University, а главное наглядно.
251 1783755
>>3737
Да, примерно так.
Насчет почты, самому ебаться с почтовым сервером это гиблое дело, там надо соблюсти дохуя всего и не попасть в засранные ранее адреса, а то будут в спам кидать или вообще режектить.
Посмотри сервисы вроде mailgun.
252 1783763
>>3755
Благодарю. Запостил сначала в JS так как я на node.js делаю бекенд, но так как вопрос от языка мало зависит, решил запостнуть и сюда. Рад что так быстро получил ответ. Там 2 дня ждал и безрезультатно(
pycharmscreen.png14 Кб, 458x204
253 1783764
Почему в pycharm файлы проекта в панели выделены таким "болотистым" цветом? С чем это связано?
254 1783797
>>3367

>Один хрен к 4 версии что-то новое придумают.


Но пока разговоров про 4 версию нет, релизы будут в стиле 3.10, 3.11, 3.12 и т.п.

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

В ближайшее время каких-то значимых изменений в языке вроде бы не намечается.
255 1783810
>>3367

>ORM может быть медленнее, но выигрыш будет во всем, что описал анон выше.


ORM это некая серебряная пуля, которая якобы должна решать проблемы, но реально не очень решает. В результате разработчик должен думать о том, как его код с ORM будет выглядеть в виде запросов к БД. В Джанго, например, легко было во вроде бы элегантном коде по факту получить сотни запросов к БД ради генерирования одной страницы с какой-нибудь таблицей. Что мягко говоря раздражает. Надо специально модифицировать и портить код так, чтобы он разложился в нормальные SQL запросы.
256 1783818
>>3810
Ну а разве не всегда так?
Инструмент А решает проблемы из списка, но добавляет необходимость дополнительных тестов.
Я например столкнулся с проблемами коннекторов, то что есть в SQL Alchemy в новомодных aio-libs банально отсуствует или надо пилить свою реализацию.
Что делать если БД недоступна и connection pool просто протух? Это же банальная вещь, и такое бывает. Предлагают сразу коллбэки пилить для реконнекта/запросов из реплицированной БД.
Мне кажется банально таких вещей не хватает. Tortoise ORM еще минимум 2 года будет пилить версию 1.0.х, хотя уже видно что будет куча PR и чатик в issues.
Ждун джангу. Посмотрим.
257 1783839
>>3351
Итого макаке нужно знать как делать в запросы в орм. И прощайте все плюшки конкретной базы данных. Более того, иногда макаке придется опуститься до sql

А все потому что "а вдруг переедем на другую бд"
зинануебтвоюмать.jpg231 Кб, 1063x1583
258 1783840
>>3367

>2. Оптимизация и дебаггинг на стороне сервера и их проводит DBA, а ты только свой код пишешь.


вы там вообще охуели? у DBA зачастую нет никакой возможности что-то оптимизировать.
Если только не очень-очень говнокод пишете.
Все оптимизации DBA заканчиваются обычно пересмотром бизнес-логики и выкидыванием целых фич из продакшна.
259 1783842
>>2322
>>2372
Вроде нормально спросил, но в ответ получил неуместную агрессию. Наверно не стоит многое ожидать от ру-коммьюнити.
260 1783848
>>3839
И даже хуже.

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

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

В итоге от ORM почти ничего не остаётся.
261 1783871
>>3549
так в том и смысл что нету, это просто текст в теге div в который там записано вообще пол сайта, но этот даже элементом не является и из указателей на него только xpath ни селектора ни классов ни имен ни ссылок ни атрибутов

вот ссылка если что, не вытаскиваются перевод слов

https://am-en.ru/conversations/vocabulary.html#a
262 1783953
>>3421
уже сделал на matplotlib, а graphviz гляну
Снимок.PNG60 Кб, 1786x323
263 1784015
сап двач, памахите с питоном.

Делю 1000 - int на 1000.0 (float) , получаю 1.099, WTF.

Бтв возможно гуглю жопой как обычно, но я нипанимаю
264 1784029
>>3871
да заебал, думаешь это единственный кривой сайт?
иди гугли.
Снимок.PNG15 Кб, 1727x46
265 1784033
Если делать вывод не через sys.stdout.write, а через print - то всё нормально, цифры правильные.
Если запускать с консолечки через python file.py то такая же хуйня.

Как фиксить?

>>4015-кун
266 1784042
>>4015
0.1 + 0.2 == 0.3?
267 1784070
>>4042
Да это понятно.

Почему вывод в sys.stdout.write отличается от вывода print?
Причем на 10%.

В 0.1 + 0.2 не будет 0.33 или 0.27, даже со всеми нюансами суммирования чисел с плавающей точкой.
268 1784088
>>4015
>>4033
Твой 1.09 очень смахивает на присутствующий также 108.81, похоже на какой-то баг.
Попробуй выбрасывать другие значения по одному и смотри вывод.
image.png5 Кб, 316x94
269 1784094
>>4088
если и баг то не у него одного, сейчас у себя чекнул, в пучарме, получил вот это
270 1784095
>>4070
Тут явно не в вычислениях проблема, ты ведь строку передаешь в stdout. Скорее всего stdout байтики от себя добавляет.
271 1784097
>>4094
Ну так баг во всей этой строке, а не в вычислении, это очевидно. Надо методом исключения его поймать.
272 1784105
>>4094
А он не количество символов в строке выдает в конце?
273 1784108
>>4095
И нахуя он это делает?
Я конечно понимаю, что сам дурак, не в курсе спецификаций и прочего, но где это в документации?

>>4094
Анон, а ты на какой ОС работаешь?
Может stdout бажит изза операционки?
У меня win10
274 1784109
Бляя, я понял.
Это результат функции write, количество высранных символов, лол.
Собрались эксперты.
275 1784114
Ну да, действительно, забыли такую мелочб, ну да всего не упомнишь
Снимок.PNG11 Кб, 860x149
276 1784118
>>4109
нихуя, тут ровно 1.0 вывел
277 1784120
Привыкли бля что newline сам принт добавляет, и сидят тут ошибку в вычислениях ищут.
Покекал.
image.png10 Кб, 577x94
278 1784121
279 1784126
>>4121
Но тогда бы мне выводило на каждой строке ошибки, а выводит не на каждой

Можешь запустить, несколько ошибок в середине и в конце какой то треш

https://pastebin.com/FMzKTRVj
280 1784132
>>4118
Ну только все починили, ты опять
281 1784133
>>4118
Да это вообще норкоманская хуйня, там какие-то ужасы под капотом.
image.png12 Кб, 1019x171
282 1784149
283 1784155
сап. насусветуйте какую ни будь дрочильню-самоучитель с заданиями. Уровень познания нулевой, умею писать хело ворлд 1000 раз циклом
284 1784169
Какая разница между lock-ами и .join() в threading? Просто то, что я могу lock-ом заставить треды ждать окончания определенного места в функции, а .join-ом можно заставить ждать только окончания всего треда?
285 1784171
>>4149
Версия питона, версия ОС?
286 1784178
>>4171
Python 3.8.2
Ubuntu 20.04.1
287 1784182
>>4105
Именно так

>>>> sys.stdout.write(str('1.0'))


>1.03



Но ХЗ почему это.
288 1784183
>>4178
окай, спасибо.
Возможно, этот баг воспроизводится только на винде.

>>4094
Бамп вопросу Версия питона, версия ОС ?
289 1784185
>>4183
да я тот же самый
290 1784188
>>4182

>>> sys.stdout.write(str('1.0'))


1.03

>>> sys.stdout.write(str('1.00'))


1.004

>>> sys.stdout.write(str('1.000'))


1.0005

>>> sys.stdout.write(str('1.'))


1.2

>>> sys.stdout.write(str('1'))


11

>>> sys.stdout.write(str(''))


0

>>> sys.stdout.write(str(' '))


1
21-08-202016:46:05screenshot.png944 Кб, 1920x1200
nightloli !!esbsgNqFnI 291 1784194
>>4182
В 3-х везде 1.03, а в 2.7.18 всё кхорошо и просто 1.0, лел
292 1784195
>>4188
Но это только в idle, если запускать как программу, то такого эффекта нет. Специфика питон-шелла.
293 1784202
>>4182
Да уже ведь разобрались, сначала функция выдает в поток строку, которую ей передали, а потом возвращает количество символов в строке в стандартный поток вывода, в данном случае, туда же. Как-то так.
294 1784204
>>4194
сначала подумал какой милый трап на пикче
потом увидел сиськи и расстроился
295 1784205
>>4195
Какая блять специфика.
write выводит без ньюлайна в конце и в сосноли выводится возвращенный результат сразу.
ну сделай write('1.0\n'), будет как с принтом.
296 1784215
заметил особенность что если в цикле выводить то количество символов не выводится в конце, а если просто вывести то выводится
297 1784217
>>4215
Потому что результат всей конструкции.
Это не сам write выводит, а шелл.
298 1784220
>>4205
Именно специфика. При нормальном исполнении поведение другое, длина строки не печатается

>>> sys.stdout.write('1\n')


1
2

>>> print('1')


1

нормальное исполнение

> cat p.py


import sys
sys.stdout.write("1\n")
print("5")

python3 p.py
1
5
299 1784223
Лучший тред эвер. Детективное агенство "Путхон Тред" расследует загадочное появления символов в неожиданных местах.
300 1784225
>>4220
Ты тупой или притворяешься?
Это то же самое, что ты напишешь 3+2 и выведет 5 в шелле, а если написать 3+2 в py файле и запустить, то нихуя не выведет.
Снимок.PNG12 Кб, 940x164
301 1784229
>>4215
У меня вот такая хуйня с последним тестом, кек

>>4015-кун
302 1784234
>>4229
Юпитер выводит не в стдаут. Он просто в интерактивной манере вставляет последнюю строчку стдаута и метч под каждый принт стейтмент под каждую заэкзекьюченую селлу
303 1784237
>>4194
Ты заебал всех в /s/ и решил теперь в /pr/ перейти, хуесос?
304 1784238
>>4029
да гуглил я похоже вообще нет варианта достать текст вне элемента только всю хуйню сразу
305 1784242
>>4234
А почему тогда этот юпитер в первом примере с которого тред свалился в детективное агенство выводит 1.09 и иногда 1.099 если делить 1000/1000.0 ?

Бтв, вывод юпитера совпал с системным.
А сейчас не выводит никаких гуков на деревьях (символов в конце строки) на примере анона, у которого эти ебаные гуки на месте.
306 1784244
>>4225
С чего бы это шеллу вообще длину строки выводить?
307 1784251
>>4244
Шелл выводит значение, которое вернул write.
nightloli !!esbsgNqFnI 308 1784253
>>4237

>всех


Тебя, нян? Или вас двое?

>решил теперь в /pr/ перейти


Я тут сижу ридонли, тому что писать нечего
И так и буду ближайшее время наверно
Просто о чём разговаривали решил проверить и что в питоне 2 не так написал, нян

>хуесос


<3
309 1784254
>>4251
ты я так полагаю ввиду имеешь сам интерпретатор?, а то некоторые могут с каким нить башем или кмд спутать
310 1784258
>>4254
Эта хуйня официально называется python interactive shell.
311 1784268
Как проверить дату на валидность? Именно дату
Поступает она простой строкой формата YYYY-MM-DD (которую всегда можно привести к тому виду, который захочется), надо убедиться что там не будет месяца под номером 13 или 29го дня в феврале невисокосного года. Пока что все что нашел это создавать объект datetime.datetime() и првоерять на выпадение ошибки ValueError
312 1784273
>>4268

>Пока что все что нашел это создавать объект datetime.datetime() и првоерять на выпадение ошибки ValueError


А чем не нравится такой способ? Ничего лаконичнее, наверное, и нет.
313 1784277
>>4268

>првоерять на выпадение ошибки ValueError


ну так норм жи. ловишь ValueError и пробрасываешь дальше какой-нибудь DateValidationException
image.png9 Кб, 379x128
314 1784338
>>4268
вот еще вариант
315 1784348
316 1784350
>>3635
Благодарю, Анон. Охуенно!
317 1784356
>>3465
Может кто-то на словах объяснить отличия от асинхронности в ЖС?
318 1784357
319 1784363
>>4169
Join завершает поток, Lock блокирует выполнение. В документации же написано.
image.png16 Кб, 663x400
320 1784391
>>4015
мне кажется это прикол типа этого
image.png8 Кб, 448x143
321 1784401
>>4015
sys.stdout.write возвращает количество символов, которое было выведено на экран, а Jupyter печатает это количество если ты не записал его в переменную. У меня он сейчас не установлен, но такое же поведение наблюдается в консоли пайчарма.
323 1784415
>>4356
В JS асинхронность более нативная и прозрачная. Если ты определяешь функцию через async, то при запуске через await такой функции она уже автоматом стартует асинхронно.

В питоне это не так. В питоне даже если ты оформишь функцию через async, и вызовешь её через await, выполнение всё равно будет синхронным. Тебе необходимо запустить соответствующую корутину как задачу, через вызов create_task, ensure_future, или некоторые другие вызовы.

В общем в питоне асинхронность совсем не очевидная и имеет нюансы, подводные камни.
324 1784449
Вопрос есть.
Создаю класс, например кнопка. Кнопке задаю всякие разные поля типа текста, размера, координат и прочего. Далее создаю метод, который будет вызван если кнопка нажата.
Я хочу чтобы для каждого отдельного экземпляра класса внутри этого метода вызывалась своя уникальная функция.
Как мне это завернуть?
Пробовал при создании экземпляра в качестве аргумента передавать нужную мне уникальную функцию, а ее использовать в качестве аргумента для метода нажатия кнопки, но так не срабатывало.
325 1784478
>>4449
ты ее со скобочками передавал или как объект?
326 1784492
>>4449
Ставишь хендлер (функцию) как атрибут экзмепляра, хуле. Это стандарт

class MyClass:
----def __init__(self, func):
--------self.handler = func
327 1784562
>>4253
Та я тебя с пониебом спутал, который срет непрекращая в линукс-тред, цвета на десктопе у вас похожие, извиняй.
328 1784651
>>0956 (OP)
Привет, погромисты.
Как получить класс-предок в питоне (сам объект или хотя бы имя)? Уже 20 минут гуглю, ничего найти не могу.
329 1784652
>>4651
предок класса имею ввиду (не экземпляра).
330 1784657
>>4651
Допер сам вооружившись dir():
Obj.__weakref__.__objclass__
Спасибо питухону за синтаксис. Внутри кода класса это делается простым super(), но извне вот так коряво.
Screenshot2020-08-2210-05-15.png13 Кб, 343x402
331 1784682
>>4657
Можно было попробовать вооружиться гуглом сначала
332 1784693
>>4651
>>4652
Пропустил этот момент
Всех предков класса можно найти через classname.mro() или classname.__mro__
https://docs.python.org/3/reference/datamodel.html#invoking-descriptors
333 1784738
>>4651
Не понятно, что конкретно тебе надо? Откуда тебе надо вытащить класс предок? Из self?
334 1784794
Короче, анон, пришлось мне сейчас писать одну хуйню на C#. Его я знаю слабо, поэтому набросал в Петухоне код, а потом начал переносить в Шарп.
Любите Петухон, посоны. Им можно хуйнуть список в множество, потом обратно в список и сразу его отсортировать в одну строку.
В Шарпе нельзя. Храни Господь питон.
335 1784831
>>4794
Удобство или байтоебство, всегда есть два стула.
336 1784835
>>4651

>Уже 20 минут гуглю


Устал? За тебя все сделать? Кидай ТЗ, хуле.
337 1784836
>>4794

>Его я знаю слабо, поэтому набросал в Петухоне код, а потом начал переносить в Шарп.


Питон как макетная плата?
338 1784856
>>4836
Я синтаксис шарпа знаю хуёво. Если не знать синтаксис и при этом пытаться решить какую-то задачу, то точно нихуя не выйдет. Написал в питоне, проверил что всё работает как надо, перенёс логику в шарп.
339 1784955
>>4794

>В Шарпе нельзя


можно конечно. И более привычным "цепочка вызовов", чем в питоне где си подобно.
340 1784956
>>4794
var result = new[] {2, 3, 2, 1, 5, 9}.ToHashSet().OrderBy(v=>v).ToList();
341 1784964
>>4956
Окей, буду знать, спасибо.
342 1785056
В чем профит nginx? Я деплоил разок свою джанго-приложуху на Ubuntu-server, настраивал там nginx, но просто потому что инструкция, которую я юзал, так говорила, типо: django будет работать на localhost:8002, а nginx будет слушать порт 80 и проксировать запросы к localhost:8002. Теперь я задумался: нахрена? Неужели джанго-демон не сможет сам слушать 80 порт? В чем профит в виде посредника nginx?
343 1785059
Аноны, недавно начал вкат, объясните одну штуку. Последовательно изучаю синтаксис, и чет туплю и не могу понять, уже в 2 сурсах мне просто взорвали мозг и я ничего не понял. Вот у нас есть всякие функции типа принта, понятно зачем они нужны, чтобы сделать определенную хуйню грубо говоря. Вот мы можем написать свою функцию, т.е. мы опять же грубо говоря сворачиваем определенную последовательность действий и вызываем ее по имени функции, чтобы 300 раз не копипастить эту последовательность. А что такое класс, и нахуя он нужен. У меня чет от объяснений из курсов и видосик сразу внимание разъезжается, мысли куда-то улетают и я понимаю, что нихуя не понял, что это за ебанина и зачем она.
344 1785065
>>5056
В том, что джангосервак очень слабенький, для дебага хватает и не более того.
345 1785067
>>5059
На самом деле, в пистоне все можно представить как объект класса. Например [1, 2, 3] - объект класса list, или "иди нахуй" - объект класса string.
Читни основы ООП или в ютубе там посмотри.
346 1785069
>>5059

>А что такое класс, и нахуя он нужен


Для моделирования объектов в твоей программе. Для наследования от других классов. Это одновремено и

>чтобы 300 раз не копипастить эту последовательность


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

Допустим, тебе в игре нужно сделать персонажа-человека. Он должен уметь ходить.
Объявляешь класс "человек" и описываешь метод "ходить()".
Теперь ты одной строчкой можешь создать объект-экземпляр этого класса.
Потом тебе понадобился персонаж-пидор. Он тоже должен уметь все то же, что человек, только еще сосать хуй.
Ты создаешь класс "пидор", наследуя от класса "человек", и все что тебе дополнительно нужно, - только описать метод "сосать_хуй()".
347 1785072
>>5065
Я думаю что вопрос именно в том, зачем nginx как прокси до хуевенькой джанги, можно же поставить приложение хоть на nginx хоть на апач допустим непосредственно

не питонист
348 1785074
>>5069
Есть ли хоть что-то, что на дваче не смогут пояснить через хуи и пидоров?
349 1785078
>>5069

>Допустим, тебе в игре нужно сделать персонажа-человека. Он должен уметь ходить.


>Объявляешь класс "человек" и описываешь метод "ходить()".


>>5067

>На самом деле, в пистоне все можно представить как объект класса. Например [1, 2, 3] - объект класса list, или "иди нахуй" - объект класса string.


Я сейчас конечно почитаю, но все-таки перед этим еще спрошу. Это же язык, мы оперируем тут буквами и цифрами. Соответственно типа и объекты под них сделаны, т.е. можно взять именно числа, можно брать просто сколько-то цифр и букв вместе(строки), можно сделать их отдельными и идущими подряд в списке, можно сделать словарь и т.д. А когда мы делаем свой класс, мы же не можем ничего принципиально нового добавить. Все те же комбинации букв и цифр, значит вся суть, чтобы к нему прихуярить метод? А почему мы просто не можем сделать функцию, и хуярить ее к тому, чему хотим, без классов? Ладно, вы меня все равно сейчас пошлете нахуй читать, так что наверное пойду и займусь этим.
350 1785081
>>5059
По сути это свой собственный тип данных, используется для долгосрочной разработки, если скрипт маленький, то не нужен.
351 1785084
>>5059
Забей пока, рано тебе ещё голову забивать этим
352 1785089
>>5056
Джанго демон однопоточный и мало чего умеет.

Например вот такая простая ситуация, у тебя клиент делает запрос, но ответ из-за медленного интернета долго забирает. Всё это время твой джанго процесс будет заблокирован. А nginx просто положит в буфер.

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

Nginx может хорошо и быстро обрабатывать статику, что тоже полезно.
353 1785090
>>5072
Как ты поставишь приложение на nginx-apache? Они не умеют питон обрабатывать. Они могут только перенаправить поток на другой сокет, но этот сокет может уже работать на другом протоколе, не обязательно на http. Задача nginx обработать http, транслировать в wsgi, подключиться к джанго, получить ответ, сложить его в буфер и отдать клиенту.
354 1785094
>>5059
Смотри, функция тебе помогает в том, чтобы делать какое-то действие и не хранить состояние. Каждый раз функция запускается заново и не знает, что её уже раньше запускали.

С помощью классов ты создаёшь "объекты". Объект это такая штука, у которой есть состояние, то есть внутри объекта лежат переменные, которые меняют значение.

Методы класса это такие функции, которые имеют доступ к переменным объекта.

Объекты нужны не всегда, конечно.
355 1785095
>>5078
В пистоне все сделано под объекты, и объектами мы оперируем. Класс - это тип объекта.
Смотри, например есть список l = [1, 2, 3]
l - это объект класса list
если мы напишем l.append(4) в конец списка добавится значение 4.
append() - это метод класса list, тоесть функция описаная в классе.

>А когда мы делаем свой класс, мы же не можем ничего принципиально нового добавить.



Ну навскидку, мне надо оперировать векторами. Сложение, вычитание. Или пример с персонажами. Это все реализовать линейно можно, но когда векторов или персонажей дохуя, твой код превращается в голимое чтиво. И если надо что-то изменить, добавить или убрать, надо вычищать тонны говнокода. А применив классы я просто меняю в одном месте метод, и во всех персонажей хуй увеличевается с 12 до 21 см.
Причем чтение кода превращается в подобие обучению языку, что близко всем. Ты просто разбираешся как работает тот или иной метод класса, + у тебя появляется возможность поменять поведение определенного метода, или добавить новый.
356 1785100
>>5078

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


В случае питона фактически так и есть. Объект на самом деле фактически словарь, а методы классов это обычные функции, которым ты первым аргументом передаёшь словарь.

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

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

ООП пришло как расширение обычного программирование, но чем сложнее программа, тем больше плюсов ты можешь получить от ООП подхода.
357 1785128
Как установить библиотеку вручную? Под вручную я понимаю, прям руками нужные файлы перенести. Я осваиваю веб-макакинг на жанге, настроил бдшку, запускаю в консоли миграцию, и там какая-то анальная ошибка на хостинге, с тем что нет библиотеки mysqlclient, при попытки её установки через пип или через easy_install с готовым .tar архивом возникает какая-то линуксоидная проблема, а я в линуксе не силён от слова совсем. Гуглеж ничего не дал, единственное решение, которое я придумал, это вручную файлики распихать по местам.
358 1785139
>>5128
Вот весь лог если что.
359 1785191
Молю, дайте курс, где будут домашние задания. Пускай это будут лабы какого-нибудь универа или задания в книге или на сайте. На любом языке, хоть на северокорейском. Заранее спасибо.
360 1785198
>>5191
Гугл в помощь.
361 1785236
>>5059
Короче, пока тут хуйни тебе понаписали. Если у тебя ебически большой проект, то ты просто охуеешь оформлять его функциями . Ориентироваться в нём будет очень сложно, а поменяв одну функцию сломаешь нахуй всю программу. ООП структурирует большой йоба-код в удобоваримый вид. У тебя есть классы с такими-то свойствами и методами.
Допустим, ты сделал функцию, которая описывает человека, и на её основе запилил здоровенный код. Потом у человека внезапно появляется новое важное свойство - он теперь умеет срать, не снимая свитер. Если программа у тебя процедурная, то тебе придётся всё перепиливать, а так тебе будет достаточно просто наследовать все свойства от предыдущего человека и объявить, что теперь класс-наследник может то же самое, но + срать не снимая свитер.
ООП это не что-то сверхважное, как например основы синтаксиса. Ты начнёшь им пользоваться, когда в этом возникнет потребность. Пока можешь описать всё функциями - описывай функциями и не еби себе мозги.
362 1785237
>>5078
>>5059
Это снова я. Нашел эту серию видосов https://youtu.be/25Ds7aeTyOQ , вроде очень понятно все разжевано, тут я хотя бы понимаю что происходит, не в пример заумному курсу на степике, где лектор мне кажется пытается выебнуться и задавить терминами, а не объяснить. Одна беда, автор канала хитрая жопа и часть видосов видна только донаторам. Есть что-то настолько же для дебилов, но бесплатное? (только не говорите про документацию, я же говорю, для дебилов)
363 1785238
>>5236
Спасибо, но я курс пытаюсь проходить, в котором основы синтаксиса уже закончились, и теперь пытаются ебать как раз этим ООП видимо. Грузят про область видимости переменных, объекты и всякую такую хуйню. Беда в том, что первая часть курса, про синтаксис пилилась другими людьми и была еще туда-сюда понятна (да и темы как мне кажется проще были), а тут лектор так себе поясняет
364 1785239
>>5236
Херню ты какую-то пишешь. Есть куча огромных проектов, написанных на Си или ещё каких простых языках, где никакого ООП нет и в помине, и ничего, работают.

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

Выделение в объект становится актуальным тогда, когда ты в программе работаешь не с одним человеком, а с несколькими. Под каждого надо выделать как-то ресурсы, не отдельные переменные, а массивы, вводить идентификаторы. Или делать те же словари. Плюс ты обнаруживаешь, что у тебя засрано пространство имён.

В случае объектов ты делаешь
dog = Dog()
man = Human()

dog.feed()
man.feed()

всё более-менее понятно, а без объектов тебе надо уже писать функции вроде
feed_dog(dog)
feed_man(man)
что как бы грязно.

То есть даже без наследования и полиморфизма объектный синтаксис несёт много пользы.
365 1785242
>>5238
Я тебе так скажу, читать книжки по теории ООП почти также бесполезно, как и читать книжки по паттернам проектирования.

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

Но реально эти технологии нужны, когда код уже очень большой и сложный, и ты сам думаешь, как бы его организовать, чтобы хоть как-то можно было адекватно спроектировать так, чтобы это дошло до рабочего состояния. Причём там ты сам в состоянии много чего переоткрыть. Но учишься больше на примерах, чем по теоретическим книжкам.
366 1785244
>>5237
И ещё, две большие разницы, ООП вообще и ООП в питоне. В питоне номинальное ООП.

Ты должен понимать, что ООП как технология появилось из компилируемых языков вроде C++ и Java (придумали ещё раньше, но не в массовых языках). В них нет много чего такого, что совсем естественно в питоне.

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

Если тебе нужно понять, откуда многие концепции ООП идут и зачем они, тебе надо погружаться в C++/Java, может C#, я его просто не трогал, не знаю.

В питоне всё проще.
image.png18 Кб, 610x239
367 1785245
Посоны, помогите, пожалуйста. У меня есть ксв-файл из несколько тысяч строк вида
хуй_пизда_джигурда20052134
хуй_пизда_паук120042330
хуй_нигра_ЧВ12005321

Мне нужно в идеале разделить их на два столбца, где в одном будут хуи и пезды, а в другом - числа. Числа, к слову, разнятся в длине от 7 символов до 9.

Я подумал, что можно просто провернуть эти строчки через регулярки, вычленив числа, но код почему-то не работает - возвращает пустые множества []. Что не так?
chromeG3Jwr51auL.png80 Кб, 968x855
368 1785247
Сори аноны, что доебываю, но друг который меня затащил в погромирование дал этот курс и съебал в отпуск, где сидит без связи. Вот что этому ебаному курсу в моем коде не нравится? Не понимаю
369 1785248
>>5247
алсо формулировки пиздец, вот в can_add True и False вообще надо выводить? А если надо, то как, принт и объект бул, или принт строка тру/фолс. Не понимаю просто.

>Гарантируется, что метод add(self, v) будет вызываться только если can_add(self, v) – True.



Вот тут тоже хуй знает, что они имели в виду? Что они обещают проверять только такими значениями, при которых это будет тру? Или я должен сделать ограничения, чтобы функция нахуй слала?
370 1785249
>>5245
Неверный реджекс.
image.png36 Кб, 1352x316
371 1785251
>>5249
Можешь подсказать, где именно? Я посмотрел вот этот пример https://www.w3schools.com/python/trypython.asp?filename=demo_regex_set6 и дописал туда свою ситуацию - всё работает.
Я просто совсем нуфаня.
372 1785253
>>5191
Хирьянова алгоритмы на ютубе. Практика в этом курсе очень хорошая, чего там только нет.
373 1785256
>>5247
https://stepik.org/course/512/syllabus Ты вот этот же курс проходишь, да? Тоже сегодня его нашел, думал потыкать. Что вообще кто из анонов может про него сказать, норм?
374 1785259
>>5245
Если я правильно понял задачу, то у тебе нужно что-то типа
[0-9]{7,9}$
а не говно вместо регулярки как у тебя
375 1785261
>>5259
и да, если у тебя одно вхождение может быть, нахер тебе findall
делай что-то типа
pos = re.search("[0-9]{7,9}$", line).start()
для получения позиции и сплитай строку, я бы так сделал
376 1785274
>>5245
Findall нужно использовать, когда читаешь весь файл.
А если читать построчно, то как >>5261 этот господин сказал я бы сделал.
377 1785316
>>5248

> вот в can_add True и False вообще надо выводить


у каждой функции есть возвращаемое значение, оно идет после return. В твоей реализации return нет, значит функция возвращает None. А должна True или False

> Вот тут тоже хуй знает, что они имели в виду


имели в виду то что написали, то что метод add должен только добавлять, проверку can_add сделают они сами и внутри тебе ее чекать не надо
378 1785326
>>5244
Если после питона и функциональщины начать погружаться в Джава ООП можно кукушкой поехать.
Тут уже скидывали статью про ОРМ. Пока доберешься до сути уже слоев 10 пройдешь и в итоге выстроить цепь связей и интерфейсов.
Про KISS (keep it simple, stupid) как-то всё стали забывать. Брать Java потому что там JVM и кроссплатформенность? Ну так себе затея, оверхед будет всегда. Как по мне, не получится что в питонеч что в джаве сразу на двух стульях усидеть (скорость разработки и скорость работы кода).
Когда говорят, что <language name 1> медленнее чем <language name 2> забывают о том, какие ресурсы уходят на разработку и какие на тесты. Python можно отдебажить на любом этапе, можно даже без unittest. Даже в проде можно будет оперативно перейти в DEBUG, а как там с Java? Хуй плавал.
Почему все дрочат на Java? Потому что заставляет писать понятный код, а не лапшу. Можно ли делать красивый код на Python без лапши и использовать паттерны? Конечно можно, в любом языке можно писать код без лапши.
JVM все равно не серебряная пуля. Она не будет решать проблемы говнокода.
379 1785336
>>5326

>Потому что заставляет писать понятный код, а не лапшу


Вообще то ж наоборот. Жаба выразительностью никогда не отличалась. Сам же пишешь "Пока доберешься до сути уже слоев 10 пройдешь"

в питоне модули хорошо, но они же и зло. в 1 файле получается куча кода. неудобно
Screenshot34.png44 Кб, 416x853
380 1785349
Парни, закрыл пайчарм, а вернувшись обратно не обнаружил файл с кодом.py. Где он лежит?
381 1785357
>>5349
надуй ты .venv открыл?
382 1785361
>>5349
держа проекты и вообще данные в винде на диске С - не только файлик потеряешь в итоге
383 1785362
Аноны, не работал с python'ом около 6 месяцев, хочу заново начать что бы через год получить джуниора на удалёнке. Что я могу сделать на своей aws'ке, что бы показать свой уверенный уровень джуниора?

П.С. до этого писал много парсеров, работал с потоками и по мелочи
384 1785381
>>5336
Я подразумевал либовь жавистов к абстракции и интерфейсам.
Так пожалуйста пиши свои интерфейсы в другом файле, не проблема же.
385 1785405
>>5381

>Так пожалуйста пиши свои интерфейсы в другом файле, не проблема же.



вообще не понял о чем ты
386 1785407
>>5381

>либовь жавистов к абстракции и интерфейсам.


Это любовь любого нормального программиста, причем начинается уже на уровне железа.
387 1785411
Да что не так-то??
z = input("Операция" )
x = float(input("Первое число:"))
y = float(input("Второе число:"))

If z == "+":
c=x+y
print("Результат " +str(c))
elif z == "-":
c=x-y
print("Результат " +str(c))
elif z == "":
c=x
y
print("Результат " +str(c))
elif z == "/":
c=x/y
print("Результат " +str(c))
else:
print("Хуйню написал!")
388 1785413
>>5411
Сори за код
https://ideone.com/kqujzX вот читабельно
389 1785419
>>5413
Всё ок, но хули ты жабу поставил?
Да и код хуйня с копипастом. Сделай модненько, словарь с лямбдами, все дела.
390 1785423
>>5419
Господи, фейл за фейлом.
https://ideone.com/9eo3P1
Не ок, там такое:
If z == "+":
^
SyntaxError: invalid syntax
Почему?
391 1785425
>>5423
С маленькой буквы.
392 1785427
>>5425
У меня ничего не получилось бы без тебя, спасибо большое :3
393 1785429
>>5128
Бамп, помогите пожалуйста.
>>5139
Вот это я дебил жесть, забыл прикрепить, вот весь лог: https://pastebin.com/vrAXpirG
Screenshot35.png15 Кб, 832x308
394 1785431
А теперь что не так?
395 1785433
>>5429
Установи пакеты build_essential и python3-dev, тогда приходи.
>>5431
Это надо запускать из обычного cmd, а не питоньего шелла.
396 1785434
>>5431
Пип нужно вызывать просто в cmd, а не в интерпретаторе питона
Screenshot36.png31 Кб, 993x637
397 1785436
>>5433
>>5434
Я пробовал
398 1785438
>>5436
Все понял
399 1785442
>>5436
Как ставить хакирские цвета выучил, уже хоршо.
400 1785463
>>5433

>Установи пакеты build_essential и python3-dev, тогда приходи.


У меня нет пароля для установки пакетов в линупс, как я понял.
401 1785472
>>5463
Сейчас такие ещё бывают? Что за провайдер?
403 1785490
>>5089
Значит ли это что с помощью nginx можно сделать однопоточную программу (вроде синхронного приложения на Джанго) условно многопоточной? Так как разные соединения будут обрабатываться в разных воркерах nginx?
404 1785503
>>5490
Этим занимается прежде всего какой-нибудь гуникорн, а не нджинкс
405 1785505
>>5326

>Если после питона и функциональщины начать погружаться в Джава ООП можно кукушкой поехать


Объектная модель всё-таки там стройная, но платформу делали под ООП, когда был хайп вокруг ООП, и стиль программирования соответствующий выработали.

ООП подход часто снижает гибкость, чем больше слоёв, тем меньше гибкости.

ООП в питоне убого реализовано, немного раздражает. Главным образом наследование.

Но и не нужно на питоне писать в стиле классического ООП, потому что оно важно, когда язык компилируемый, с сильной статической типизацией. Те проблемы проектирования, которые необходимо в C++/Java решать с помощью развитого ООП, в питоне часто решаются проще.
406 1785509
>>5490
Ну смотри, тебе в любом случае тогда надо запускать несколько копий джанги. А нжинкс уже в принципе может раскидывать трафик по ним, он это умеет.

То есть в промежуточных гуникорнах и т.п. решениях необходимости нет. Но тебе в любом случае необходим какой-то менеждер процессов, который будет следить, что запущено нужное количество копий джанги, перезапускать их и т.п.
407 1785530
Питухарики помогите очень прошу. Дело в том что после того как я начал изучать программирование я плачу каждый день оттого что представляю как я буду его очень хорошо знать и унижать других пидорах которые его не знают. Я плачу целый день от счастья и уже все глазницы солёные, не пойму что же делать помогите пожалуйста
Снимок.PNG72 Кб, 1819x484
408 1785531
>>4401
В пизду этот sys.output, вообще рандомную поеботу выводит
409 1785558
>>5530

>я плачу каждый день


не туда платишь )
410 1785561
>>5436
а еще лучше
python -m pip ...
411 1785587
>>5472
>>5475
Хостинг таймвеб, но дело в том что там я не своим аккаунтом в нём пользуюсь, и я не знаю есть ли у владельца пароль и наебнуть бы ему всему не хотелось.
412 1785591
>>5587

>наебнуть бы ему всё

413 1785593
Поясните ньюфагу за абстракный класс

class Base(ABC):
def __init__(self,data)
def func1(self)
def func2(self)
def func3(self)
@abstractmethod
def func4(self)

class A(Base)
def func4(self)

class B(Base)
def func4(self)
def funcb(self)

class C(Base)
def func4(self)
def funcc(self)

Нахуя нужна эта абстрактная залупа в родительском классе, если можно спокойно определить func4 отдельно в каждом классе?
414 1785606
>>5593
Чтобы заставить наследующего от абстрактного класса, реализовать метод, который лень или невозможно реализовать в абстрактном классе. Абстрактный класс, это такой же контракт как и интерфейс. Контракты используются чтобы принудить к какой-либо конвенции в коде.
415 1785643
есть у кого на примете красивой структуры объехно ориентированной программы?
416 1785652
>>5643
а какую цель преследуешь? понять ооп в питоне или понять пользу от ооп?
417 1785657
>>5652
ну есть скрипт в процедурном стиле и в перспективе буду его расширять, просто охото посмотреть на уже существующие паттерны/билды на питоне, чтобы ща не велосипедить
418 1785662
>>5652
то есть подключение к influxdb юзать pandas, например
419 1785673
>>5657
А надо ли.
Вот я упоротый шарпист. И в шарпе же метод без класса существовать не может и вообще "классы наше все". И мне очень нравится собирать из классов, как из кубиков, граф объектов с помощью контейнера (IoC), потом просто пнул и оно покатилось. Если часть системы нужно изменить, то подкладываешь другие кубики. Потому там интерфейсы и рулят.

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

Конечно можно собирать граф из классов, но как то это чужеродно выглядит. Я в итоге перестал выделываться и сместил акцент с "построим нужный граф объектов" на "в конфигах переконфигурируем". И если нет особой причины делать класс, то и не делаю. Да даже есть то не всегда - модули точно так же классы синглтоны
420 1785684
>>5673
ну классы щитай обертка на функциями, просто берешь и пачками управляешь всеми ими из входной точки, то есть если без классов лепить то нужно будет знать какая функция где находитс, кароч мб ты и прав, пойду лучше навелосипедю че нить, рано мне еще мыслить о высоких абстракциях
421 1785689
>>5684

>ну классы щитай обертка на функциями


класс хорош тем что может инкапсулировать свое состояние и таких инстансов больше одного
а как хранилище функций - модуль такое же хранилище
А в питоне всё объект.

А если нужен контракт,то есть Protocol - он вообще для всего на свете. Вот у меня в последнем лисапеде плагины просто модули в папке.
422 1785694
>>5684

>знать какая функция где находитс



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

В питоне вместо аттрибутов декораторы. но механизм у них обратный - они сами вызывают кого надо (если им надо). Например фастапи не сканирует модули на наличие роутов, а на каждым роутом висит декоратор, который и регистрирует функцию где оно там надо.

заведи такой же декоратор и ничего знать не нужно будет.
423 1785696
>>5316
Погоди, а зачем здесь ретурн? В случае проверки на вместимость мы просто делаем принт, он и без ретурна работает, а в случае с добавлением монет - это же self.v внутри класса, она и так увееличивается, я в консоли чекал
424 1785707
>>5694
Кстати, редко вижу что кто-то использует wrapper, каюсь и сам редко пользовался. Каждый раз руками прописывать логирование пиздец какой-то, теперь в следующих проектах только обертки.
425 1785720
>>5696
крч бросай проганье не твое
426 1785723
>>5657
Тебе в любом случае надо отталкиваться от функционала твоего приложения.

Нет универсальных методов и идеальных практик для всего.

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

В зависимости от задачи наилучшие подходы могут быть противоположными.

ООП нужно тогда, когда в логике твоей задачи явно присутствуют ОБЪЕКТЫ. Которых много, у которых есть внутреннее состояние, над ними проводятся какие-то действия.

По-настоящему ООП работает, когда у тебя много похожих, но в то же время разных объектов, часть кода общая, а часть кастомизированная.
427 1785817
>>5723
Это ты про рефакторинг говоришь, когда уже есть код и надо его приводить к бизнес процессам с оглядкой на сущности (о как).
А в Java/C# идут по пути описания бизнес процесса и связывании сущностей. А потом уже говнокод идёт.

https://pda.litres.ru/stiv-makkonnell/sovershennyy-kod-prakticheskoe-rukovodstvo-po-razrabotke-programmnogo-obespecheniya/?utm_source=google&utm_medium=cpc&utm_campaign=search_dsa_ohvat_f|2087774395&utm_term=&utm_content=433453034319{phrase_id}_{source}_{source_type}_{region_name}_9047028&param_2=987239&gclid=Cj0KCQjwp4j6BRCRARIsAGq4yMHzWtMBG8_-IJQlVOmXs-2QNL6XisjSVQyqx12MBRtSjqYiEKmNf-caAo2vEALw_wcB

Спиздите этот талмуд, будет понятнее.
428 1785823
>>5362
Аноны помогите
429 1785917
>>5823
Бота
430 1785919
>>5817

>Это ты про рефакторинг говоришь


все правильно он говорит. много задач которая решается тупо модулями с функциями без единого класса.
431 1785945
>>5919
Через обертки?
Я коннекторы все расширял через классы, потом с инстансами проще работать.
Типо self.connected = False, если соединение установлено, то True и тогда не приходится при старте сразу в Exception лезть.
Питон позволяет так делать это факт, но тогда надо хорошо документировать простую функцию.
432 1785950
>>5945
вообще не знаю о чем ты. В питоне в основе всего модули и много задач, где просто дергаешь модуль и ооп даром не нужен

вопрос всем
как организовать проект чтобы

python setup.py bdist_wheel

не засирал все на свете. ладно он срет на уровне где сам лежит, так еще и внутри рядом с пакетами создает projectname.egg-info

бесит
433 1785965
>>5720
Иди нахуй, я все смог в итоге.
434 1785967
>>5561
Пожалуйста, объясни что произойдет
435 1785977
>>5967
будет вызван pip для этого питона. ведь pip всего лишь модуль для питона.
когда в системе несколько питонов, что обычное дело для всяких там линуксов когда 2.7, 3.6 и 3.8 стоят и поди разбери где чей pip
436 1786060
>>5965
Самое сложное ещё впереди
437 1786077
>>5977

>поди разбери где чей pip


В принципе можно вызвать командой pip3 или pip3.8.

Если ставишь в виртуальное окружение что-то, то можно просто указать полный путь до pip соответствующего, и всё сработает как надо без активации окружения.
438 1786114
>>5917
В телеге? Или запилить веб-страницу?
13.PNG14 Кб, 457x358
439 1786118
Работяги почему на обратном пути звёздочка к строке не коннектится ??
440 1786120
>>6118
Ты кажись забыл первый символ к звездочке прибавлять
441 1786123
>>6120
А нахуя ? Возвращается результат рекурсии а я к нему звездочку прибавляю разве нет ?
442 1786125
>>6120
А всё понял опертор + же с возвращаемым работает значением
443 1786126
>>6120
Ужё 40 недель пытаюсь понять рекурсию, скоро сам у себя из жопы вылезу
444 1786127
Первую свою рекурсию я сделал в 18 лет.
Это была хуевая реализация алгоритма поиска пути в Macromedia Flash, который я сделал "из головы".
Но там я не передавал в новый вызов значение, массив с ценами пути хранился в глобальной переменной, а в самой рекурсивной функции были условия запуска следующего шага/остановки.
r.jpg35 Кб, 560x249
445 1786128
>>6126

>сам у себя из жопы вылезу


Главное чтобы без головы
446 1786135
>>6118
Пиздец духота. Пройди практику у хирьянова на рисование фракталов рекурсивно лучше. Нахуй тебе такие задачки. http://judge.mipt.ru/mipt_cs_on_python3/labs/lab8.html
447 1786161
Хочу поучаствовать в каком-нибудь проекте, например, чужом пэте. Стэк python, django, requests, bs4, немного vk_api, telegram-bot-api. Подскажите как найти в чем поучавствовать, либо может я кому могу пригодиться, с удовольствием приму участие
448 1786176
>>6161
а ты кто
449 1786180
>>5056
В первую очередь это удобная архитектура, когда nginx быстро обрабатывает большую часть клиентов и только при необходимости проксирует на вебсервер для джанго, так же мы стараемся максимально заранее формировать кверисеты и только когда нужно делать запрос к бд, просто чтобы не перенагружать систему
450 1786192
>>6176
Человек, который хочет найти проект, чтобы сделать что-нибудь интересно, стэк указал, разобраться с чем-то новым смогу
451 1786198
>>6161
это не стек, блядь. это перечисление навыков с курсов.
452 1786203
>>6161

>стэк


>requests


Слабоват стэк, добавь os, fnmatch, pathlib
453 1786222
>>6203
re, random, math
454 1786390
>>5917
Так какого бота ебана рот?
455 1786394
>>6390
скайнет вестимо.
456 1786410
>>0956 (OP)
сяпки
ЧТо делать если питонопараша выдает ошибки из Си и спп?
Думаю, опытные господа итт сталкивались с таким, когда библиотека на сишках, а обертка хуй пойми как наговнокодена на петоне.
457 1786415
>>6410
Гуглить.
458 1786417
>>6198
Да кому не похуй ей богу, реквестс это скорее про работу с апи. Мне нужно было написать навыки с курсов? Или раз уж стэк, то писать про nginx и gunicorn? Когда это нахуй не будет нужно
459 1786429
>>6410
Возможно ты поел говна не установил сторонние либы для ОСи. Как python-dev для линуха например
460 1786470
подскажите плиз какой нибудь хелпер для базы данных для тестов
ну чтобы код положил данные и я этим хелпером пошел и проверил что они там какие надо
ну и обратное - закинул в базу данных (не хочу скл городить) и выбрал тестируемым кодом

очень не хочется писать велосипед на 1 раз
461 1786602
Котаны, есть файл с 1.5 Гб логов от nginx, как его открывать и работать с ним, чтоб ничего не наебнулось? Грубо говоря, как итерироваться по строкам, чтобы весь файл разом не выгружался в память?
462 1786606
>>6602
okay google python read file line by line
463 1786612
>>6602
1 читаешь весь файл в память
2 сплитом разбиваешь на строки
3 делаешь словарь "номер - строка"

и потом уже итерируешь словарь
464 1786642
>>6612
ебать дебил
465 1786682
>>6642
признаю. я забыл отсортировать по ключу словарь. посыпаю голову пеплом )
466 1786698
Привет ребят, нужна помощь. Пишу код для телеграм бота с помощью pyTelegramBotAPI. Можно ли сделать функцию с помощью которой бот будет запоминать сообщения?(нужно для последующей передачи их в базу данных)
467 1786704
>>6698
можно
468 1786706
>>6704
Как только нажал кнопку отправить знал что этот ответ будет, переформулирую, как это сделать?
469 1786724
>>6706
нужно сделать функцию с помощью которой бот будет запоминать сообщения
470 1786726
>>6724

>Как сделать функцию?


>Нужно сделать функцию

471 1786733
>>6726
блин ну это вопрос из разряда "как положить бегемотика в холодильник"
ну а какого ответа еще можно ожидать
472 1786736
>>6706

> как это сделать?


открыть доку по либе
почитатьпосмотреть индусов на трубе
сделать
473 1786786
>>6706
ты пишешь, что тебе нужно потом сохранять в бд
возьми сразу сохрани в бд, зачем потом
474 1786787
Есть задача и есть моё наивное решение, которое проходит базовые примеры, но не проходит все тесты (они скрыты системой) и пишет, что неправильный ответ. Я не прошу за меня решить, но может посоветуете в чём может быть косяк и куда копать?
475 1786790
>>6786
А как сформулировать тремя запросами добавление данных в одну строку?
476 1786797
>>6790
охуенно конкретный у тебя вопрос
клиенты бизнес требования и то понятнее формулируют
477 1786798
>>6787
чтение инпута какое то странное.
просто не может не быть в инпуте не 2 значения
и [] не нужен
и проверка ниже не имеет смысла
478 1786800
>>6797
короче забей, я дегенерат. с формулированием запроса я разобрался, мне нужно сделать так, чтобы при написании команды последовательно считывалось три сообщения
479 1786831
нихрена не разобрался в библиотеках. Как мне набор конкуретных http/2 отправить? есть пример?
480 1786862
>>6831
на каких?
потому что вот я который знать не знает про хттп2.0 моментально нагуглил hyper и по одному взгляду на пример понял как в нем шлется конкурентные запросы
481 1786866
работяги, вопрос, как быстро в джуниор вкатиться??
482 1786868
>>6866
вдумчиво изучаешь основные концепции любого языка
чтобы аж очень вдумчиво и основательно в общих парадигмах

потом вктываешься в любой язык. Кроме нейросетей.
483 1786869
>>6868
пайтон вроде освоил, requests, json, и всякое такое. думаю этого не хватит, может для гита чето запилить?
484 1786875
>>6869
Запили тудулист
485 1786879
>>6875
в виде веб суйта?
486 1786881
Аноны, я правильно понимаю, что ФастАпи это просто еще один фласкоподобный фреймворк, в который напихали поддержку асинхронщины?
487 1786908
>>6787
Чёт я хуй знает что ты добиваешься своим словарём. На мой взгляд решается от противного: если есть буквы в 1м слове одинаковые И во втором слове на позициях этих букв буквы РАЗНЫЕ, то ответ - нет, иначе - да.
488 1786926
>>6908
Ты гений, спасибо
chrome-capture.jpg149 Кб, 691x663
489 1786962
>>6926
Не нихуя, не проходит, короче какая-то изъёбистая комбинаторная хуйня, тут одним проходом не получается, думал, что такой метод сработает
490 1786965
>>6868

> Кроме нейросетей.


Чому?
491 1786966
>>6881
Шо?
492 1786980
>>6965
Я ниасилил. Несмотря на быструю обучаемость
Конечно может оно просто не мое
493 1786985
>>6881
Вообще автор фреймворка на сайте написал почему он вообще взялся за FastAPI и да, с оглядкой на Flask. Простота и удобство разработки + всякие приблуды для документации в виде OpenAPI.
А что не так? Он от команды encode ещё и databases взял для примера. Это ж FOSS
494 1786990
>>6985
Это кстати не он твитил чет, типа его собеседовали куда-то на разраба и послали нахуй, потому что недостаточный опыт работы с этим фастАпи?
изображение.png10 Кб, 379x297
495 1786998
>>6962
так не канает?
изображение.png11 Кб, 389x311
496 1787005
>>6998
Забыл проверку чтобы много раз не проверять одну букву.
497 1787006
>>6990
Он.
Encode кстати и uvicorn тащат, они правда меня нахуй послали два раза: по поводу кастомного логгера (я хотел асинхронный въебать) и по поводу запуска uvicorn в виде child process, сами что-то там нахуевертили и теперь с 0.8.6+ так делать нельзя.
chrome-capture (1).jpg185 Кб, 1414x897
498 1787026
>>7005
Даже базовый не прошёл
499 1787033
>>6985

>А что не так?


Да нет, все так, просто смотрю на документацию и вижу практически то же самое, что и в каком-нибудь фласке/айохттп, не без своих фишечек, конечно, но в целом все то же
500 1787040
>>7033
Так уже ничего нового не выкатят. Либо uvloop и быстрые декодеры, либо комбайн all in one.
изображение.png14 Кб, 454x352
501 1787055
502 1787076
503 1787081
>>7076
Да условия вафлёрские
504 1787091
>>7055
я согласен с тем что просто нужно сверять буквы на их местах как выше писали
ну это если узнать "взможно ли"
а не сколько для этого надо преобразований
505 1787104
>>7091
Так в условиях же нет "сколько", там boolean 0/1 ответ
506 1787108
>>7104
там есть "выходные данные - 1"
а если правда ложь то не вдумываясь на коленке так

https://onlinegdb.com/rJeKPibQw
507 1787117
Аноны такой реквест

Покажите плис примеры хорошего кода на питоне как пример, можно с гита чтонить.

Хочу запилить свою аиб по советам анонов.
- Умею в хостинг и домены, есть опыт, пили доры. На чем можно сделать аиб чтобы разобраться.

Хочу также в работу питон погромистом. Что требуют, какие нужны знанния, что востребовано по нишам. Нужно знать как написать клиент-сервер, этого хватит?
508 1787118
>>7108
Объясни логику, пожалуйста, я что то не до конца понимаю ))
509 1787127
>>7076
Будь няшей, дай линк на тесты.
510 1787130
>>7118
если бы я ее понимал.

я заметил это

Входные данные: абаб ааах
Выходные данные: 0
Преобразовать нельзя, так как 'б' не сможет оказаться одновременно 'а' и 'х'.

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

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

и через зип идет обход букв, а charmap хранит соответствия встреченных букв было->соответствует и по повторной встрече буквы проверяет что целевая буква такая же, как была в первый раз
511 1787136
>>7118
то есть

если буква где то не совпадает, значит она была изменена
а значит она обязана везде не совпадать одинаково иначе в другом месте она будет заменена не на то.
а значит преобразование невозможно
512 1787141
>>7130
ааааа, всё понял, спс. Всё ясно зачем тебе get словаря ;)
513 1787148
>>7141
ну можно переписать if in
но ранний оптимизатор сказал "а ну быстро оптимизировать бл.."

но это туфта ибо смотря сюда

д ⇒ я (ааббяя) - промежуточная "я"
а ⇒ д (ддббяя)
я ⇒ а (ддббаа)

они явно хотят какой то преобразования учитвыющий алгоритм. а не такой " в лоб"
Screenshot37.png12 Кб, 1122x54
514 1787152
Что он от меня хочет?
Как установить этот промт в данную директорию? Можно ли изменить директорию? Что промт вообще делает?
515 1787165
>>7152

>Что он от меня хочет?


Чтобы ты питон установил
516 1787169
>>6787
Говнокод сломается уже на первой строчке кода номер 3.
517 1787173
>>7165
У меня уже стоит интерпретатор -__-
Как заставить пайчарм идти в другую папку?
518 1787177
>>7173
зайти в настройки проекта и указать нужное env или интерпретатор
519 1787185
>>7173
Проверь Path.
520 1787196
>>7185
>>7177
Окей, в настройках проекта я установил путь к директории с питон.ехе внутри, команды запускаются, Но откуда у меня взялась папка промпт и почему пайчарм туда лез? И вроде это важный пакет, да? Почему я просто не переустановил промпт в ту же папку?
521 1787207
>>7196
Потому что у тебя venv. Виртуальная среда свою копию интерпретатора делает и пэкэджи. почитай документацию, ладно? Даже у джетбрейнса она есть. Очень тупые вопроса начались. Неинтересно.
523 1787364
>>7148
Да вот у меня тоже чувство закрадывается что они хотят чтобы мы построили цепочку трансмутаций букв и уже согласно неё проверили. Но я рот ебал так делать, когда в задаче ни слова про это нет.
524 1787504
>>7127
Анкету заполняешь высылают доступ к системе тестов https://school.hh.ru/
525 1787506
>>7169
Да в тесте битые данные не даются, не в этом проблема была, а так это просто экономия времени, зачем что-то придумывать, если данные подаются всегда в одном формате
Тред утонул или удален.
Это копия, сохраненная 11 марта 2021 года.

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

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