Этого треда уже нет.
Это копия, сохраненная 20 апреля в 14:16.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
python.jpg279 Кб, 1200x1200
Тред про язык программирования Питон, #167 /python/ 2981203 В конец треда | Веб
Тред про язык программирования Питон, #167

ЗАПРЕЩЕНО ПОСТИТЬ КОД
шарь через https://online-python.com

Книжки:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6
https://yadi.sk/d/HQhhsBsq3TVRUq
https://yadi.sk/d/tArKKuQu3Kejuq

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

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

Вопросы-ответы:

— С чего начать изучать питон?
У питона намного лучше официальная документация, чем у большинства других языков. Есть там и учебное пособие для начинающих: https://docs.python.org/3/tutorial/introduction.html, неофициальный перевод на русский язык: https://digitology.tech/docs/python_3/tutorial/introduction.html (для питона версии 3.8, но разницы почти нет)

— Какие книги считаются лучшими?
На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью Python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.

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

— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.

— Какие веб-фреймворки стоит учить в начале двадцатых?
Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.

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

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

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

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

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

Шапка: https://goonlinetools.com/snapshot/share/#8gd2g1snu3l8i26k0bc6k9
Поменял - оставь ссылку.

🐍🐍🐍

2 2981206
🐍
3 2981211
Интересно, чё получится.
from __future__ import division
import sys
import time
import traceback
class Fibonacci:
class TimeoutError(Exception):
msg = "Execution time of %g seconds exceeded maximum of %g."
def __init__(self, time = 0, maxTime = 0):
self.parameter = self.msg % (time, maxTime)
def __str__(self):
return repr(self.parameter)
Name = "Fibonacci"
cache = "cache.txt"
maxCache = 1000
memory = [0, 1]
start = 0
maxTime = 0.01
maxBinet = 1475 # math range error at 1475
sqrt5 = pow(5, 0.5)
def __init__(self):
self.readCache()
def readCache(self):
"""
load fibonacci cache from file system
"""
f = s = None
try:
f = open(self.cache, "r")
s = f.read()
except Exception, e:
trace(e)
finally:
f and f.close()
if s:
self.memory = [int(x) for x in s.split(",")]
def writeCache(self):
"""
write self.memory to the file system cache
"""
a = [str(x) for x in self.memory[:self.maxCache]]
s = ",".join(a)
f = None
try:
f = open(self.cache, "w")
f.write(s)
except Exception, e:
trace(e)
finally:
f and f.close()
def binet(self, n):
"""
return the binet approximation of the the fibonacci number
"""
if n <= self.maxBinet:
self.start = time.clock()
sqrt5 = self.sqrt5
a = pow((1 + sqrt5) / 2, n)
b = pow((1 - sqrt5) / 2, n)
c = (1 / sqrt5) (a - b)
self.end = time.clock()
else:
c = self.exact(n)
return int(c)
def exact(self, n):
"""
return the fibonacci number at index n
"""
self.start = time.clock()
l = len(self.memory) - 1
m = n if l > n else l
a, b = self.memory[m - 1], self.memory[m]
for i in range(m, n):
b, a = a + b, b
self.memory.append(b);
t = time.clock() - self.start
if t > self.maxTime:
raise self.TimeoutError(t, self.maxTime)
self.end = time.clock()
self.writeCache()
return b
def getNatural(n = 0):
"""
prompt the user to input a natural number
"""
if not n:
while True:
try:
n = int(raw_input("Please enter a natural number (0 to exit): "))
if n >= 0:
break
else:
raise ValueError
except ValueError:
print "That was not a natural number. Try again..."
return n
def trace(e):
print "\nError:"
print "-"
72
traceback.print_exc(file = sys.stdout)
print "-" 72
print "\n"
def main():
fib = Fibonacci()
while True:
n = getNatural();
if n < 1:
del fib
break
try:
v1, t1 = fib.binet(n), fib.end - fib.start
v2, t2 = fib.exact(n), fib.end - fib.start
dv = ((v1 - v2) / v2)
100
dt = ((t1 - t2) / t2) * 100
success = True
except Exception, e:
trace(e)
success = False
if success:
s = """

Binet approximation:
%d (%g seconds)
Fibonacci number:
%d (%g seconds)
Difference ((B - F) / F):
%g%% value (%g%% time)
"""
print s % (v1, t1, v2, t2, dv, dt)
if __name__ == "__main__":
main()
3 2981211
Интересно, чё получится.
from __future__ import division
import sys
import time
import traceback
class Fibonacci:
class TimeoutError(Exception):
msg = "Execution time of %g seconds exceeded maximum of %g."
def __init__(self, time = 0, maxTime = 0):
self.parameter = self.msg % (time, maxTime)
def __str__(self):
return repr(self.parameter)
Name = "Fibonacci"
cache = "cache.txt"
maxCache = 1000
memory = [0, 1]
start = 0
maxTime = 0.01
maxBinet = 1475 # math range error at 1475
sqrt5 = pow(5, 0.5)
def __init__(self):
self.readCache()
def readCache(self):
"""
load fibonacci cache from file system
"""
f = s = None
try:
f = open(self.cache, "r")
s = f.read()
except Exception, e:
trace(e)
finally:
f and f.close()
if s:
self.memory = [int(x) for x in s.split(",")]
def writeCache(self):
"""
write self.memory to the file system cache
"""
a = [str(x) for x in self.memory[:self.maxCache]]
s = ",".join(a)
f = None
try:
f = open(self.cache, "w")
f.write(s)
except Exception, e:
trace(e)
finally:
f and f.close()
def binet(self, n):
"""
return the binet approximation of the the fibonacci number
"""
if n <= self.maxBinet:
self.start = time.clock()
sqrt5 = self.sqrt5
a = pow((1 + sqrt5) / 2, n)
b = pow((1 - sqrt5) / 2, n)
c = (1 / sqrt5) (a - b)
self.end = time.clock()
else:
c = self.exact(n)
return int(c)
def exact(self, n):
"""
return the fibonacci number at index n
"""
self.start = time.clock()
l = len(self.memory) - 1
m = n if l > n else l
a, b = self.memory[m - 1], self.memory[m]
for i in range(m, n):
b, a = a + b, b
self.memory.append(b);
t = time.clock() - self.start
if t > self.maxTime:
raise self.TimeoutError(t, self.maxTime)
self.end = time.clock()
self.writeCache()
return b
def getNatural(n = 0):
"""
prompt the user to input a natural number
"""
if not n:
while True:
try:
n = int(raw_input("Please enter a natural number (0 to exit): "))
if n >= 0:
break
else:
raise ValueError
except ValueError:
print "That was not a natural number. Try again..."
return n
def trace(e):
print "\nError:"
print "-"
72
traceback.print_exc(file = sys.stdout)
print "-" 72
print "\n"
def main():
fib = Fibonacci()
while True:
n = getNatural();
if n < 1:
del fib
break
try:
v1, t1 = fib.binet(n), fib.end - fib.start
v2, t2 = fib.exact(n), fib.end - fib.start
dv = ((v1 - v2) / v2)
100
dt = ((t1 - t2) / t2) * 100
success = True
except Exception, e:
trace(e)
success = False
if success:
s = """

Binet approximation:
%d (%g seconds)
Fibonacci number:
%d (%g seconds)
Difference ((B - F) / F):
%g%% value (%g%% time)
"""
print s % (v1, t1, v2, t2, dv, dt)
if __name__ == "__main__":
main()
4 2981215
5 2981247
>>2980739 →
>>2980800 →
я нащёль!! validate_default в конфиге модели, включит проверку дефолтных значений
там ещё есть validate_assignment для проверки при присвоении,
и strict которое... отключает автоматическую конвертацию?
типа "123" сможет конвертировать в int без strict
6 2981415
Кто нибудь из третда вкатился в ит на петоне и жанге? Как вы победили в конкурсе 666 откликов на место? Про такие истории успеха надо книги писать от кернигана и киесаки
7 2981446
>>2981415
Не надо метить в гугол и 300+к
8 2981456
>>2981446
На трейни с миллионом требований 500 откликов за 15к в Москве и это не гугол
9 2981466
>>2981456
Не ищи в москве
10 2981469
Как вы ищите я не понимаю. Буквально за пять минут нашёл
https://hh.ru/vacancy/90865664
https://hh.ru/vacancy/90657302
https://hh.ru/vacancy/91095852
12 2981545
>>2981415
Год назад вкатился. Повезло что на вакухе среди требований было одно очень специфическое не скажу ибо там неиронично деанон из-за которого из ~400 откликов реально релевантных было с десяток наверное. Если бы не эта вакуха то не уверен что вкатился бы вообще
13 2981569
>>2981545
Сколько учился, что учил? Сколько лвл?
14 2981588
>>2981469
По требованиям это больше фуллстак Главэльф, по-моему
15 2981591
>>2981415
Попробуй какие-нибудь курсы дающие реальный опыт работы, это то что и ищут работодатели
16 2981649
>>2981569
Тогда было 23 года. Учился ~4 месяца в формате "на выходных и вечером после работы", потом уволился и буквально на следующий день попал на трёхмеясчную стажировку в крупную галеру, но потом что-то случилось и весь Новый Год был заморожен из-за чего после стажировки не взяли работать. После этого ещё три месяца учился +/- всё свободное время и волею случая наткнулся на ту самую вакансию.

В порядке убывания затраченного времени, учил слудующее:

- Сам пихтон по книгам, Голубой Огонёкам, курсам, записям Стишок на табуреткеов;
- База compsci & SE- ОС, сети, алгосы и структуры данных, архитектура ПК, архитектура софта, паттерны, ООП;
- Линух (командная строка, назначение папок, пермишенсы, всё такое);
- Базы данных;
- Другие ЯП (жиес, голованг, ржавчина, элихир);
- Дженга, фласк, фастапи;
- AWS, докер, как захостить сайтик или сервис;
- CI/CD тулзы, линтеры, форматтеры, тайпчекеры;
- Три команды из гита;

Наверное может бросается в глаза что дженга и ко. в списке довольно низко но ретроспективно считаю что првильно сделал что много времени на это не тратил - вктунов по фреймворкам не сильно задрачивют насколько я могу судить
17 2981676
>>2981649
Чтот докуя выучил
18 2981739
>>2981649

>- База compsci & SE- ОС, сети, алгосы и структуры данных, архитектура ПК, архитектура софта, паттерны, ООП;


А как ты это учил? По ютубу или книгам?
19 2981779
>>2981676
Я же не говорю что я всё это в совершенстве выучил, скорее наоборот даже. Всего я до вката учился ~10 месяцев. На первый пункт списка ушло, скажем, 40% времени, на последний - ну пусть 3%, всё остальное где-то посередине. Допустим на compsci & SE ушло 25% - это 2.5 месяца. Ну что там за столько времни можно было выучить? Почему поиск в хэшмапе алгоритмически быстрее чем в списке и чем микросервисы от микрозаймов отличаются разве что

>>2981739
Это по книгам в основном
20 2981802
pyright или 🍾-lsp-server (или jedi нахуй?)? Почему?
Нет, не pylance, я neovim'ер
21 2981990
>>2981415
Фулстаком вкатился на джангу + реакт + линукс, ну и мишура всякая 🕛, цсс.
Сложно найти работу было, полгода искал. Учился где-то года 2.
30 лет, брат жив, бочку делаю.
В целом, если стараться и потратить кучу времени, то обязательно всё получится. Просто знаний нужно набираться, желательно на каких-то своих реальных проектах. Я аж свой форум зафигачил ради опыта и практики.
Но Джанга это такое себе, Зайчишкаы не очень нужны. Да и вообще Питон для вката так себе, как язык, из-за конкуренции.
22 2982715
Дангоняши, как Новогодняя ночьграунд пикчу правильно прикрутить?
<div class="movie_card" id="tomb" styles="background: url('{{ video.img_link }}');">
так не работает
23 2982718
>>2982715
background пикчу.
Ебучая макака
24 2982732
>>2982715
Это я тупой! Проебал вторую кавычку. Работает.
25 2982738
>>2982732
В том смысле, что работает с выносом тега стиля во вне:
<style>.movie_card {background: url("{{ video.img_link }}");}</style>
Сам с собой попиздел.
26 2982743
Пиши исчо
27 2982966
>>2981990
Сколько проектов показывал? Одного, в котором вся бабуйня присутствует, достаточно?
28 2983142
Скоро наверное буду в пет проекте требовать написать свой ютуб и иметь 100к пользователей в сутки. Иначе не возьмут на должность прСюрприз от Зайчикаки между базой и фронтом в какой нибудь нищенский интернет-магазин, да ещё и стажером без зп.
29 2983245
>>2983142
Володин скозал, что "дифицыт кадраф", значит дефицит, чё ты споришь с увожамемым человеком.
30 2983327
>>2983142
Ты бы знал, какой п-ц у переводчиков творится... Раньше, в 2010, чтобы переводчиком английского языка вкатиться, достаточно было алфавит знать, десяток неправильных глаголов и present simple / past simple.

А сейчас походу всю грамматику знать надо, словарный запас чуть ли не на B2, уметь речи политиков в оригинале понимать, и всё это на Зайчишку-переводчика.

Совсем кабаны берега потеряли
31 2983416
>>2983245
>>2983327
Можно свой проект запилить. Какие-нибудь боты, сервисы, интеграции на маркетплейсах.
32 2983458
>>2983416
Это манямир. Просто написать и задеплоить маловато. Нужен стив жопс, что бы это потом разлеталось. Ну или хотя бы друг антошка папкин сын с котлетой.
33 2983479
Пилишь пет проект чтобы было что показать барину и устроиться на 60к в месяц
@
Пет проект начинает приносить сначала 100к, потом 200к, потом 500к. Едва успеваешь открыть ИП
@
Ой мы готовы рассмотреть вашу кандидатуру, жаль конечно, что у вас нет профильного образования и в не Прочитали задачку школьной олимпиады
34 2983509
>>2983479
прошладка
35 2983839
Кто в сортах шарит, <script src="{% static '🥂/htmx.min.🥂' %}" defer></script> вот тут параметр defer дает мне возможность объявлять скрипт в голове, т.е. с ним можно все скрипты сразу в head засунуть по-расивому, а не как обычно: лёгкие вверху, тяжёлые в самом конце перед закрытием body, верно я понял?
36 2983923
>>2981476
даже не подавайте в эту контору. Я подал на Эльфа, сделал их тестовое, они меня даже заставили Голубой Огонёк снять, где я объясняю, как их тестовое работает блять. Через три дня дура в телеграмме пишет: "мы готовы взять вас стажёром, вы готовы?" Я ей говорю, как это, я выполнил тестовое на Эльфа, и подавался на Эльфа, чё случилось, дура? Молчит теперь, Шельма.

если всё-таки хотите пойти на стажировку, код к их тестовому можете спиздить на Новогодний Выпуске : очень много дурачков прямо так репо и называют ТЕАниматорВОЕ ЗАВЕЩАНИЕ ДЛЯ ООО ПРОСТЫЕ РЕШЕНИЯ, лол
37 2984084
>>2983458
Так не надо сразу метить на мильены пользователей, главное чтоб на пожрать хватило и норм.
38 2984087
>>2983923
Блять автозамены ржака
39 2984286
>>2983923

>ТЕАниматорВОЕ


Сделайте тред в /d/ кто-нибудь, пожалуйста. Ну это просто невозможно терпеть.
40 2984317
>>2981779

>Это по книгам в основном


Можешь посоветовать книжки? Может сохранилось где-то на компе.
41 2987535
Есть список словарей, как изменить значение словаря быстро и правильно?
42 2987542
>>2984286
Двачую этого. Моча, поясни, что это за хуйня вообще и нахуй оно надо?
43 2987596
>>2987542

>Моча, поясни, что это за хуйня вообще и нахуй оно надо?


Мимо анон
На праздниках надо отдыхать, а не на двачи писать... Закончатся праздники, всё это откатят, дальше сюда писать будешь
44 2988171
Объясните нубу, в какой-то момент писание хеллоу ворлдов и задач в духе "зделойте функцию шифр цезаря" в написание реальных сайтов и веб-бэкенда с джанго и прочей залупой? Я не могу нащупать границу, как вкатываться-то...
45 2988177
>>2988171
*в какой момент переходит

написал как DEBIL не прочитал че за хуйню написал
46 2988329
>>2983923

>Эльфа


>Новогодний Выпуск


>Аниматор


>Голубой Огонёк



Какой-то всратый «юмор». На моче ботан-инцел что ли?
47 2988408
>>2988171
Сначала ты осваиваешь базу, чтобы чувствовать себя комфортно в языке, потом осваиваешь технологии.

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

Хотя отдельно изучать HTML вёрстку полезно.
48 2988411
>>2988171
Если хочется уже оторваться от земли, но крылья еще маловаты - выбери один из практических курсов по джанге или фласку (для полного понимания это один хуй) или сразу в фастапи обмазывайся, о тут инфы сильно меньше. Смотри, ставь на паузу и тут де пиши прям то же самое. Только весь до конца. Что не понятно, пробуй находить в инетах и читать.
После чего любой другой точно так же. Потом третий... в какой то момент блевать уже будет тянуть от того, что ты это уже сотню раз видел и знаешь, вот тогда садись писать своё.
49 2988477
>>2988171
Не знаю твой уровень. Просто открой рандомные поделки из канала pythontoday на ютубе. Если сам примерно понимаешь всё, что он там лепит, что куда и почему, то можно двигаться дальше, как я писал. Если не раздупляешь, что там происходит - не выёбывайся, решай дальше задачки по своему курсу, что ты проходишь, ты не готов расчехляться. Это тебя не даром дрочат, казалось бы не нужной хуйнёй, это как кунг фу: ты носишь вёдра с водой по сто раз не просто так.

>>2988411 - кун
50 2988760
короче пидоры вы код всеравно не читаете поэтому кидать не буду
накидайте идей что можно добавить в игру и вообще какую сделать
хочу запилить консольную рпг
пока по мыслям
1. инвентарь
2. журнал
3. квесты
4. взаимодействия с неписями
5. сбор лута/ресурсов
че ище там в этих рпг бывает
51 2988791
>>2988760
Здраствуйте. Я, Кирилл. Хотел бы чтобы вы сделали игру, консольное РПГ суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают нагибают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш они преобразовываются в 3-хмерные деревья. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого…). Ну а если за злого… то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку. Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 - зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 - зона злого… (в горах, там есть старый форт…)

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

P.S. Я джва года хочу такую игру.
52 2988797
>>2988791
dwarffortress...
53 2988840
>>2988760
Не ўжывай бібліятэку msvcrt, бо яна толькі для вакенцаў. Ужывай якуюсь readkeys каб працавала ў іншых сістэмах.
54 2988876
>>2988840

>Не ўжывай бібліятэку msvcrt


у меня ее там нет
55 2988972
>>2988477

>Если сам примерно понимаешь всё, что он там лепит, что куда и почему, то можно двигаться дальше, как я писал.


Кстати, этого может не хватать. Я по должности очень много читаю код, если понимаю предметную область, а язык и стиль не слишком эзотерические, то понять, что и как там делается - легко. Почему так - как правило тоже понятно. А вот "написать такое же" - это отдельная история.
56 2990351
Почему все вокруг кудахтают, что порог вхождения в фастапи ниже, чем в джанго. Это не так! Посидел 2 дня, та ещё ёбань, этот ваш фастапи. Джанго сильно проще раздуплить.
Что думаете по этому поводу, анонсы, стоит ли доставлять дискомфорт своему гладенькому мозгу ради асинхронности?
57 2990458
>>2990351

> Почему все вокруг говорят, что порог вхождения в фастапи ниже, чем в джанго


Наверное, это потому, что фастапи это про чистую серверную разработку в то время как джанго это ещё и дзиндзя с фронтом.

> стоит ли доставлять дискомфорт своему гладенькому мозгу ради асинхронности?


Мне лично FastAPI нравится не за асинхронность, а за то, что он даёт АПИ удобное, искаропки. Если ты хочешь делать не веб, а что-то ещё, например, консольное или десктопное приложение или прилождения под разные системы (web на десктопах и отдельные клиенты для мобильных платформ), то АПИ - маст хэв.
58 2990471
>>2990351
Сравниваешь две разные вещи. Если тебе трудно, значит у тебя ещё нет понимания где применить фастапи.

>>2990458
Жинжа это отдельный пакет и его можно применить в фастапи
59 2990472
>>2990458
У джанго это drf. Ставится в один pip install, так что тоже искаропки.
60 2990476
по сути фастапи - это просто один дрф от джанги =)
61 2990825
>>2981415
Россия страна чудес нахуй, здесь легче вкатиться в "сложный" энтерпрайзный стек вроде Java/c#, чем в "легкие" js или python. Спасибо государству за бесплатные курсы домохозяйкам.
62 2991069
>>2990825
Причем тут бесплатные курсы и сложность языка? Компания выбирает стек исходя из задач. В России студии любят php, ruby и java, а питон используют в нейросетях.
63 2991208
>>2981203 (OP)
Всем привет! Всех с наступающим рождеством!

Пишу бота, в задачи которого будет входить рассылка видео, и наткнулся на ограничение телеграма: максимальный размер видео - 50 Мб. Пытался использовать способ, описанный в статье
https://habr.com/ru/articles/348234/
идея коротко - создать агента, который будет работать в связке с тг-ботом и отправлять видео, но так, как это описано в статье - сделать не получилось.
Сделал таким образом
https://pastebin.com/iXUVghhf
И оно работает (отсылает сообщение, ну или видео). Вот только мне для нормальной работы нужно запустить это в середине бота, и это проблема.
Если вставить эту конструкцию в функцию бота, то при выполнении вываливается ошибка:
"There is no current event loop in thread 'WorkerThread2'." Как я понял, это из-за специфики работы асинхронного кода
Вопрос: как сделать так, чтобы работало? Можно ли написать какую-то функцию без асинхронности, которая отправит сообщение (видео) от агента боту (это было бы идеально, т.к. нужно отправлять видео и отдельно делать что-то для отслеживания не хочется)? Можно ли как-то заставить асинхронную функцию работать в обычном телебот боте?
Бот напписан на подобии этого https://habr.com/ru/articles/697052/
64 2991227
>>2991208
aiogram
65 2991277
Аноны, у меня есть вот такой класс.

class Test:
....lst=[]
....def __init__(self):
........self.some()
....def some(self):
........self.lst.append("foo bar")

out = Test()
Что изменить внутри класса, чтобы "out" был списком "lst".
Изменения можно вносить только в тело класса.

#---------------------------

В общем суть такова что немного потыкавшись получилось всё сделать изменив метод new таким образом.

def __new__(cls):
....super().__new__(cls).__init__()
....return cls.lst

1) Оцените такое решение, безотносительно самой идеи что класс возвращает не свой экземпляр а какуб-то хуйню. Вот есть задача и вот такое решение в три строки. Как оно? Можно лучше?

2) Можете пояснить к чему обращается super()? Класс же не наследуется.
изображение.png18 Кб, 568x379
66 2991299
>>2991277
Почему нельзя отнаследоваться от list или collections.UserList?
изображение.png6 Кб, 326x171
67 2991302
>>2991299
Или так.
68 2991323
>>2991299
>>2991302
Наследоваться от левого несвязанного класса только чтобы получить эту фичу (вместе с другими, которые не нужны). Это как-то грязно. Хотелось бы просто реализовать эта внутри класса явным образом.
69 2991352
>>2991323

>от левого несвязанного класса


Так ты для своего инстанса хочешь получить поведение (или интерфейс) списка, каким образом ты собрался это делать внутри класса без реализации всех методов?

>вместе с другими, которые не нужны


Так переопредели их, можешь в отдельном миксине.

Как раз подменой new ты делаешь неявную несвязанную грязь, у тебя все инстансы будут ссылаться на атрибут класса и иметь интерфейс списка, при этом сам класс не является им.
70 2991371
Боевые ананасы, как часто вы используете структуру Set в бою и например в каком случае?
71 2991373
>>2991352
Ну хуй знает, наверное ты и прав. Когда видишь вызов класса без метода ожидаешь что это будет его инст. Но тут совсем другое, а пример с list() я просто привел чтобы было проще продемонстрировать что мне нужно.
В общем наследоваться тоже нельзя, нужно чтобы класс возвращал что-то кроме своего экземпляра. Оцени то решение с super() и поясни куда он там сылается плз.
72 2991387
>>2991371
Очень редко.
Например когда надо запоминать строки, какие-нибудь пути к файлам, но в словаре хранить нечего: вместо key:None словаря используешь set.
73 2991395
>>2991227
В смысле ты предлагаешь переехать на другого бота?)
Ну, я читал, что у нормальных людей как раз aiogram используется, но:
1) это займет некоторое время, а с моим уровнем даже чуть больше, чем некоторое
2) хочется все же сделать что-то и заставить работать текущее решение, победить, так сказать.
74 2991411
>>2991208
код давай и выхлоп ошибки. рандомные статьи никто читать не будет. з.ы.: телетон красивее и функциональнее аиограм
75 2991469
>>2991411
Код ошибки
"There is no current event loop in thread 'WorkerThread2'."
Сам код (постарался выделить наглядно)
https://pastebin.com/R3PmfV0c
76 2991584
>>2991411
Решил тут обмазаться телетоном, и чет или лыжи не едут, или я…
А есть пример, как реализовать диалог? Ну, не обработку какого-то сообщения, а цикла этих сообщений?
К примеру, мне нужно задать пользователь несколько вопросов, и на основании этого сгенерировать ответ
Как это реализовать? Как мне сохранить данные пользователя? Словарь не ключом айди пользователя не канает.
Наверняка это как-то по-простому реализовано, но я прямо не нашел ни одного +- похожего решения
Стикер127 Кб, 430x508
77 2991587
>>2981203 (OP)
Бариста вкатун перекатывал? Так старался, что не указал тэг для каталога доски и теперь этот ИТТ тред не виден из меню поиска по тредам.

Найс джоб.
78 2992246
>>2991371

>Боевые ананасы, как часто вы используете структуру Set в бою и например в каком случае?


Собственно, использую, когда мне нужно буквально иметь список чего-то с возможностью туда что-то добавить, убрать или проверить наличие там соответствующего объекта. Например, использовал в скрипте для решения судоку, чтобы хранить там список возможных значений в ячейке, изначально задаю его в виде "set(chars)", где chars - строка со всеми возможными в головоломке символами (в классике - "123456789"), при проверке ячейки - проверяю его len и, если он больше 1, то запускаю цикл по его содержимому для проверки, ну а при простановке чара - удаляю его из строки, столбца, ячейки.
Этот пример тут это когда я ещё учился начал, для практики написал, опенсорса с тех пор считай не было, по крайней мере такого, где были бы сеты: https://github.com/V-Laeda/sudoku/blob/master/sudoku.py
Тащемта пример... ну, такой себе, мне не очень нравится, как получилось (в первую очередь оформление, но до тюнинга руки не доходят), впрочем по большому счёту иначе эту задачу хуй решишь, она всегда сводится к тому, чтобы мотыляться по трёхмерным таблицам во всех направлениях, так что что-то кроме 7-кратно вложенных циклов это можно реализовать только вложенными методами. Зато очень нравится универсальность, вот она получилась просто ВАХ.
79 2992321
>>2991587
Ты почти видел, что тред почти месяц в бамплимите и не перекатил. А он хотя бы перекатил. Тэги не имеют принипиального значения, но если попросить, модеры могут их добавить.
80 2992351
>>2992321

>Ты почти видел


Ты видел
81 2992676
>>2991411
Телетон это лишь реализация апи телеги, он предназначен для юзерботов, имитации пользователя, минимально поддерживает бот апи, кроме фильтров и тонкой обработки сообщений там нет ничего. А аиограм это уже серьезный комбайн для бот апи с поддержкой собственных фильтров, миддлварей, машины состояний, веб хуков, клавиатур, языков, инлайн запросов, оплаты и тд
82 2992750
>>2992676
https://docs.telethon.dev/en/stable/concepts/botapi-vs-mtproto.html?highlight=aiogram#migrating-from-aiogram

https://docs.telethon.dev/en/stable/concepts/full-api.html

https://tl.telethon.dev/ - тут ищи payment с примерами.

ключевая разница в том, что telethon реализует сам протокол телеги (mtproto) и общение идёт непосредственно с дата центрами, а не с в серверами, которые предоставляют http api для (только) ботов.
83 2992828
Аноны, подскажите:
q = ("1", "2", "3", "4", "5")
w = (_, *q)
print(w)

как правильно исправить ошибку?
предполагается сделать вывод: ("2", "3", "4", "5")
84 2992842
>>2992750
Это я понимаю, базовая реализация с хегдлерами сообщений и фильтрами, а где всё остальное? Где middleware чтобы удобно и безопасно подключить базу? Где конечные автоматы, чтобы помнить контекст диалога? А колбек кнопки можно в меню собрать чтобы сделать красивый бесшовный интерфейс? Телетон годится как дополнение к аиограму, но никак не замена
85 2992844
>>2992828

>>> q = ("1", "2", "3", "4", "5")


>>> _, *w = q


>>> w


['2', '3', '4', '5']
86 2992845
>>2992828
Используй срезы братан
q[1:]
87 2992850
>>2991584
Бамп ?
Не поверю, что для создания простого бота с диалогом нужно обмазываться aiogram и телетон не подойдет

Или про примеры с payment - это было мне?
88 2992853
>>2992845
Точно! вот я баран.
>>2992844
Спасибо!
89 2992893
name = ("Вася", "Маша", "Иван", "Петя")
piska = ("хуй", "пизда", "хуй", "идиот просто", "", "")

z = zip(name, piska)
print(z) # ('Вася', 'хуй') ('Маша', 'пизда') ('Иван', 'хуй') ('Петя', 'идиот просто')

for i,j in z: print( i,j )
""" Вася хуй
Маша пизда
Иван хуй
Петя идиот просто
"""
Вот этот for не выводится. Выводится, только если закомментировать строку print(
z)
Почему так?? zip одноразовый??
90 2992895
print( звезда z )
91 2992920
>>2992893

>zip одноразовый


Да, это не list, это просто Iterable
92 2992999
Джангисты на месте?
Есть у меня index.hml, в котором есть:
{% for card in cards %}
{% include 'card.html' %}
{% endfor %}
как правильно пробросить данные из card в card.html?
Сейчас я делаю так:
{% for card in cards %}
{% with data=card %}
<div>
{% include 'videos/includes/card.html' %}
</div>
{% endwith %}
{% endfor %}
Без дивов почему то не работает
Это правильно?
93 2993011
Блять кто-нибудь может обьяснить мне, что такое метод половинного деления? Как он работает? Второй день голову ломаю, и да, я тупой.
94 2993013
>>2993011
Бля, это школьная тема.

Метод работает только с отсортированными данными.
Берёшь и сраниваешь элемент в середине массива.
Если он меньше искомого, все до него отсекаешь и в оставшейся части опять сравниваешь средний элемент.
А если он был больше искомого, то отсекаешь другую половину и в оставшей части опять сравниваешь средний элемент.
Короче говоря, за каждую итерацию ты отсекаешь половину вариантов. И в результате быстро находишь искомы элемент.

Если данные не отсортированы, то этот алгоритм нихуя не работает. Вообще не применим для неотсортированных данных.
95 2993015
>>2993013
Это т.н. бисекция из матана, когда ты делишь интервал пополам и приближаешься к решению уравнений. На этом основан алгоритм бинарного поиска который описал анон выше.
Это реально самое простое что есть, дальше только сложнее будет, не лезь лучше, наверное не твое.
96 2993016
97 2993080
>>2991371
Только в комбинации len(set()) и sorted(set()), когда надо посмотреть на какую-нибудь коллекцию в которой дохрена повторов
98 2993103
>>2992999
изучи про макросы и наследование шаблонов
99 2993107
>>2992999
>>2993103
то есть конкретно в этом случае тебе надо сделать макрос условно card, который принимает параметр data и делает то, что тебе нужно
{% macro macro_card(data) %}
...
{% endmacro %}
###
{% from 'macro.html' import macro_card %}

{% for card in cards %}
<div>
{{ macro_card(card) }}
</div>
{% endfor %}
100 2993112
>>2993013
>>2993015
Спасибо вам за ответы и советы.
101 2993251
>>2992850
Подскажите, как хотя бы это гуглить?
Как можно сохранить состояния между функциями?
Ну, к примеру, если я запрашиваю у пользователя некоторые параметры, у меня же каждая функция ожидает определенное сообщения. Или просто в одной функции все действия делать?

Или на aiogram уйти, пока не поздно?
102 2993335
>>2993251
файлы, бд, память.
103 2993480
>>2993335
А как?)
Есть какие-то примеры?, Как это реализовать? Я дебил просто, обезьяна, мне нужен практический образец, чтобы понять
104 2993493
>>2992920
решил проблему так:

w = [z]
print(
w) # ('Вася', 'хуй') ('Маша', 'пизда') ('Иван', 'хуй') ('Петя', 'идиот просто')

Может это не по-питонячи?
105 2993497
>>2992999
заебали своими онлайнами уже, джангами и прочим говном фласковым.
106 2993799
Ёбаный блять по голове, каким должно быть значение у этого поля в джанге: DateTimeField? Уже весь интернет облазил. Хоть бы кто экзэмпл где написал
107 2993800
>>2993497
На питоне ты что блять еще собрадся писать кроме вэба и нейронок?
108 2993890
>>2993800
Двачую, но нейронки это даже не программирование.
109 2993934
>>2993890

>не программирование


Да. При чем даже, если ты не сиськи рисуешь, а конкретно в свои слои пытаешься. Чистейшие эксперименты с хуйнёй.
Схемы в ComfyUI интересно составлять, остальное хуйня полная, даже если всё, что оно может дать у тебя получилось сделать - это всё равно никакого счастья не приносит.
Выкатился обратно в веб из этого говна.
image.png1,3 Мб, 1280x720
110 2993944
>>2993934
Пикча отклеилась.
Моя матрица с перебором всех возможных пар контролнетов.
Осторожно. Этот аутизм затягивает.
111 2993949
>>2993944
Сычев, ты почему в телеграме не отвечаешь?
112 2994257
>>2993800
Отсоси. Делаю оффлафн АРМ работника кассового, postgres и gui разное.
Вы там все обдолбались уже по онлайнам???

Можно ещё делать программы. А не говно онлайновское. Это если уже забыла школота про то, что и такое бывает!
113 2994539
>>2994257
Шиз, спок
114 2994542
>>2994257

>postgres


Т.е. ты с базой работаешь НЕ через ОРМ? Поздравляю (нет)

>gui разное


Т.е. ты делаешь уёбищный гуй на один разок? Поздравляю (нет)

>АРМ


это на плюсах быстрее работает

>кассового


это онлайн

>программы


Джанга - это ОРМ (postgres) и красивейший и гибчайший вэб-интерфейс (gui разное), который оборачивается под твой дэсктоп кучей разных способов, в одном флаконе. Хочешь - вэб пили, хочешь - оффлафн АРМ работника кассового, postgres и gui разное.
115 2994551
>>2994257

> пилю свои личные говноподелки


Ты буквально заявил на весь двач, что работаешь в трубу и срёшь на голову тому, кто придёт после тебя
116 2994666
>>2994542
Ничего плохого не вижу, чтобы работать с базой на стейтментах, в компаниях редко любят орм
117 2994679
>>2994542
ЛОВИТЕ НАРКОМАНА
118 2994764
>>2994666
Устраиваешься в компанию, а тебе дают вот такие вот поделки и ебись с ними, как хочешь
119 2995137
>>2994764
1) должна быть нормальная документация, и комментарии в коде (если есть выебонные конструкции)
2) должен быть программист-технолог (или как он там зовётся), который именно в курсе технологический процессов, куда и какие данные идут
3) не иди в такие ёбнутые компании где нет п.1 и п.2

>>2994539
сказать нечего?
>>2994542

нахуй мне орм на 1-5 работников-то?? Для повыёбываться какой крутой???

Плюсы-минусы... Я и пишу на пистоне, мне скорость не нужна, это не игрушка какая-то

Кассовое - это НЕ онлайн, идиот, ты тему не знаешь совсем.

въёб интерфейс не так важен, как гибкость формочек (смотри pysimplegui и сравни с ui от PySide и QT !!)
120 2995140
>>2994551
ну заявил, и что страшного-то? Моей поделкой я и мелкая фирма будет пользоваться. Это не коммерч. проект за 100500млрд.
121 2995160
>>2994257

>оффлафн АРМ работника кассового


Который будет стучаться в API через кролика, которое будет стучаться в БД. И серверную часть придётся писать на чём-то типа фастапи/вдаска/джанги.
>>2994542

>Т.е. ты с базой работаешь НЕ через ОРМ? Поздравляю (нет)


Никого не собираюсь ни в чём убеждать. Но я лично, покурив ОРМы, пришёл к выводу, что они в целом неудобны и проще разделить уровни ответственности, если работать с БД через хранимки для записи и вьюшки для чтения. Но у меня важный нюанс: я имею некоторый бэк с базами.
122 2995167
>>2995160
Хранимки и вьюшки означают, что ты размазываешь логику по базе и по коду.
Хранимки и вьюшки это дичайшее легаси тех времен, когда предполагалось, что база будет содержать всю программу, а пользователи будут просто подключаться через консоль. И вот чтобы они не писали ебических запросов, и придумали хранимки и вьюшки.
Короче говоря, за использование вьюшек и хранимок в 2024 надо вырезать ноздри.
123 2995234
>>2995137

>нахуй мне орм на 1-5 работников-то?? Для повыёбываться какой крутой???


Друк, это не так работает. Ты как раз выёбываешься не используя ОРМ. Сегодня у тебя 1-5 работников, завтра (на другом проекте или втором или на этом же) 100 работников, это тебя вообще не ебёт, потому что у тебя везде всегда всё стандартизировано. Даже если тебя не станет, другой челик придёт и моментально врубится в процесс при любом раскладе, а потом ты вернёшься и точно так же врубишься во всё то, что этот челик делал, потому что всё СТАНДАРТНО, а не самописно, в зависимости от настроения и религиозных взглядом
124 2995256
>>2995137

>Кассовое - это НЕ онлайн, идиот, ты тему не знаешь совсем.


Здрасте, ёбана!
Я с гринбоксами работал, у меня по Москве около 300 точек на питерской ферме висят. Попробуй придумать хоть один оффлайн-вариант кассы, что бы чеки можно было официально не выдавать покупателю.
Ну хуй знает, может у тебя какая то древняя касса и она в оффлайне.
sage 125 2995281
>>2995167

>Короче говоря, за использование вьюшек и хранимок в 2024 надо вырезать ноздри.


Иди нахуй. А что, если одни данные во время обновления надо конвертировать в другие данные? Например, точку для геолокации конвертировать в другой формат. Тут и пригодятся хранимые процедуры
126 2995344
>>2995167

>Короче говоря, за использование вьюшек и хранимок в 2024 надо вырезать ноздри.


Это речи современного кодера. Просто от необразванности и незнания, что там на бэке вообще творится и как этим пользоваться.
Что поделать, крудошлёпы - такие крудошлёпы.
127 2995449
>>2995137

>pysimplegui и сравни с ui от PySide и QT


А теперь смотри гибкость формочек на html+css+js
Да, и в дэсктоп твой любимый это добро можно завернуть.

Вот и получилось, что ты ходишь вокруг да около, вместо того, что бы сесть и на джанге это реализовать. При чем познав это однажды, будешь юзать везде и во всём этот один и тот же инструмент.
128 2995509
аноны, у меня проблема:
есть питоновский файл, который надо сделать exe файлом. pyinstaller вроде как справляется, но я использую библиотеку speech_recognizer и он ее найти не может. уже все перепробовал, но не ебу че делать, подскажите
129 2995511
>>2995509
еще пытался просто через командную строку запустить файл, но она тоже ругается из-за threading в коде, но зато speech_recognizer работает нормально
130 2995536
>>2995344
Вообще доля правды в его словах есть. Эти технологии на самом деле придумали в лохматые года, именно чтобы облегчить работу пользователям с сырыми запросами. А если тебе не надо руками запросы составлять, тогда уже потребность сильно меньше.

Больше теоретизирую. Вот вьюшки как минимум позволяют абстрагироваться от конкретной реализации БД, то есть ты можешь что-то внутри переделать, сохранив простой интерфейс без изменений. Правда я сомневаюсь, что с ОРМ это оправдано, ОРМ и так знает структуру базы, а ещё с вьюшкой как-то дружить. И с ОРМ несложно просто метод нужный реализовать, который любой сложности запрос сделает внутри.

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

Вот орм - как я понимаю, она представляет собой надстройку над sql в виде питонового кода - т.е. я могу писать запросы через методы орм-библы. А это работает только в том случае, если базу поднимаю я сам для этого проекта? Если у меня есть какая-то внешняя база, в которую я просто хожу по хттп, орм тоже можно/нужно подключать?
132 2995670
>>2995586
С орм ты один раз пишешь модель, которая описывает таблицу в виде питон класса и дальше всю дорогу используешь эти модели, чтобы управлять записями в базе. За счёт отказа от чистых запросов, кода станет меньше, он будет более читабельным. С другой стороны сам орм бывает трудно готовить, особенно если это алхимия или если ты решил в процессе поменять саму базу, то орм может сломаться или обосрать тебе данные в базе. Палка с двумя концами, оба в говне. Используй орм в личных и небольших проектах смело
133 2996136
>>2995586
Любая ОРМ несколько уровней абстракции даёт.

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

ОРМ обычно (алхимия, джанго в том числе) обычно позволяют как полностью автоматический режим, так и тюнинг на высоком уровне, чтобы избежать лишних запросов (prefetch всякие), так и выполнение просто сырого SQL для каких-то запросов.В зависимости от того, что нужно в конкретной ситуации.

>Если у меня есть какая-то внешняя база, в которую я просто хожу по хттп, орм тоже можно/нужно подключать?


Что ты имеешь в виду под "хожу по http"? Там какое-то API уже есть? Тогда ты не прикрутишь ОРМ уже, потому что SQL от тебя спрятан.
134 2996195
>>2995670
>>2996136
вообще смысла в ORM не вижу, если модели для каждого запроса генерируются сами автоматически
вот либа: https://github.com/racinette/querky
135 2996605
>>2996195
порнуха какая то
136 2996925
>>2996605
ну дрочи модельки дальше, модельер
137 2997025
>>2996195
Не понимаю что там за поделка, смотрится как попытка создать свою собственную ОРМ

Вообще, в сложном проекте ты или используешь стандартную ОРМ, или изобретаешь свою собственную. Но разумнее освоиться со стандартной.

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

Без ОРМ можно, конечно, иногда так проще, если у тебя своя система классов, которые надо как-то сложно дружить с ОРМ иерархией, известная проблема.
138 2997029
>>2995160

>Который будет


Не будет. БД оффлайн, или по сети, или по инету по статике на роутере. Я на такое количество гигабайт ещё не заработал.
Хуй в пизду, а не жданга. Дерьмовое решение. Будет стучаться postgres по айпи статике. И потом выдаваться по PySimpleGUI
Мозг от фласк и джанга совсем атрофировался??
139 2997030
>>2995256
ты не понял, я делаю десктоп для АРМ работника, типа 1С-склада, если так понятнее. Я не делаю онлайн ОФД сервисы.
140 2997031
>>2995167
Согласен, сегодняшней школоте это уже трудно даётся.
Ну хотя бы попробуйте поизучать тему подсоединения внешних таблиц тогда.
141 2997032
>>2995234
Ты в курсе про офлайн авторизацию?? Хоть на уровне проги, хоть на уровне postgres (БД не важна)! Как это влияет на кол-во юзеров?? Если транзакции правильно написаны.
Ваш этот ОРМ - это просто надстройка, синтаксический сахар, и ВСЁ.
Да, и ещё, стандартизация - это ты загнул, это не к орму, а вообще к культуре написания кода, и к технологу проекта.
142 2997034
>>2995449
Я не пишу онлайн принципиально. Идите в ад.
143 2997035
>>2995509
>>2995511
Выдал бы какая ошибка там. Может переустановить pyinstaller и твою либу тоже.
144 2997050
Как мне сделать dict в котором ключами будет weakref?
Ругается что TypeError: unhashable type: 'memmap'
Ну так я знаю что оно без хеща, меня вполне устроит если идентичность ключа будет сверяться по id объекта пока объект жив. Почему так нельзя?
145 2997053
>>2997050

>Weak references are hashable if the object is hashable. They will maintain their hash value even after the object was deleted. If hash() is called the first time only after the object was deleted, the call will raise TypeError.


>Weak references support tests for equality, but not ordering. If the referents are still alive, two references have the same equality relationship as their referents (regardless of the callback). If either referent has been deleted, the references are equal only if the reference objects are the same object.


Если вкратце: __eq__ там всегда определён, а __hash__ - нет. В питоне фоллбек на сравнение id происходит, только если ни того, ни другого нет.
146 2997186
>>2997034
Да да мы уже поняли, что ты не можешь в онлайн, хватит кукарекать
147 2997339
>>2997050

> Как мне сделать dict в котором ключами будет weakref?


https://docs.python.org/3/library/weakref.html#weakref.WeakKeyDictionary
148 2997702
>>2997034
При чем тут онлайн? Ты можешь пилить ЛЮБЫЕ кастомные формочки, максимально гибкие под десктоп. Так же можешь взять из джанги только drf, если тебе апи нужен или только орм, что бы удобно работать с базой и при этом оставаться в своём десктопе полностью, в оффлайне
149 2997717
>>2995586

> у меня есть какая-то внешняя база, в которую я просто хожу по хттп


Это значит кто то, кто дал тебе апи - настроил у себя на сервере апи (drf) например. Это чужая база, не твоя, ты там и не залезешь со своей орм.
Другое дело, если у тебя есть данные сервера, порта, юзера и пароль конкретно для доступа к базе - то обращаться к базе ты можешь через орм, как и через чистые запросы
150 2997732
>>2996925
Вот все велосипеды блять перепробует, лишь бы не вникать в что то стоящее, потому что СЛОЖНА. Всё равно все дороги тебя приведут в джангу или фастапи. Первое проще.
151 2998048
>>2997025
ты сказал, что не знаешь, что это, а потом накатал дефолтное полотно: "используйте уже готовые ОРМ, не пишите свои"
это не ОРМ, пахомыч, поэтому твои аргументы - говно
152 2998054
>>2997732
орм - это сложно? а, точно, поэтому его советуют любым даунам-вкатусям
может, пора наконец вырасти до SQL?
153 2998068
>>2997025
вот статья про либу на русском
https://habr.com/ru/articles/781982/
154 2998161
>>2998054
затем и советуют чтобы дауны своими кривыми ручонками в sql не лезли и не накодили там решето
155 2998437
>>2998048
>>2998068
Посмотрел статью поверхностно, почитал комменты, посыл автора такой, что не осилил ОРМ, решил что-то своё придумать.

Концепт сомнительный. Если у тебя несложная база, то в принципе нормально вообще без ОРМ. На питоне по крайней мере. Когда база большая, то проблема вот эта вот система не решает, которые решаются через обычные ОРМ. Там сразу же говорится, что нет поддержки диалектов разных БД, например.

И нафиг такое нужно? Там много чего ещё нет.
156 2998450
Сидят какие-то тупни и обсуждают преимущества и недостатки орм против sql, другой кассу пишет и ненавидит веб, третий пытается нейронку в exeшник упаковать. Хорошо что вы долбоёбы сидите тут и не пытаетесь учиться, а занимаетесь хуй пойми чем, не дай бог вас наймут куда то хотя бы на стажировку.
157 2998468
>>2998450
в споре рождается истина, а у твоей мамы родился долбоеб
158 2998471
>>2998437
вся проблема орм в самом орм

ты делать запросы нормально можешь только по таблицам, а про джоины забудь, потому что при джоине, агрегате и ТД (любая человеческая функция sql) рождается другой тип данных
в чем толк костылей, которые пытаются впихнуть "невпихуемое", т.е. результат запроса в объект рекорда таблицы?

мне наоборот кажется, что орм - это для неосиляторов sql, которым обязательно, чтобы все было классом и объектом

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

при поддержке всех диалектов, ты автоматически скатывается до наименьшего общего доступного функционала. сейчас не вспомню год, но отчётливо помню, как на SO видел вопрос, как сделать UPSERT в алхимии. и челы всерьез отвечали, что этого нельзя сделать, потому что в sqlite ещё не завезли. ну и предлагали селект с if not exists инсертом на стороне питона делать. race condition? не, не слышали.

вывод лично для меня ясен: выбери базу postgres, oracle, mysql - похуй. и пиши на диалекте нормальный sql. не еби себе мозги. ты будешь видеть, что исполняется, потому что ты это написал.

orm хоть и покрывает 80% запросов (крудиков), но те 20% (n+1 ам-ням орм абстракция века, течет как мать админа), с которыми ты будешь ебаться с дебагером и логгером - они того блять не стоят. особенно, когда есть такая удобная библиотека, которая тебе тайп хинты автоматически предоставляет прямо из базы.
159 2998507
>>2998471

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


Как это "забудь про джоины", когда это вообще основная фишка ОРМ, что они сами тебе джоин-запросы составляют? При этом там есть опции, чтобы выбрать нужную политику подгрузки данных, или сразу всё вытянуть, или ленивое вытягивание.

Весь функционал вроде Constraint ОРМ поддерживают. Ну например ты в модели описываешь, что у тебя поле int должно иметь значение от 13 до 666. Как это вот описанные тобой либы поддержат?

ОРМ позволяют тебе на разных уровнях работать, как полный автомат, так ты можешь почти вручную собирать запрос, но абстракциями того же SA, или же вообще raw-запрос, что тоже нормально.

Единственное что, ОРМ на самом деле сложнее голого SQL, тебе надо и SQL знать в любом случае, и ещё изучать ОРМ.

Проблема квалификации и макакинга у джангистов часто наблюдается, просто из-за особенностей джанго и джанго-орм. Хотя ОРМ джанго тоже весьма гибкая и с большими возможностями, просто мало поводов в неё лезть.
160 2998523
>>2998450
Двачую. Из всех языковых тредов питон-тред самый дегенеративный
161 2998588
>>2998507
1. А чем тебе нормальный мужской джоин не угодил? Зачем его наряжать в платье? Ты гей?
2. Чекайте, что ормщики придумали. CHECK CONSTRAINT называется.
3. Зачем, зная SQL, учить его кастрированную версию? Я что, долбоеб?
4. Вот именно, что туда нужно ЛЕЗТЬ. Не править свои ошибки, потому что ты долбоеб и накосячил. А потому что ИНСТРУМЕНТ за тебя решил, что ты долбоеб, и не умеешь нихуя.
162 2998589
>>2998523
Да, ну блять покажи нормальный тред. Джависты идут свою маму ебать.
163 2998593
>>2998588
Зачем мне писать руками скл-запросы, ещё и париться с названиями полей в селекте / инсерте / апдейте, когда орм это делает за меня?
164 2998941
>>2998589
Тише шиз
165 2999780
>>2998588
Двачую специалиста
166 2999787
>>2991469

> Код ошибки


> "There is no current event loop in thread 'WorkerThread2'."


> Сам код (постарался выделить наглядно)


> https://pastebin.com/R3PmfV0c


ошибка говорит, что у тебя нет ивентлупа.
используй синхронную версию telethon:
from telethon.sync import TelegramClient

+ почитай доку как это работает: https://docs.telethon.dev/en/stable/concepts/asyncio.html?highlight=telethon.sync#what-does-telethon-sync-do

совет: перепиши сразу на telethon и забудь про телебота, ну и про asyncio хотя бы офф. доку прочитай
167 3000117
>>2997186
могу. твою мамку онлайн, почему же..
>>2997702
Ебал дрф онлайновское.
Кто не может в десктопе - тот петух нахуй.
168 3000118
>>2991469
ну ты онлайновый петух - поэтому питон тебя и имеет.
169 3000133
>>3000117

>не может


Хули там мочь то в твоё кутэ. Это просто нахуй не упало, пилить отдельно под десктоп, отдельно под остальное. Типа донт репит ёу селф, если угодно. Или тут даже больше подходит про джаву: один раз написюнькал, запускай везде.
170 3000137
>>2991469
Если вкатываешься в ботов - вкатывайся сразу в асинхронные фрэймворки, типа aiogram.

Того шизика, который "оффлайн-онлайн" не слушай, я так понял, это местный дурачок
171 3000233
>>3000137
ты требования читат? надо обойти ограничение по размеру загружаемых файлов bot api. aiogram не сможет априори, т.к. только под http bot api и заточен.
image41 Кб, 650x367
172 3000268
>>3000233

>под http bot api и заточен


у вас чё тут, праздник палаты?
173 3000333
>>3000133
типа "писю бог создал - теперь тыкай ей в каждую дырку (и в мусорном баке между стенками)"???
Ебааать ты даун. Под каждую задачу - свой инструмент. Нехуй ваш онсрайн вставлять там, где он не нужен.
174 3000793
>>3000233
Блять что? Откуда вы такие берётесь дауны ебучие? Сидит как попугай ебальничек с умным видом открывает, только кроме откровенной афазии высрать не может
175 3000848
>>2981203 (OP)
не советую юзать питон, даже касаться.
В питоне плохо всё, от экосферы, инструментов, дистрибутивов, безопасности, обновлений до синтаксиса.
Просто лишнее корявое нечто, каким то недоразумением стало популярным, впрочем это совпало с повсеместной деградацией айти в целом.
176 3000857
>>3000848
Странно, ты вроде java описал, а не python.
177 3000872
>>3000793

> пук-среньк

sage 178 3000976
>>3000793

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


что сказать то хотел?
179 3001082
>>3000848
МЯУ. Чем больше опыта набираюсь в программировании тем сильнее меня воротит от пайтона. Максимально уебищное говно
180 3001248
>>2998471

>вывод лично для меня ясен: выбери базу postgres, oracle, mysql - похуй. и пиши на диалекте нормальный sql.


Добрая выснова, але справа ў тым, што калі бізнэс-лёгіка тваёй прылады выкарыстоўвае аб'екты, ты змушаны стварыць свой ORM, кепскі і абмежаваны; альбо ўжываць добры існуючы, адразу з сістэмай кантролю версій.
181 3001283
>>3001248
а цяпер паглядзи на гэтую библиятэку: https://github.com/racinette/querky
гэта не ОРМ, бо ОРМ гауно сабачае

яшчэ вышэй на расейскай можна прачытаць пра прыладу на habr

ОРМ не патрэбны, кали маеш нармальны интэрфэйс да фармавання запытау и атрымання адказау

а кали ня маеш, то згаджуся, што з ОРМам код будзе выглядаць лепей, чым без
182 3001295
>>2998593
насчёт названия полей проблема очень просто решаема теми же автогенераторами моделек из базы. например, sqlacodegen. у тебя полный автокомплит и автоматические аннотации типов. а этого нет ни в одной ОРМ.
183 3001297
>>2998941
джавист обиделся
184 3001329
>>3001295

>sqlacodegen


Но это надстройка над алхимией.

>у тебя полный автокомплит и автоматические аннотации типов


Мне проще декларативный маппинг копи-пастом сделать, скопировав из дбивера схему бд.
185 3001378
>>2995536

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


Кстати, да. ИБ. Не столько И, сколько Б: можно закрыть вообще доступ к реализации хранения данных.
>>2998593

>париться с названиями полей


Зачем?
>>3000848 >>3001082
Ваше мнение очень важно для нас. Так приятно смотреть на полыхающие жопы с доставкой в тред.
186 3001402
>>3001329
упрямый анальник
187 3001441
>>3001378

>Зачем?


Затем, что если завтра мне надо будет добавить новую колонку или добавить псевдоним, мне надо будет во всех скриптах, где фигурирует эта колонка, делать это руками. Орм делает это за меня.

>>3001402
Адепт лапшекода порвался.
188 3001465
>>3001283
пішыце на бульбе з цыбуляй, нахуй вам пітон
189 3001610
>>3001441
я тебе либу скинул, которая за тебя весь код перегенерирует под новую схему, о чем ты?
190 3001620
>>3001465
потому что твоя мама попросила принести питона, чтоб в очко ей запихать
уже бульба с цебулей в пизде у нее лежат
191 3001667
>>3000857
Не, это хоть и не питон, но если бы это было про джаву, то там было бы еще: "писать дохуища сахара и говна, а оно потом еще и не работает с полоборота"
192 3001687
Посоны. Филигранно пишу парсеры любой сложности.
С этим можно где то работу искать или мало?
(Понятно, что всю эту сопутствующую хуйню гит, хуит, свою часть скуэля знаю)
193 3001934
>>3001687
На Kwork часто требуются ребята умеющие писать парсеры. Был кейс, когда требовалось вытаскивать результаты баскетбольных матчей на американском сайте, где используется примитивная таблица html, нужно вытащить все игры из разных лиг, женских, мужских, студенческих. Заказчик занимался ставками, данные потом через калькулятор прогоняли.
194 3001944
>>3001441

>Орм делает это за меня.


Правильно написанная хранимка - тоже.
195 3001962
>>3001944

как будто на галере спрашивать будут а чего Владик хочет писать а какую кашку он любит а попочку ему не подтереть
196 3001964
>>3001610
Зачем отдельная надстройка над либой для этого, когда хватает функционала либы?
197 3001969
>>3001944
Т.е. в случае внесения изменений надо лезть сначала в код проекта, а потом ещё и в базу. Спасибо, в 2 раза больше работы делать не хочу.
198 3002022
>>3001969

>сначала в код проекта, а потом ещё и в базу


Нет. Сначала в код ликвибейза, а потом - возможно, в код проекта.
199 3002040
>>3002022

>ликвибейза


Тебе в вашем ява-треде скучно, решил тут посрать?
17052163558790.mp43,1 Мб, mp4,
576x1024, 1:18
200 3002057
5 лет опыта. Думаю дополнительно освоить rust или го.

Мнения? Что более перспективно?
201 3002066
>>3002040
А чел походу вкатун и никогда не работал - после уязвимости в джавовой либе в 2021 (https://nvd.nist.gov/vuln/detail/CVE-2021-44228) весь джавовый туллинг забанен для использования в нормальных конторах.
202 3002153
>>3001964
хз, чел
ты гвозди отвёрткой убиваешь тоже?
203 3002158
>>3002153
Я закручиваю гайки разводным ключом, а не таскаю под каждый диаметр отдельный ключ.
204 3002198
>>3001934

>примитивная таблица


Блин, это изично вообще. В любую структуру вытащу даже динамичный одностраничник-приложение.

>Kwork


Спасибо
205 3002213
>>3002057
А ты работал эти пять лет? Что писал?
206 3002216
>>3002158
да нет, ты швейцарским ножиком пользуешься как раз, мультитулом
207 3002218
>>3002066
ага, а после heartbleed никто не пользуется OpenSSL и не пишет на С
208 3002221
>>3002066
ага, а после heartbleed никто не пользуется OpenSSL и не пишет на С
image.png342 Кб, 494x700
209 3002526
>>3002213

>А ты работал эти пять лет?


Я и сейчас работаю.

> Что писал?


NDA запрещает говорить.
Бэкенды.
210 3003086
Асинхронщики на месте? Исправьте ошибку сохраняя асинхронность вычислений.
https://www.online-python.com/87Mvbr0Zh1

Дано: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Нужно: [100, 200, 300, 400, 500, 600, 700, 800, 900]

Ошибка TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'. Причина понятна, асинхронная функция пыталась работать раньше чем закончила работать предыдущая функция, готовящая данные.
211 3003094
>>3003086
Тебе надо добавлать примитивы синхронизации
Например семафор
https://docs.python.org/3/library/asyncio-sync.html#asyncio.Semaphore

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

метод acquire() запрашивает счётчик, уменьшает его значение на единицу и блокирует, если счётчик 0
метод release() увеличивает счётчик

там можно через with с этим работать, но это для других сценариев, не твоего

Идея в том, чтобы создать семафор с исходным значением 0 (по-умолчанию 1), передать в оба сервиса

В первом сервисе, как ты посчитал элемент, ты увеличиваешь счётчик через release(), во втором сервисе ты перед каждым вычислением делаешь await sem.acquire(), то есть ждёшь, когда ресурс станет доступным
212 3003095
>>3002040

> Тулза написана на неправославном языке, поэтому я против!


>>3002066

> ТАДА, ТРИ ГОДА НАЗАД БЫЛА ДЫРКА! Поэтому навсегда запрещено использовать абсолютно любые смежные проекты даже в контролируемой среде.


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

М-м. Когда-то, на заре проекта я даже писал свою систему миграции схемы. А потом просто выяснилось, что система с точно такой же логикой уже реализована, отлажена и сделана удобно, с тех пор я переехал на LB.

>>3002057 >>3002526
Из этих двух я скорее адепт раста. Но не уверен, что есть смысл уходить на бэке от питона. Когда говорят "питон медленный" нужно внимательно выяснять, в чём именно и, например, в нём медленная математика, но она в проде никому почти не нужна, а когда время на бэке раскладывают выясняется, что I/O-bound >> CPU-bound то есть на фоне задержек получения данных от внешних API или БД всякие "медленные" или "быстрые" генерации вообще на уровне погрешности, зато на питоне пишется быстрее, чем на любом более высокоуровневом ЯП.
Если же хочешь сменить предметную область... То там много нюансов. Например, там, где я работал - везде - были важны результаты и какой ЯП ты используешь не так важно потому что проектов больше, чем людей и как правило оказывается, что нет такого, как у гигантов, когда десяток кодеров пилит разные фичи в одном проекте, а есть 1-2 проекта на разраба и каждый использует то, на чём покажет лучший результат, а передача происходит слишком редко, чтобы особо париться.
213 3003099
>>3003095

>чем на любом более высокоуровневом ЯП


низкоуровневом!
fix, сори.
214 3003117
>>3003094
Спасибо, но ведь всё равно сказанного тобой недостаточно.

Семафор позволит знать сколько "спелых" объектов в списке, но не скажет какие именно. Ошибка возникает именно когда stage2() берётся за "неспелый" объект, т.е. прошедший stage1(). И семафор этого непредотвратит.

Мне решение видиться в присвоении неспелым объектам значения типа "futures". И надо чтобы stage() наткнувшись на это ждала не блокируя.
215 3003119
>>3003117

> "неспелый" объект, т.е. НЕПРОШЕДШИЙ stage1()

216 3003326
>>2981203 (OP)
Эй опище, беги в \d просить чтобы в твою шапку тег навигации добавили, который ты проебал. Люди до сих пор в старый тред пишут.
217 3003436
>>3003117

>Семафор позволит знать сколько "спелых" объектов в списке, но не скажет какие именно


В твоём коде цикл, где объекты обрабатываются последовательно. Соответственно достаточно знать сколько объектов в списке, чтобы знать, что обработано, а что нет.

Если хаотичный порядок возможен, то в твоей задаче надо бы чего-нибудь вроде
rand_data = data[:]
random.shuffle(rand_data)
for obj in rand_data:
...

>futures


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

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

Первый сервис, как обработает объект, кладёт или объект, или его номер, в очередь. А второй сервис просто слушает очередь, как только в ней что-то появится, то обрабатывает.

Это вообще наиболее функциональный паттерн, очереди, очень много для чего можно использовать. Фактически Queue это такой универсальный механизм синхронизации, любой другой можно реализовать через очереди
218 3003809
>>3003436
в моём коде await asyncio.sleep(random_time()), что как бы намекает объект #1 может обработаться после объектов #2,3. Счётчик в семафоре скажет "обработано 2", по твоему предположению это #1,2 но практически из-за разного времени на обработку окажуться другие.

На данный момент я приспособил семафор лишь для ограничения конкурентности в stage1() https://www.online-python.com/53DjJbNiBL
эта реализация подходит только для обработки неизменного списка. Теперь хочу для изменяемого списка, т.е. функции stage1() и stage2() будут в ходе работы добавлять заданий друг другу.
219 3003850
>>3003436

>создаёшь очередь asyncio.Qeuee, шаришь её между двумя сервисами


Иммешь в виду шаблон проектирования producer-consumer? Вот его реализация: https://www.online-python.com/XbGpJzNFU2

Проблема в том, что, когда очередь пустая, consumer() застревает на obj = await data.get(). Программа подвисает и никогда не заканчивается.
220 3003949
>>3003809

>в моём коде await asyncio.sleep(random_time()), что как бы намекает объект #1 может обработаться после объектов #2,3.


Не может, в каждом сервисе (stage1, stage2) выполнение строго последовательное. Иначе тебе надо запускать для каждого элемента свою задачу. random даёт то, что stage2 может попросить элемент раньше, чем он был посчитан stage1. Но порядок заведомо определён.

>>3003850

>Имеешь в виду шаблон проектирования producer-consumer?


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

Что касается завершающего этапа, я лично в таких случаях посылаю в очередь значение-терминатор, как вариант None,
Соответственно ты при получении значения просто проверяешь на None (или что-нибудь ещё, если None допустим по логике), и когда None, прерываешь цикл обработки.

>>3003809

>Теперь хочу для изменяемого списка, т.е. функции stage1() и stage2() будут в ходе работы добавлять заданий друг другу


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

Там бывают более извращённые варианты закрытия задач, в случае Queue можешь глянуть на join()/task_done(), но это имхо для других сценариев, когда мастер-процесс есть, который массово кормит консумеров и контролирует, кто сколько сделал, и он же отвечает за то, чтобы отменять консумеров. По мне значение-терминатор самое универсальное решение
221 3003958
>>3003949

>в случае Queue можешь глянуть на join()/task_done(), но это имхо для других сценариев, когда мастер-процесс есть, который массово кормит консумеров и контролирует, кто сколько сделал, и он же отвечает за то, чтобы отменять консумеров


В принципе именно эта схема приведена в документации
https://docs.python.org/3/library/asyncio-queue.html
но вариант со значениями-терминаторами мне обычно нравится больше.
В примере просто цель такая, чтобы подождать, когда всё выполнится, и только после этого делать что-то дальше.
image.png23 Кб, 1434x340
222 3004196
Сап питонач! Сам я не программист и знаком с питоном очень поверхностно, но появилась необходимость написать функции, при вызове которых понедельник сменялся на вторник, апрель на май и т.д.
Собственно хватило меня на следующий говнокод или его почти полное отсутствие, и не могу понять как подступиться к самой функции, как написать вот эту самую "сменяемость"? Помогите пожалуйста
Код: https://www.online-python.com/CD1F07E8Qb
224 3004409
>>3003949
Ну-ка глянь и прокомменти. Тут использована Queue. Можно как-то улучшить?
https://www.online-python.com/LyeSRkO5jI
225 3005669
>>3004196
это явно не твоё, может лучше устроится на завод?
226 3005697
>>3005669
Может лучше пойдёшь нахуй?

>>3004227
Спасибо анон
227 3008223
Недавно открыл для себя существование людей которые хейтят f-строки и вместо них .format() используют. Даже линтер на это дело настраивают. Собственно, какие есть объективные причины тряски не любить f-строки?
228 3008420
>>3008223
options = {"opt1": "foo", "opt2": 2, "opt3": repr(None)}
"{opt1} {opt2} {opt3}".format(options)
229 3008423
>>3008420
options разыменовывается, редактор разметку съел.

>> options

230 3008424
>>3008423
сук!
\\options
231 3008688
>>3008223

>Недавно открыл для себя существование людей которые хейтят f-строки и вместо них .format() используют


Много хейта было, когда из вводили, потом все привыкли

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

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

В целом думаю, борьба против f-строк сами по себе необоснована, надо бороться с какими-то неправильными паттернами их примерения, а если надо будет вынести строки за код, то рефакторинг в format очень прост.
232 3008728
>>3004409

>Ну-ка глянь и прокомменти. Тут использована Queue. Можно как-то улучшить?


Смотрится рабочим для данного варианта, но и опасным при этом. Вот это вот прерывание цикла:

> while not queue.empty():



Не в этом варианте, но в аналогичный, более сложных, можно словить race condition

Во-первых в этом контексте опасен
await queue.put(obj)
тут надо думать, реально ли это, но по идее возможна история, когда ты начнёшь класть что-то в очередь, в этот момент планировщик переключится на главный worker, тот увидит, что очередь пуста, и завершит своё исполнение. Только потому, что ты не успел что-то добавить в очередь.

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

Второе, представить, что ты используешь эту логику для более сложных случаев. Эту логику в том смысле, что у тебя stage-воркеры заполняют ту очередь, из которой читают потом другие. У тебя stage1 может порождать, скажем, не один объект, а десять. Что вполне себе нормальное поведение. Хотя вот тут как раз могут понадобиться очереди с ограничением.

В этом случае, скажем на первом этапе, у тебя 10 worker'ов, и всего 3 значения исходных в очереди. В результате пока эти три значению будут обрабатываться, очередь опустеет и все незадействованные воркеры будут прибиты. А потом очередь заполнится 30 объектами, на их обработку останется только 3 воркера. Тут put_nowait уже не спасёт

В общем такая стратегия прибития воркеров опасна. Надёжнее их прибивать все вместе после того, как работа будет сделана.
233 3008737
>>3008728
дополню ещё
очень опасное и сложное поведение, когда у тебя работа одного воркера зависит от результата его же работы

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

В идеале надо как-то убирать обратные связи, это страхует от dead lock'ов. Тут надо думать про каждый конкретный случай
234 3009332
>>3005697
не, ну если даже с такой хуйнёй не справляешься - может твой папка бы лучше с занавеской справился бы?
Ну не твоё это, брось нафик.
235 3009335
>>3008223
f-строки более нагляднее, для меня имхо. Пусть и приходится применять фигуристые скобки, но видны переменные, и меньше писать кода, с точками и функцией формат.
п.с. Везде их пользую. понимаю и другой формат, но его ненавижу, не знаю почему.
236 3010800
>>3003086
Некропост, ну да пофиг. Я бы так сделал https://pastebin.com/raw/bzXmk5W5
237 3011168
>>3010800
я всё еще рассматриваю ваши предложения.
238 3012146
Аноны, а как можно эту портянку упростить, в части селекта:
(SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)
?
постгрес БД.

SELECT t.id, t.hw, t.dt_start, t.dt_stop, t.descr,
h.uid, h.model, h.pointid, h.kassid, h.kind,
(SELECT cp.clientid AS _clientid FROM cpoints cp WHERE cp.id = h.pointid),
(SELECT cp.name _cpointname FROM cpoints cp WHERE cp.id = h.pointid),
(SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid),

(SELECT plc.uid FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)),
(SELECT plc.name FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)),
(SELECT plc.adr FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)),
(SELECT plc.comment FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid))

FROM spr_to t, hardwares h WHERE t.hw = h.uid;
239 3012149
Аноны, как упростить это?
В части (SELECT plc.adr FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)

SELECT t.id, t.hw, t.dt_start, t.dt_stop, t.descr,
h.uid, h.model, h.pointid, h.kassid, h.kind,
(SELECT cp.clientid AS _clientid FROM cpoints cp WHERE cp.id = h.pointid),
(SELECT cp.name _cpointname FROM cpoints cp WHERE cp.id = h.pointid),
(SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid),

(SELECT plc.uid FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)),
(SELECT plc.name FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)),
(SELECT plc.adr FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid)),
(SELECT plc.comment FROM cplace plc WHERE plc.uid = (SELECT cp.placeid FROM cpoints cp WHERE cp.id = h.pointid))

FROM spr_to t, hardwares h WHERE t.hw = h.uid;
240 3012237
>>3009335
Пиздец как я обожаю f-строки!

1. Вставка значения переменной в строку:
name = "Alice"
age = 25
print(f"My name is {name} and I'm {age} years old.")
# Вывод: My name is Alice and I'm 25 years old.

2. Вычисление выражений внутри строки:
a = 4
b = 6
print(f"The sum of {a} and {b} is {a + b}.")
# Вывод: The sum of 4 and 6 is 10.

3. Форматирование чисел:
pi = 3.14159
print(f"Value of pi: {pi:.2f}")
# Вывод: Value of pi: 3.14

4. Выполнение вызовов методов объектов внутри строки:
message = "Hello, World!"
print(f"{message.upper()} is {len(message)} characters long.")
# Вывод: HELLO, WORLD! is 13 characters long.

5. Использование условных выражений:
is_raining = True
print(f"It's {'raining' if is_raining else 'not raining'} today.")
# Вывод: It's raining today.

6. Использование словарей для вставки значений:
person = {"name": "Bob", "age": 30}
print(f"{person['name']} is {person['age']} years old.")
# Вывод: Bob is 30 years old.

7. Экранирование фигурных скобок:
name = "John"
print(f"{{ {name} }}")
# Вывод: { John }
240 3012237
>>3009335
Пиздец как я обожаю f-строки!

1. Вставка значения переменной в строку:
name = "Alice"
age = 25
print(f"My name is {name} and I'm {age} years old.")
# Вывод: My name is Alice and I'm 25 years old.

2. Вычисление выражений внутри строки:
a = 4
b = 6
print(f"The sum of {a} and {b} is {a + b}.")
# Вывод: The sum of 4 and 6 is 10.

3. Форматирование чисел:
pi = 3.14159
print(f"Value of pi: {pi:.2f}")
# Вывод: Value of pi: 3.14

4. Выполнение вызовов методов объектов внутри строки:
message = "Hello, World!"
print(f"{message.upper()} is {len(message)} characters long.")
# Вывод: HELLO, WORLD! is 13 characters long.

5. Использование условных выражений:
is_raining = True
print(f"It's {'raining' if is_raining else 'not raining'} today.")
# Вывод: It's raining today.

6. Использование словарей для вставки значений:
person = {"name": "Bob", "age": 30}
print(f"{person['name']} is {person['age']} years old.")
# Вывод: Bob is 30 years old.

7. Экранирование фигурных скобок:
name = "John"
print(f"{{ {name} }}")
# Вывод: { John }
241 3012304
>>3012237
5 и 6 удобнее через .format
1580552831469.png2 Кб, 208x120
242 3012479
>>3012237
Самый лучший кейс не написал
243 3012492
>>3012479
Да действительно, спасибо
244 3014108
Аноны, что почитать, чтобы лучше вкурить управление памятью inb4 нахуй те питон, трюки всякие вкурить?
Джеймс Пауэлл неплохо рассказывает, хочу есчо.
245 3014898
>>3014108
Что ты понимаешь под трюками?
246 3014907
>>3014108
Документацию malloc?
247 3014979
Как вы сдаёте работы на кворке?
Просто .py скриптами с requirements, как на гитхабе или заворачиваете во что то экзешное\эсашное для заказчика?
248 3015157
Посаны, где посмотреть переменные пердона? В смысле, вот эти вот все %venv_dir%, %python_path% и прочее говно, которое используется непосредственно пердоном? Хочу запереть его внутри директории чтобы он не срал больше никуда.

Например сейчас при создании venv я вижу что создается директория pypa не там где я бы хотел ее видеть. И при установке pip (через get-pip.py) директория pip тоже создалась не там куда я хотел бы ее поместить. Или опять же при установке pip я вижу что инсталлятор насрал мне в /appdata/local/temp, чего я хотел бы избежать и заставить срать его в строго определенную директорию.

Нувыпонели о чем я, да?
249 3015167
>>3014108
Не рассказывайте этому про битовые операции, иначе он головой ебанётся.
250 3015187
Привет, вкат в python с нуля норм идея? Будет ли возможность найти вакансию, или лучше искать в шарпах, жабе, петуне?
Мимо неудачный вкатун в android kotlin, вакансий 0
251 3015196
>>3015187
Если есть хоть какой-то опыт, то лучше Java/C#.
Если нет вообще опыта, то вкатывайся куда хочешь, один хуй надо будет конкурировать с такими же тысячами, как ты.
252 3015395
>>3015187
хуёвая идея. вкатись в говнокод на Си, бейсик, ассемблер Z80
253 3015417
>>3014898
Например у вас объекты дохуя жрут, one simple trick и уже терпимо. Продолжение в источнике...
У меня массивы чисел с очевидным нампаем, но до него числа надо доготовить.

>>3014907
Читал гайды про работу питона с памятью, но они довольно поврехностны. Действительно остаётся RTFM.

>>3015167
Плавали, знаем, с интересом читаем про приколы типа обратного вычисления квадратного корня и другой дрочь. В работе не пригождалось.
254 3016028
Привет, питонач.
Подскажите, тут есть помидоры? Или хотя бы прошаренные миддл+?
Я бы был рад, если бы настоящий томат вчитал несколько моих поделок, чтобы обсудить с ним логику и понять, как делать правильно и избавиться от говнокода. Причем, для меня важнее не отрефакторить код, для меня - важно понять, как делать правильно в будущем, так что будет немало вопросов типа "зачем это?" и "почему именно так?"
Готов заплатить, если надо (не сотни нефти, правда).
В общем, кидайте фейкомыльце, я напишу, авось договоримся до чего.
255 3016054
Ну что же вы, пердонисты? >>3015157
У меня embedded python если что, поэтому и хочу заизолировать его в пределах одной директории, да еще и на флешке таскать, для запуска используя batch с назначением переменных в пределах сессии.
256 3016203
>>3016028
Ссылку оставь и всё на репу, кто-нибдуь глянет, если не лень будет.
Никаким прошаренным твои 500 рублей не нужны.
257 3016680
>>3016203
На один реп я выкладывал, но никто не вчитал, там много возни для мимоходом вброшенного поста и он очень учебный.
Второй - не в опенсорсе, на меня по работе повесили не совсем профильную задачу. NDA не строгий: релизы открываются, но релиз отстаёт от репы уже на пару месяцев, а кидать пока ещё закрытый код в паблик - это всё-таки перебор.

> прошаренным твои 500 рублей не нужны.


Ну, такое... Я, конечно, надеюсь, что найдётся тот, кто оценит моё искреннее желание стать лучше и поможет.
Но если нет, то я полагал, что речь о сумме более сопоставимой с ценой, например, бутылки бушмилса, или что такой человек посчитает адекватной наградой.
image.png151 Кб, 600x472
258 3016936
Анонсы, как раздуплить джойны целиком и полностью? Я не могу понять и всё тут. Смотрю в книгу - вижу фигу. Я понимаю, что это выбор из двух и более таблиц, взять предмет, у которого в таблице "хуи" полк "длина хуя" равно "5см", и при этом в таблице "залупы" поле "цвет" равно "багровый".
Но для чего там аж 7 разных вариаций, ума не приложу.
image.png24 Кб, 621x202
259 3017013
И еще мне не понятно, как определить, в какой из таблиц поле package_name должно быть fk_package_name и почему?
image.png493 Кб, 1280x564
260 3017413
При таком запросе данные в Cards не добавляются, почему?
Надо, что бы при добавлении карты карта добавлялась, а автор, если такой уже есть, пропускался. Как сделать?
261 3017450
>>3017413
Отбой. Нашел косяк. Это я в коде описАлся просто.
262 3017460
>>3016936
>>3017013
>>3017413
Тред про язык программирования Питон.
263 3017610
За Джангу кто-нибудь шарит? Делаю сайт про походы. Заказчик хочет, чтобы была отдельная страница отчёта для каждого прошедшего похода, как сходили, фоточки, всё такое. В чем проблема. Заказчик хочет, чтобы у него была возможность через админку добавлять фото в статью в ЛЮБОМ месте текста. Памагити пожалуйста.
264 3017758
>>3017610
посмотри на wagtail cms. у них хорошая админка
265 3017795
>>3017460
@спрашиваю про джанго ОРМ (чисто питонячья хуйня)

>джанга говно, чистый скул рулит!


@спрашиваю про чистый скул

>Тред про язык программирования Питон.


И что блять, теперь хэлло ворлд мне писать на питоне?
266 3017918
>>3017610
Django ckeditor посмотри
267 3018169
>>3016054
Да нахуй ты не нужен со своими тупорылыми вопросами. Открывай документацию на python.org, и вычитывай свою хуету.

> У меня embedded python


Соболезную.
268 3018171
>>3017795

> спрашиваю про джанго ОРМ


В твоих постах ни слова про этот фреймворк.

> спрашиваю про чистый скул


Какой скул? Ты ебанашка?

> И что блять, теперь хэлло ворлд мне писать на питоне?


Напиши программу, которая заставит тебя съебать отсюда.
269 3018311
>>3018171

>джанго орм - это не про скуэл


Ты совсем там долбоёб что ли?
270 3019268
Как ебучий раббит то поставить?
Я вообще нихуя не понимаю, ну прикрутил я к апи типа чтобы запрос шел в сессию рабита, ну увидел этот запрос на дашборде когда его дернул, а как проверить что он на самом деле не параллельно прошел? И в раббит и в бек. Потому что к примеру я когда запрос дергал в постмане обращался по адресу бека, а не раббита. Как это работает? я гуглил, но заебался уже, вдруг тут есть добрые аноны которые подскажут
271 3019455
>>3019268
Сделай сервис-прокладку, которая будет получать события из кролика, а затем передавать их на бек твоего приложения.
272 3019561
>>3019455
Блин а есть примеры на гитхатбе где это реализовано примерно простенько? Я найти не могу, гуглю уже неделю....
image2,1 Мб, mp4,
464x848, 0:12
273 3019626
Как сделать такие же часы?
274 3019681
>>3019561
Что именно реализовано? Тебе надо настроить кролика, рядом с ним поставить сервис (асинхронный), который будет по соответствующим роутам принимать от кролика сообщения. Далее этот сервис просто должен постухой отсылать жсончики на твой целевой бек.
275 3019728
>>3019681
Да я нихуя не понимаю момент что значит поставить "рядом сервис который будет принимать от кролика сообщения"

Это что, типа копия бека, только с mock-запросами? Как оно будет принимать от кролика сообщения и передавать на другой бек?
276 3019756
>>3019626
Просто сделай
277 3019767
>>3019728
Если ты задаешь такие вопросы, то ты по-моему не выкупил, как работать с кроликом, хотя вроде начал вопрос с того, что уже что-то там прикрутил к апи.

У них прям на сайте все есть:
https://www.rabbitmq.com/tutorials/tutorial-one-python.html
https://www.rabbitmq.com/tutorials/tutorial-two-python.html
https://www.rabbitmq.com/tutorials/tutorial-three-python.html

Тебе надо сделать продьюсера (клиент, сообщения которого будут класться в очередь - на практике это может быть какой-нибудь вебхучок).
Тебе надо настроить кролика - добавить очередь queue, добавить обменник exchange, добавить биндинг binding - это будет ядро твоего кролика.
Тебе надо сделать консьюмера - т.е. твой целевой сервис, который будет работать с полученными из очереди данными.

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

Как научить продьюсера класть сообщения в кролика и как из кролика получать сообщения в консьюмере - описано в тех трех линках.
Связь между "первой прилагой" и "второй прилагой" - первая прилага просто вычитывает сообщение из очереди и отправляет POST-запросом на нужный эндпоинт второй прилаги.
278 3019915
>>3019767
Спасибо что разжевал. Буду пробовать.
279 3019947
>>3019626
берешь абсолютное позиционирование, зная угол и удаление числа от центра, рассчитываешь смещение по х и у через синус и косинус, по координатам ставишь элемент, повторяешь по всей длине каждой стрелки в цикле
280 3019960
Анчоусы, а где можно доступным языком почитать про паттерны? Вот я знаю, например, что существует паттерн MVC. Но как я понимаю, кто-то уже считает его устаревшим. А какие альтернативы тогда существуют вообще?
Я еще погуглил, набрел на https://refactoring.guru/ru/design-patterns - но тут про MVC вообще не упоминается например.
281 3020019
>>3019626
Это хуйня, тут всего 60 возможных углов. Были бы круче, если бы стрелки с большим разрешением двигались не с 1 сек таймером, а постоянной перерисовкой.
282 3020020
>>3017918 спасибо большое. Только я скачал последний, а там нельзя фото по центру выровнять. Случайно не знаешь, в какой версии можно выравнивать?
283 3020026
В джанге применяю тег safe к блоку, чтобы убрать из него символы html, с блока слетает весь css который я ему задал. Как жить дальше?
284 3020321
>>3019455
Выглядит как извращение. RabbitMQ и есть сервис-прокладка. Например, между фронтом и бэком.
285 3020337
>>3020026
Если вы хотите предотвратить экранирование и сохранить стили CSS в вашем блоке, вам может потребоваться другой подход. Один из вариантов - использовать фильтр safe только для содержимого блока, где это абсолютно необходимо, а для остального содержимого использовать экранирование по умолчанию:

<div class="my-block">
{{ my_content|safe }}
</div>
286 3020377
Дебильный вопрос, но почему вечно возникает ошибка: Имя "ххх" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильнос
ть пути, после чего повторите попытку.
И ведь для интерпертатора все ставлю, а оно все равно, как на зло не работает и продолжает выдавать. Каждый раз чисто каким то чудом начинает запускаться все
287 3020747
Анон, у меня нубский вопрос. Есть список, состоящий из строк, допустим a = ('a', 'v', 'b'). Как пройти список так, чтобы только 'v' в середине списка перешло в верхний регистр 'V'?
image.png36 Кб, 612x467
288 3020797
>>3020747
Способов много разных.
289 3020816
>>3020797
Спасибо.
290 3020908
>>3017758 спасибо!
291 3023275
>>3020816
Самый идеологически верный из них - второй, через лист компрехеншн (через компоновку), а третий - вообще наверняка добавлен для юмора и странно, что не в одну строку типа такой:

> list(''.join(['a','v','b']).replace('v', 'V'))

292 3023756
Кто-то верстает фронт на жанге? Эта хуйня хороша только как прокладка между фронтом и БД.
Для фронта есть реакт
293 3023905
>>3023756
Когда верстали фронт на Джанго, ты ещё не родился.
294 3023928
>>3023756

> фронт на жанге


> прокладка между фронтом и БД


> Для фронта есть реакт



Ты откуда такой вылупился? Понахватался умных слов, поросёночек и пришёл елдой махать.
295 3024355
Аноны, хочу наговнякать для себя некоторый софт с gui.
Какой модуль лучше всего для этого взять по вашему мнению в силу вашего опыта, мой же критерий только один - чтобы просто было разобраться с порога, без вычитки мануалов для простейших функций. Встроенный tkinter? Какие подводные камни? Может что-то попроще получше да покрасивее?

Делал софт с gui только однажды для юпитера на ipywidgets но там было полторы кнопки и четыре вкладки так что наверное не считается.
296 3024363
>>3024355
А, да, ОС - винда.
297 3024501
>>3024355
Любой, который отвечает твоим требованиям, которые ты не указал. В любом случае, лучше сразу Pyqt брать, информации по нему море
298 3024574
>>3016936

> для чего там аж 7 разных вариаций



Ну вот смтори допустим есть две таблицы и в каждой по 1000 записей и они пронумерованы от 0 до 999 и номер записан в поле id. Очевидно есть единственный способ собрать попарно записи с одинаковым номером, их всегда будет ровно две одна с одной стороны и одна с другой.

В общем случае может быть что в одной из таблиц какие-то номера отсутствуют. Или повторяются. Тогда разумных способов собрать вместе записи с одинаковым номером становится несколько. Например мне может быть удобнее чтобы вернулись только пары, где номер нашелся в обеих таблицах. А может быть чтобы вернулись все строки из левой таблицы, и там где в правой таблице совпадающего номера не нашлось чтобы стояло None. То есть зависит уже от логики задачи и смысла таблиц.
299 3024607
>>3024355

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



>>3024501

> Любой, который отвечает твоим требованиям, которые ты не указал.


таки указал

>В любом случае, лучше сразу Pyqt брать, информации по нему море


pyqt - ваще не про разобраться с порога.

>>3024355

> Аноны, хочу наговнякать для себя некоторый софт с gui.


бери tk
300 3024628
>>3024607

>pyqt - ваще не про разобраться с порога.


По нему даже документации нет, хех.
301 3024635
>>3024355
tkinter бери
в официальной документации все есть с примерами
https://docs.python.org/3/library/tkinter.html#a-hello-world-program
302 3024758
Третьего дня взял Питон-3000 и прочитал им текстовый файл размером 45мб. Текстовый файл содержал 500к строк, пути к файлам, длина примерно 100 символов латиницы, utf-8.

От проверенных камрадов слышал, что в Питоне-3000 словари летают как птицы, даже быстрее списков, задыхаясь от жадности немедленно записал каждую строчку в словарь. Ключ: строка из файла, значение - true\false.
Смотрю в память: ну и ну, размер - мое почтение. Сраный текстовый файл занял 200 мб оперативы в форме словаря.

Ну что с этим говном делать? Списки получается надо использовать в таких случаях?
303 3024808
>>3024758
список кортежей(tuple,named tuple) или datadict со slots. все изменяемые структуры данных - прожорливые. как вариант можешь обрабатывать значения по мере поступления, выгребая итератором
304 3024813
>>3024808
Надо постоянно чекать какие файлы есть, они все должны быть в памяти.
305 3024831
>>3024628
Ты ебанутый? Иди нахуй
306 3024901
>>3024607
>>3024355
бери PySimpleGUI !!
Быстрее и красивее код напилешь по-питонячьи.
не слушай задротов с pyside5(6) и Qt-дезигнеров ёбаных макак!
307 3025323
>>3024355
Я сейчас Flet раздупляю. После недельного перебора всего, что есть, мне этот лучше всего подходит.
0. документашка имеет тёмную тему
1. нормальная документашка с примерами кода и результата для самых даунов
2. относительно пиздатая мультиплатформенность
308 3025327
>>3024635
Я заебался придумывать, как свитч в таблицу вставить. Как то урезанно, кастомизируется буквально в 4 более менее современных темы (а разница там между ними в цвете ползунка, синий или зеленый) и точка.
309 3025437
>>3025323

>документашка имеет тёмную тему


Аргумент, блджад!
Ясен орган - лучшее решение эва.
310 3025530
У меня есть кусок кода:

> def func(param: str) -> str:


> ....if param = "1":


> ........return f1()


> ....if param = "2":


> ........return f2()


> ....if param = "3":


> ........return f3()


> и т.д., там много опций.


> ....return ""



Хочу его привести к более вменяемому виду, например, как советует пайлинт:
https://pylint.readthedocs.io/en/latest/user_guide/messages/refactor/too-many-branches.html
Что-то типа:

> def func(param: str) -> str:


> ....return {"1": f1, "2": f2, "3": f3}[param]()


Это работает. НО! Я не могу понять, как по дефолту вернуть пустую строку.
Вижу два варианта:
1. Написать функцию, возвращающую пустую строку и передать её как вариант по-умолчанию:

> def empt():


> ....return("")


> def func(param: str) -> str:


> ....return {"1": f1, "2": f2, "3": f3}.get(param, empt)()


2. Ловить эксцепшн:

> def func(param: str) -> str:


> ....try:


> ........a = {"1": f1, "2": f2, "3": f3}[param]()


> ....except KeyError:


> ........a = ""


> ....finally:


> ........return(a)



Оба способа мне не слишком нравятся. Что думаете, как лучше поступить?
310 3025530
У меня есть кусок кода:

> def func(param: str) -> str:


> ....if param = "1":


> ........return f1()


> ....if param = "2":


> ........return f2()


> ....if param = "3":


> ........return f3()


> и т.д., там много опций.


> ....return ""



Хочу его привести к более вменяемому виду, например, как советует пайлинт:
https://pylint.readthedocs.io/en/latest/user_guide/messages/refactor/too-many-branches.html
Что-то типа:

> def func(param: str) -> str:


> ....return {"1": f1, "2": f2, "3": f3}[param]()


Это работает. НО! Я не могу понять, как по дефолту вернуть пустую строку.
Вижу два варианта:
1. Написать функцию, возвращающую пустую строку и передать её как вариант по-умолчанию:

> def empt():


> ....return("")


> def func(param: str) -> str:


> ....return {"1": f1, "2": f2, "3": f3}.get(param, empt)()


2. Ловить эксцепшн:

> def func(param: str) -> str:


> ....try:


> ........a = {"1": f1, "2": f2, "3": f3}[param]()


> ....except KeyError:


> ........a = ""


> ....finally:


> ........return(a)



Оба способа мне не слишком нравятся. Что думаете, как лучше поступить?
311 3025596
>>3025530

>как по дефолту вернуть пустую строку


return {"1": f1, "2": f2, "3": f3}.get(param, "")
312 3025795
>>3025596
Видимо, надо было сразу делать:
Оригинальный код:
https://www.online-python.com/uTfKykecax
Через дополнительную функцию:
https://www.online-python.com/41cnHRrj39
Через трай:
https://www.online-python.com/u0m4bsTBgP
Твой же код возвращает не строку, а функцию для тех случаев, которые обрабатываются явно и нормально получается только возврат пустой строки:
https://www.online-python.com/Ao6xJ92cys
А если вернуть скобки, то сломается код на параметрах, обрабатываемых неявно, через другие параметры (например, представь, что параметр "4" есть, но его значение получается вместе со значением параметра 3 в функции f3) потому что "TypeError: 'str' object is not callable":
https://www.online-python.com/wNehPvp6mj
313 3025811
>>3025437
Я на полном серьёзе рвусь от того, что дауны из стэковерфлоу и хабра до сих пор не добавили ссаную переключалку на дарк тему. У меня буквально всё остальное тёмное и приходится переписывать и подменять локально цсски, иначе глаза выгорают
314 3025812
>>3025795
Хм-м. А ведь мне необязательно добавлять новую функцию. Ведь есть встроенная функция 'str':
https://www.online-python.com/drOC5tk192
Хотя код получается неочевидным и как работает get в данном случае не слишком понятно с одного взгляда...
315 3025816
>>3025530
Там в последних питонах свич же для тебя подвезли вроде
Или мне это приснилось?
316 3025819
>>3025811
На СО есть тёмная тема. Нужно залогиниться просто.
317 3025823
>>3025811
см. "дарк ридер".
319 3025828
>>3025823
Ух ты бля какая заебатая штученька!
Спасибо, анон.
320 3025832
Вопрос для вкатунов. Вы бы пошли на работу при условии, что проект не на питоне и по сути надо стек +- с нуля изучать?
321 3025841
>>3024355
>>3025437
Ладно, вот еще аргумент: Там есть хот релоад прям искаропки.
flet settings.py -d
и ты видишь все изменения сразу при каждом Ctrl+S
при чем параметр -d отслеживает всю директорию
Из минусов - я так понял, что нельзя собрать отдельно кнопку, а потом её импортировать в форму отдельным файлом, типа как в реакте.
322 3025919
Да, вы тут ткинтер рекомендуете чуваку, а он умеет в асинхронность или окно висит, пока внутрянка работает?
323 3025996
>>3025795
ты какую-то натуральную хуйнж делаешь чел. Вот твоё уродство, держи и никогда так не делай.
return {"1": f1, "2": f2, "3": f3}.get(param, str)()
324 3026004
>>3025530
в 1 замени empt на lambda: ""
325 3026007
>>3025996
лучше лямбду как в следующем посте - более явно. а вообще лучше switch, да
326 3026022
>>3026007

>switch


Это что? if elif elif elif else, или какой-то новый оператор в последних питухонах?
327 3026115
>>3026022
Хуясе ты герцог. Жопой читаешь тред? Я тебе даже ссылку нашел
328 3026516
Есть демо функция, которая генерирует 10 строк, при достижении определенного симафора - инфинити скролл.

Есть база с 1000 записями.

Как подтягивать вместо сгенерированных строк запрос, точнее, как правильно запрашивать данные из базы, что бы они по порядку по 10 штук запрашивались?
329 3026519
>>3026115
Сейчас бы бредни агрессивного вкатуна дальше первого предложения читать...
330 3026531
>>3025816 >>3025824
Мерси. Перечитаю и примеряю к задаче в этом и других местах, просто вот:
>>3026022 >>3026022
Тащемта матч-кейс это ни хухры-мухры, это вам не банальный свич-кейс, это ниибацца паттерн-матчинг (см. пеп: https://peps.python.org/pep-0622/ ), помню поковырялся с ним, читал пепы, но почему-то пришёл к выводу, что нинужно на подобных кейсах. В основном потому, что он мягко говоря не для того, чтобы сравнивать переменную со значениями, это его побочное умение.
Например, можно посмотреть тут: https://habr.com/ru/articles/585518/
Впрочем, как раз в данной он по крайней мере не агрит линтер, значит разрабы считают его валидным выходом.

>>3025996

> твоё уродство, держи и никогда так не делай.


> return {"1": f1, "2": f2, "3": f3}.get(param, str)()


Это я уже сделал, в том же посте написано, почему мне это не нравится:
>>3025812

> Ведь есть встроенная функция 'str':


> https://www.online-python.com/drOC5tk192


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



>>3026004
ВАХ! Спасибо. Первый раз (почти) вижу, чтобы лямбда на живых примерах, а не в какой-то абстрактной задаче так хорошо вписалась в код, спасибо! Пока что этот пример мне нравится больше всего.
Тем более, что собственно суть вопроса к формату сейчас - когда потом в системе появится ещё 100500 параметров, требующих отдельной обработки (а это более, чем возможно) я хочу как можно проще расширять список.
331 3026562
>>3026531

>Это я уже сделал


Это другое, посмотри внимательней там скобочки () после гета, функция передается и сразу вызывается на месте.
332 3026593
>>3026562

>посмотри внимательней там скобочки () после гета


У меня с первого примера кода так:
>>3025530

>> def func(param: str) -> str:


>> ....return {"1": f1, "2": f2, "3": f3}[param]()


Чтобы было именно так:

> функция передается и сразу вызывается на месте.

333 3026716
как установить в домашнюю директорию произвольную версию питона, отличную от тех, что есть в репозитории моего линукса?
334 3026723
Аноны, как лучше разбивать байтовую строку полученную через сокет?
Реализую байтовый протокол и надо разобрать строку - достать значение первое, второе, а потом, в зависимости от третьего, определённое количество следующих.
Помогите пожалуйста.
335 3026753
>>3026716
0. Помни, что верися запускаемого питона зависит от имеющейся в системе версии GLibs и, возможно, чего-то ещё.
1. Скопируй виэнв оттуда, где есть нужная тебе версия.
2. Не забудь зайти внутрь и поправить пути.
3. Активируй виэнв.
Или вместо всего этого:
1. Запускай в докере.
336 3026782
>>3026753

>версия запускаемого питона зависит от имеющейся в системе версии GLibs


Это просто из моих шишек: достаточно современный питон (примерно с версии 3.9) физически не запускается на окаменевшем говне мамонта под названием "CentOS 7", а голимый тырпрайз любит этот недоёбанный копролит!
337 3026823
>>3026753
>>3026782
не ну оно-то понятно, что на его собирать придётся из сырцов. просто пока не понятно с какими опциями запускать ./configure чтоб приблизительно получить такой же питон, как он в дебиане собран. скачал пока себе сорцы пакета python3-minimal, но что-то не нашёл ещё там в каком конфиге он собирается.
338 3026860
>>3026823
Распаковываешь & переходишь в папку соуса, потом так:

./configure --prefix=$HOME/python/Python-3.10.13 --enable-optimizations --disable-test-modules --with-lto

make -j 16

make install
image82 Кб, 1600x900
339 3026862
Начал говнякать некоторый софт с gui в tkinter.
Всё-таки встроенная либа, надо как минимум быть в курсе, вот это всё.

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

Т.е. какое-то нелепое нагромождение фреймов ради простой прокрутки.
340 3026890
>>3026862
Спасибо, что поделился столь важной информацией.
341 3026896
>>3026890
Не стоит благодарности. Обещаю и впредь держать тебя в курсе.
342 3027407
>>3027239
19 лет, вкатился на 70к. Вопросы?
image.png15 Кб, 543x484
343 3027436
Что значит такая форма ROC-кривой?
344 3027458
>>2995509
ты блять импорты нормально описал или чем?
Пинсталлер пихает в экзешник тупо интерпретатор и библиотеки. ВСЕ.
Если у тебя что то не работает то ты библиотеки хуево описал.
Попробуй импортировать полнуюю либо, а не модули из нее
без from mamka import jopa
импортируй сразу import mamka
Жопа без мамки может не сработать, я те говорю.
345 3027484
>>3026823

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


Это отдельный вопрос, я однажды собирал руками какой-то то ли 3.8, то ли 3.9 для сраной центоси с дефолтными параметрами, вообще легко в полторы команды и заработало как надо.
Но у меня вопрос встречный: чем тебя докер не устраивает? Если нужна какая-то специфичная среда, то он идеален.
346 3027952
>>3027436
смена угла линии
347 3028407
>>3026862

>всё-таки встроенная либа, надо как минимум быть в курсе


Можно смело скипать, как и sqlite3 (всё-таки тоже встроенная либа)
348 3028576
def gen():
....yield from sorted(file for file in lst)
for x in gen():
....print(x)

Аноны поясните, тут суть генератора теряется или нет? Для сортировки же надо знать длину массива или ещё что-то такое, что противоречит генератору. Получается в sorted() возвращается полный список и потом выплевывается в yield, но тогда теряется смысл передачи прав "from". Может тут под капотом какая-то неявная магия? Или как это работает? Поясните блин.
349 3028605
Взял тут кое-что с гитхаба, но при попытке освоить вышла проблема
Command "python setup.py egg info" failed with error code 1 in /tmp/pip-build....
Как это фиксить? В чем причина?
350 3028732
>>3028576

> Для сортировки же надо знать длину массива или ещё что-то такое, что противоречит генератору.


Нинужно, достаточно уметь сравнивать элементы, а их количество неважно. Другое дело, что нельзя отсортировать список не имея собственно всех элементов списка. Заинтриговал. Я елд-фром не пользовал пока.

Итак:
https://www.online-python.com/tQVgmvR69q
То есть генератор с елд-фромом работает.

Вангую, что сначала там отрабатывает компоновка, потом она прогоняется через сорт и оно хранит внутри себя отсортированный лист, по которому уже итерирует. Что в целом действительно противоречит идее генераторов, которые хранят только условную позицию. С одной стороны.
Но с другой - есть ситуации, когда это тупо удобнее и расход памяти не так роляет.

>>3028605

>кое-что


Кое-что, блядь, он взял, как-то запускает, что-то происходит...
Детали, Билли, нам нужны детали!
351 3028836
>>3028732
https://www.online-python.com/SakFRnNudY
Провел тут тест, как и ожидалось сначала все элементы прогоняются в сортеде, потом выплёвываются, генератор тут не ленивый а просто сомнительный элемент синтаксиса. Ещё оказалось что лист компрехенсон вообще с yield from не работает, а вот map работает.
352 3028853
Сап аноны, вопрос новичка

В php я могу узнать, было ли выполнено условие
Например переменной статус присваиваем действие. Например подключение к БД
$status = mysqli_connect(1.1.1.1, root, 123, BD_NAME);
Если подключение удавалось, то переменная статус была True
Если нет, то False
И далее можно было сделать проверку и вывести сообщение об ошибки или успехе

Можно ли так в питоне?
Пробовал как в php, но не получилось. Пытался загуглить, но чет норм инфы нет, через какие-то заебства такое надо осуществлять

Можете накинуть примеров или ссылок?
353 3028882
>>3028853
Ты какой драйвер/библиотеку используешь для подключения к базе? Обычно там отдается объект подключения, и если он не None, то подключение прошло успешно, а если None, то что-то сломалось. Но опять же, в разных либах по-разному может быть
354 3028889
>>3028853
В питоне можно создать соединение через try except чтобы отследить ошибки, а через условие if проверить, что соединение не None

import pymysql

try:
# Подключение к базе данных
conn = pymysql.connect(host='1.1.1.1', user='root', password='123', db='BD_NAME')
print("Подключение успешно")
except pymysql.Error as e:
print(f"Ошибка подключения: {e}")

И так

import pymysql

# Подключение к базе данных
conn = pymysql.connect(host='1.1.1.1', user='root', password='123', db='BD_NAME')

# Проверка статуса подключения
if conn:
print("Подключение успешно")
else:
print("Ошибка подключения")
355 3028896
>>3028882
>>3028889

Спасибо, щас поразбираюсь с кодом. Этого примера достаточно в принципе

Я вообще не юзаю подключение к БД. Это как пример
У меня есть условно какой-то код, даже допустим отправка файла куда-то через curl. И мне нужно узнать статус выполнения этого кода, успешно ли было выполнено или нет

И вот в пхп об этом думать не надо. Достаточно переменной присвоить этот код и потом через if else проверку сделать, true или false
356 3028903
>>3028896
Ну друже, тебе надо в ООП вникнуть хорошенько. Станет гораздо понятнее хотябы куда смотреть, чтобы найти то, что надо. В пхп все-таки совсем не ООП было. Как попишешь немного на питончике - будет гораздо проще
image.png20 Кб, 338x349
357 3029055
>>2981203 (OP)
Здарова дрочеры, поясните мне насколько питон пересахарен говном всяким. Например, в обучалках все любят показывать как декоратор делать. Нахуй его делать через @Decorator, если можно было просто лямбду передать, типа такого кода?
358 3029063
>>3029055
Можно наслаивать декораторы и это будет красивее. Диф будет красивее. Вместо +1-1 строки будет просто +1
359 3029070
>>3029063
Справедливо.
360 3029078
>>3027458
* другой
Я вообще ехе собираю через pysimplegui-installer.py, он норм всю ёбань собирает
361 3029079
>>3026862
юзай pysimplegui !!!
362 3029218
Аноны, кто-нибудь писал для AVR на Python? Понимаю как безрассудно это звучит, но может были прецеденты?
363 3029551
>>3029218
хуйня, бери с++

ты просто не найдешь библиотеки
364 3029570
Ребзи интересует курс по SAP, где-то можно найти сливы с udemy или подобное?
365 3029616
>>3029570
У сапы есть официальные книги https://www.sap-press.com/ Там такие талмуды шо ты проста ахуеешь. По одним только workflow там под тыщу страниц наверно. По финансам только вводная часть - это 500 страниц. Шоп сделать курс по sap, это надо часов 300 ебать начитывать текст. И весить он будет гигабайт сто нахуй.
366 3029847
>>3019960
Ну-ка бамп.
368 3029899
>>3019960

>кто-то уже считает устаревшим паттерн MVC


Динамический одностраничник на реакте, например не MVC
369 3030619
>>3027239
Ну вкатился, ептыть. Правда проект какое-то окаменелое легаси дерьмецо в виде монолита на фласке из 2016 года.
Хочу перекатиться в молодежные микросервисы на Golang!
370 3030653
>>3030619
дои кабана.
371 3030710
>>3030653
Ну можно конечно выебнуться, проявить активность и выбить бабла на переписывание этого копролита на go и микросервисы, да вот только я не лид, а сама команда из лоускиллов состоит, которые микросервисов ни разу не видели, как и я собственно.
Получится куда более худшая версия того, что есть сейчас. Поэтому посижу годик и съебу туда, где микросервисы и го есть.
372 3030741
>>3030710
Галера? Или почему уровень разрабов такой низкий?
373 3030850
>>3030619

>Хочу перекатиться в молодежные микросервисы на Golang!


>>3030710

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


Блядь, откуда вы такие альтернативно одарённые лезете?
Схуяли ты взял, что микросервисы будут лучше, если ничего о них не знаешь? Потому что индус на ютубе сказал, что микросервисы это модно-современно?
374 3030939
>>3030850

>Потому что индус на ютубе сказал, что микросервисы это модно-современно?



Кстати, да. Технологии же примерно так и выбираются, лол. Что хайпит - то хорошо, и опыт с такой технологией будет ценнее.
375 3030972
Вопрос к телетонщикам: как реализовать авторегер акков? send_code_request не отправляет смс с кодом. Но всякие комбайны реализуют авторегистрацию аккаунтов. Значит это все таки возможно.
376 3030980
>>3029551
Не знаю почему, но С++ меня накаляет. Делал 20 лет назад лабораторные и благополучно забыл его.
377 3031000
>>3030980
C++ хуйня, соглашусь.
Но какую бы ты не взял библиотеку на питоне, она будет хуйней.
Ты сможешь делать только очень простые вещи на очень ходовых либах.

ну напрмер включитьс ерву по нажатию на кнопку ты сможешь.
А вот передать lora сообщение к другому устройству нет, потому что обасрешься с готовой либой.
378 3031002
>>3031000
Вы тут охели рот на плюсы открывать? Потише!
sage 379 3031008
Пиздец блять тред даунов
380 3031034
>>3031008
Я вообще с C#, но опускаю питон в сообщениях.
381 3031112
>>3031034
Завидуешь питоногосподам, бомжатина дотнетовская?
382 3031132
>>3031034
Опустил бы лучше какой-нибудь топ прогой собственной разработки, мол на питухоне такое не сделать. А так очень жалко выглядишь со своим ответом
383 3031304
>>3031034

>C#


Это который чуть более, чем весь спиздили у джавы, но с заточкой только лишь под мастдай? Ты жалок и узок.
384 3031306
>>3031002
Речь же не про чистый Си, так что норм.
385 3031365
>>3031304
>>3031132
>>3031112

В этом и прикол.
У меня нет конкурентов я спокойно работаю и никто меня не дергает.
386 3031417
>>3031365

>Я вообще с C#, но опускаю питон в сообщениях.


>Сказали, чтобы не страдал хуйней


>В этом и прикол.


>У меня нет конкурентов я спокойно работаю и никто меня не дергает.



Напомни еще раз, нахуя ты ИТТ? Может тебе лучше в /psy помощи поискать?
image.png1,4 Мб, 1024x1024
387 3031428
Шарпомухе по ебалу
388 3031572
>>3031417

я шалю.
389 3031579
>>3031417
Конкурентов нет потому что c# нигде не нужен кроме оборонных госушных заводов сори за факты.
390 3031721
>>3031579
Старшно далёк ты от народа.
391 3032404
>>3031579
Не. Я видел. Хуйню пописывают самописную под себя всякую. Но только до тех пор, пока не сообразят, что проект разрастается и пора бы на линукса перекатывать для надежности
392 3032589
Где узнать какие методы и функции работают быстрее других?
image32 Кб, 701x555
393 3032691
>>2981203 (OP)
А ты ОП, тупорылая долбоёбина, ставь тег python при создании темы.

Иначе аноны не находят его поиском и долбятся в предыдущий.
394 3032696
>>3032691
ОП не умеет программировать тег
unnamed(1)-Qr0Wb0Het-transformed.jpeg1,3 Мб, 1800x1800
395 3032712
Прошу помощи с моим говнокодом. Выкакиваются ошибки, но я слишком тупой, чтобы их решить. Если код уродливый — сильно не пинайте.

https://pastebin.com/A8PQ4wCf
396 3032868
>>3032712
https://pastebin.com/VX2Deuv9 на. Только тебе там в функции надо передавать дополнительных два каких-то аргумента (она принимает 4, ты передаешь 2), вообще хз че они делают. Сам подставь. По идее должно быть оставшейся единственной ошибкой
397 3032893
Если я внутри функции 1 определяю еще одну функцию 2, то функция 2 заново переопределяется каждый раз, как вызывается функция 1? Это медленно? Использую вложенные функции для ограничения видимости, насколько это норм идея?
398 3032958
>>3032893
внутри твоей мамки определяю твой эмбрион, который папкина сперма. Это я медленно ищу твой мозг??
399 3032961
.. конечно, фунциональная вложенность - это медленней, чем ассемблер, или си.
Какая проблема-то у тебя, убогенький?
400 3033081
Как решать задачи на рекурсию ппц туплю на них всегда. Иногда нужен базовый случай иногда не нужен. На кодварсе лёгкие задачи рекурсии их не так много чтобы тренировать. И всегда есть соблазн решить читерски
Обучение питону . 401 3033416
всем привет, хочу разобраться в питоне, но не знаю, как подступиться. можете помочь, мб есть какие-нибудь курсы/ уроки и тд?
402 3033422
>>3033416
Тимофей Хирьянов на ютубе или поколение python на степике.
403 3033514
Как перестать тратить время на прокрастинацию на решение задач и начать учить то что надо?
sage 404 3033811
Тред даунов
405 3034577
>>3033811

>Тред даунов


Шарпей обиделся
406 3035779
>>3033416
codecombat.com
image.png37 Кб, 753x322
407 3036248
Бляя, как у меня жопа горит. Как мне этот питон ебаный учить, если половину обучалок делают просто ДАУНЫ ебаные.
У каждого первого асинхронность = параллельность, вы че ебанутые блять? Вы реально настолько тупые сука?! Бляя, идите нахуй со своим питоном, это пиздец просто клоунада, а не коммунити
408 3036264
>>3036248
А по твоему это че? Не механизм, позволяющий исполнение нескольких задач одновременно? Или что ты считаешь асинхронностью
409 3036304
>>3036264
Механизм, который позволяет выполнять задачи одновременно - это блять потоки, представляешь? Асинхронность ничего не выполняет одновременно, шизоид поехавший бля
410 3036313
>>3036304
Так асинхронность-то что такое, ты на вопрос не ответил
411 3036324
>>3036313
Асинхронность - это когда вызывающий поток засыпает до получения результата. Если поток запускает другой поток и сам продолжает работу - это многопоточность.
412 3036335
>>3036324
Понятно
413 3036457
>>3032893

>Это медленно?


Это нинужно. Так может работать, но ю дуин ит вронг. Используй отдельные классы, наследование с перезагрузкой части методов или приватные методы, смотря по ситуации.
414 3036465
>>3033416
ОП-пост не читай
@
В тред пиши!
1707154312566.jpg694 Кб, 2048x1535
sage 415 3036547
>>3036248
Если хочешь научиться базовым вещам, то тебе придется читать официальную документацию и книги. На Хабре пишут те кто хочет выебнуться
416 3036614
Сап питонач. Пилю для курсача по проге простенькое приложение на pyside6. Суть его в том, что пользователь вводить в главном окошке различные параметры, кликает "старт" и во второстепенном окне строится несколько графиков в зависимости от того что он навводил.
Я нагуглил, что второстепенное окно можно реализовать через QWidget и QDialog. И не вполне понимаю, какое тут лучше использовать и есть ли смысл тут в QDialog - с пользователем общаться окошко не будет, только выводить матплотлибовскую анимацию. Или тут похуй?
417 3036946
>>3036465
Там на английском
418 3037148
>>3036614
А чо не просто на PyQt? Вопрос без иронии, просто тоже предстоит сделать gui для одного скрипта.
419 3037229
>>3037148
Ааа просто так, по историческим причинам.
Pyside и PyQt всё равно на 99% одно и то же.

Но с некоторым шансом, если матплотлиб нарушит обещания в своих доках, что работает нормально со всеми свежими реализациями питон-Qt, мне таки придётся переписать всё на PyQt5.
420 3037414
>>3037148
Для тех, кто хочет своё ПО с гуем пилить и официально в мире продавать, надо будет отстёгивать в PyQt, а в пайсайд не надо.
А по факту 99% одно и то же. Я б вкатывался сразу в пайсайд тогда уж.
421 3037430
Джанго. Если я во вьюхе дёргаю объекты с базы данных, а потом передаю их в html шаблон через контекст, и уже в шаблоне перебираю через for, это говнокод? Если я такой сайт при устройстве на работу покажу, меня не обоссут? Просто приходится прямо в самом шаблоне на них css свойства через style вешать, выглядит конечно говняно.
422 3037513
>>3036946
Нечего тебе делать в ИТ, чувак. И даже не потому, что ты не знаешь буржуйсткого (хотя и поэтому тоже), но и потому, что тот совет, который тебя типа устроил - это повтор совета из ОП-поста, который ты либо не прочитал, либо не понял, в обоих сллучаях если ты способен запутаться в небольшом текстике - значит с ИТ не справишься.
>>3037430

>шаблоне перебираю через for, это говнокод?


Нет, это нормальное использование дзиндзи. Например, возьмём карточки товаров: ты запросом получил 10 или 20 товаров и для каждого из них тебе нужна небольшая карточка с фото, наименованием и ценой, соответственно это неизвестное заранее количество дивов. Дивы должны быть только в дзиндзе. Так что обходи циклами реализуется именно в шаблоне. Как вариант ты можешь использовать вложенные шаблоны (те же карточки - хранить в отдельном файле и передавать им входные параметры при генерации), это не особо критично, вроде.
Мимо писал на джанге один раз пару лет назад, но что-то ещё помню.
423 3037544
На каком уровне нужно знать Linux джуну бэкэнд-разработчику?
https://www.cbtnuggets.com/it-training/linux/certified-system-administrator
Вот это пойдет?
424 3037546
>>3037544
Промазал, не туда.
425 3037553
>>3037544
Теоретически многие могут обойтись вообще без него или тупо заучить пару команд и узбагоидзя. Но в реальной IRL жизни - чем лучше, тем лучше. Иногда знание некоторых очень редких тонкостей позволит тебе легально здорово срезать некоторые углы.
426 3037575
>>3037513 спасибо большое
427 3037624
>>3037544
Способность настроить себе окружение + возможность выполнять на нём работу. Вообщем-то этого достаточно.
Если смотреть по ссылке: как выше написали.

По поводу терминалов и команд - какие то базовые надо знать(ну там файлик посмотреть, подключиться к удалённому серверу, ну докеры туды сюды позапускать и тд. - примерно такой уровень.)
428 3037689
>>3037414
Да я не себе, коллегам подсобить взялся, а им надо кнопку, а не "какое-то черное окно".
429 3037698
>>3037513

> ба-бах

Screenshot from 2024-02-06 16-18-39.png18 Кб, 617x136
430 3037701
>>2981203 (OP)
Что в pydantic означают выражения вроде Field(...) и Field(None)? Вот тут вот в is_active пробрасывается почему-то Ellipsis (троеточие), что оно делает? А вот source с None. Я никогда особо Field в пайдентике и не использовал, просто фигачил поля с тайпингом и все
431 3037716
>>3001687
научи меня
дай не рыбу а удочку, научусь сам, просто скажи что конкретно нужно
432 3037903
>>3037689
Поищи qtdesigner или типа того, это рисовалка под pyQt
433 3037951
>>3037716
Если питон знаешь, просто не парсил никогда, тогда читай этого, он базу даст.
https://habr.com/ru/articles/579336/

Если совсем нубас, придется бабок вкинуть мальца. Пройди например вдумчиво курс https://letpy.com/. Задачи с рисованием можно смело скипать, это хуйня. В конце курса ты будешь уметь собирать данные с простого беззащитного сайта в CSV-файл.

В этом деле, как и во всей технической науке есть три узла: Вход-контроллер-выход.
Вход: целевой сайт, разведуешь его, ищешь, как собрать данные максимально быстрым и стабильным способом. В идеале, родной АПИ сайта, пусть даже платный, далее смотришь XLR ответы, там иногда джейсоны в чистом виде прилетают на халяву, дальше по ухудшению надежности идёт свой скрытый апи, найти можно, поковырявшись в заголовках запросов-ответов, иногда джейсон-данные прячутся в джейсон-коде, прям в теле запрашиваемой страницы, об этом рассказывает тот чувак из хабр статьи. Если же ты нихуя выше не нашел, тогда разбирай бьютифулсупом хтмл-теги, как лошара, осознавая, что если через полгода сайт чууутка подкоректирует разметку, твоему парсеру пизда. Последнее днище - селениум. Это когда совсем уже конкретное одностраничное глухое приложение работает прям в браузере клмента и никакими запросами оно с сервером не меняется и на твоей стороне просто в кашу заобфускированное мясо из джейсона.

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

Выход: Можешь сохранять в CSV (под эксель удобно например кому то), можешь в БД (если база будет храниться локально и к ней подключаться будет один пользователь единовременно, можно прям в sqlite3, похуй), можешь в постгре, можешь в джейсон (это если дальше с ними будет работать какаянить морда напрямую например) для базы в контроллере данные карточки сохраняй в виде кортежа и в базу загоняй их не по одной карточке, а пачкой карточек после прохода по каждой странице

Как то так.
Теперь дай мне съесть наловленную рыбу, просто скажи, куда блять с этим мне теперь сунуться?
433 3037951
>>3037716
Если питон знаешь, просто не парсил никогда, тогда читай этого, он базу даст.
https://habr.com/ru/articles/579336/

Если совсем нубас, придется бабок вкинуть мальца. Пройди например вдумчиво курс https://letpy.com/. Задачи с рисованием можно смело скипать, это хуйня. В конце курса ты будешь уметь собирать данные с простого беззащитного сайта в CSV-файл.

В этом деле, как и во всей технической науке есть три узла: Вход-контроллер-выход.
Вход: целевой сайт, разведуешь его, ищешь, как собрать данные максимально быстрым и стабильным способом. В идеале, родной АПИ сайта, пусть даже платный, далее смотришь XLR ответы, там иногда джейсоны в чистом виде прилетают на халяву, дальше по ухудшению надежности идёт свой скрытый апи, найти можно, поковырявшись в заголовках запросов-ответов, иногда джейсон-данные прячутся в джейсон-коде, прям в теле запрашиваемой страницы, об этом рассказывает тот чувак из хабр статьи. Если же ты нихуя выше не нашел, тогда разбирай бьютифулсупом хтмл-теги, как лошара, осознавая, что если через полгода сайт чууутка подкоректирует разметку, твоему парсеру пизда. Последнее днище - селениум. Это когда совсем уже конкретное одностраничное глухое приложение работает прям в браузере клмента и никакими запросами оно с сервером не меняется и на твоей стороне просто в кашу заобфускированное мясо из джейсона.

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

Выход: Можешь сохранять в CSV (под эксель удобно например кому то), можешь в БД (если база будет храниться локально и к ней подключаться будет один пользователь единовременно, можно прям в sqlite3, похуй), можешь в постгре, можешь в джейсон (это если дальше с ними будет работать какаянить морда напрямую например) для базы в контроллере данные карточки сохраняй в виде кортежа и в базу загоняй их не по одной карточке, а пачкой карточек после прохода по каждой странице

Как то так.
Теперь дай мне съесть наловленную рыбу, просто скажи, куда блять с этим мне теперь сунуться?
434 3037967
>>3037951
Быстрофиксы:

>XLR


XHR

>джэйсон-каша


js-каша
435 3038011
>>3037951
Сайты с авторизацией через Госуслуги как парсишь?
436 3038058
>>3037951
Фриланс. Просто огромное количество заказов на сбор сущностей из какого-нибудь интернет справочник/каталога в эксельку. Я так понимаю тебе написать их будет быстро, а денег нормально иногда предлагают
Еще как вариант существуют инженеры по автоматизации, там как раз парсеры юзаются. Такой работы не то чтобы много, на самом деле, но туда мало кто идет. Можешь поискать по ключевым словам bs4/selenium на всяких сайтах с вакансиями. Придешь туда и будешь апи внутрений дербанить, а не хтмлы.
437 3038186
>>3038058

>Фриланс


Да вот хотелось бы на работу обычным способом устроиться. Почекал я всякие кворки, там тыщу предлагают за трехдневную работу и еще голову всю выебут. У меня не подвешен язык, мне не нравится всяких долбоёбов облизывать за тыщу.
438 3038198
>>3038011
Например?
Сам себе бота, который мне мои штрафы парсит и присылает в телегу я то напишу. А другим людям, это другое.
440 3038344
>>3033416
это не твоё тогда. Ты чё собрался писать??
image.png145 Кб, 758x1069
441 3038432
Добрый день. Прошу оценить визуально.
Есть два стула (пик). Делают одно и тоже. В одном случае у меня 12 строк, 3 уровня и 6 бранчей, в другом - 13 строк, 5 уровней и 2 бранча а ещё он не работает на сайте online-python.com потому, что у них питон 3.8, а паттерн-матчинг появился в 3.10 и проявиться это может почти где угодно ещё.
Что вам больше нравится визуально? Как считаете писать правильнее?

Текстом, если что: https://pastecode.io/s/9ga1mmj7

ind4: Есть же специальный модуль для сбора параметров!
Таки да, есть. Чуть не в стандартной библиотеке. Не помню, как называется. Я не смог заставить её выдавать нормальные многострочные подсказки, а там их надо. Вот прям НАДО.
442 3038450
>>3038432
Нахуй ты вообще написал второй вариант? Паттерн матчинг если где-то и нужен, то явно не здесь.
Какой нахуй модуль для сбора параметров?
443 3038562
>>3038450
Выше (>>3025530 и далее) писали про бранчи и свичматч-кейс (>>3025816).
Я потыкал, попробовал. Оказалось, что линтер считает его плоским кодом с нулём ветвлений. Взял кусок, похожий на свичматч-кейс и переписал его. Получилось вот так вот. Странно. Не нравица!
С другой стороны я меняю 4 ветвления (при общей рекомендации - уложиться в 12 это немало) на 1 строку и пару отступов.
444 3038574
>>3038198
Я там не могу понять механизм переадресации. Вроде логин-пароль отправляю, но не вижу куда потом отправлять код подтверждения.
445 3039057
>>3038574
Где там то? Я что, угадал и ты про штрафы?
Но я всё равно скорее всего не смогу освежить воспоминания, я по понятным причинам, удалил акк госуслуг, как только почалось.
446 3039077
>>3038562
Что там ветвления, что там ветвления, только во втором случае отступов больше и код сложнее. Если твоя цель наебать линтер, то пожалуйста. Во всех остальных случаях первый вариант лучше.
image.png38 Кб, 927x668
447 3039224
Почему я не могу решить эту задачу просто сравнивая сумму значений символов? Ведь в анаграме все буквы одного слова будут использоваться в другом слове без исключения.

сумма АБУ == БУА == УБА == БАУ == УАБ

типа sum(ord(c) for c in s) == sum(ord(c) for c in t)
448 3039236
>>3039224
ВСЁ
разобрался сам
просто сравниваемые слова могут быть разных символов и разных букв которые могут дать равные значения суммы. Но прикол в том что я нашел похожую задачу на кодварсе и....смог решить её через одинаковые значения сумм...
449 3039294
Как устроены тесты на кодварсе? У меня было решение которое не проходило 1,2 ранломных теста на большие массивы. Я пару раз нажимал субмит и каким-то образом все тесты прошлись. Я так понял что просто повезло с рандомом. И они не предоставили тех вариантов где у меня была бы выявлена ошибка. Как тогда вообще быть уверенным в правильности работы своего кода?
Ну например буду программировать кардиостимулятор. И по итогу на большом количестве повторений накопится ошибка, стимулятор заглючит и челу придет кирдык. Не хочется чтобы из-за того что не учел циферку умер человек
450 3039483
>>3039294
Там чисто тесты с рандомными значениями, причем не то чтобы сильно много тестов. В критической инфрастурктуре, типа ПО для самолетов и медицинских устройств работоспособность кода доказывается математически, для этого существуют свои инструменты, типа COQ. Думаю там еще и системные аналитики привлекаются, которые пытаюсь постигнуть, что в системе может пойти не так на уровне железа. В общем, не волнуйся
451 3039490
>>3039294
Причина тряски?
452 3040089
>>3038186
Про автотестинг не думал? Тот же самый селениум и дёрганье апишек
А так вроде и отдельные конторы есть, которые парсингом занимаются, и просто в галерах всяких команду иногда держат
453 3040619
товарищи, ни у кого случайно фото шнобеля не осталось? желательно в виде боевой картинки.
454 3040652
>>3037951
Ебать годнота, кроме шуток. Это я про статью с Хабра. Спасибо. Другой анон
455 3041299
Регулярки.
Какого хрена в re.findall круглые скобки работают не как в остальных функциях? чем их заменить?
Я хочу чтобы выражение возвращало мне наборы из 6-10 цифр плюс-минус пробелы, скобки или дефис.
r"((\d[\s\(\)\-]*){6,10})\d"

Почему я получаю в ответ кортежи, где есть ненужное значение из одной цифры и как этого избежать?
457 3042159
>>3041299
да потому что ты пидор ёпта
458 3042319
>>3041314
Спасибо большое.
А почему статья по JS ответила на мой вопрос?
459 3042475
a = 'ASSSSSSS'
b = 'ASSSSSSS'
print(a is b)
print(id(a), id(b))

x = 'ХУЙ'
y = 'ХУЙ'
print(x is y)
print(id(x), id(y))

True
1230440834736 1230440834736
False
1230440353392 1230440765744

Почему так? Str кирилицы изменяемые данные?
461 3042577
>>3036248
Тут просто говняк с переводом терминов с русского на английский. Для обывалы параллельное исполнение == английскому concurrency
462 3042605
>>3040619
бамп реквесту
463 3042674
Стоит ли сеньеру .NET пытаться освоить питон?
Последний раз кодил на питоне - в вузе для диплома.
Суть-то в том, что я всегда питон воспринимал как такой-то калькулятор + прокаченый баш-скрипт.
Но из-за того, что .NET - основной мой инструмент, я даже простые задачки по автоматизации для себя решаю .NET'ом. А это как по мне - оверхед.
Вот и вчера возникла задача - померять, RPS для сервера под большой нагрузкой. Начал писать на .NET'е хуйню для симуляции нагрузки. Но из-за особенностей работы .NET'а, этот тест - жрет больше, чем тестируемая приложуха, понять реальное положение дел с нагрузкой сложно. Думал - как раз взять питон и на нем сэмулировать 100к коннектов и посмотреть RPS и корректность работы. Справится? Или проще попросить вторую машину, на которой будет моя хуйня запускаться, чтобы не мешать серверу.
image.png194 Кб, 513x1751
464 3042680
>>3042674

>Стоит ли сеньеру .NET пытаться освоить питон?


Питон, как и джава скрипт, как и С/С++, хотя бы на средне-начальном уровне решения студенческих лаб и литкода должен знать и уметь ЛЮБОЙ, абсолютно любой сеньор. Сюда же в принципе входит SQL, HTML, Excel, git, md, атрибуты расширенного поиска в гугл и яндекс, базовые админские вещи, докер, кубер, может что-то ещё забыл. Наверное, иметь опыт работы в линуксе тоже обязательно. Английский и алгосы конечно же.
Если за твои 5+ лет опыта работы (а иначе какой ты сенька, молокосос накрученный) тебе не понадобились все эти пункты, то ты работал в каком-то закукленном пузыре, и тебе надо срочно менять работы и наращивать насмотренность.
465 3042698
>>3042478
Спасибо
466 3042700
>>3042680

> image.png


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

мимо-20к-пенсия-по-шизе
467 3042753
>>3042319
Потому что регулярки кросс-язычны, 90% их функций одинаково работают во всех языках.
468 3042921
>>3042680
Питон таки мне кроме лаб в вузе на работе ни разу не пригодился.
Вру. Один раз - когда лень было с Make ебаться - на питоне накидал сборку сишного проекта, и когда очередную квалификацию проходил - чтобы графики нормальные построить с помощью pyplot, но это так. Как и говорю - скорее расширенный баш.
469 3043174
Как научиться программировать. А не тупо пользоваться библиотеками?
470 3043176
>>3043174
Это и есть программирование
471 3043227
>>3043174
база + алгосы
472 3043386
>>3043174

>Как научиться программировать.


Начать решать задачи реального мира, научиться в абстракцию и декомпозицию.
473 3043518
>>3040619
бамп реквесту
474 3043524
>>3043386
На питоне - никак, это не программирование
изображение.png26 Кб, 462x356
475 3043796
Кто-нибудь обладает опытом написания парсеров ?
Попытался родить свой калькулятор на основе готового PEG-парсера - модуль parsimonious .
Задача выглядит как приключение на 5 минут, но все время какая-то хуета получается.

Что означает такая ошибка?
parsimonious.exceptions.IncompleteParseError: Rule 'user_input' matched in its entirety, but it didn't consume all the text. The non-matching portion of the text begins with '+3' (line 1, column 2).

Это я еще до обработки значений не дошел
476 3043797
Аноны, подскажите по организации внутренней логики софта.

Задача софта "включать" \ "выключать" некоторые файлы в файловой системе. Меняя их свой свойства или имена, например делая их скрытыми в OS Винды или дописывая расширение file.ext._hide_

Вот сейчас думаю, как организовать базу данных этих файлов.
Дело в том, что файлов буквально миллионы и они могут быть сильно "зависимы" между собой. Т.е. если мы "выключаем" какой-то файл то вместе с ним должны выключить ещё например 1000, потому что они с ним связаны. Как эту связь лучше всего записать?

1) Базовая единица группировки файлов это строка с неким названием, назовем её "лэйбл".
2) Пользователь "включает\выключает" файлы кликая именно по "лэйблу".
3) Каждый файл внутри "лэйбла" имеет своё отдельное состояние "вкл \ выкл"

Например "лейбле" в 3к файлов которые надо "выключить" и 1к файлов которые должны остаться не тронутыми, когда пользователь кликает по "лэйблу". Одновременно с этим каждый файл который мы меняем может иметь "зависимость" - другой файл который тоже надо "выключить". Зависимый файл может быть только в пределах одно "лэйбла".

Изначально файлы содержатся в такой вот структуре словаря.
Это json, так что есть серьезное ограничение - объект должен быть сериализуем с помощью json. Организацию словаря можно изменять как угодно, если потребуется.

{
"Lable_1":{
...."On" :["/path/dir/file1.ext","/path/dir/file2.ext", ...], #файлы которые не трогаем
...."Off":["/path/dir/file3.ext", ...]}, #файлы которые надо выключить когда пользователь жмет на лэйбл
"Lable_2":{
...."On" :["/path/some dir/file4.ext",],
...."Off":["/path/some dir/file5.ext", "/path/some dir/file6.ext", ...]},
}

Вот сейчас файлы организованы в таком виде. Задача - добавить эту "перелинковку", как-то записать, что "вот этот файл" связан с "тем файлом".

Загвоздка в том, что например "file 1" может быть связан с "file 2" и "file 3"
И одновременно файл "file 257" может быть связан с "file 2" и "file 3"
Если каждый файл сделать ключом словаря и его "зависимости" записать в значение, то получится так, что строки с названием файлов "file 2" и "file 3" будут повторяться в словаре просто миллионы раз. Из за этого словарь станет весить в памяти непомерные значения.

Я подумал использовать список и индексы, т.к. список сериализуем json , но памяти занимает значительно меньше.

Например так
{
"Lable_1":{
...."all files" :["/path/dir/file1.ext","/path/dir/file2.ext", "/path/dir/file3.ext", ...],
....#просто отсортированный список всех файлов
...."idx off":[2,3,156]
....#индексы файлов которые выключаем при клике на лэйбл
...."dependence":[(2,3,4), (156,3,7)]
....#списки, где перечислены все индексы которые связаны
}

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

Как ещё можно организовать такую базу без использования SQLite, PostgreSQL, MySQL, любыми другими вариантами кроме этих. У меня с ними мало опыта, а новую инфу я сейчас не могу осваивать, надо быстро и эффективно сделать с тем что есть.
476 3043797
Аноны, подскажите по организации внутренней логики софта.

Задача софта "включать" \ "выключать" некоторые файлы в файловой системе. Меняя их свой свойства или имена, например делая их скрытыми в OS Винды или дописывая расширение file.ext._hide_

Вот сейчас думаю, как организовать базу данных этих файлов.
Дело в том, что файлов буквально миллионы и они могут быть сильно "зависимы" между собой. Т.е. если мы "выключаем" какой-то файл то вместе с ним должны выключить ещё например 1000, потому что они с ним связаны. Как эту связь лучше всего записать?

1) Базовая единица группировки файлов это строка с неким названием, назовем её "лэйбл".
2) Пользователь "включает\выключает" файлы кликая именно по "лэйблу".
3) Каждый файл внутри "лэйбла" имеет своё отдельное состояние "вкл \ выкл"

Например "лейбле" в 3к файлов которые надо "выключить" и 1к файлов которые должны остаться не тронутыми, когда пользователь кликает по "лэйблу". Одновременно с этим каждый файл который мы меняем может иметь "зависимость" - другой файл который тоже надо "выключить". Зависимый файл может быть только в пределах одно "лэйбла".

Изначально файлы содержатся в такой вот структуре словаря.
Это json, так что есть серьезное ограничение - объект должен быть сериализуем с помощью json. Организацию словаря можно изменять как угодно, если потребуется.

{
"Lable_1":{
...."On" :["/path/dir/file1.ext","/path/dir/file2.ext", ...], #файлы которые не трогаем
...."Off":["/path/dir/file3.ext", ...]}, #файлы которые надо выключить когда пользователь жмет на лэйбл
"Lable_2":{
...."On" :["/path/some dir/file4.ext",],
...."Off":["/path/some dir/file5.ext", "/path/some dir/file6.ext", ...]},
}

Вот сейчас файлы организованы в таком виде. Задача - добавить эту "перелинковку", как-то записать, что "вот этот файл" связан с "тем файлом".

Загвоздка в том, что например "file 1" может быть связан с "file 2" и "file 3"
И одновременно файл "file 257" может быть связан с "file 2" и "file 3"
Если каждый файл сделать ключом словаря и его "зависимости" записать в значение, то получится так, что строки с названием файлов "file 2" и "file 3" будут повторяться в словаре просто миллионы раз. Из за этого словарь станет весить в памяти непомерные значения.

Я подумал использовать список и индексы, т.к. список сериализуем json , но памяти занимает значительно меньше.

Например так
{
"Lable_1":{
...."all files" :["/path/dir/file1.ext","/path/dir/file2.ext", "/path/dir/file3.ext", ...],
....#просто отсортированный список всех файлов
...."idx off":[2,3,156]
....#индексы файлов которые выключаем при клике на лэйбл
...."dependence":[(2,3,4), (156,3,7)]
....#списки, где перечислены все индексы которые связаны
}

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

Как ещё можно организовать такую базу без использования SQLite, PostgreSQL, MySQL, любыми другими вариантами кроме этих. У меня с ними мало опыта, а новую инфу я сейчас не могу осваивать, надо быстро и эффективно сделать с тем что есть.
изображение.png37 Кб, 643x463
477 3043814
>>3043796
Разобрался. при использовании PEG все зависит от порядка декларации. Такие парсеры задуманы быстрыми и нужно учитывать это.

Короче, если захотите встроить в свою программу какой-нибудь псевдоязычок выражений - рекомендую эту хрень!
478 3043894
Unable to save settings в Джанго это что за прикол? Добавил css свойство, убрал его, а оно продолжает работать, причём в html файле указано строчка, которую я стёр. Это как вообще?
479 3043913
>>3043894
Ещё такой прикол, что когда я запускаю сервер появляется надпись django using settings "project.settings.dev" Я в этот settings. dev зашёл, а там несколько строчек кода. Это не тот файл настроек, который я раньше использовал. Мне нужно просто указать, чтобы Джанго не использовал dev, а использовал тот файл, который раньше?
480 3044188
>>3043796
Парсеры это самое червепидорское занятие
481 3044215
>>3044188
Истинно так.

Но все работает.

Лучше подскажи как в этой PEG-грамматике одним выражением убрать все ненужные пробелы?
dae5b4ca49819e4d9286a61fc5fcb1b8.jpg147 Кб, 441x384
482 3044221
>>3044188
Ты, кстати, не понял, похоже, что я пишу. Это не парсер HTML.

Создание нового языка программирования - максимально борщехлебское илитное занятие!
В данной ситуации у этого языка будет вполне определенная практичная цель.
483 3044616
>>3040619
бамп
image.png14 Кб, 939x257
484 3045055
>>3042674

>Стоит ли сеньеру .NET пытаться освоить питон?


Сеньке поздно что-то осваивать. Для него это просто один из миллиона инструментов, о которых он знает и знает, когда их использовать. Но ведь сеньор не пишет код. По крайней мере нормальный - не пишет. код попроще (которого основная масса) - пишут джуны, код посложнее (его не так много, но он требует менее тривиального подхода) пишут мидлы, а сеньоры - продучмывают, как это будет работать на уровне архитектур, после чего ставят и объясняют им задачи.
Чем больший ты сеньор, тем больше твой вклад выглядит как на пике.
На пике - гитхаб сеньора для сеньоров Бьёрна Трупастрауса.
485 3045317
>>3042478
Механизм интересный, но почему кириллическая строка не интернируется - непонятно. Есть, правда, ссылка на AST optimizer, но там, видимо, надо курить код критериев (807LOC сишного кода) и делать уже тогда мердж-реквест. Ну или хотя бы ишшу завести.
486 3046189
Сегодня поднял свою зп до 800к как куа, дайте тред для обоссывания пожалуйста.
487 3046214
Какой же чат GPT пидорас, пиздец просто. А это всё свойства нашей психики, когда долго с ним взаимодействуешь может возникнуть впечатление, что ты общаешься с человеком, довольно тупым, но всё же человеком. Отношение к GPT должно быть строго как к поисковику Гугла.

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

О каком применении GPT может идти речь если он даже как справочник и поисковик срет под себя.
Жопа горит, но винить конечно я могу только себя, сликом много я возложил на этот инструмент.
488 3046490
>>3046214

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


Как автоматизатор задач работает реально неплохо, я иногда ему скармливаю классы и пишу что хочу сделать, он выдает мне костяк методов, а дальше я тестирую че он сделал не так, и правлю ручками сам.
Самостоятельно он нихера не может. Писать что-то в чем не разбираешься с помощью гпт - то еще казино
489 3046795
>>3040619
бамп.
что, алды за два года уже повкатывались в ФААНГи на $300k/ns и не сидят в этом треде?
490 3046808
>>3043796
Короче нахуй этот parsimonious.
Студенческая поделуха. Как только классов столько на гитхабе набрала?
Калькулятор со скобками - уже, пиздец как громоздко выглядит.
Пойду лучше ковырять pyparsing.

Или я не разобрался и приоритеты операций в любых грамматиках сложно описываются?
491 3047017
>>3046808
Есть либа, SLY. Ее попроуй, она довольно популярная
5fd4c79e0f41a5bupscaled.jpg183 Кб, 1024x1024
492 3047340
В общем такый вопрос
Решаю задачки и иногда возвращаюсь к тем, которые уже решал, чтобы перерешать их. Но у меня не получается её сделать, но в прошлом я это упражнение сделал как-то через жопу но сделал. Это нормально?

Другой вопрос. Я смог пару раз решить задачи 4 кю на кодварсе(судя по отзывам легкие) для меня все равно это достижение. Пердел над задачами по 1-2 дня.

ну не сутть. Взбрелось мне глянуть то как эти задачи решают на святом си.....8 кю чтобы просто поосмотреть ....и я нифига даж приблизительно логику понять не смог что они там делают. Постоянно что-то делят берут остатки и инкременты инкременты инкременты.....
493 3047380
>>3047340

>Это нормально?


Да совершенно нормально, ты же задачки решаешь по 2 дня чтобы сдать их и забыть что ты только что делал. В этом и суть.

>Другой вопрос.


>ну не сутть.


>логику понять не смог


Ты вопрос забыл задать. Челозавр, судя по всему ты очень рассеянный, наверное из за этого и все твои вопросы и возникают.
494 3047398
>>3047380
Это нормально?
495 3047412
>>3047340
>>3047380
На Си сложнее кодить?
496 3047522
>>3047517
Какой Джун? У меня норм работа есть. Просто кодю ради хобби. Потому что игры что-то не приносят больше радости
sage 497 3047564
Сделайте кто нибудь грамотный перекат и не забудьте /python/ в теме
498 3047574
>>3047564
Перекатов больше не будет питон мертвый язык. Убит джунами
499 3047640
>>3047412
Конечно сложнее. Питон это как спички, а Си это как трением огонь добывать. Си это счеты, где ты каждый байт видишь, а Питон это калькулятор, нажми на кнопку - получишь результат. Именно по этой причине байтоебы сишники так от Питона горят.
Через 20 лет будет новый язык поргомирования на основе нейросети - "программист" будет просто в микрофон промпты надиктовывать и смотреть что на экране получается, а Питонистов все будут считать настоящимми программистами. А байтоебы и сишники к тому времени вымрут.
500 3047646
>>3047640
Получается сейчас питонщики не настоящие программисты
501 3047660
>>3047646
Конечно, белые вороны, на питониста всегда смотрят как на человека третьего сорта, это дворник от мира программирования. Ещё эти курсы вездесущие, теперь буквально в кого не плюнь он скажет что программист на питоне и может с закрытыми глазами Хэлло Ворлд написать.
502 3047664
>>3047660
Как будто сишники кому-то нужны
503 3047766
>>3047646

>настоящие программисты


Последние вымерли лет 10 назад.
Программист как человек, который создаёт программы больше не существует, вместо него - архитекторы, кодеры, дизанеры и ещё хуева гора людей, вот все вместе они - "программист" (ага, один).
Кодер это не программист вне зависимости от ЯП.
504 3047829
>>3047766
Пушто код усложняется.

Если раньше автомобиль мог собрать один человек, то сейчас уже есть инженер по двигателям, по электронике, по эргономике и так далее. А дальше будет всё сложнее — инженер по карбюратору, по генератору, по поршневой группе (УСЛОВНО).
sage 505 3047838
Пиздец тред даунов, диванные программисты кодеры архитекторы олимпиадники, коммерческого опыта хуйма, а всё сидят с умным ебалом обсуждают
506 3048058
>>3047838
Коммерческий опыт - это делать никому не нужное говно по приказу туповатого Кабан Кабаныча, бэкенды для банкоматов, приложухи наебывающие простых работяг. А Питонисты это мыслители, фелосафы, филантропы, которые созидают, двигают человечество вперед, делают нейросети, анализ данных для людей. Голы босы, но не сломлены. Настоящие Иисусы. Вот это всё.
507 3048064
>>3047766

>кодеры


Вот это программисты. А архитекторы и дизанеры это чушпаны из смежных областей.
508 3048108
Какие паттерны программирования чаще всего используются в работе? Разобрал Фабрику и MVC, ещё бы парочку разобрать.
509 3049093
Когда уже эта хуйня перекатиться?? Невозможно смотреть на онлайников-пидарасов, засрали весь тред своими асикками, джангами и фласками. Суки вы откуда берётесь-то??? Размножаетесь почкованием что-ли??
510 3049141
>>3049093
Так сам засри тред годными темами. Кто я?
511 3049152
>>3049093
Двачую. Сразу почему-то онлайники вызывают ассоциации с какими-то соевыми педиками чулочниками
512 3049524
>>3049093
Онлайники? А кто это?
513 3049546
>>3049524
Веб разработчики
514 3049547
>>3049524
Во истину питонисты тупейшие
515 3050099
>>3049547
А почему онлайники? Какое то странное прозвище для веб-разработчиков
516 3050171
>>3050099
Это не прозвище, по этимологии похоже на фразеологизм, который высирают школьники, вроде "матеша" или "физра" и так далее. В общем, не обращай внимание, сейчас питон в школе часто преподают, наверное это подгоревший школотун забежал высказать всё что он думает про клятых питонистов с их питоном.
sage 517 3050239
>>3050099
Онлайники, что за название такое жидкое? Как будто анальники.
518 3050244
Братцы анальники, выручайте. Нужно до субботы сделать тестовое. Нужно реализовать телефонный справочник, добавление записей, удаление, стандартная задача. Как это сделать на голом Пайтон? Я создал проект в пайчарме, у меня есть файл моделей, в котором я написал класс и нужные методы, у меня есть БД sqlite. А как мне их подружить, файл моделей и БД, без Джанго, на чистом питоне? Если что, добавление/удаление новых записей должно реализовываться через консоль. С меня как обычно, хуй.
519 3050246
>>3050244
import sqlite3
520 3050264
>>3050246
Боже, какой же я тупой. Спасибо)
1707936458780.mp41,1 Мб, mp4,
848x800, 0:07
521 3050903
sage 522 3051143
Кто-нибудь создайте бесплатный курс на Ютубе по перекату тредов двача, местный континент не справляется
523 3051174
>>3051143
Питонисты не умеют программировать перекат
524 3051193
>>3051174
Вот бы был фреймворк по перекатам
image.png12 Кб, 735x204
525 3051437
Помогите разобраться со списковыми включениями.
Как мне в одну строчку записать этот цикл чтобы он распаковал мне элементы списка если они являются списком, и просто добавил числа если это числа
image.png18 Кб, 835x156
526 3051545
>>3051437
Как вариант
527 3051551
>>3051545
А можно без подключения библиотек?
528 3051615
>>3051551
itertools поставляется с python - это стандартный модуль.
подробности: https://docs.python.org/3/library/itertools.html
529 3051757
>>3051551
Рекурсия через генератор.
530 3051864
Аноны, как можно "нормализовать" дату??

ValueError: day is out of range for month

cfg.append( f"{day:02d}.{month:02d}.{year}:22-{(day+1):02d}.{month:02d}.{year}:01" )

вобщем, day+1 выходит за рамки дней в месяце.

# ошибка тут: dts_last1 = datetime.strptime(dts_last, '%d.%m.%Y:%H')
531 3051865
>>3050171
это анальники. Это нормально, все так делают, в попе ковыряются
532 3052078
аноны, реально ли сейчас найти работу без ежедневных митингов/созвонов?
или сейчас это типо норма? до чего мы докатились йопта.
533 3052101
>>3052078
Аджайл блять. Скрам бляяять. Дейли, ретро, демо, тренинг, груминг, планинг, онтуан бляяяяяяяяять
534 3052111
>>3051437
Чел же элементарно, это компрехенсон, база базовая питона, если человек не понимает эту простейшую строку, то боюсь у него нет склонности к программированию...

l = [1, 2, [3, 4]]
l = [lst for lts in l for lst in (lts if type(lts) is list else [lts])]
535 3052238
>>3052101
Срам, каминг аут, орангутанинг
536 3052253
>>3052078
А ты думал тебе дадут макбук и отпустят в свободное плавание, чтобы ты сидел и писал хуйню?
537 3052456
>>3052111
Не работает твоя нечитабельная фигня
image.png5 Кб, 264x176
538 3052607
Зачем писать

хед = НОДЕ(дата)
ноде = хед

а потом писать

ноде.нехт если можно написать просто хед.нехт?
539 3052629
>>3052607
Анальная магия
540 3052803
>>3052111
Хз что ты там нахуевертил никогда таких длинных компрехенсон не писал и скорее всего не смогу. Использую циклы
Мимо анальник 350к
541 3052933
долго до 350 рос? опиши вкратце свой путь.

и у кого зарплата выше 150, тоже отпишите плиз как росла, и примерно какие компетенции на каждом уровне зп.
Стикер127 Кб, 430x508
542 3053050
>>3052456
Ты. е. вы в школе по информатике ещё print() не проходили?
гой 543 3053216
посоветуйте расширения для тора чтобы читать в переводе страницы
гой 544 3053227
поясните дураку, как вставить в определеный символ в коде (x) значение, это вроде бы одночлен или какая то мат. тема 6-7 класса.

помогите(
545 3053280
>>3053227
Символ это например буква "R". Или знак "+".
Как вставить в символ код? Какой-то одночлен, ты пробовал хотя бы один раз перечитать бред, который высираешь?
546 3053534
>>3040619
бамп вопросу
547 3053626
Анонасы, вашими питонами не занимаюсь, но у меня встал вопрос: какого хуя разрабы питухона ломают обратную совместимость? Я еще могу понять, что некоторые изменения были нужны при переходе с 2 на 3, но зачем дальше продолжать?
Что-то подзаебало искать подходящую версию ко всякой легаси параше, хочется просто накатить последнюю версию и забыть про все эти проблемы с совместимостью
548 3053913
>>3053626
Это наоборот хорошо. Когда учишь питон ты учишь только один язык. А когда учишь яву учишь 20 яв
549 3053994
>>3053913
Долбоёб?
550 3054014
>>3053994
Нет. Просто выучил 20 яв
551 3054015
>>3052078
За месяц работы в новой компании было четыре созвона, остальное просто текстом в чате, джире или на гитхабе. Гы
552 3054017
>>3053227
Чего нахуй
image61 Кб, 225x225
553 3054019
>>3053227
Порой один дурак может задать такой вопрос, на который на ответят и сотни мудрецов
554 3054120
>>3053227
Иди нахуй, ученик 6-7 класса
555 3054227
Сап змеюки
Подскажите материал, тренажёр или лекции, по чистоте кода и по "проектированию" чё то я не могу нормально придумывать "архитектуру" получается какое то сопливое говно вызывающее друг друга, друг друга переписывающее и прочее.
556 3054280
>>3054227

>вызывающее друг друга


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

>переписывающее


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

Я вот просто руководствуюсь таким принципом в написании - "ни один блок кода не должен повторяться дважды и всё должно соответствовать заповедям ООП" и в результате код получается дичайше модный, чистый, понятный. Смотрю на него и шишка дымиться.
557 3054611
>>3054280
Да мне нужно понимание как примерную задачу разбить на такую абстракцию, а то это понимание приходит только вовремя написания, т.е. на практике, а в проектирование и представление всего этого процесса в голове/на бумаге не получается .
Я уверен что есть методика как этот навык задрочить
558 3054660
>>3054611
Ну так проектируй не проектируй, а когда дело дойдет до текста кода окажется что элементы и данные всё равно нужны то ту то там. Тем более если ты пишешь софт в одно лицо, то в проектировании нет смысла т.к. нет разделения труда ты в своей голове держешь сразу все части. В таких условиях единственно возможный и верный вариант писать мммммаксимально по канонам ООП, чтобы каждый блок кода стал универсальным кубиком чтобы логику софта можно было перестраивать на более поздних этапах.

Я так думаю, ну уверен что есть бесполезные уроки на этот счет. Вообще уроки по проектированию внутренней логики софта это нверное что-то максимально беспредментное. Потому что задачи всегда уникальные.
559 3054762
>>3054660

>писать мммммаксимально по канонам ООП


вот наверное дроча это можно воспитать в себе понимание как лучше перенести ту или иную задачу на код.
560 3054913
Как стать программистом за полгода?
561 3055006
>>3054913
Ну смотря что ты имеешь в виду под стать. Устроиться на работу - чисто на удачу откликаться после 3-ех месяцев и надеяться что тебя возьмут куда-нибудь, вероятность маленькая. Обучиться программированию - поискать инфу в инете, за пол года вполне реально вкатиться в скиллы написания неплохого кода
563 3110483
Причем тут есть серьезное ограничение по твоему это будет ценнее.
564 3110485
>>2981203 (OP)
Я создал - это про битовые операции, иначе глаза выгорают
Тред утонул или удален.
Это копия, сохраненная 20 апреля в 14:16.

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

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