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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

исходник: https://dumpz.org/bASGKD8cCFDf
2 1873308
>>73283 (OP)
Что понимают под автоматизацией систем на пайтоне? Какие задачи решают спомощью неё?
3 1873310
дарова дрыч, начал изучать ctypes и мне не понятно как скомпилировать свою си функцию в длл'ку для импорта, я нашел только как это сделать на linux(я юзаю mingw)
image.png26 Кб, 1411x141
4 1873325
В чем сакральный смысл?
5 1873362
>>73325
Пытаешься неизменной переменной присвоить значение.
6 1873364
>>73325
Обновляют значение, чтобы не исчелзло случайно.
Скорее всего раньше оно делало что-то полезное, а потом так заглушили вместо закомментирования.
7 1873365
>>73364

>Скорее всего раньше оно делало что-то полезное


t.pythonlets
range и list(range) 8 1873367
Правильно ли я понимаю, что основное различие между range(0,1488) и list(range(0,1488)) в способе выдачи данных? Первая функция выдает их в последовательности-бегунке, а вторая сразу хуячит целый список?
9 1873370
>>73367
Откуда ты придумал бегунок, лол.
Это называется генератор. Применение list вытягивает все значения из него и выдает в виде списка.
11 1873389
>>73370
Визуально никакой разницы. Выдает одинаково. На каком уровне это можно лучше увидеть в примерах
12 1873391
>>73389
а, понял теперь
13 1873392
>>73370
>>73389
>>73372
>>73391
>>73367
Все. Врубился
14 1873394
>>73389
Ну вот тебе пример.
Оборачиваем в ещё один генератор с принтом и всё видно.
https://ideone.com/lpzJ7L
15 1873395
>>73370
Он не итеративный, правда. Через него можно итерировать, но он не выдает итератор.
16 1873396
>>73395
Лол, как бы по нему итерировались тогда.
Всё, что реализует протокол итератора - итератор.
n = iter(range(1488))
print(next(n))
17 1873421
Короче 2 года пассивно-агрессивно осваивал этого вашего питона (последние курсы универа), а сегодня резко осознал, что это жуткая нубтраба вплане вката на работу. Ибо сейчас каждая собака знает язык + условную джангу, и соответственно пытается вкатится => конкуренция жутчайшая.
Перекатываться во что-то другое не хочется, ибо в принципе повседневно кодить на сабже нравится, модулей на все случаи жизни просто миллионы.
В связи с чем возникла идея дополнительно выучить вью и позиционировать себя как джун фулл стек django, vue.js, postgresql ну и там всякое попутное говно типа докера, очередей итд. Нормальная идея, че думаете?
18 1873427
Я так понимаю, что в питоне операторы более низкого уровня, чем в java?
19 1873428
>>73427
Да, такие себе операторы, название одно, никакой оперативности.
20 1873431
>>73428
Ну я имею в виду, что в java операторы больше похожи на функции питона, то есть более громоздкие
22 1873433
>>73396
Ты что поехавший?
Range это iterable объект, но это не итератор.
Введи вот это:
type(range(1488))
<class 'range'>

>n = iter(range(1488))


А здесь ты как раз создаешь объект-итератор

>>>n = iter(range(1488))


>>>type(n)


<class 'range_iterator'>
23 1873434
>>73427
Все, что питоновское - ничем не ниже.
Cython будет ниже
unnamed.jpg52 Кб, 383x263
24 1873443
25 1873449
>>73421
Брат, у тебя вышка есть, а у 90% вкатунов нет. Их даже рассматривать не станут, а твое резюме автоматом залетает в нужную стопку. Алсо, фулстек это днище.
изображение.png10 Кб, 687x206
26 1873513
Я что-то не знаю?
27 1873519
>>73513
Вы нам не подходите.
28 1873568
>>73513
JSython
29 1873614
>>73513
Ну, в джанге же есть возможность создавать формы. Да и без джанги есть библиотеки, которые создают фронтенд для веб-приложений на питоне, конечно, под капотом там генерируется html/js/css, но пользователь библиотеки может чисто в питоне все закодить. Кто знает, может, в обозримом будущем webassembly разовьется, и можно будет писать фронтенд действительно на чем угодно, хоть на питоне.
30 1873661
Сап аноны, вопрос от ньюфага. Насколько версия 3.8 актуальна? Есть одна вакансия тестирование, где требуется питон. Есть ли смысл осваивать 3.8 версию?
31 1873670
Анон, не шли на хуй
Пытаюсь вырвать текст из программы
На первом пикриле я по hWnd получаю текст из объекта, всё работает отлично
На втором пикриле делаю то же самое, но текст не печатается. Я не прошу подробного ответа, хотя бы скажи, куда гуглить
32 1873671
>>73661
а ты сейчас на какой?
33 1873672
>>73661
Что значит осваивать 3.8?
В принципе, можно учить по материалам любой 3+ версии, но лучше 3.6+, дальше уже не особо важно, это несложно подтянуть при желаниии.
34 1873681
>>73670
Ты вообще делаешь неправильно, эти айдишки будут меняться каждый раз. Надо искать главное окно по тексту, а потом по его чайлд контролам уже.
35 1873682
>>73681
это я сейчас погуглю, но в итоге всё сведётся к этой функции, как на пикриле, и будет ошибка
36 1873684
>>73682
Ну хуй знает тогда, посмотри ещё подобные функции, по-моему там несколько штук для разных контролов, т.е. для лейблов и подобного что-то одно, а для эдитбоксов может быть другое.
37 1873686
>>73684
кинь какой запрос вбить
38 1873690
Я чет даун наверное, но я всё не могу понять, как я должен создать форму в джанге, если данные должны быть помещены не в одну таблицу, а в несколько? Ну вот если у меня БД нормализована, то, например, таблица с заказами будет содержать в себе внешний ключ таблицы с клиентами. Человек выбрал товар и ввел свои данные. Информация о товаре идет в таблицу заказов, а информация о клиенте идет в таблицу клиентов, а в заказы попадает только айди этого клиента. Но вот чет нигде не видел, чтоб так кто-то делал.
39 1873694
>>73671
на 3.7 кодил год назад
>>73672
понял, значит просто буду юзать 3.8
40 1873775
>>73661
В другом треде уже прокомментировал.

Судя по вопросу, тебе надо просто осваивать программирование и питон. Иначе бы такого вопроса не было.

Есть какие-то конкретные вещи, которые сильно усовершенствуют в версии N. Если эти конкретные вещи изучать по старой версии, то ты немного лезешь в легаси.
41 1873776
Правда, что я могу скопировать чужой код из примера в интернете и форматнуть свой диск?
42 1873800
>>73776
Никто тебе не запрещает как бы.
43 1873828
>>73776
Батя сказал разрешает
44 1873830
>>73661
3.8 добвили sharedMemor, вещь весьма полезная если твоя основная кодебаза - чистый питон и ты не интеропишь
45 1873832
>>73614

>webassembly


>python

46 1873854
>>73283 (OP)

>А стоит ли читать Лутца, том номер N?


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

>уверенное знание синтаксиса


Чего?
Зачем тебе читать беаную книгу на 400 сраниц дабы знать синтаксис? Я вот за пару вечеров основы подхватил на неделе. Если не уверен в чем-то, вроде return type - в отличие от других языков, кинуть мгновенные print(x) и затетить займет меньше секунды. Питон вообщ оджин из языков которые unironically проще дебажить принтом нежели полноценнымбдебаггером в 80%-90% случавем
image.png87 Кб, 957x771
48 1873860
>>73832
https://rustpython.github.io/demo/
Может он что-то такое имел в виду?
49 1873863
>>73860
Какой смысл шиппить barebones python interpreter в веб-ассембле? Шип соазу нативный, блять, дебил
50 1873865
>>73863
Успокойся, никто наверное не станет этого делать в продакшене.
51 1873881
Кто вторым языком что взял для связки с пистоном? Пока выбрал ГОвно и пытаюсь его осилить
52 1873884
>>73881
Почему не С, если там готовая эко-система с Cython есть? нахуй тебе геморный интероп?
53 1873888
>>73884

>эко-система с Cython есть


Она забагована, что-то сложнее числодробилок я бы не стал писать
54 1873890
>>73888
Поясни
55 1873891
>>73890
Список исусов глянь
https://github.com/cython/cython/issues
56 1873898
>>73891
And?
https://github.com/ytdl-org/youtube-dl/issues
4k issues, Я ни разу проблем не видал с ним
Твой GO
https://github.com/golang/go/issues

Пиздец, если следовать твоей логике там индия полная
57 1873902
>>73891
1/2
>>73898
1/6 и 1/6
58 1873929
>>73858
ИМХО Лутц не для тех, кто уже дружит с программированием. Слишком много банальщины и воды, при этом устарел, не современных вещей.

А у кого нет приличного опыта разработки, тому может лучше побольше воды. Лучше отложатся некоторые вещи.
59 1873934
>>73898

>youtube-dl


>4k issues, Я ни разу проблем не видал с ним


Постоянно с ним проблемы, хотя бы потому, что сервисы регулярно что-то меняют и что-то из-за этого ломается.

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

В самом питоне тоже дохрена таких проблем, каких-то багов и недоделок. И на других платформах.
60 1873938
>>73690
У тебя форму заказа тоже клиент заполняет? Если да, то ты правда даун.
61 1873944
>>73938
Бля, ну это я для простоты примера, у меня вообще не магазин никакой. В общем есть форма, данные из которой должны попасть в две связанных таблицы, а не в одну.
62 1873945
>>73449
Двачая адеквату.
Сам вкатился так весной. Крупные компании до сих пор на вышку дрочат, как бы тут не пиздели.
63 1873957
>>73944
Тут три таблицы по идее надо. Модели, например CliientModel, GoodsModel, OrdersModel
Дальше цепляешь выбранный клиентом товар запросом из GoodsModel
form = ClientForm()
if form.validate_on_submit():
new_client = CliientModel(kwargs - данные о клиенте)
new_order = OrdersModel(client_id=new_client.id,
kwargs - данные о заказе + данные из запроса товара)

Тут я на Фласке писал, он мне ближе. Сам переведешь, надеюсь
64 1873960
>>73957
Данные о заказе должны быть айди, время и статус, которые автоматически заполняются. Не дай б-г ты дашь клиенту такие данные самому вводить.
65 1873978
>>73934
Никогда не встерчал, обновлял раз в 2 месяца.

Суть в том, что ты дебилойд. Счетчик "issues" на гитхабе не показатель нифига.

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

Да и вообще, в абсолютном смысле, единственное зачем ты будешь юзать интроп или Cython - для реального параллелизма, ибо Pyton ограничен GIL в этом плане, однако с асинком IO у него проблем нет. ВОт и получается, в итоге, что задачи сведутся к минимуму и cython/C будет 100% за глаза - послал ссфлку на память, цифры закрунчил и вернул результат. Все останое будет на Питоне.
66 1873980
>>73978
Плюс GO - это такой-же managed language c GC. Нахуя тебе такой интероп? Этот как интероп питона и C# или Джавы.
Интероп делается в нативный тогда, когда приоритетом являетмся производительность до байта, до бита, блять, ибо оверхед овердохуя. Одна из причи почему в НЕТ5 большую часть фнукционала экосистемы C# перенесли в IL/C# вместо нативного кода, ибо оверхед
67 1873991
>>73957
Спасибо, вроде понял, попробую.
68 1873997
>>73980
>>73978
>>73934
>>73891
Звиняй, я тупанул, не про Cython имел ввиду а Cpython
69 1874009
Почему тест на первой картинке работает, а на второй нет?
70 1874034
>>74009
потому что принт возвращает None
image.png104 Кб, 1918x1042
71 1874058
Антош, не шли на хуй. Я всё так же пытаюсь вырвать данные из соседней программы. Пока курил SO случайно прочитал, что в некоторых программах есть защита от парсинга. И вот, например, на пикриле я не смогу получить текст из полей. Это правда?
72 1874059
>>74009
только вчера узнал, что print(необъявленнаяПеременная) выдаст ошибку
а get(необъявленнаяПеременная) выдаст null
Использование range 73 1874061
Почему range/list(range(n)) вступает в конфликт с int? Хочу, чтобы можно было угадать не конкретное число, а число из диапазона

number = list(range(0,3))

while True:
guess = int(input('guess: '))

if guess == number:
print('+.')
break
elif guess < number:
print('-')
else:
print('nope')

exit(0)
74 1874065
>>74061
Ты инпут вроде как stringa делаешь. Добавь функцию перевода стринга в инт
75 1874071
>>74065
можно подробнее плиз и с примером
76 1874087
>>74061
У тебя number - это список [0, 1, 2]
А guess - это число.
Что ты ожидаешь получить при сравнении списка и числа на равенство?
77 1874102
>>74071
Погугли
Python input int
Python string to int
78 1874115
>>74102
>>74087
спасибо анон
79 1874233
Как в Pydantic реализовать такую поебень:

Есть класс pydantic.BaseModel с атрибутами:
login:str
password:str

Мне надо выводить через метод dict() вот это. Overload pydantic запрещает почему-то.

{'Login':'my_login', 'Password':'my_password'}
80 1874248
>>74233
Сам разобрался.

def to_camel(string: str) -> str:
return string.lower()

class Config:
alias_generator = to_camel
allow_population_by_field_name = True
81 1874260
>>73283 (OP)
Здравствуйте. Есть ли здесь шарящие за библиотеку telebot. Не могу понять функцию forward_message. Что туда передавать, как, БЛЯДЬ, номер сообщения переселаемого ей писать?

Уважаемые аноны, есть ли хоть один пример простенького бота в телеге с возможностью пересылать сообщения. Желаетльно с комментариями, объясняющими что и как. Все перерыл - не смог найти
82 1874264
>>74260

bot.forward_message(to_chat_id, from_chat_id, message_id)

id чата откуда берешь сообщение
id чата куда пересылаешь
id сообщения
83 1874266
>>74260
а ну и номер сообщения надо брать по какому-либо параметру через запрос сообщений из чата: по времени, по id пользователя или по контенты сообщения. Там уж сам реализовываешь как надо.
84 1874270
>>74266
вот это я вообще не ебу как сделать, мне б самый просто йпример такого бота, я бы запустил и разобрался
85 1874275
>>74270
Ты долбоеб или где?
Если ты не понимаешь алгоритм процесса, что ты собрался реализовывать?
https://github.com/keselekpermen69/Telegram_Forwarder/blob/master/forwarder/modules/auto_forward.py
86 1874287
>>74260
Посмотри на Ютубе, там полно примеров. Вроде как от хауди хо самый понятный
87 1874322
>>74287

>Хауди хо


Это не тот ли чел, который рассказывает как выучить питон за 1 час?
88 1874330
>>74322
Синтаксис учится за 1 час, инструментарий все время, что работаешь с языком.
89 1874345
Аноны, насколько хорошо нампай вектора дружат с фракциями?

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

С точки зрения нампай фракция - такой же вид намбера как и интегер или флоат, но мб они в чем-то конфликтуют? Не встречалось?
90 1874362
>>74322
Ты не тот долбеб, который не может открыть Гугл на соседней вкладке?
91 1874368
>>74322
Ты не тот долбеб, который не может открыть Гугл на соседней вкладке?
92 1874412
Черрипикинг для затравки.
Подскажите, пожалуйста, по практикуму внизу https://younglinux.info/oopython/objects.php. Если сделать функцию просто рандомом определяющую кто кого ударит, то это не интересно. Я решил сделать небольшой оверкилл по этому заданию- сделать классы с наследованием и чтобы дралось любое число войнов.
- есть класс human, атрибут name и health - число, дочерний класс Warrior с прочими параметрами.
Есть 2 (или N) экземпляра Warrior firstwarrior и secondwarrior. Они должны драться, и вся эта логика еще будет реализована через функции.
Я себе представляю это так- в одной функции я соберу вызов трёх функции подряд- первая составляет список имён (name) всех войнов со здоровьем больше 0. Если такой воин один- он подебитель.
Потом вторая берет двух случайных из списка, пусть даже это будет один и тот же вои, который сам себя бъёт и возвращает их имена в список "кто-кому-ударил".
Третья функция берет первого из списка и отнимает его урон от здоровья второго. (тут грамотно нужно бы удалять экземпляр со здоровьем меньше 0, чтобы убрать проверку здоровья в начале)

Я застрял на получении списка атрибутов всех созданных экземпляров класса воин.
Я могу вызвать атрибут name у определенного война типа print(firstwarrior.name) и оно верное.
А как получить список атрибутов всех существующих объектов класса?
https://pastebin.com/Hc2ArdHm листинг.
Буду благодарен за советы.
93 1874422
>>74412
https://stackoverflow.com/questions/328851/printing-all-instances-of-a-class

По уму, тебе нужно создать было публичный атрибут класса (name-list), куда при инициации вносится новое имя.

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

П. С. Если ты изменишь публичный атрибут призывом к инстансу, то инстанс получит свою отдельную копию публичного атрибута, а не изменит публичный, поэтому избегай этого.
94 1874423
>>74322
Ты не тот долбеб, который не может открыть Гугл на соседней вкладке?
>>74412
Пробовал использовать dic ?
95 1874427
>>74412
wars = [firstwarrior, secondwarrior]

attrs = [w.__dict__ for w in wars]
print(attrs)

вот тебе листинг через comprehension
96 1874496
Анонче как запрограммировать функцию которая при каждом обращении выдаёт следующий элемент из списка. Желательно не передавать в нее ничего
97 1874503
>>74496
yield
98 1874504
>>74496
блять только щас догадался засунуть все в класс прописав в инит подгрузку списка, а потом функцией дёргать элементы... сукааа..
Ладно, мб варианты поумнее есть
99 1874508
>>74504

> прописав в инит подгрузку списка


closure + yield
100 1874525
>>74496
>>74504
Читай про итеративные генераторы
15948825366002.jpg427 Кб, 1080x1080
101 1874529
>>74508
>>74525
>>74503
Спасибо Антоны
102 1874548
>>74275

>долбоеб


считай что так. Я вообще в программирование не шарю.

>>74287

>хауди хо


Да срать я хотел, дайте мне образец простейшего бота с этой функцией, а там я его допилю.
103 1874561
>>74548

>считай что так. Я вообще в программирование не шарю.


Очередные вкатыши, считающие что Python простой, потому что инфоцыгане так сказали.

Смотри https://nodered.org/
https://flows.nodered.org/node/node-red-contrib-telegrambot

Там еще доступнее, совсем для дурачков. Перекатывайся нахуй на JS.
104 1874581
>>74561

>


помогать человеку, который буквально не может открыть гугл
105 1874584
>>74561

>https://nodered.org/


кекнул конечно, блоками я прогал максимум в 8 классе робота шоб он по линии катался, а тут целый йоба серьезный проект
106 1874590
>>74584
что тебе надо?
107 1874592
>>74590
чтобы у бабули прошла ишимия, а что?
108 1874597
>>74592
зарепортил залётного
109 1874612
>>74584
И? Наработки IBM брошенные коммьюнити как кость собаке, как и все JS наработки.
Бота для Telegram делал на этой хуйне, все очень просто, еще проще чем на питоне.
Но так как вкатыши часто просто не читают документацию до конца, это вряд ли поможет.
110 1874633
>>74561

>считающие что Python простой, потому что инфоцыгане так сказали.


Сам по себе Питон простой, еще проще C#
А advancуd concepts везде сложные, в любом языке, ибо обычно требуют SICP и comp-sci
111 1874696
>>73283 (OP)
Юзаю sqlalchemy, как понять с какой именно БД я в данный момент работаю (postgresql или mysql например) чтобы выполнить последующий код нужным образом?
112 1874699
>>74633

>Сам по себе Питон простой


Под знанием питона обычно подразумевается знание кучи библиотек, которые далеко не простые, и требуют знания тех самых advanced concepts.
114 1874707
>>74561

>вкатыши


так я и не вкатыш, и проект у меня не особ серьезный
115 1874709
>>74699
Математика ничего общего не имеет со "знанием языка X"
Большая часть этих бибилиотек идентична для любого другого языка.
116 1874710
>>74699
Ты чертовски прав
Сам питон очень прост и его очень быстро можно выучить, а вот его библиотеки очень большие не говоря уже о фреймворках.
117 1874717
>>74709

>Математика ничего общего не имеет со "знанием языка X"


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

>Большая часть этих бибилиотек идентична для любого другого языка.


Не идентична. Тот же numpy не имеет аналогов ни в одном другом языке, а чтобы научиться им нормально пользоваться нужны месяцы. opencv, pandas, matplotlib - это все большие библиотеки, которые за один вечер не освоишь. Помимо этого придется осваивать типизацию, без которой в больших проектах будет совсем плохо, multithreading/multiprocessing с которыми в питоне заебешься из-за GIL, генераторы с корутинами, лямбды и прочее. Везде свой синтаксис и свои особенности.
Screenshot from 2020-12-07 01-22-50.png18 Кб, 869x70
118 1874719
>>73432
Для того гит и нужен, чтобы можно было историю коммитов отмотать и посмотреть, что было раньше

Был работающий код, его обрезали, получилось вот то, что ты нашёл.
119 1874720
>>73513

>Я что-то не знаю?


Москва. 50k. Не расстраивайся очень сильно.

Скорее всего какая-то компания, где был один разработчик, которые поддерживал веб. Потом он сделал x2, и они ищут нового, а сами мало чего в этих словах понимают.
120 1874721
>>74717

>Не идентична. Тот же numpy не имеет аналогов ни в одном другом языке, а чтобы научиться им нормально пользоваться нужны месяцы. opencv, pandas, matplotlib - это все большие библиотеки, которые за один вечер не освоишь.


Все эти бибилотеки ничего общего с питоном и языком не имеюТ, они вообще на С написаны
При желании numpy на C моэно портировать
121 1874723
>>74717

> чтобы научиться им нормально пользоваться нужны месяцы


Это столько у тебя ушло? Можешь привести примеры как писал в начале с numpy, через месяц и через 3?
122 1874734
>>74723

>Это столько у тебя ушло? Можешь привести примеры как писал в начале с numpy, через месяц и через 3?


Я не помню, сколько точно ушло времени на один numpy, поскольку учил с нуля весь датасаенс и машоб. Библиотек, которыми я постоянно пользуюсь, где-то штук 15-20. На все вместе, включая практически всю стандартную библиотеку и особенности питона, ушло около 2 лет.

Минимальное адекватное понимание numpy - это знать, как ответить на вопросы вот такого уровня: >>1869665 → >>1869685 → . Полное понимание - это не задумываясь вертеть как угодно многомерные массивы, уметь в логические операции над массивами, индексы, минимальные/максимальные/средние значения по осям (например, найти среднее значение RGB у массива из картинок). Короче, когда любую операцию над массивом, которую можно описать одним предложением, ты можешь записать в одну строчку при помощи numpy.
123 1874745
>>74734
Ты же понимаешь что вопросы такого
>>1869665 →
уровня решаются в течение 13 секунд содания test.py и написания print(x)?

> Полное понимание - это не задумываясь


В этом то и проблема современных овер 45789е674586784 бибилиотек - implementation details change. За ними сложно уследить. Это как питон 2 и 3- там пиздец изменений. Их невозможно все в голове человеку держать UNLESS ты только этим и хзанимаешься всю жизнь. На эту тему говорил сам автор SICP
https://habr.com/ru/post/282986/
Системы, что мы нынче оперируем, слишком сложные и не надежные. Нужен новый подход, подход "мертвого запоминания простых блоков" не действует, ибо простых систем и блоков больше нет. Индустрия за 20 лет изменилась.
В результате, таких людей, которые воротят нос от тех, кто решает мелкие вопросы на месте путем а-ля "print' вместо запоминания мелочей, который могут постоянно менятьс - вживут. Вы вымрете, это не приспосабливаетесь.
124 1874749
>>74745

>уровня решаются в течение 13 секунд содания test.py и написания print(x)?


В том, чтобы тыкать print и смотреть на результат, нет ничего плохого - все с этого начинают. Но это этап вкатывальщика, эффективность которого стремится к нулю. Вместо затраченных 15 минут и 10 строчек кода, вкатывальщик потратит полдня и напишет 100 строк говнокода, а нетривиальные проблемы вообще не сможет решить. В этом и есть отличие сеньора от вкатвальщика - сеньор знает свой стек технологий от и до, и может быстро и эффективно решать на нем задачи.

А статься вообще не про это. Она про то, что не нужно все писать с нуля, и не нужно знать все уровни абстракции, начиная от принципа работы компьютера заканчивая тем, как работает питон.
125 1874760
>>74745
Свой стек в любом случае надо знать хорошо. Иначе будешь спотыкаться и делать говнокод.

Хотя уровень абстракции повышается и о многих вещах тебе думать не нужно, потому что они сделаны и работают хорошо.
image.png49 Кб, 596x246
126 1874779
>>74749

> Но это этап вкатывальщика, эффективность которого стремится к нулю.


I don't know, man, если даже Гвидо приходится смотреть, как работает стандартная библиотека, то есть ли шансы у нас, простых смертных?
127 1874785
Есть аргумент data для которогоя хочу указать любой сласовый тип - list, array, bytearray, bytes, string

Какой тип указать что бы все покрыть?
128 1874792
>>74785
Покрыть как бык овцу или что?
129 1874795
>>74792
сукатупая

Есть функция
def sdelat_gut(i: int, data: ???)

result = sdelat_gut(1, memoryview([1,2,3,4,5,6]))

Принимает в качестве data list, array, bytearray, bytes, string, memoryview - все слайсаются
130 1874847
>>74785
collections.abc.Sequence
131 1874876
>>74847
Ловко ты его приложил!
132 1874900
Sup, /pr/!

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

Заранее благодарю!
133 1874901
Что лучше выбрать вторым языком: C# точеный или GO дроченый?
Mayoi.jpg97 Кб, 1280x720
134 1874902
>>74900

>Будет солиднее


Не будет, что то говно, что это
135 1874903
>>74901
Если для связки с пистоном, то ГОвно
136 1874904
>>74903
Шарп никак с пистоном не связать нельзя?
137 1874914
>>74904
Просто шарп это энтерпрайз ебанина с анальными стандартами.
Го для молодых и шутливых, как и пистон, да и для одного и того же используются. Очень часто в вакансиях их связка идёт, так как с питона начинают критические сервисы переписывать.
138 1875123
Что из годного можно читануть после первой книги Лутца? "Fluent Python" Ramalho и "Effective Python" Slatkin'а норм будет или есть что-то годное промежуточное?
139 1875134
Анон, хочу вктатиться в автоматизацию тестирования, сам макака типичная. Выбирал между джавой и питоном, посоветовали начать с питона.
Нашел какой-то фришный курс по питону на stepik для нубов, но там пока стандартные математические задачки и пока непонятно как это все пригодится. Возможно стоит что-то почитать дополнительно из литературы чтобы углубиться в тему?
Как вообще лучше вкатываться в кодинг через питон?
140 1875155
>>75134
пока вкатываюсь сам. Говорю о своём опыте. Рекомендую начать с http://pythontutor.ru/lessons/inout_and_arithmetic_operations/
за один вечер он дал больше, чем ютуб за неделю (всё благодаря практике)
141 1875214
Пистон просто просится стать компилируемым, в проекте все типами обмазано, никаких листов с разными типами данных, вот просто бери и оптимизируй компилятором.
142 1875218
>>75214
Тип данных в списке может быть довольно абстрактным, вроде Callable, может быть Union из совершенно разнотипных данных, может быть Any в конце концов.

Так что нет, не получится.
143 1875225
>>75218

>Тип данных в списке может быть довольно абстрактным


Это и переписать можно на какой-нибудь class 'func'

>может быть Union из совершенно разнотипных данных


Это дженерик обычный

>быть Any в конце концов


Так вообще моветон писать
144 1875269
Братишки выручайте. Писал я сервис тесты для бэ и тут наш архитектор выдаёт мне что они фуфло, потому что некоторые сервисы проверяют как сервер возвращает CORS headers.
И поэтому они валятся на контейнерах (которые нам сейчас вживляют).
Потом он пишет, что CORS это механизм защиты браузера и это имеем смысл, Олько если сервис напрямую стучит браузером. Это типа не наш случай, потому что большинство наших сервисов идут через Gateway и соответсвенно это зависит уже от GTW передавать CORS супорт.

Ну и потом пишет свою версию теста, где проверяет Хедеры на содержание Access Control Allow Credentials true.

Что это за ботва и как ее правильно тестить? Спасибо
145 1875306
>>74847
codecs.decode будет жаловаться
146 1875391
>>75269
Проеб в prod/pre-prod/testb версий, мхех.
Тебе дали api для тестирования? Нет? Пусть нахуй идёт.
147 1875393
>>75214
>>75225
Каким хуем когда я вот такю простую задачу не могу решить:
>>74795
148 1875395
Есть два стула: сделать if else или генератор. Входные объекты инстансы классов (наследовать не могу, имплементации команд. Куски кода огромные)
В один из инстансов в метод надо передавать параметр, потому не понимаю как можно реализовать красиво.
Input: command.number
Output: implementation = next(imp for imp in CMD_LIST if imp.command_code == command.number)
return implementation.handle().
Так вот в один из handle надо передать параметр из класса в котором CMD_LIST является атрибутом.
Дичь? Ну так вышло
149 1875397
Вариант конечно затычку в виде kwargs сделать и передать атрибуты основного класса, но может возникнуть путаница
150 1875410
Создавал сайт на Django в PyCharm, виртуальное окружение (venv) создавалось.
Потом попытался выгрузить сайт на сервер, по инструкции из видео с ютуба что-то вбивал в putty - не получилось.
Сейчас пытаюсь создать новый сайт - виртуальное окружение в PyCharm не создается и все файлы в проекте написаны шрифтом красного цвета.
Что это и как это исправить?
151 1875424
>>75410
Старое окружение удалял?
152 1875426
>>75410
Когда в командной строке вбиваю pip install venv, вылазит:
ERROR: Could not find a version that satisfies the requirement venv (from versions: none)
ERROR: No matching distribution found for venv
153 1875427
>>75424
Нет, а как?
154 1875430
>>75427
Ручками прямо папку venv и другие сопутствующие гитигнор-вещи. Потом в настройках Pycharm удаляешь интерпретатор для старого виртуального окружения и создаешь новый.
155 1875433
>>75430

>Ручками прямо папку venv


Откуда ее удалять?
156 1875435
>>75433
Из корня, вестимо.
venv отсутствует.jpg69 Кб, 800x450
157 1875466
Создаю проекты в PyCharm - в проекте отсутствует venv. Как исправить?
158 1875468
>>75466
python -m venv .env
159 1875470
>>75468
Антош, а почему файлы в проекте горят красным?
160 1875473
>>75470
Без понятия, узнаешь ответ - скажи
161 1875474
>>75470
Без понятия, узнаешь ответ - скажи
162 1875482
Аноны, я потерял мотивацию искать работу спустя 2,5 месяца, думаю продолжу минимум после сессии и тут я начал думать, хочу объективного ответа, а не от продаванов всяких курсов насколько нужна вышка, насколько нужна вышка программистом, насколько нужна вышка прикладным математиком-программистом. Я хочу стать настоящим профессионалом, но учусь на инженера и вопрос в том что я получаю техническую вышку, при этом я не ботаю 24/7, у меня есть время страдать хуйней, но корачка будет не программиста, другой вариант пробовать переводится на программиста, но там придется тратить сильно больше времени на учебу, а я боюсь не смогу еще деньги находить на еду тогда, вопрос стоит ли переводится на программиста и последнее, независимо от того где я учусь сейчас я мечтаю поступить в магу вышки на эти дата саенсы, надеюсь за 2,5 года хоть на платку смогу поступить, мне кажется тогда у меня точно есть будущее, посоветуйте что мне делать. Алсо хочу добавить, что мне интересно именно программирование и математика, а не получить навык и быть макакой даже 300к/нс, я бы хотел работать над чем-то действительно сложным и интересным. Особенно интересует мнение анонов с вышкой, которые докатились на мидлов хотя бы
163 1875483
>>75482
Добавлю на всякий, я понимаю что я и так смогу вкатится, вопрос в том дает ли вышка действительно особую систему знаний, связи, проекты и т.д или лучше самому все наверстать, а ближе к синьерству там разберусь и всем будет плевать на мой диплом?
164 1875484
>>75470
Гит подсвечивает, если не знаешь что это, то забей, иначе добавь в индекс и закомить
165 1875486
>>75470
Алсо если ты тот анон с вопросом про деплой сайта на сервер, то не забивай на гит, а сначала узнай что это и почитай в гугле «pip requirements.txt”
166 1875487
>>75486
Мне тоже кажется что это как-то связано с гитом, это из-за того что я пытался загрузить сайт на git?
167 1875490
>>75470
>>75473
>>75484
>>75486
>>75487
Ctrl+Alt+A or selecting Add to VCS - надо было "добавить файлы в VCS" сочетанием клавиш Ctrl+Alt+A, и все файлы стали зелеными. Что бы это VCS не значило.
168 1875491
>>75490
Правда я так и не понял почему это случилось и почему venv перестало создаваться без команды python -m venv venv.
Загадки, загадки. Только начал учиться программировать - а уже чувствую себя таким заебанным.
169 1875492
>>75490
Сказал же читай про гит, зря ты за джангу взялся, vcs вершон контрол систем, ты добавил в индекс файлы, советую курс на степике по гиту, а пучарм прекрасная ide, подсвечивает красным файлы вне индекса, зеленым дбавленные, серым закомиченные, синим измененные
170 1875494
>>75491
Когда создаешь проект есть вкладка с созданием среды, либо без, ты выбрал без создания
171 1875495
>>75494
Я эту вкладку не вижу.
image.png21 Кб, 613x405
172 1875497
173 1875498
>>75497
и какая из них?
174 1875499
>>75498
Прошу, почитай что написано на скрине и свой вопрос, думаю все отпадет само
123.jpg77 Кб, 800x450
175 1875500
>>75499
Вот мой скриншот.
Все так же как у тебя. НО venv не создается (раньше создавалось).
Просто интересно в чем проблема - на будущее знать.
176 1875501
>>75500
Не создается даже если галка создать включена? Первое что я могу посоветовать, приготовится к грению жопы, потому что у тебя пользователь создан на кириллице, возможно это мешает, второе попробуй в консоли(cmd) ввести python3 -V или как там, сам погугли, вероятно питона нет в PATH, тут нужно читать как его добавить, так же почитай про переменные среды, переименуй пользователя, гайд есть на ютубе, а так же приготовься переходить на линукс, иначе будет слишком много проблем в будущем, отдельно гугли саму проблему с тем, что у тебя venv не создается(однако если раньше создавалась и ты включал галку, то я вообще хз что могло поменятсья)
177 1875502
>>75501
Спасибо за совет.
Когда я делал простенький сайт по курсу itproger (небольшой блог) - venv создавался.
Потом с помощью этого видео - https://www.youtube.com/watch?v=BWtrVIVgA6c - я попытался переместить сайт на хостинг.
Ничего не получилось. Но после этого venv перестал создаваться. Думаю это как-то связано с тем что я создавал виртуальное окружение в putty, хотя это не точно.
По поводу твоего совету по переходу на linux подумаю, спасибо за совет. Как думаешь, какая версия лучше для программиста? Ubuntu?
178 1875504
>>75502
Я сам вкатывальщик, установил убунту и ни разу не жаловался, думаю ты зря этим занимаешься, пока не разобрался с линуксом ставить на хостинг что-то, еще и без гита сложновато, начни с его-то более простого
179 1875507
>>75504
Антош, как зарабатывать планируешь на программировании?
Я вот сайты хочу научиться делать - и на upwork с fiverr, английский попутно учу.
Еще думаю java выучить и android приложения пилить, может создам чего вроде Тик-тока и озолочусь.
А ты что планируешь?
181 1875509
It takes 1 minute on 120Kb project for Pycham to start
It takes 5 seconds for Vscode to start and 3-4secods for exceptions to kick in

Why do you have yourself?
182 1875510
>>75509
Зато пайчарм не тупит с автокомплитом, особенно на больших библиотеках.
183 1875511
>>75508
Мне эти логи удалить?
Честно говоря совсем нуб.
184 1875513
>>75509

> It takes 1 minute on 120Kb


Таки що вы говорите? Как там с ХДД в 2к20?
Небось система ещё пару минут грузится.
185 1875514
>>75513
Не поясняет факта почему торморзнутое электрон-говно быстрее, but ok
186 1875515
>>75514
Хз как у анона, но пучарм у меня ещё тянет кучу плагинов и прочей хуйни. Написан он на джаве и тяжеловат при запуске.
При этом вскод тянет парочку плагинов уровня "подсветки код в файле с расширением 'хуйпизда'".
187 1875516
>>75515
А что тебе нужно из плагинов, к примеру?
188 1875525
>>75511
научись гуглить, друг, узнай что такое логи
189 1875529
>>75516
Подсветка синтаксиса, интеграция с различными сторонними системами.
190 1875533
>>75529

>Подсветка синтаксиса


Семантическая? Она есть у Pylance

> интеграция с различными сторонними системами.


Какими?
191 1875534
https://www.youtube.com/watch?v=jME4-T_hfhQ - пытаюсь создать интернет-магазин.
Когда вбиваю django-admin.py startproject shop, папки shop не появляется.
Чому?
192 1875535
>>75534
появляется только файл django-admin.py, подсвеченный красным цветом, и в нем написано:
"#!d:\python\shop\scripts\python.exe
# When the django-admin.py deprecation ends, remove this script.
import warnings

from django.core import management

try:
from django.utils.deprecation import RemovedInDjango40Warning
except ImportError:
raise ImportError(
'django-admin.py was deprecated in Django 3.1 and removed in Django '
'4.0. Please manually remove this script from your virtual environment '
'and use django-admin instead.'
)

if __name__ == "__main__":
warnings.warn(
'django-admin.py is deprecated in favor of django-admin.',
RemovedInDjango40Warning,
)
management.execute_from_command_line()"
193 1875541
>>75483
Открой вакансии работ где собираешься РАБотать и посмотри требуется в них вышка или нет, че ты как маленький. Или ты думаешь на тебя после вуза выстроится очередь работодателей с зп 50-100к? лол
raskol 194 1875574
Почему так?
195 1875575
>>75574
Максимально длинное слово.
196 1875580
>>75575
То есть почему переменная конвертирует индекс в слово?
197 1875602
>>75580
a возвращает элемент в позиции b
a.index возвращает позицию элемента b в списке, если он там нашелся

Какая переменная конвертирует какой индекс в какое слово? У тебя в коде несколько переменных инициировано, мог бы ее имя назвать, а пока непонятно что тебе непонятно. Правильно и подробно заданный вопрос содержит в себе значительную часть ответа.
image.png69x38
198 1875604
>>75602

>a возвращает элемент в позиции b


Блять, спасибо абу, что до сих пор ссытся инъекций кода в постах.
199 1875677
Поднял ftp, чтобы всегда иметь доступ к базам данных для своих программ

А сейчас подумал, чем этот метод лучше, чем хранить файлы в обычном dropbox'e
200 1875694
>>75677
Поднял на VPS?
201 1875708
>>75694

> VPS


True
202 1875721
>>75541
Я знаю что есть вакансии где требуется и где не требуется, я не об этом спрашиваю, я говорю о том, возможно ли без вышки стать программистом, а не макакой
203 1875722
>>75721
да. Ещё вопросы?
204 1875737
>>75677
Заведи себе rclone
205 1875739
>>75721
У тебя лекции MIT по программной инженерии выложены в инет бог знает в каком году, если студентам-хирургам ещё нужен доступ в медвузы потому что там им надо на трупах людей тренироваться резать, то комп у тебя итак есть, надеюсь, а больше в вузе ничего нет к чему бы ты не мог получить доступ самообразовываясь, ну разве что вузовский преподаватель по сишке за отсос порекомендует тебя какой-нибудь 1с конторе в твоем городе или студенток в общаге ебать.
image.png57 Кб, 173x1361
206 1875844
>>75533

> Pylance


Не только питон
image.png46 Кб, 633x320
207 1875927
Привет, хочу переписать этот блок так-как он мне не нравится, как сделать чтобы было красиво и не стыдно самой смотреть?
208 1875943
>>73283 (OP)
аноны, как в пандосе фильтровать по нескольким строкам?
Наприме есть датафрейм, один из столбцов имена, хочу оставить всех кроме наташ и оксанок.
Убрать только наташ или только окснок работает, но как сразу несколько таких фильтров сделать?
df.loc[df['Name'] != 'Oksanka']
209 1875952
>>75844
Что?
210 1875973
>>75943
Тупой вариант - создать
dury = list(Notash, Oksanka)
и потом
if (df.loc[df['Name'] in dury):
sosat()

Понятно что буде O(n)
Можно создать Set или Dict, тогда будет O(1) average, cj спайками
212 1876099
Вечер добрый, анонимус.
Назрел вопрос. У меня есть несколько словарей в списке. Мне нужно перебрать все значения в списке, но это да черт с ним. Я не понимаю, каким образом взять одно из значений списка (кличку животного) и заключить его в name.

manya = {'kind': 'cat', 'owner': 'dar'}
devil = {'kind': 'dog', 'owner': 'jhon'}
piggy = {'kind': 'pig', 'owner': 'sasha'}

pets = [manya, devil, piggy]

name = ?
for pet in pets:
print("That`s " + pet[name])
213 1876102
>>75482
Вуз нужен, корочка не нужна
215 1876129
Можно как-нибудь посмотреть зависимости в pip до установки пакета?
Нужно выяснить какая последняя версия rasa поддерживает tensorflow==1.14 и я задолбался перекачивать релиз за релизом.
216 1876138
>>76099
Что надо-то? Какие имена подразумеваются? Если manya, devil, piggy, то, чтобы с ними рабоатть, у тебя должны быть соответствующие ключи в словарях {'name': 'manya', 'kind': 'cat', 'owner': 'dar'} и так далее. А так, что-то не ясно, какая у тебя задача
217 1876146
>>76099
Можешь для pets не список использовать, а словарь, типа
pets = {"manya": manya, "devil": devil, "piggy": piggy}
218 1876166
>>76099
__name__ но ты долбаеб
219 1876231
Аноны, как же охуенно писать скрипты

3 часа работы - и вот уже с сайта выгружаю тысячи архивных фотографией
4 часа работы - и вот уже при нажатии кнопки в текст вставляется старорусское оскорбление (белебеня) или умная цитата
3 часа работы - и фотографии автоматически редактируются в облаке и сохраняются с красивой нумерацией по дате

как же охуенно, а ведь я раньше неделями дебажил макросы на X7, а тут всё то же самое, но ещё и с распознаванием откликов программы и даже распознаванием изображений, это просто охуенно
220 1876233
>>75927
Через генератор next
221 1876249
>>76099
можно вытащить из locals() / globals()
223 1876368
Так, аноний, у меня вопрос пизданутый. Нужно разжевать.
Запутался с циклом for и итераторами.

a = [1,2,3,4,5]
b = (1,2,3,4,5)
tulpa = (a,b)

for i in tulpa:
....i = i2
print (tulpa)

Вывод программы: ([1, 2, 3, 4, 5], (1, 2, 3, 4, 5))

То есть ничего не поменялось. Почему? Ну вроде как потому что for создаёт итератор объекта tulpa и работает уже с ним, а не с оригинальным объектом. После выхода из цикла итератор удаляется сборщиком мусора, а оригинальный tulpa не тронут. Такая реализация языка, узнали запомнили. Я же прав? Или нет?

Но это только начало. Давайте запишем умножение в виде краткой формы записи.

a = [1,2,3,4,5]
b = (1,2,3,4,5)
tulpa = (a,b)

for i in tulpa:
....i
= 2
print (tulpa)

вывод: ([1, 2, 3, 4, 5, 1, 2, 3, 4, 5], (1, 2, 3, 4, 5))
То есть в изменяемом объекте поменялось, а в неизменяемом нет. Какого хуя?

Третья часть. Давайте попытаемся применить списковый метод к i в for:

a = [1,2,3,4,5]
tulpa = (a,)

for i in tulpa:
....i.append(2)
print (tulpa)

вывод: ([1, 2, 3, 4, 5, 2],)

То есть работает. То есть здесь i ссылается на элементы кортежа tulpa.
223 1876368
Так, аноний, у меня вопрос пизданутый. Нужно разжевать.
Запутался с циклом for и итераторами.

a = [1,2,3,4,5]
b = (1,2,3,4,5)
tulpa = (a,b)

for i in tulpa:
....i = i2
print (tulpa)

Вывод программы: ([1, 2, 3, 4, 5], (1, 2, 3, 4, 5))

То есть ничего не поменялось. Почему? Ну вроде как потому что for создаёт итератор объекта tulpa и работает уже с ним, а не с оригинальным объектом. После выхода из цикла итератор удаляется сборщиком мусора, а оригинальный tulpa не тронут. Такая реализация языка, узнали запомнили. Я же прав? Или нет?

Но это только начало. Давайте запишем умножение в виде краткой формы записи.

a = [1,2,3,4,5]
b = (1,2,3,4,5)
tulpa = (a,b)

for i in tulpa:
....i
= 2
print (tulpa)

вывод: ([1, 2, 3, 4, 5, 1, 2, 3, 4, 5], (1, 2, 3, 4, 5))
То есть в изменяемом объекте поменялось, а в неизменяемом нет. Какого хуя?

Третья часть. Давайте попытаемся применить списковый метод к i в for:

a = [1,2,3,4,5]
tulpa = (a,)

for i in tulpa:
....i.append(2)
print (tulpa)

вывод: ([1, 2, 3, 4, 5, 2],)

То есть работает. То есть здесь i ссылается на элементы кортежа tulpa.
224 1876370
>>76368
Макаба ожидаемо насрала мне в штаны. Но вы поймёте. Проебались две звёздочки. В первом примере i = i x 2, а во втором i x= 2, где вместо х звёздочка.
225 1876372
https://repl.it/@Soyrates/111#main.py

Вот тут код в читаемом виде.
226 1876441
>>76368
Это он тебе ещё ошибку не поднял ВМЕСТЕ с применением изменения, как, например, в

>>> r = (3, 4, 5, [11, 22])


>>> r[3] += [33, 44]


TypeError!

>>> r


(3, 4, 5, [11, 22, 33, 44])
Не помещай изменяемые объекты в неизменяемые. Насоздают парадоксов, а потом сами в них влипают.
227 1876472
Анон, выручай.
Есть следующая задача: распарсить текстовый файл c записями следующего формата :

RI.AP.W.1 {@ Rule I.AP.W.1: Maximum AP
}

#IFDEF SHRINK_COMPATIBILITY

RCO.D.5_rec {@ Rule CO.D.5_rec: Recommended Distance
}
RCO.D.6_rec {@ Rule CO.D.6_rec: Recommended Distance
}
#ENDIF

RULES

RCGO2.A.1 { @ Rule CGO2.A.1 : maximum poly > 1000
}

То есть имя + запись в фигурных скобках и произвольное количество мусора между ними. Все такие записи в файле нужно найти и поместить в какой то контейнер и по запросу выдавать список имя-код. Попробовал реализовать с помощью pyparsing, вроде получилось, но с оговоркой. Вот код:

from pyparsing import

def pasreDrcFile(File):
drcString = File.read()
outputFile = open('parseddrc.txt', 'w')

keyName = Word(printables)
params = Word(alphanums + "#$%&'()
+,-./:;<=>?@[\]^_`|~" + " " + "\n")
paramsWord = Suppress('{') + params + Suppress('}')
completeNote = keyName + paramsWord
allNotes = OneOrMore(Group(completeNote))

outputFile.write(str(allNotes.searchString(drcString)))
a=allNotes.searchString(drcString)
print a, type(a)
return outputFile

drcFile = open('test.txt', 'r')
outputDRC = pasreDrcFile(drcFile)
drcFile.close()
outputDRC.close()


На выходе получается вот что:


[[['RI.AP.W.1', '@ Rule I.AP.W.1: Maximum AP \n']], [['RCO.D.5_rec', '@ Rule CO.D.5_rec: Recommended Distance \n '], ['RCO.D.6_rec', '@ Rule CO.D.6_rec: Recommended Distance \n ']], [['RCGO2.A.1', '@ Rule CGO2.A.1 : maximum poly > 1000 \n ']]]

То есть он формирует кучу лишних вложенных списков, например кладет запись в дополнительный список если она отделена от предыдущего мусором. Если эту переменную(класса pyparsing.ParseResults) преобразовать в список хоть в ручную через list(a), либо через функцию этой библиотеки .asList(), то получается еще больший пидец в первом случае, либо вид никак не меняется во втором.

Что я делаю не так? Может мне другими средствами нужно с этим работать? Никаких содержательных гайдов по pyparsing не нашел, только совсем простые примеры, а работать с описанием модуля напрямую не хватает опыта, вроде беру оттуда функции, а результата нужного не получаю.
227 1876472
Анон, выручай.
Есть следующая задача: распарсить текстовый файл c записями следующего формата :

RI.AP.W.1 {@ Rule I.AP.W.1: Maximum AP
}

#IFDEF SHRINK_COMPATIBILITY

RCO.D.5_rec {@ Rule CO.D.5_rec: Recommended Distance
}
RCO.D.6_rec {@ Rule CO.D.6_rec: Recommended Distance
}
#ENDIF

RULES

RCGO2.A.1 { @ Rule CGO2.A.1 : maximum poly > 1000
}

То есть имя + запись в фигурных скобках и произвольное количество мусора между ними. Все такие записи в файле нужно найти и поместить в какой то контейнер и по запросу выдавать список имя-код. Попробовал реализовать с помощью pyparsing, вроде получилось, но с оговоркой. Вот код:

from pyparsing import

def pasreDrcFile(File):
drcString = File.read()
outputFile = open('parseddrc.txt', 'w')

keyName = Word(printables)
params = Word(alphanums + "#$%&'()
+,-./:;<=>?@[\]^_`|~" + " " + "\n")
paramsWord = Suppress('{') + params + Suppress('}')
completeNote = keyName + paramsWord
allNotes = OneOrMore(Group(completeNote))

outputFile.write(str(allNotes.searchString(drcString)))
a=allNotes.searchString(drcString)
print a, type(a)
return outputFile

drcFile = open('test.txt', 'r')
outputDRC = pasreDrcFile(drcFile)
drcFile.close()
outputDRC.close()


На выходе получается вот что:


[[['RI.AP.W.1', '@ Rule I.AP.W.1: Maximum AP \n']], [['RCO.D.5_rec', '@ Rule CO.D.5_rec: Recommended Distance \n '], ['RCO.D.6_rec', '@ Rule CO.D.6_rec: Recommended Distance \n ']], [['RCGO2.A.1', '@ Rule CGO2.A.1 : maximum poly > 1000 \n ']]]

То есть он формирует кучу лишних вложенных списков, например кладет запись в дополнительный список если она отделена от предыдущего мусором. Если эту переменную(класса pyparsing.ParseResults) преобразовать в список хоть в ручную через list(a), либо через функцию этой библиотеки .asList(), то получается еще больший пидец в первом случае, либо вид никак не меняется во втором.

Что я делаю не так? Может мне другими средствами нужно с этим работать? Никаких содержательных гайдов по pyparsing не нашел, только совсем простые примеры, а работать с описанием модуля напрямую не хватает опыта, вроде беру оттуда функции, а результата нужного не получаю.
228 1876516
>>76472

import re

dictionary = {}

with open('file', 'r') as fp:
....for line in fp:
........if re.match("[0-9a-zA-Z_.]+\s+{", line):
........name = line.split(" ")[0]
........content = line.split("{")[1].replace("}", "").strip()
........dictionary[name] = content

print(dictionary)
print(dictionary['RI.AP.W.1']
229 1876517
>>76516

>import re


>


>dictionary = {}


>


>with open('file', 'r') as fp:


>....for line in fp:


>........if re.match("[0-9a-zA-Z_.]+\s+{", line):


>............name = line.split(" ")[0]


>............content = line.split("{")[1].replace("}", "").strip()


>............dictionary[name] = content


>


>print(dictionary)


>print(dictionary['RI.AP.W.1']



hot-self-fix
230 1876523
>>76441
Да это абстрактный пример. Можно было тульпу и кортежем сделать. Сути не меняет.
231 1876527
>>76523

>Сути не меняет.


Суть в том, что помещение изменяемых объектов внутрь неизменяемых создаёт логический парадокс.
232 1876529
>>76527
Ну я поместил в изменяемый и поведение моей программы не поменялось.
233 1876574
>>76368
В первом примере вызывается метод https://docs.python.org/3/reference/datamodel.html#object.__mul__
Во втором - https://docs.python.org/3/reference/datamodel.html#object.__imul__
Действуют они по-разному, потому и результаты разные.
234 1876585
>>76517
Спасибо, братик, почти получилось.
Учитывает только строку в которой была открывающая "{", а дело в том, что записи бывают многострочные размером с целую страницу:

RCGO2.A.1 { @ Rule CGO2.A.1 : maximum poly > 1000
maximum poly > 1000
maximum poly > 1000 maximum poly > 1000

}
235 1876595
>>76585
Можно добавить таг, который будет проверять конец контента
import re

dictionary = {}

with open('file', 'r') as fp:
name = ""
content = ""
end_of_content = True
for line in fp:
if not end_of_content:
if '}' in line:
end_of_content = True
else:
dictionary[name] += f"\n{line}"
if re.match("[0-9a-zA-Z_.]+\s+{", line):
name = line.split(" ")[0]
content = line.split("{")[1].replace("}", "")
dictionary[name] = content
if '}' not in line:
end_of_content = False

print(dictionary)
236 1876596
>>76595

>таг


флаг*
237 1876599
Делаю учебный проект, код взят с https://habr.com/ru/post/516236/ . Буду еще подгонять под себя.
Итого выглядит вот так: https://www.codepile.net/pile/LVmAGvVp

Собственно, начиная с 70 строчки выдает ошибку Unresolved reference "N". Помогите нубу, пожалуйста, как корректно определить эту N? выполняю в pycharm
238 1876609
>>76595
Не робит. Наверное я не так отступы расставляю и функции пиздой идут.
Вот тут
dictionary[name] += f"\n{line}"
f не лишняя?
239 1876625
>>76599
попробуй заменить N на cnt
240 1876656
>>76625
А если cnt уже есть выше по коду?
241 1876659
>>76656
то проблема исчезнет
Снимок экрана 2020-12-09 в 16.19.37.png108 Кб, 1558x1244
242 1876664
>>76659
Там для построения нужны и N, и cnt если я все правильно понимаю Изначально вот так:

risk = np.zeros(N)
doh = np.zeros(N)
portf = np.zeros((N, cnt))

for n in range(N):
r = randPortf()

portf[n, :] = r
risk[n] = riskPortf(r)
doh[n] = dohPortf(r)

При замене всех N на cnt выходит пикрил то есть множество портфелей он не строит
243 1876668
>>76664
ну хотя бы от ошибки избавились
244 1876677
>>76668

> np.zeros


в общем, я не программист, я пока только учусь
я больше не советчик
глянь что делает функция np.zeros и может что придумаешь
https://pyprog.pro/array_creation/zeros.html#:~:text=Функция zeros() возвращает новый,формы и типа, заполненный нулями.&text=Задает размеры необходимого массива - целое,Определяет тип данных выходного массива.
qxhs0o-rcl6u-c0vqelvxwhkn4.png34 Кб, 615x496
245 1876686
>>76668 >>76677
От ошибки избавились, это да. Нужно подумать, что поставить вместо N, чтобы он строил сразу множества значений risk и doh как на пикрил
Про np.zeros гляну, спасибо
246 1876722
Как можно "раскрыть" внешний список, если у меня список с данными лежит внутри другого бесполезного списка с одним этим элементом?
247 1876733
>>76722
chain.from_iterable
248 1876771
>>76733
Чел, ты мне сейчас столько анальной крови сберёг, ты даже не представляешь. Спасибо огромное.
249 1876824
>>76609
>>76585
Имя всегда идет с новой строки? И очень большой файл?
Если в память влазит без проблем, тогда проще классикой, бегунком. Читаешь файло со строки до первого { - вот тебе имя, переходишь в режим чтения данных внутри, и двигаешь каретку до закрывающего } - вот тебе данные, резет лупа и снова пошел.
250 1876848
>>76733
>>76722
А можно просто через звездочку chain(*iterebales)
251 1876919
>>76609

>dictionary[name] += f"\n{line}"


>f не лишняя?


Нет, это укороченная версия format() метода, работает, вроде, начиная с версии 3.5 или 3.6, если младше, то вот так:
dictionary[name] += "\n{}".format(line)
252 1876973
Пагни, если сервис реквест тест не пасает спустя 3 минуты. Скажем из-за ошибки сервера, можно ли как-то ускорить окончание теста, чтобы он не ждал все это время? Как-то это регулируется? Грубо говоря снизить timeout до 1 минуты например.
253 1876988
>>76973
А за сколько обычно отвечает? Минута на запрос это пиздец долго, мне кажется, если это не лонг пулинг какой нибудь
254 1877028
>>76973
Ничего не понял. Какой конкретно запрос висит?

Настроить таймаут, очевидно. А вот как, зависит от того, как ты запрос делаешь.
255 1877121
>>76988
Если сервер не висит, то отвечает за 5-10 секунд. Согласен, поэтому и хочу изменить.
>>77028
Да обычный get reques на Сервер с хедерами и прочими параметрами.
Запрос в стиле: request = requests.get(“google.com”, headers=headers)
256 1877149
>>77121
Говорят неплохо бы почитать документацию и увидеть что метод get принимает именованный параметр timeout
257 1877160
>>76824
Да, всегда с новой строки. Файлы довольно большие, 550Кб вижу, это 10к строк. Бегунком не долго ли будет? Ждать несколько минут не вариант.
258 1877179
Котаны, продолжаю обучение, надавно спрашивал про создание instancов класса, и мне ответили, что проще инстансы создавать в списке. Я так понял, что вообще если хранящая объект переменная не задана изначально, то объект лучше НУЖНО хранить в чем-то перебираемом-итерируемом типа словаря, списка?
Я не могу насоздавать себе переменных динамически типа:
def names(how_many):
for x in range(how_many):
string = f'Warrior{x} = Warrior()'
eval (string)
names(how_many)
ругается
Warrior0 = Warrior()
^
SyntaxError: invalid syntax
Только списки только хардкор?
И еще из задания от линуксоила- задавать принадлежность команде игрока сгенерированных "войнов" (первая или вторая команда) нужно случайным образом. Делаем класс героя на классе юнит:
class Hero(Unit):
def __init__(self,id= idcounter(),team = random.randint(1,5),level= 1):
Unit.__init__(self,id,team)
self.level = level
И при создании двух героев First = Hero(), Second = Hero() у них почему-то всегда будет одна команда, как будто рандом возвращает всегда одно значение. Если я делаю random в отдельной функции типа def randomteam(): return random.randint (1,5) и уже по умолчанию ставлю
class Hero(Unit):
def __init__(self,id= idcounter(),team = randomteam(),level= 1): то герои получают значение действительно случайное. Почему так?
И где мне лучше писать эту функцию? оно работает, если я пишу в коде просто сначала глобальные переменные типа ID, потом функцию рандома, потом классы. Если я пишу классы до того, как встречается функция, то классы выдают ошибку при попытке генерации объектов. Куда эти функции прячут прогеры? Они выносят их в другие файлы и подключают в начале импортами? Как тогда рационально выносить эти функции чтобы не раздувать main.py? Стоит ли для чего-то глобального выносить каждую функцию отдельно в файл и потом уже в финальном main.py подключать всё? (имю ввиду подключать последние используемые уже в main.py модули)

И вопрос на развитие- как реализуется игровая логика, например, стратежки, а именно расположение функций и переменных в коде- есть глобальная переменная с id объекта где она объявляется? Она загружается при загрузке карты или еще где-то? Есть вывод графики, интерфейса, управления и собственно карта и юниты, и юниты , как я понимаю ООП- они должны быть базовыми классами "Юнит" с параметрами принадлежности игроку, с дочерними классами типа "Пеший"-"Техника" и для "пехотинца" уже подкласс "Человек"-"Орк", чтобы, например, по разному определять урон других юнитов "по оркам +100", и вот действие выделения юнита- оно может быть прописано в GUI или его можно/нужно прописать методами для базового объекта "Юнит" (если выделение оверлап юнит при отпуске мышки сделать переменную выделение True) И это все проверяется игровыми циклами типа фреймов или тиков по 60-n раз в секунду?. Я раньше только Construct немного ковырял, поэтому то, что находится глубоко в движке для меня загадка.
258 1877179
Котаны, продолжаю обучение, надавно спрашивал про создание instancов класса, и мне ответили, что проще инстансы создавать в списке. Я так понял, что вообще если хранящая объект переменная не задана изначально, то объект лучше НУЖНО хранить в чем-то перебираемом-итерируемом типа словаря, списка?
Я не могу насоздавать себе переменных динамически типа:
def names(how_many):
for x in range(how_many):
string = f'Warrior{x} = Warrior()'
eval (string)
names(how_many)
ругается
Warrior0 = Warrior()
^
SyntaxError: invalid syntax
Только списки только хардкор?
И еще из задания от линуксоила- задавать принадлежность команде игрока сгенерированных "войнов" (первая или вторая команда) нужно случайным образом. Делаем класс героя на классе юнит:
class Hero(Unit):
def __init__(self,id= idcounter(),team = random.randint(1,5),level= 1):
Unit.__init__(self,id,team)
self.level = level
И при создании двух героев First = Hero(), Second = Hero() у них почему-то всегда будет одна команда, как будто рандом возвращает всегда одно значение. Если я делаю random в отдельной функции типа def randomteam(): return random.randint (1,5) и уже по умолчанию ставлю
class Hero(Unit):
def __init__(self,id= idcounter(),team = randomteam(),level= 1): то герои получают значение действительно случайное. Почему так?
И где мне лучше писать эту функцию? оно работает, если я пишу в коде просто сначала глобальные переменные типа ID, потом функцию рандома, потом классы. Если я пишу классы до того, как встречается функция, то классы выдают ошибку при попытке генерации объектов. Куда эти функции прячут прогеры? Они выносят их в другие файлы и подключают в начале импортами? Как тогда рационально выносить эти функции чтобы не раздувать main.py? Стоит ли для чего-то глобального выносить каждую функцию отдельно в файл и потом уже в финальном main.py подключать всё? (имю ввиду подключать последние используемые уже в main.py модули)

И вопрос на развитие- как реализуется игровая логика, например, стратежки, а именно расположение функций и переменных в коде- есть глобальная переменная с id объекта где она объявляется? Она загружается при загрузке карты или еще где-то? Есть вывод графики, интерфейса, управления и собственно карта и юниты, и юниты , как я понимаю ООП- они должны быть базовыми классами "Юнит" с параметрами принадлежности игроку, с дочерними классами типа "Пеший"-"Техника" и для "пехотинца" уже подкласс "Человек"-"Орк", чтобы, например, по разному определять урон других юнитов "по оркам +100", и вот действие выделения юнита- оно может быть прописано в GUI или его можно/нужно прописать методами для базового объекта "Юнит" (если выделение оверлап юнит при отпуске мышки сделать переменную выделение True) И это все проверяется игровыми циклами типа фреймов или тиков по 60-n раз в секунду?. Я раньше только Construct немного ковырял, поэтому то, что находится глубоко в движке для меня загадка.
259 1877185
>>77179
Блин, ты столько дохуя написал.
Про рандом - значения дефолтных аргументов определяются один раз, при объявлении функции, а не каждый раз при ее запуске.
Обойти можно так
def func(param=None):
if param is None:
param=generate()

Про геймдев - почитай https://gameprogrammingpatterns.com/
260 1877194
В продолжение поста >>77179
И вообще- я решал задания на Codewars, всё было нормально кроме специфичного задания с созданием генератора чисел Фибоначи для трибоначи, четыребоначи и т.д. -я просто спасовал через пару часов, т.к. делать это для меня 1) сложно. У меня была обычная школа и дома обычный батя, забиравший провод и говоривший идти погулять к наркоманам на улицу 2) не вижу практической пользы. Мне бы формошлепствовать научиться нормально. Я жмакнул "показать ответ" и увидел, что многое было решено специальными формулами для вычисления, или вообще запросом к OEIS. Как и в прошлых заданиях, где я делал громоздкие конструкции if-else, а лучшими ответами считались короткие записи в одну строку, которые выглядят как будто их писал обфускатор. Я понимаю ценность краткости- её, после получения определённого навыка, проще-быстрее читать. Может она даёт буст к скорости выполнения (сомневаюсь, ну разве что мы не пишем дрова для нвидии на С или базы ютуба, фейсбука и т.д.)? Я даже гуглу задал вопрос- зачем разработчики пишут так кратко? И вот одна статья, которая оставляет вопрос- https://dev.by/news/ctrl-c-razrabotchik. Собственно, вопрос- нужно ли усиленно изучать математику и олимпиадные задачи, если пока что нету навыков формошлепа. Да, для ума это полезно, и забрасывать такие задачи не попробова- моветон. Но, всё же, может позже будет рациональнее изучать нужную тебе ветку? Не думаю, что попаду в НИИ в свои 30 лет, или вообще куда-то на работу. Пистон изучаю скорее для себя и, возможно, для фриланса, потому что работа теряется. А для практики-заказчика- не так уж важна будет предельная скорость работы, оригинальность и краткость кода, так? Ну, по крайней мере, для мелких проектов-решений. Или это будет плохая привычка, и хром тормозит всё больше, скорее всего, потому что там сейчас собралась куча формошлепов?
261 1877195
>>77185
спасибо
262 1877250
>>77160

>Файлы довольно большие, 550Кб


Большие это 550Мб. Вот тут уже оптимизировать надо. Если меньше 100Мб, то проще считать в память. Если меньше 10Мб, то даже и думать не надо.

В принципе если формат простой, то можно после этого обычными регулярками разобрать, то есть регулярками ищешь имя + скобки. Они работают очень быстро. Правда это для простых случаев, если возможна история, что есть комментарии со скобками, или же скобки могут внутри строковых значений каких-нибудь, то уже придётся извращаться и делать парсер.
Screenshot from 2020-12-10 14-28-52.png58 Кб, 843x513
263 1877283
264 1877287
>>77283
Не очень корректен для ситуаций, когда закрывающая скобочка где-то есть, но не в начале строки. Надо чуть переписать на самом деле, чтобы группа 'value' жрала всё, пока не напорется на правильную закрывающую скобку.

Но смысл в том, что в данном случае скорее всего достаточно обычных регулярок, просто надо использовать режим re.MULTILINE. Pyparser не нужен.
265 1877344
Как возможно Jinja2 Template перевести обратно в объект XML или хотя бы Dict?
<receipt>
<header align='center'>{{ params[0] }} </header>
<company align='center'> {{ params[1] }} </company>
<inn align='center'> {{ params[2] }} </inn>
</receipt>
Есть такой вот шаблон, jinja2 высирает строку, а мне надо снова объект для парсинга
266 1877351
>>77344
сам нашел уже. Костыль в виде xml.etree.cElementTree.fromstring.
Заепца, чо
267 1877487
>>77351
Ты целых 6 минут гуглил?
268 1877490
>>77487
Да, смотрел может в других templators есть нормальный встроенный метод, но хуй. Костыли костылики
269 1877537
>>77149
Спасибо. Читану.
270 1877637
>>76129
Попробуй использовать файлы requirements, сделай файл requirements.txt с таким содержанием:

rasa
tensorflow==1.14

А потом набери, pip install -r requirements.txt, желательно в отдельном новом виртуальном окружении. По идее, pip сам должен раздуплить как и что ставить, чтобы результат соответствовал требованиям в файле.
271 1877686
>>76129
Вот тут можешь джейсончики попарсить
https://pypi.org/pypi/rasa/1.4.0/json
список версий взять тут https://pypi.org/pypi/rasa/json
Только учти что он requires python>=3.6, поэтому скорее всего у тебя питон древний и pip вынужден ставить 1.13 tf чтобы поставить сиротинушке с некропитоном хоть что-то
272 1877795
Я правильно понял, что асинхронность в питоне реализованна через эвент лупы операционной системы? В линухе epoll, например
А либа uvloop подменяет его на свой, который более эффективно менеджит корутины?
273 1877862
Только узнал, что jsonschema regex работает на своей волне и на самом деле не матчит полностью. Еботина какая-то.
274 1877863
Как с минимальными усилиями сделать фронт с парой виджетов для веб-приложений на фласке, если ты в рот ебал учить стак JS/CSS/HTML параллельно питону, не говоря уж о жсных библиотеках?
275 1877908
Посоны, а в какую сторону думать для того, чтобы понять частоту тонового сигнала входящего?

Есть такой код - https://pastebin.com/E8ssr397
Сгенерировал последовательность тоновых сигналов, записал. Как я могу (опираясь на свой кортеж) получить обратно буквы отдав последовательность тоновых сигналов?
276 1877940
Товарищи, подскажите как детектить битое изображение через opencv?
277 1877942
>>77908
Если словарик не будет меняться, то я бы сделал обратную мапу еще
reverse_freq = {value: key for key, value in freq.items()}
278 1877943
>>77942
Да нет, не в этом вопрос. Если я скрипту отдам wav файл с последовательностью тоновых сигналов, как скрипт научить понимать частоту каждого? Сопоставить-то нет проблем. Вот в какую сторону думать.
279 1877945
>>77943
Вангую, что придется нарезать на куски по паузам и измерять частоту в каком-то numpy или подобной хуйне.
280 1877960
>>77943
А что представляет из себя файл? Просто набор звуков одинаковой длинны без пауз? Найди какую-нибудь либу, которая показывает частоту и добавь это в массив попутно удаляя последовательные дупликаты
2.mp434 Кб, mp4
281 1877961
282 1877963
>>77961
Сначала маркер, потом сообщение. Различия в длительности каждого тона.
283 1877981
Ребята, писал в реверс тему, напишу на всякий случай и сюда, тк не особо шарю в пайтоне.
Решаю ctf
Есть такой вот лог файл: https://hastebin.com/nuxunofumu
Из него вытащил само задание: https://hastebin.com/qikirofoli
Это простой python скрипт, который сам себя расшифровывает

НоооОО! Пароль нам неизвестен. Я насколько понял - пароль 3 символа UTF-8!!!!!! Те 100к в 3 степени вариантов? Это только брутом решать? На том же пайтоне скрипт написать?
Есть идея проверить utf-8 рендж у соли и прочих base64 строк чтоб на основе этой гадости генерить варинаты под брут пароля. Но это низкобальное задание, вряд ли там настолько все сложно..
284 1878043
>>77981
Не работают твои ссылки.
285 1878060
286 1878064
>>78043
или ссылки на более удобный интерфейс:
https://ghostbin.co/paste/73dey
https://ghostbin.co/paste/oczmz
287 1878081
>>77981
>>78060
Достаточно начать с аски.
https://ideone.com/dj6b3F
288 1878137
OS Linux, в локалях CP1251 принял

newtext = (b'\xCF\xD0\xC8\xC2\xC5\xD2')
print(chardet.detect(newtext))

выводит KOI8-R.

Суть в том, что если печатаю из системы у меня текст нормально определяется принтером и он печатает символы в верной кодировке, из IDE получается хуйня. Не понимаю в чем дело.
289 1878150
>>78081
огромное спасибо!!!! а то у меня совсем крыша поехала с этим юникодом
290 1878154
Ок, нубский вопрос: как сделать чтобы функция вызывалась через определённое время? Есть что-то проще трединга?
1.webm13,2 Мб, webm,
1920x960, 0:55
291 1878157
292 1878179
>>78154
Выполнялась один раз или периодично?
293 1878254
>>78179
Периодически. Скажем n раз через m секунд.
Как вообще такие штуки делаются?
294 1878261
>>78254
Просто никак не делаются. Обычно через эвент луп или треды.
image.png1 Кб, 248x44
295 1878274
297 1878283
>>78276
Пиздато, я теперь автощитпостер.
298 1878284
>>78276
Какая-то игрушка для детей.
Если есть тяжелые или блокирующие задачи, то всё посыпется.
299 1878292
>>78284
Документацию не читай - сразу отвечай
https://schedule.readthedocs.io/en/stable/faq.html#how-to-execute-jobs-in-parallel
300 1878298
>>78276
Точно, можно ведь посмотреть в сторону готовых планировщиков
301 1878308
>>78292
Ну такое.
302 1878480
>>78308

> Pyk

303 1878508
>>73283 (OP)
есть задача: в папке лежат файлы с названиями:
a1.jpg, a2.jpg, a3.jpg, b1.jpg, b2.jpg, b3.jpg, b4.jpg. Программа выбирает в элемент массива список с именами a1.jpg, a2.jpg, a3.jpg, после окончания - создает второй лист в массив с именами b1.jpg, b2.jpg, b3.jpg, b4.jpg
Вопрос, как такое реализовать?
image.png58 Кб, 1011x643
305 1878561
>>78518
Чуть порядок поменял и рассыпалось
306 1878562
>>78561
Очевидно, новые группы создаются, когда меняется кей.
Можешь сортировать, хотя при глоббинге будет уже сортировано вроде.
307 1878565
Вот так в любом порядке, но это какая-то уродская конструкция, всё время забываю как оно.
https://ideone.com/X92isi
308 1878569
>>78565
благодарю
309 1878828
Не совсем понимаю, где в джанге хранить бизнес-логику. Например, я пишу API, и мне нужна функция, которая принимает географические координаты, потом обрабатывает их и возвращает другие координаты. Где мне эту функцию разместить?
310 1878853
>>78828
Делаешь отдельный файл с логикой и вызываешь из контроллера
311 1878860
>>78853
Это то, что обычно service называется?
312 1878865
>>78860
Нет, сервис обычно подразумевает отдельный инстанс приложения
313 1878874
Тут часто задают вопросы и они остаются без ответа. За сколько рублей вы готовы отвечать на вопросы новичка?
314 1878884
Разбираюсь с индийскими pytest тестами. Ну черт с ним половина хотя ты работает. Поставили задачу создать тест сюты для определенных релизов. Например, в релиз А включить эти тесты, в релиз Б - вот те. А в релиз С включить все теста.
Как это сделать грамотнее всего? Через маркёры собирать новый тест файл для каждого релиза? Или через импорты. Тогда импортов будет много. Ещё проблема что там есть сервис тесты, а есть Юай где запускается браузер. Для таких тестов создавать отдельный тест файл?
315 1878896
>>78874
Меньше мильйона не предлагать.
image.png44 Кб, 1634x122
316 1878905
>>73283 (OP)
я делаю программу, которая будет создавать слайдшоу из изображений и музыки, но проблема в том, что мне надо сделать как-то чтобы изображения менялись с такой скорости, пока не закончится видео (длина видео = длине музыки), но они меняются быстро, и получается, что последнее изображение так и висит до конца видео..
пробовал играться с частотой кадров, но это ни к чему не приводило
317 1878954
>>78896
ясно.
Для всех, кроме москолудов предложение остаётся открытым. Я готов платить анонам, а не дроволомам с пустошного скил фэктори
318 1879010
>>77637
Я уже руками нашёл, но идея интересная, спасибо. Возьму на вооружение.
320 1879159
Внезапно придумал себе идею для пет проекта (с целью вката на роботу)
Короче сервис-обертка над яндекс маркетом (потенциально не только над ним). Пользователь выбирает услугу/магазин/что-то с большим кол-вом отзывов. Сервис парсит комментарии и с помощью машин лернинга пытается сделать вывод - какое примерно кол-во отзывов могло быть написано ботами/работниками магазина. Чисто лингвистическим анализом, всякие повторяющиеся паттерны в текстах и прочая залупа из этой области.
В качестве вротенда вью, бек джанга, как мл присобачить, пока не знаю.

Че думаете? оценит ли потенциальный даватель зряплаты мои потуги?
321 1879171
>>79159
звучит круто и применимо (ток на ЯД есть блямба "проверенный покупатель", но даже такие покупатели могут быть ангажированными)

можешь на комментарии в ютубе расширить и вычислять ботов
322 1879186
>>79159
Ага, не забудь подключить pytorch,tensorflow,мочу,говно,аллаха.
Ох уж эти однострочные машиннообучатели
323 1879356
>>79186
Если это можно сделать без машиннообучателя, значит будет без него. Это просто, что первое пришло в голову. У меня пока мало познаний в ёба-алгоритмах, 3 курса шараги все-таки.
Говорю же, идея совершенно спонтанно родилась - смотрел какого-то обзорщика на утубе и он такой говорит "бля, не верю отзывам с высокими оценками, всегда все куплено!"
image.png35 Кб, 650x198
324 1879493
>>73283 (OP)
срочно, двач, дедлайн горит///
я закончил писать скрипт, билдю её в .exe через пакет pyinstaller, но после запуска .exe файла, выдается такая ошибка, с чем это может быть связано?
python 3.7
326 1879553
>>79506
чел ты..
я бы не писал сюда, если бы не гуглил,, я уже столько сайтов перешёл, столько способов перепробовал
327 1879557
>>79493

> python


> windows


> билд в exe


А вы знаете толк в извращениях
328 1879570
>>79557

> билд в exe


В чём проблема? Как конечный пользователь должен запускать программу?
329 1879580
>>79570
Наверное потому что питон не лучший выбор для этого.
330 1879583
>>79356
Обмануть АИ с помобщью АИ легко. Твой анналоиз так же не будет вызывать доверия. Плюс всегда будет понимание что у тебя так же могут купить "анализ" как купили отзывы.
331 1879608
>>73283 (OP)
Как в Пистоне в датаклассе тайпингом обозначить поле, которое не обязательно? То есть при создании датакласса его может и не быть и это нормально

В тайпскрипте я бы написал:
someField: number,
someUselessField?: string
332 1879616
>>79608
Optional
333 1879643
>>79608
Так нельзя, можно лишь сделать Optional() - возвращает value или None. Шортханд для Union[T, None]
334 1879945
А у вас есть способ выполнить функцию лишь когда его вызывают второй и более раз чтоб по-красивому?
335 1879976
Не знаю прилично ли такое просить но не мог бы кто-то накатать такую функцию? Не могу осилить, курил за гаражами вместо геометрии с математикой.

Есть точка в центре экрана, есть вторая рандомная в любом месте экрана, нужно построить вектор и на определенном расстоянии вычислить третью точку. То есть на вход подается зеленая и синяя точки + расстояние, на выходе получается красная.
336 1879977
>>79976

Пикча отвалилась
hospade.jpg53 Кб, 1101x717
337 1879978
338 1880039
>>79976
Квадрат гипотенузы гугли
16079088046420.jpg66 Кб, 1101x717
340 1880051
>>79976

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


Если у нас не задано направление, то эта красная может находится на любой совершенно позиции на твоём заданном расстоянии, то есть, на окружности с радиусом, равным твоему расстоянию. Разберись для начала с задачей.
На рисунке у тебя они на одной. Прямой. Это тоже внезапное условие или нет?
341 1880059
>>79945
По-красивому не умею, держи говнокод https://ideone.com/MoADWq
342 1880063
>>80051
И с такими тупыми д₽ачерами я сижу на одной доске

дебс, перечитай условие
343 1880071
>>79945
>>80059
Вот так вроде получше будет https://pastebin.com/c9VL0ZWH
344 1880094
здаров, двачеры
отвлеку вас от питонячих проблем и задам вопрос (но сначала подводка)
Короче слушал я радио-т недавно, и Бобук, один из ведущих (и человек, к которому в целом у меня доверительное отношение в плане профф области) сказал, что, если ты не делаешь свои пет проекты в свободное время после работы, то ты не считаешься нормальным программистом и программистом вообще
отсюда вопрос: какие у вас пет проекты? и когда вы находите на них время? при условии, что рабочий день (ну лично у меня) никак не нормирован и может занимать от 10 до 16 часов работы в день
345 1880102
>>80094
Pet-project'ы для белых людей, у которых рабочий день 4 часа, им платят в 5 раз больше, чем должны и 6 часов в день они на тваттере проводят.
Ты - негр. Куда ты к белым людям лезешь?
346 1880113
>>80063
Так условие писал деградант какой-то

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


Вектор от чего к чему? Почему это именно вектор, а не прямая? Это важно для задачи? Вычислить точку? Может, координаты вычислить, малолетний дэбил? И на определённом расстоянии от чего?
Короче, либо пиши нормальное условие, либо пиздуй в начальную школу учиться выражать свои мысли.
347 1880131
>>80102
а чего, такие белые люди есть? я к ним хочу
348 1880163
Как называются "магические методы" нормальным языком? А это эти "магические методы" звучит не уважаемо, полюбас есть какое-то около книжное название
349 1880172
>>80163
В англоязычных источниках называют dunder методы, от __. Вряд ли есть нормальный переводной вариант.
350 1880173
>>80131
Все хотят
351 1880174
>>80163
ВОЛШЕБНАЯ ФУНКЦИЯ!
353 1880177
>>80113
Пчел, если сложно понять, то знамени для себя слово Виктор словом направление. Хорош Донбасс бомбить
354 1880193
>>80163

> Как называются "магические методы" нормальным языком?


Астральные способы.
355 1880232
>>73614
Внешний вид в любом случае будет говно говна. Частично может спасти бутстрап но это не точно .
356 1880233
>>75470
Запуш в гит, перестанет быть красным. Ставь Линукс пока не поздно, иначе ебаться с виндой будешь больше чем с кодингом.
357 1880239
>>80233

>Запуш в гит


в гитхаб

>быстрофикс

358 1880361
скажите, если я хочу соблюдать все лицензии на что обращать внимание, я даже не знаю могу ли я постгрес использовать или джанго, в каждый продукт нужно залезать и узнавать свободно ли он распространяется??
359 1880423
Антоши, в треде по математике никто не ответил, хочу здесь поинтересоваться. Задача написать сайт с генерацией примеров по вышмату, нужен алгоритм генерации примеров, что можно найти по этой теме, пока 0 информации, как искать критерии правильности примеров, как составлять и т.д, крч как составители учебников это делают, особенно если примеров в книге 300 штук
360 1880439
>>73283 (OP)
Челы, нужна книга по истории языка пайтона, для пополнения библиографического списка, есть ли такие? Просто хоть че-то вставить, наобум писать книгу не хочу, вдруг проверят.
361 1880469
>>80423
Студенты
362 1880510
>>80439
Дружище, как ты вообще этот тред нашел?
363 1880516
>>80510
Що, по тегу.
364 1880523
>>80516
Ты пока свою пасту писал не д думал, что можно просто загуглить?
365 1880527
>>80523
Так я и гуглил, даже в вике чекнул ссылки.
изображение.png289 Кб, 1268x1022
366 1880580
>>80361
Создатели обычно такое пишут на своих сайтах, и в статье на Википедии такие моменты указываются. Чтобы знать наверняка, вот в опенсорсных продуктах прям лежит такой файл LICENSE, там все указанно, продукт распространяется вместе с этим файлом. Если проект лежит на гитхабе, то можно прямо там и посмотреть этот файл, без скачивания всего проекта, можно просто найти файл LICENSE и жмякнуть по нему, а можно на специальною кнопку нажать.Или вот если что-нибудь устанавливаешь, там бывает вылазит окошко, где надо согласится с условиями использования, чтобы продолжить, там и указываются эти условия.
Вот, например, файл LICENSE джанги:
https://github.com/django/django/blob/master/LICENSE
1607969146071.jpg31 Кб, 1548x1024
367 1880583
На ютубе есть нормальные курсы/лекции по python'у? Кого посоветовать можете?
368 1880584
>>80583

> На ютубе есть нормальные курсы/лекции по python'у?


Нет.
/thread
369 1880597
>>80583
питон ваще изичный писать на нем сплошное удовольствие
советую прочитать книгу
A Byte of Python
там всего 100стр
7556b2de3a254ee7a64f29b7a05574fb.jpg853 Кб, 2606x2606
370 1880688
>>80597

>писать на нем сплошное удовольствие

meet-the-hackerman-2-dian-sasmika.jpg62 Кб, 900x792
371 1880695
А поч питон так популярен у девопсеров?
ch.mkv8,7 Мб, webm,
1920x1080, 2:01
372 1880706
373 1880716
>>80695
Легко писать скрипты и автоматизацию, тот же ансибл на питоне, соответственно плагины писать нужно на питоне.
374 1880721
У вас есть списко кат для тренировки основных алгоритмов и для алгоритмов вообще, чтобы выучить какие есть и тд.
375 1880722
>>80423

> крч как составители учебников это делают, особенно если примеров в книге 300 штук


Ну как бы специалисты в конкретном предмете учебники составляют. Люди десятилетиями наукой и образованием занимаются, примеры накапливаются.

А кто ты такой? Для которого всё "вышмат". Тебе по дифференциальной геометрии примеры нужны, по уравнениям в частных производных, по алгебре выссказываний или может ещё по чему-нибудь? Или всё вместе одновременно?
376 1880724
>>80721
Достаточно доказать теорему Сосницкого на собесе.
377 1880730
>>80716
90% доменов на винде. А ансибл это про линукс.
378 1880732
>>80730
Питон тоже про линукс.
379 1880737
>>80724
Я серьезно даже не для собеса а чисто для себя, прост каты на основные алгоритмы чтобы посидеть поразбираться ну и чтобы знать что есть такие алги.
380 1880751
>>80737
Для этого ничего тренировать не нужно, а нужно читать книгу с теорией. Потом уже увидишь применения.
381 1880766
>>80732
.Net тоже под линуксом работает.
382 1880773
>>80751
Долго, жить то когда?
383 1880782
>>80046
>>80059
>>80071
смарите до чего сам додумался:
try:
flag
except NameError:
flag = None
return
меня черти в аду за такое ебать будут?
384 1880783
>>80773
Вкатываешься за полгода? Или за 30 дней?
385 1880863
>>80782
Использовать глобальные переменные для таких целей очень дурной тон.

В питоне функция это объект. Объект имеет переменные = атрибуты, лучше их использовать для этих целей. Python-way всё обернуть в декоратор.

Пример декоратора, который пропускает первый вызов и потом делает последующие:
https://ideone.com/6OWqfM

Не нужно менять код функции, нет проблемы использовать подход для нескольких функций.
386 1880866
>>80863
Альтернативный вариант, не добавлять атрибут, а завести отдельный глобальный словарь (либо хранить его в атрибутах функции-декоратора), где ты считаешь, сколько раз функцию вызвал. Декоратор будет регистрировать функцию в словаре и при каждом вызове увеличивать соответствующий счётчик.

Так в чём-то лучше, поскольку ты не меняешь атрибуты функции, функция уже совсем никак не может узнать, что ты её оборачиваешь, и ты можешь центральным образом мониторить, какие функции ты вызывал, а какие нет.
387 1880871
>>80751
Мне как-то кинул книгу по алгоритмам, я начал читать, и знатно прихуел, и даже не то что читать я листать заебался. Там даже не код, а псевдокод, и даже не как примеры, а вообще все подряд, и еще при том что книга переводная. Ну полистал и бросил. И почему то все советуют ее, мб это троллинг такой как с боку но пику, хз.
388 1880940
Пора бы мне уже свои хэлло ворлд и говнокалькуляторы заворачивать в красивые оболочки. Анонче, посоветуйте туй (на худой конец гуй, но тогда хотя бы максимально универсальный, что бы и для десктопа, а не только для мобилы). Спасибо.
389 1880955
>>80783
Я хочу за пол года вкатиться. Что делать?
390 1880961
>>80955
Катись с горки.
391 1881016
>>80094
В общем согласен, с этим товарищем. Очень странно на собесах наблюдать людей, с 5+ годами опыта, которые рассказывает про то, как классно они решали задачи на работе, при этом, на гитхабе у них лежат лабы из универа, максимум. И всё это ещё более странно выглядит, когда знаешь, что сам пилишь пет проекты и тебе это интересно, коллеги твои пилят их и узнают много нового, изучают технологии.
392 1881018
>>80871
Low-IQ долбоебушка
Алгоритмы не привязаны к конкретному языку, Big O применимо к любом языку программирования.
Ты никогда не вкатишься, забей.
393 1881019
>>81016

>при этом, на гитхабе у них лежат лабы из универа, максимум


А что у крутых пацанов лежит?

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


И нахуя очередной бложик выкладывать в паблик? Щупанье технологий может быть и в рамках тривиальной задачи.
394 1881042
>>81019

>А что у крутых пацанов лежит?


Чтобы далеко не ходить, можно у самого бобука и посмотреть https://github.com/bobuk
395 1881044
https://github.com/Ezhvsalate/zookeeper_dump_scripts

Анон я не понимаю. вот выполнил я
$ pip install пакет-нейм
дальше если пытаюсь выполнить
$ пакет-нейм действие-нейм
я получаю
пакент-нейм: command not found

ЧЯДНТ?
396 1881048
>>81044
PATH?
397 1881051
>>81048
помогло, спасибо
398 1881067
>>81042
https://github.com/bobuk/addmeto.cc
Реально, очередной бложик, и он этим гордится?
399 1881121
>>81019

> А что у крутых пацанов лежит?


Ролл-идей-тред лежит не так далеко, попробуй там.

> И нахуя очередной бложик выкладывать в паблик?


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

> Щупанье технологий может быть и в рамках тривиальной задачи.


Да? Ну вот работаешь ты на галере, юзаете для сбора логов/метрик/визуализациий внутренний продукт <Залупа2000>, приходишь на собес и как тебе помогут знания внутренней хуни, если ты тот же Promtail/Loki/Prometheus/Grafana в глаз никогда не видел и только "читал що такое есть, да", а попробовать то и негде. Тру стори с недавнего собеса. И да, с этими технологиями я познакомился в пет проекте, как и с Sentry, к примеру, потом было приятно о них на собесе сказать и применить в работе.
400 1881153
>>81121

>Ролл-идей-тред лежит не так далеко, попробуй там.


Там в основном алгоритмы, а не щупанье новых технологий, да и спиздить к себе проект перетерев гитового автора дело 5 минут.

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


Ковыряние в легаси говне это "пощупать новые технологии", это ковыряние в легаси говне

>Да? Ну вот работаешь ты на галере, юзаете для сбора логов/метрик/визуализациий внутренний продукт <Залупа2000>, приходишь на собес и как тебе помогут знания внутренней хуни, если ты тот же Promtail/Loki/Prometheus/Grafana в глаз никогда не видел и только "читал що такое есть, да", а попробовать то и негде.


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

Да и вообще к гиту, как к показателю мастерства отношусь плохо, если там только говно для щупанья. Плюс уже выше говорил про пиздинг
https://stackoverflow.com/questions/750172/how-to-change-the-author-and-committer-name-and-e-mail-of-multiple-commits-in-gi

И про ценность при найме
https://habr.com/ru/post/350912/
https://www.benfrederickson.com/github-wont-help-with-hiring/
401 1881161
Кто сечет за конфиг для логгера

[handler_dev]
args=('%(logdir)s/dev_emulator.log', 'w+')
logging.config.fileConfig(p, defaults={'logdir': os.getenv('LOG_PATH')})

Пытается писать в /dev_emulator а не $PATH/dev_emulator.log
402 1881229
>>81153

> спиздить к себе проект


> пиздинг


Вся суть.

> Ковыряние в легаси говне


Можно переписать заново или сделать по-своему у себя в репе, было бы желание.
Писал пару библиотек для АПИ сторонних сервисов, аналоги уже были, но не поддерживались и их подход совсем мне не нравился. Как результат - моя либа попала в доки этих сервисов, как пример работы на питоне.

> пет проекты и делаю


> Только вот смысла их выкладывать в паблик не вижу


> У меня все есть, только я вам это не покажу


Напомнило шуточку про "сосед говорит, что 8 раз за ночь может".

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

Твой проект\инструмент не обязаны быть популярными, не в счет твои звезды и подписчики, но если тебе есть что показать - огромный плюс.
Если нечего показать - ок, твой выбор, кому-то все равно, кому-то нет, каждый собеседующий сделает свои выводы.
Как я писал выше - очень смешно наблюдать за человеком с охуетькаким опытом, который с запалом рассказывает про свои успехи на работе, но при этом не имеет никаких пет-проектов, ни открытых, ни закрытых. Т.к. по опыту могу сказать, что бизнесс развивает проект не тем путем, которым бы развивал его разработчик и, если тебе интересно направление, неизбежно появляются свои идеи\предложения, которые трансформируются в пет-проекты\инстурменты.
403 1881264
>>81229

>Вся суть.


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

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


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

>Напомнило шуточку про "сосед говорит, что 8 раз за ночь может".


While he has written a ton of code at his work in the last year, he hasn't posted anything that can be viewed publicly: he has no public commits, he hasn't created any repositories of his own and he has an insignificant number of followers. Despite all that he's still the best developer I've ever had the pleasure of working with.

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


А статья выше говорит обратное, в подавляющем большинстве случаев его не смотрят.
И пока не предложишь способ определения является ли код действительно кодом кандидата, который он писал когда-то это не имеет смысл.
404 1881383
>>81161
А os.getenv в каком контексте выполняется?
405 1881404
>>81383
переназначение переменных, типо Development среда дохуя
406 1881499
>>73283 (OP)
ньюфаг в питоне, знаю только часть основ по видосикам на тыртубе, пришел сюда за информацией и ахуел: книг в шапке много и хуй знает с чего начать, глаза разбегаются. добрый анон, помоги, напиши название книги которая для этого подойдет больше всего и на русском.
408 1881540
>>81529

>September 29, 2013


Anon pls, там количество изменения со 2-го на 3-ий коммунити нахуй разорвало в клочья, до такой степени тчо некоторые пердуны все еще на 2-ке сидят, ибо НИСОГЛАСНЫ.
Та книга вообще про 3 не знает
409 1881568
>>81540
Ебать ты дебилушка. Совсем умом тронулся?
410 1881573
>>81568
Оригинал от 2013, всего одно издания, согласно офф-page
КТо там дописывал руссКОЮ верСею - хуй знает
Screenshot71.png23 Кб, 1340x345
411 1881576
>>81573

> КТо там дописывал руссКОЮ верСею - хуй знает


Дебилушка всё не унимался.
412 1881687
>>80961
ну помоги мне вкатиться в неё
413 1881763
сап питонобоги!
Я сам тупица, помогите плз, по биологии надо вытащить несколько столбцов из txt файла в строку. И записать их потом в другой файл.
https://dumpz.org/aCAadC743RQg получается вытащить столбец, но не знаю, как его перевести его в одну строку.
414 1881764
>>81529
спасибо тебе, добрый анон
415 1881779
>>80597
Присоединяюсь к благодарности, читаю с удовольствием
416 1881905
>>81763
Там должны быть разделители же. Вот по ним отделяй один столбец от другого
Потом:
arr = []
for i in столбец:
arr.append(i)
string = 'твой разделитель'.join(arr)
417 1881906
>>81905
макака съел табуляцию, забыл
418 1882046
Здорова пацаны.
Есть стринга, состоящая из столбцов чисел
20 154
51 543
85 351
и т.д.

и есть словарь, где каждому первому числу столбца соответствует стринга
id_to_word = {
20: 'raz',
51: 'dva',
84: 'tri'}

Задача в том, чтобы первое число каждого столбца поменять по словарю на какое-то слово, а потом выблевать такие же столбцы, например:
raz 154
dva 543
tri 85
и т.д.

Как это сделать? Не понимаю. При этом надо учитывать, что во втором столбце могут быть числа как в первом столбце, их переводить не надо. Числа в первом столбце не по порядку и не подряд.
420 1882069
Как с помощью регулярных выражений выделить этот фрагмент ссылки?

/2020/12/15/11392/
421 1882090
>>82069
.+(/2020/12/15/11392/).+
422 1882094
>>82065
Охуеть! Как это работает, анончик?
423 1882096
>>82094
Ищем ключи в начале строчек и заменяем на их же значения.
424 1882201
>>82065
охуеть. Что означает fr перед строкой?
le3iimRqBr1qe91wdo1500.jpg18 Кб, 500x327
425 1882232
>>82201
Это f-строка и r-строка одновременно.
426 1882244
>>82232
Жестко, я думал всегда, что r строка контрит f строку
427 1882250
>>82244
Схуя ли? r просто выключает слэш, на котором всякие спецсимволы и последовательности сидят.
428 1882265
Кто-нибудь работал с Pony Orm? Совершенно непонятно, как там сделать юнион. Что-то вроде result_query = query1.union(query2)
1487157599137736202.jpg42 Кб, 783x550
429 1882343
Никак не получается побороть циклы над списками.
Вот анон, в чем разница между
for i in spisok
for i in range(spisok)
for i in range(0, len(spisok))?

Я так понимаю, в первом случае я итерирую по объектам внутри списка. А во втором и третьем случае?

А если мне надо совершить в этом цикле какое-то действие с объектом списка (например добавить его в другой список), то это будет
spisok2.append(i) или
spisok2.append(spisok)?
1608162898542.jpeg337 Кб, 1080x2340
430 1882345
>>82343

> spisok2.append(spisok)?


Макаба съела квадратные скобки, на всякий случай вместе со скрином.
spisok2.append(spisok)
431 1882358
>>73283 (OP)
Ебанные self-ы блять!

Ко-ко-ко, мы хотим чтоб в методах были видны все аргументы, по этому селфы это круто. Но блять, нихуя непонятно как этот селф ПЕРЕДАЁТСЯ блять, сука, любой инстантс класса всегда чтоль методу себя передаёт в первый аргумент??? А если у меня там числа нахуй нужные?? Где посмотреть исходники этого говна!
432 1882390
>>82358
self это просто соглашение, что бы вот так называть первый аргумент. В принципе его можно нарушить и назвать как-нибудь иначе, например this. Хотя настоятельно религия требует self.

Когда ты объявляешь метод класса, создаётся какая-то функция, которая даже не метод, а просто функция. Когда ты вызываешь метод объекта, тогда в эту функцию первым параметром передаётся сам объект, а остальными прочие параметры, с которыми ты этот метод вызвал. Вот и всё, никакой магии.
433 1882393
>>82358
Всё просто же. Смотри https://ideone.com/Oyhu19
Строки 11 и 12 это одно и то же, и вот чтобы не носить этот self постоянно за собой, он передается автоматически.
434 1882396
>>82090
Спасибо анончек.
Но как быть если цифры рандомные?
435 1882399
>>82396
Во, нашел
/(\d+)
436 1882448
>>82343
>>82345
Ты нахуй приносишь примеры, которые в питоне выдадут исключения???
Ты хоть чуть чуть проверяй, иначе не вижу смысла тебе что-то рассказывать
437 1882460
>>82448
Проверять чего, придурок?
7srnBNltOKY.jpg144 Кб, 824x1228
438 1882467
Нужен сейчас мне сделать бота для Telegram'а (магазин для сайта).
Посоветуйте нужные статьи, видео и прочие ништяки пожалуйста.
Заранее благодарю!
439 1882470
>>82467

>бота для Telegram'а


>магазин для сайта


Как это вообще связано?
440 1882471
>>82470
Это как у всего раньше был твитор, так теперь должен быть телеграм, чтобы как у людей.
441 1882472
>>82470
Ну там не всё продавец будет оформлять лично с их слов. Хочет автоматизировать.
442 1882475
>>82467
>>82472
Жду-недождусь когда твою поделку буду экплойтить на баги и заказы
444 1882480
>>82471

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


Пиздос. Все пишут ботов для телеграма, но реально их вообще кто-нибудь использует? Или это зумерские поделки, которые отваливаются еще на стадии идеи?
всё....mp42,9 Мб, mp4,
1280x720, 0:11
445 1882483
>>82480

>Или это зумерские поделки


Доа и раньше никто ботов для irc не делал.
446 1882487
>>82483
Пиздец ты сравнил.
Современный юзер ту ирку и настроить не сможет небось, сложна.
447 1882494
пацаны
у меня есть два модуля: один не поддерживает питон 3.8, но поддерживает 3.7. Другой не поддерживает питон 3.7, но поддерживает 3.8
втф и что делать? на 3.6 пилить проект? это ж старье
448 1882496
>>82494
Переписать модуль?
image.png1,8 Мб, 720x1080
449 1882501
Привет, аноны. Вопрос к работягам: можете описать свой рабочий день? Пришли на работу, и что? Сразу начинаете по-стахановски закрывать таски? Сколько часов у вас получается работать продуктивно?
450 1882504
>>82496
модули не мои, нахуя мне их переписывать?
16067599966060.png26 Кб, 248x257
451 1882511
>>82504
Дабы они работали? Можно просто дублировать для работы.
452 1882512
>>82511
ну как-то радикальненько
неужели нет другого способа?
453 1882547
>>82494

>втф и что делать? на 3.6 пилить проект? это ж старье


А что тебе нужно из 3.8?
454 1882551
>>82501
Встаю, умываюсь, включаю пеку. Открываю трекер, читаю рабочую почту и смотрю сообщения об ошибках, прилетевшие с тестового стенда. Делаю чай/кофе. Могу сходить посрать. Вот сейчас релиз приближается, сижу собираю релизную ветку. Открываю включаю музыку и поехал. В перерывах читаю сосач, хабр, профильные каналы в телеге. Иногда переключаюсь на свои проекты.
Продуктивно 4-6 часов. Иногда, когда приходится больше 8 часов работать, то и продуктивность 8 и более часов.
455 1882558
>>82501
Я на ремоуте сейчас
Встаю в 10, пишу в чатик, что собираюсь делать сегодня, до часу-двух пинаю хуи. Работаю до 4-5 часов и снова пинаю хуи
456 1882562
>>82551
Пидр
457 1882598
>>82551
>>82558

Спасибо за ответ.
458 1882615
>>82501
А сам как?
459 1882672
>>82393
>>82390
Спасибо за ответы, я понимаю что такое self и то, что это условное название я тоже понимаю. Суть моих вопросов к невидимости передачи аргумента, и опасение за то, что в будущем такого будет ещё больше.
460 1882687
>>73283 (OP)
Как мне сделать вызов print()? У меня нет принтера.
461 1882688
>>82460
for i in range(spisok)
462 1882689
>>82615

>


>


С 9(10) до 12 бездельничаю, обедаю и начинаю работать(удалённо), 4 часа работаю, час гуляю, потом ещё 3-4 часа работаю. В остальное время читаю книги или сайты всякие.
463 1882691
>>82343

>for i in range(spisok)


И тут ты открываешь документацию и смотришь, какой тип первого параметра принимает метод range().
464 1882718
>>82688
И что ты там проверять собрался?
465 1882749
>>82718
Иди читай генераторынахуй
466 1882778
Зяблы, я JSер и знаю синтаксис питона. Нужен чат-бот или нейросетка или что-то еще для моей простой задачи, которую я опишу и вы меня наверное уже направите. У меня SPA, которое записывает по voice activation аудио файлы (формата mka), которые отправляются по вебсокету на мой бэк express, где конвертируются в ogg и отправляются в Яндекс на распознование. Возвращается строка с текстом. Теперь, мне надо понять че надо-то. Запросов там не много, максимум 10 штук (например : хочу банковскую карту => и мне должен прийти ответ, что ему нужна карта и все я редирект на нужную страницу). Собственно, как я понимаю, мне нужно обучать или переобучать модель под свои хотелки. DS я не планирую становиться, но задачу надо попытаться выполнить, да и тем более интересно. Соотвественно мне нужен гайд/видео или еще что-то, как сделать такую простую нейросеть и самое главное, как ее обучать или переобучать на русском языке. Может быть мне достаточно будет какого-то чатбота или dialoglow? Трудностей я не боюсь
1.JPG93 Кб, 514x814
467 1882783
Вот такая программа из учебника. Глава про ООП, классы.
Объясните пожалуйста, максимально доступным языком: при создании каждого экземпляра класса, параметру object передаётся значение, например "Бобик".
При запуске этой программы, кроме прочего, через метод talk на экран выводиться текст и значение параметра name, который, по непонятым мне причинам имеет значение параметра object.Как так? Ему же не передавали это знание! Как он его получил?
468 1882786
>>82783
удваиваю вопрос.
Гипотеза- он передаёт объект и пространство имён объекта присоединяется к методу? я вообще лох, лучше обоссыте.
469 1882788
или при обращении к объекту класса сразу подразумевается пространство имён этого объекта.
470 1882792
>>82783
Есть класс Critter. У него есть конструктор класса. Конструктор описывается в методе __init__(), который может принимать значения аргументов. Конструктор - это метод, который всегда вызывается при создании экземпляра класса: crit1 = Critter("Бобик"). Конструктора может и не быть.
В твоем случае конструктор требует указать обязательный аргумент name, таким образом при создании экземпляра класса ты пишешь Critter("Бобик"), после чего конструктор примет "Бобик" за name и будет с ним работать внутри себя.
Видишь магическое слово self? Все методы внутри одного класса должны содержать первым аргументом слово self, чтобы общаться друг с другом и передавать друг другу переменные, перед которыми тоже должны стоять self.
В твоем конструкторе создается переменная self.name, на языке ООП это называется полем класса. При создании экземпляра класса (т.е. вызове метода конструктора) ей присваивается значение "Бобик". Поскольку метод talk() находится в том же классе Critter, отныне он способен работать с полем класса self.name, читать его значение или менять.
Поэтому, когда ты создашь экземпляр crit1, то можешь использовать для него метод класса talk(), который выведет "Меня зовут Бобик".
471 1882796
472 1882803
>>82343
Пчел, че ты как этот?
У тебя есть spisok = [0, 1, 2]
Это готовый список, ты можешь пройтись по нему итератором, поскольку списки (а еще кортежи, словари, множества и даже единичные строки) итерируются.
Поэтому for i in spisok пройдется по каждому значению списка: 0, 1, 2 - и что-то с ним сделает.
Функция range() принимает на вход число и возвращает "типа" список целых чисел от нуля до указанного числа.
С точки зрения итератора, range(2) - это то же самое, что [0, 1, 2].
Поэтому ты либо используешь for i in range(2), либо for i in spisok.
Не надо spisok пихать в range(), последний будет ругаться.
473 1882807
>>82792
Спасибо за развёрнутый ответ!
Перечитал несколько раз. Понял назначение self и дополнил представление о роли конструктора.
Единственное что осталось не понятным по этой теме:
роль параметра object, и почему он подсвечен как функция.
474 1882814
>>82783
>>82792

>python


>OOP


извращенцы
475 1882822
>>82807
В скобках класса можно указать класс, от которого он будет наследоваться. Object - родительский класс Critter; последний наследуется от первого. Вот только в Пистоне все является объектом, поэтому указывать в скобках object не имеет никакого смысла, ньюфагов это только запутает, поскольку, если не указано иное, object по дефолту будет родителем любого класса. Удали его вместе со скобками и будет тебе счастье.
476 1882823
>>82822
Спасибо!
Ты понизил мой градус страданий над питоном!
477 1882824
>>82814
Python обильно используется для автоматизации тестирования. Без ООП в подобном проекте делать нехуй.
478 1882826
>>82823
Тебе нужно подрочить PyQt5, вся его суть строится на ООП. К концу написания своего первого рабочего десктопного приложения ты освоишь ООП.
479 1882829
>>82814
в пистоне самый классный ООП, чисто сокрытие данных, ведь наследия считай нет.
480 1882835
>>82829
Обозначение структуры для данных - не ООП, как бы.
481 1882836
>>82803
Ничего не понимаю. Я делал задачки на codingbat.com, и так среди них есть вот такая:
https://codingbat.com/prob/p119308

Правильный код под нее: https://ideone.com/Mfnkio
Почему здесь итерируется по рейнджу списка минус один? Что это вообще значит?
482 1882838
>>82829

>в пистоне самый классный ООП


Такое мог сказать только отбитый питонист. ООП в питоне - кусок говна.

>чисто сокрытие данных


Сокрытие, обеспечивающееся не нормальным модификатором доступа типа private, а ублюдочными андерскорами, реализация 10/10.

>наследия считай нет


Ебанько?
483 1882839
>>82835
Контракты можно через абстракные классы описывать
484 1882840
>>82836
Потому что len возвращает int?
485 1882844
>>82836
Тебе бы надо почитать базовую инфу по массивам данных и как они индексируются. Это общая информация comp sci, не конкретно питона.
486 1882845
>>82840
https://www.geeksforgeeks.org/iterate-over-a-list-in-python/ а почему вот тут вторым примером приводится итерация по списку через range?
>>82844
Есть какой-нибудь хороший материал по этой теме? Русский/английский не важно.
487 1882847
>>82845

> Есть какой-нибудь хороший материал по этой теме? Русский/английский не важно.


Информатика?
Можно поискать на ЮТ иностранный курс Computer Science basics
488 1882848
>>82845

>почему вот тут вторым примером приводится итерация по списку через range?


Да не по списку, блять, а по ДЛИНЕ списка. Ты буквы читать умеешь?
length = len(list)
for i in range(length):
489 1882877
>>82343
for i in range(spisok) - хуйня какая-то
for i in range(0, len(spisok)) - 0 можно не писать, а так это стандартный способ итерации по индексам коллекции, хотя проще с enumerate.

Что вообще такое range?
range(начало, конец, шаг) возвращает итератор на массиве целых чисел от начала(включительно) до конца(не включаем) с заданным шагом(если не указывать, то будет 1)

Что это значит:
Получим все значения из итератора через list

list(range(5)) -> [0, 1, 2, 3, 4]
list(range(5, 11)) -> [5, 6, 7, 8, 9, 10]
list(range(5, 11, 3)) -> [5, 8]

Можно задать отрицательный шаг, но тогда начало и конец тоже нужно менять местами.

list(range(11, 5, -1)) -> [11, 10, 9, 8, 7, 6]
490 1882899
Да вы ему не объянсите ничего, там нет понимания вообще.
Надо самостоятельно дрочить, пока на щелкнет это самое понимание.
Это же вообще начало начал.
491 1882960
>>82899
Двачую. Сегодня циклы с ренжем, завтра он придет: "А как работает if else?"
492 1882976
>>82358

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


Это так. Это и в C# и Java так же, просто происходит чуть менее явно
493 1882988
Есть куча классов декорированных Dataclass'ом в которые я данные заворачиваю для type hint приемлимых. Как народ структурирует это все? Сейчас я просто вынес это в model.py и импортирую оттуда понадобности.
1.JPG42 Кб, 526x493
494 1883003
Разбираю атрибут класса.

В книге написано: "Значение присваивается только ОДИН РАЗ, при ПЕРВОМ ОБЪЯВЛЕНИИ класса."

В этой программе, метод-конструктор __init__ при создании каждого объекта класса, повышает значение атрибута total на 1.
Мне кажется, что этот факт перечёркивает вышеупомянутое утверждение из книги.

В книге ошибка? Подскажите как это понимать.
495 1883012
>>83003
А, я знаю! Атрибут КЛАССА, именно класса, а если атрибутом объекта класса- это каждый раз при инициализации нового объекта.
496 1883015
>>83003
Ну так ты обьявил класс и стало 0, дальше делай что хочешь с ним.
497 1883019
>>83012
>>83015
Спасибо. Доступно и понятно.
498 1883024
>>82672
Передача self вовсе не невидимая.

Ты обращаешься к методу как
my_obj.foo()
или
self.foo(), если изнутри объекта

Вот фактически эта первая часть и переезжает в виде первого параметра в foo

В принципе ты можешь даже явный вызов сделать. Если у тебя класс MyClass и метод foo
class MyClass:
____def foo(self):
________print('foo')

my_obj = MyClass()
ты можешь вместо my_obj.foo()
делать
MyClass.foo(my_obj)

Логика такая, что питон, когда видит запуск метода с точкой, лезет в объект, берёт его класс, вызывает функцию из класса, подставив первым тот самый объект.

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

Тот же JS/php/c++ более запутанные, потому что там this используется, который как бы неизвестно откуда берётся.
499 1883086
Посоны, можно ли в Django в контроллере проверить как-нибудь то, что пользователь вошел или нет? Типа пользователь заходит на сайт, передается запрос с помощью маршрута в контроллер, а в контроллере можно проверить тип если пользователь уже зареган, то получить одну страницу и одни данные, ну а если не вошел, то другую страницу и другие данные? Я чёт пробовал проверять через if request.user, но что-то не работает особо. Мне кажется request подходит, если из формы данные получаешь.
500 1883097
существуют ли на Ютубе годные каналы с гайдами по питону?
Аноним 501 1883111
Котаны, перекат скоро. А зачем вообще нужно ООП? Какое практическое применение есть кроме моделирования в играх типа стратегий или пары похожих объектов? Нужны ли классы для того же Джанго? Зачем ООП может встретиться в работе сайта или бд?
502 1883150
>>83111
Чтобы устроиться на работу.
503 1883153
>>83111
Какую-то ты банальщину спрашиваешь.

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

Как иначе работать с кучей объектов одновременно?

Все эти принципы появились из чисто практических соображений.

Просто объект вообще выделяется очень много где, без этого никак. А уж в крудах, которые чаще всего делают на Джанго, ну совсем никак.

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

Чтобы это прочувствовать, нужно просто попробовать что-то большое написать без ООП и с ООП. В конце концов ты сам это ООП и переизобретёшь, если думать над кодом будешь.
image.png25 Кб, 648x219
504 1883167
Ну што, как проходит вкат?
505 1883183
>>83167
Вкатил себе за щеку.
Аноним 506 1883263
>>83153
Ну я чуть-чуть не представляю практики. Например есть бд для регистрирующихся людей на сайте. У пользователя есть выбор параметра пол и можно выбрать м или ж или боевой вертолёт и для боевого вертолёта будет создан необычный подкласс, которому выдача фильтрует только таких же людей из базы? Илл 50 прочих полов тоже своя сущность типа вертолёт заднеприводный, гирокоптер, субмарина с ракетами вода космос и тогда, возможно, мне понадобятся классы для взаимодействия между объектами по разному, чтобы не писать много if в регулярных выражениях? Я просто загуглил в чём смысл ООП или практическое применение, и вторая статья с критикой всех столпов- полиморфизма, потому что переносится всё равно очень много аргументов, наследуемость - в новый проект всё равно без редактора не потащишь, инеапсуляция- якобы прячет код от разработчика. Мне бы кто объяснил как дураку. Та же инеапсуляция- например обрезает пространство имён, нпследумость- для одного проекта будет работать и сэкономит время на код. Полиморфизм- ну это я наверное смешиваю его с наследуемостью, якобы для разных объектов можно использовать тот же код (вызов), если прописывать специфические функции, так? Скорее всего я просто сам ещё не лез во что-то крупнее скриптов, задачек для школьников или чат-бота просто, нужно глянуть примеры... Пойду.
507 1883279
>>83167
Для мухосрани какой нибудь норм.
508 1883280
>>83153
Тогда и словарь это ООП.
509 1883376
>>82778
бамп
510 1883384
def generate_val(): return randint(0, 10)

Как лучше оформлять необязательный аргумент в классе ниже и почему?

class A:
--def __init__(self, a=None):
----self.a = a or self.generate_val()


или

class A:
--def __init__(self, a=self.generate_val()):
----self.a = a
511 1883387
>>83384
Бля, там у методов self стоит по ошибки, игнорируйте.
512 1883411
>>83167
В 51 он только в свой манямирок вкатится.
513 1883433
>>83384
Во втором случае generate_val() будет вызван только один раз, во время старта скрипта, а не создания экземпляра класса. В первом случае будет вызываться каждый раз, когда создаётся объект этого класса.

Скорее всего ожидается поведение такое, какое должно быть в случае (1).

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

Однако в случае как здесь в каких-то извращённых случаях может требоваться поведение как в (2). Хотя в этом случае оформлять всё равно лучше иначе, например инициилизировать какую-нибудь переменную уровня класса таким образом, а внутри конструктора уже копировать её значение.
515 1884376
test
Тред утонул или удален.
Это копия, сохраненная 26 апреля 2021 года.

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

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