Двач.hk не отвечает.
Вы видите копию треда, сохраненную 1 августа 2021 года.

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

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

Предыдущий: >>2087217 (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
изображение.png49 Кб, 1200x623
2 2100425
Сап анасы. Подскажите нахуя нужен в spark нужны таблицы?
Датафреймы один в один повторяют их фунционал, но спарк же не хранилище, поматросил и бросил. Ладно там метадату хранить кокую-нибудь, но там что-то данные туда постоянна колхозят.
3 2100430
>>2100421 →

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


Асинхронность лучше масштабируется, чем треды.

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

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

В питоне довольно дорогое переключение задач. Но при этом не проблема в одном процессе держать тысячи задач, сотню тысяч фьюч.
4 2100581
На всякий случай продублирую из соседнего треда:

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

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

спасибо всем отписавшимся
5 2100634
нахуя два трела? в чём лол?
6 2100639
>>00634
Вкатыш зайдет не в тот тред и не вкатится.
7 2100640
>>00634
Многопоточность!
8 2100644
>>00581
читай в апи телеги, там должно быть написано. возможно у обычного бота не будет такой возможности, тогда гугли telethon
9 2100645
>>00634
Ностальгия по временам с двумя версиями питона
837544701.jpg268 Кб, 466x699
10 2100670
Анон, подскажи по производительности.
Есть функция, которая считает всякую всячину, добавляет это в датафрейм, потом записывает в файл. Только из-за объёма данных и скрипт, и ноутбук сдыхают на полпути.
Если обрабатываемые данные делить на куски и передавать в функцию, то:
1) Можно ли в файл будет дозаписывать данные, чтобы на выходе всё таки получился один файл, а не N файлов на каждый кусок?
2) Стоит ли постоянно вызывать f.open/f.close для каждого куска? Или держать открытым файл, пока все куски данных не обработаются?
3) Что можно её придумать для оптимизации производительности?
11 2100678
>>00670
Мало информации.
Если там текстовые данные, то можно хоть терабайты молотить построчно.
12 2100684
>>00678
Текстовые (до 5 слов в ячейке) и числовые (одно число типа float32).
Там получается что-то около 4 миллионов строк и до 800 столбцов.
13 2100687
>>00639
>>00640
>>00645
а в чем различия тредов?
14 2100722
>>00670

>1) Можно ли в файл будет дозаписывать данные, чтобы на выходе всё таки получился один файл, а не N файлов на каждый кусок?


open(mode='a')
https://docs.python.org/3/library/functions.html#open

>2) Стоит ли постоянно вызывать f.open/f.close для каждого куска? Или держать открытым файл, пока все куски данных не обработаются?


Да. Или хотя бы fflush, но я не знаю, естьли он в питоне
https://docs.python.org/3/tutorial/inputoutput.html#tut-files
15 2100734
>>00722
Спасибо.

>Да


Размытый ответ.
Открывать и закрывать на каждой итерации? Или один раз в самом начале работы и один раз в конце?
16 2100740
>>00734

>Открывать и закрывать на каждой итерации?


На каждом батче, который опосаешься потерять. Если не жалко <10000, закрывай каждые 10000, если жалко каждую итерацию, закрывай каждуюитерацию.
17 2100769
>>00740
Спасибо.
18 2100788
Чем MVVM отличается от MVC?
19 2100797
>>00788
Использованием модели представления вместо контроллера
20 2100806
>>00670
А последующие данные завязаны на результат обработки предыдущих?

Почему тебя не устраивает идея, чтобы было много файлов? Не 4 миллиона, но несколько сотен, например? Это в чём-то более правильно, и так ты можешь, например, удобно распараллелить вычисления.

Дозаписывать в файл можно, уже сказали об этом, режим "a" (дозапись или создание файла) или режим "r+" (чтение и запись, но нужно, чтобы файл уже существовал).
21 2100810
>>00806

>А последующие данные завязаны на результат обработки предыдущих?


Нет, не завязаны.

>Почему тебя не устраивает идея, чтобы было много файлов?


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

Меня, поэтому и интересует, чтение-запись насколько сильно нагружает память?
22 2100821
>>00810
По-моему, ты что-то не то делаешь.
Прочитал строчку, прокрутил свое вычисление, записал строчку. Это не нагружает ничего.
Покажи код, штоле.
23 2100824
>>00821

>Прочитал строчку, прокрутил свое вычисление, записал строчку. Это не нагружает ничего.


Ты не прав, нагружает и сильно.
Каждая файловая операция это системный вызов, а это дорого. Помимо того, что это насилие над файловой системой и диском, но здесь ОС может несколько сглаживать, но не всегда.

Но в любом случае, даже если ОС хорошо кеширует, системных вызовов это не отменяет.

Вот если речь о том, что 1000 раз в секунду надо записывать, то однозначно стоит оптимизировать. Если 10 раз в секунду, то в целом норм, обычная история.
24 2100826
>>00797

>модели представления


А?
25 2100828
>>00824
Есть буферизация, плюс у ос там какие-то свои фичи.
Но он пишет, что прям пиздецки тормозит, это явно не в диске дело.
26 2100830
>>00828
Я ради интереса посмотрел, если файл открывать с помощью with open, на линуксе, то действительно буферизует, то есть не на каждую операцию write системный вызов делается, а на каждые 8 кб. То есть питон сначала куда-то к себе в буфер кладёт, а как 8 кб накопится, так делает системный вызов и сбрасывает данные на диск.

Под линуксом системные вызовы через strace отлавливаются хорошо.

Соответственно работает довольно быстро. Это правда на мелких данных. Может стоит тест сделать на большие бинарные блоки.
27 2100832
>>00828

>то прям пиздецки тормозит, это явно не в диске дело.


Я ж писал, кернель и просто питон после пары-тройки часов тупо сдыхает.
Команда top в консоли показывает, что за эти часы тупо расходование памяти достигает 100%, и вероятно, идёт дальше, поэтому всё заканчивается.
28 2100835
>>00826
Это что-то типа промежуточной модели, которая пилится под каждую вьюху. Можно сделать один общий механизм связывания вьюх с их моделью представления, поэтому не надо дрочиться с контроллером, достаточно описать как получать из данных модели данные модели представления, и как обновление данных модели представления преобразовать в обновление данных модели.
29 2100837
>>00832
Ну ты видимо свои данные где-то в памяти накапливаешь, поэтому память и заканчивается.

Надо, конечно, сбрасывать на диск периодически.

Вот насколько часто надо смотреть. Попробуй может тупо каждую строчку записывать. Но не открывать файл и не делать flush, а просто записывать.

Избыточность системных вызовов можно отследить с помощью strace

>strace python scrypt.py 2> log.txt


и там смотри системный вызов write. В конце строчки размер данных указывается, если порядка 4-8 кб, значит буферизация питона работает.

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

Вообще, Если у тебя программа стабильная, то можно смело один раз открыть файл и потом туда писать.

У меня так сутками скрипты на питоне и ноде работают, и пишут в один файл всё.

Если расчёты падучие, открывай файл снаружи функции, оборачивай функцию в исключение, и после исключения закрывай файл.
30 2100843
>>00837
А записываемый/открытый файл тоже в память целиком засовывается?
31 2100847
>>00843
Нет. Операционная система сама решает на эвристиках, что держать в кэше, но в общем случае можешь работать, будтовесь файл целиком лежит уже на диске и памяти не занимает.
32 2100850
>>00843
Нет.
Если ты сделаешь
with open("file.txt', 'r') as file:
____data = file.read()

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

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

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

Запись-чтение файла это системный вызов ОС. Ты говоришь ОС, запиши вот этот буфер в файл. ОС записывает и всё, все забивают на этот буфер, можешь использовать его заново, он больше не нужен.

Если у тебя кончается память, то где-то утечка, ты видимо что-то не освобождаешь.
33 2100852
>>00850

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


А казалось бы! в питон пришёл, а не в си.
34 2100853
>>00847
>>00850
Спасибо.

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


Очевидные списки и датафрейм, которые читаются целиком.
А надо частями считать и записывать.
35 2100856
>>00853

>которые считаются целиком


фикс
36 2100897
Такое дело. Захотелось с пайгеймом поиграться, но почему-то автодополнение и линтер ВСКода от него с ума сходит. Вот на пайчарме все нормально, после импорта все подмодули видит и подтягивает, а вскод ноль. Более того плюется странными предупреждениями.
И самое странное, что раньше он работал нормально.
37 2100979
Есть конструкция
for i in range(0, len(list1), step_size):

как мне получить индекс i? Enumerate же здесь не используется?
Тупо новую переменнёю-счётчик добавить?
38 2100988
>>00979
кто тебе запретит завернуть в enumerate?
39 2101104
Что посоветуете почитать человеку, который уже имеет некоторые навыки пайтон, но хочет систематизировать знания? Fluent Python подойдет?
40 2101174
>>00979
i это уже сам по себе индекс. если ты имеешь в виду номер в последовательности, то можно просто int(i/step_size).
16056125054221.jpg28 Кб, 343x256
41 2101339
Анончики помогите, что-то срастить не могу. Вот залил я таблицу в дата фрейм панды, и мне надо одно поле обработать и перезаписать, что я должен делать? Это придётся новый фрейм создавать или можно поменять в текущем?
Честно говоря нихуя не понятно, постоянно в голову лезет логика БД, в ассоциации с фреймами.
42 2101354
>>01339
Изменить текущий
df['твое_поле'] = df['твое_поле'].apply('твое_условие')

Создать новый с изменениями
new_df = df.apply(lambda x: 'твое_условие'(x) if x.name == 'твое_поле' else x)

Всё, сука, в документации есть
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

Нахуя вы на двач лезите, если в гугл не можете
изображение.png309 Кб, 426x334
43 2101362
>>01354
Спасибо анончик
я просто не очень умный
44 2101378
Прошел испыталовку, взяли на позицию разраба. Первый проект как-то коряво, но сдал за 2 месяца, второй пилю уже почти месяц, и уже выгорел, как-то надо сдать через 2 недели. Зп хорошая, нигде такую с текущим опытом платить не будут. Что делать, как снова начать ебашить, как первые 2 месяца?
45 2101383
>>01378
Иди в какой-нибудь из прикрепленных тредов а лучше на хуй
Какое отношение этот вопрос к питону имеет?
46 2101386
>>01383
Потому что взяли питухон-разрабом.
47 2101388
>>01386
Как твоя проблема соотносится с ЯП?
48 2101389
>>01386
Репорт.
49 2101537
Помогите разобраться, а то ощущение каши в голове.
Вот есть классы и их объекты. Объекты не могут быть независимы от классов, они всегда должны принадлежать какому-либо классу?
Когда я пишу print('Hello') - это объект класса print? Объекты класса всегда обозначаются вызовом имени класса и указанием ()?
У классов есть методы. Методы это те же стандартные функции класса def, но с обязательным указанием параметра (self)?
class NewClass как оператор тоже является классом? Или это просто keyword и команда class не является классом?
Чем тип отличается от класса?
Блядь, как этой вообще нормально переварить?
50 2101561
>>01537
Главное. Есть поле и метод, он может быть как у класса, так и у его инстанта, объекта. Можно создавать поля-методы как у класса так и у его объекта. И вызывать также. Это как переменные, области видимости, вот это все.
Например, класс Писька, можно сразу переходить к созданию полей и методов к его инстантам, объектам, через селф. А можно и у класса Писька. Погугли еще наследование, полиморфизм и инкапсуляцию. В целом ничего сложного.
51 2101567
>>01537
Судя по посту, ты слишком мало знаешь, чтобы внятно обьяснить.
Кури дальше и потом приходи, если будет дальше непонятно.
52 2101603
>>00419 (OP)
Ссылка в шапке не рабочая.
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6
53 2101763
Помогите тупенькому пожалуйста. Смысл задачи такой. Есть 4 параметра безопасного пароля. Если хотя бы 2 из них соответствуют требованиям, то пароль безопасный. Как это собственно выразить? Можно конечно как дебил вручную подбирать все сочетания, но ведь наверняка есть нормальные решения?
54 2101767
>>01763
problems = []
if not re.match('[A-Z]'):
problems.append('bolshie bukvi')
и т.д.
55 2101878
>>01767
re.match ищет в начале строки, поэтому тут нужен re.search
На духоту не обижайся.
56 2101887
>>01878
Да я всё время путаю, потому что идиотский дизайн. Нужен просто match, а для поиска в начале есть ^ или \A.
57 2101966
>>01767
>>01878
Спасибо, анончики
58 2102157
И снова здравствуйте, аноны - знатоки математики. Продолжаю решать школьные ЕГЭ и наткнулся на какую-то хуету, повергающую в уныние. Задача и мое решение тут https://imgur.com/a/3qiV4OE
Неужели я неправильно решаю? Гляньте кто может, плис.
59 2102225
>>01537
класс это просто конструкция
это не какая то обязательная хуйня.
принт это не класс, это функция
деф это метод, инструкция

тип это блядь тип.
60 2102251
>>02157
для начала прочитай все книги лутца чтобы решать такие задачи
изображение.png73 Кб, 1681x606
61 2102322
Анончики пмогоите.
Хочу переводить время из строки в разные часовые пояса(пикрелйтед). Но почему-то при переводе в utc_local, часовой пояс меняется, но время остаётся без изменения( например до перевеода было 17:00, и после перевода осталось 17:00). ЧТЯДН?
62 2102403
>>02322
А я всё понял, криво переназначил простите
63 2102410
>>01378
Долбоебам говорят 20 лет уже, что если не нравиться кодить - не лезьте блядь, нет нахуй, потерпим, ну вот енджой ёр ворк теперь, еблан)
2021-07-2113-45-33.png78 Кб, 1476x740
64 2102421
Нихуя питончик блядь НАЖОРИСТЫЙ
65 2102426
>>02421

>Шindoшs

66 2102434
>>02410
Бля, чтобы нравилось кодить нужно шарить по моему пиздец как
когда будешь уже ебанить на полуавтомате то не будет так тяжко.
а когда приходится постоянно разбираться и мудрить то тяжко.
Одно дело когда делаешь для себя, там можно отдохнуть, подумать, почиллить. а когда сроками ебут то это ебаная потогонка, особенно если возникают мелкие непонятные ошибки , на решение какой нибудь мелочевки можно потратить пару часов гугления, это не круто.
в любом случае мне кажется лучше ебаться с кодом за пекой чем в грязном гараже в масле купаться. Мне нравятся тачки и механика, я в этом понимаю , но блядь, как увижу очередной автосервис с грязью и маслом или же в своем гараже че то делаю с тачкой - да, норм, но блядь это тяжело физически и ОЧЕНЬ ГРЯЗНО. Чет нет желания на постоянку ебаться с этим.
Есть конечно сервисы где все чисто и пиздато, но они не в этой стране. А если в этой то это МСК мажор сервисы для мажоров где все устроены по блату.
67 2102435
>>02426
бля, ну не прыщах же сидеть, чел
я что, похож на сойбоя?
68 2102439
>>02434

>когда будешь уже ебанить на полуавтомате то не будет так тяжко.


Будет, всегда будут новые технологии, фреймворки, прочии говна. Если не в каком-нибудь сранном-легаси проекте работаешь, постоянно надо будет разбираться.
image.png47 Кб, 570x616
69 2102445
ЧО ему не нравится
70 2102446
>>02439
но уже легче разбираться когда много всяких ошибок и ситуаций сожрал и высрал
71 2102447
>>02445
Там же написано, слепой штоле?
72 2102450
>>02447
Ну не знаю чего он так пишет? Вон же переменная каунт сверху есть, разве она не глобальная?
74 2102452
>>02450
Ты сам заводишь локальную и глобальная уже не видна.
75 2102453
>>02410
Мне нравится кодить. Не нравится конкретно задача/проект.
76 2102466
>>02453
что за проект?
пробовал сесть на энергосы?
77 2102471
>>02452
Всмысле, а как мне считать тогда?
78 2102474
>>02445
Уууууу, лох какой.
Ты хочешь, чтобы у тебя переменная была глобальной и считалась суммарно для всех запусков функции?
Тогда в функции напиши global count
79 2102477
>>02466
Брали как питон-разраба. Бэк пилю на джанге. С фронтом обещали помочь, в итоге приходится разбираться с жс. Пилю веб-формы в табличном виде с возможностью вносить изменения. Данные тянутся из олап-куба, приходится разбираться в mdx-запросах, приходится агрегации многоуровневые пилить по каждому измерению, и всякие срезы делать. Сама таблица ещё должна быть динамическая, т.е. с сортировкой, фильтрами с возможностью задавать несколько значений, и много ещё чего, лень расписывать.
До этого была похожая задача, но сделал её коряво, ну т.е. часть логики костыльно зашил в js-скрипт на странице, хотя по хорошему это надо делать бэке и через ajax тянуть.
image.png126 Кб, 1244x453
80 2102488
>>02474
>>02452
Все получилось, спасибо.

Тащемта, дети, не распечатывайте 200 пдфок через питон
81 2102551
>>02477
почему сделал коряво? сроки? как вкатился, как тебя взяли если для тебя это не совсем профиль?
платят круто? не так как копать бетон?
82 2102579
>>02551
До этого занимался аналитикой, etl и автоматизацией на питоне в полушаражке. Вся работа заключалась в достать данные (спарсить, sql/nosql), обрабовать в питоне, куда-то залить/отправить. Всё это пилит скриптами, скрипты хранил в папочках, запускались через планировщик. Кароч всё на отъебись.
На новом месте взяли на испыталовку, соотвественно проект сдал, его отревьювели (наотъебись), в итоге сказали, что дальше работаю. Пришлось разбираться с битбакетом, докером, нжинкс, линтером и т.п.
Платят на уровне дс мидлла, хотя коммерческого опыта разработки у меня именно как питон-разраба не было. Нет куратора, т.е. старшего питон-разраба, я один в команде питонист, но есть старшие разрабы, у которых есть опыт в бэке/фронте, которые типа мне готовы помочь. Но вся помощь заключалась, что вот есть на гитхабе репозиторий, скачай и разбирайся, делай по аналогии и по пеппа8. Хотя проекты там вообще другого плана, и фронт там на реакте, а я не успеваю за месяц и бэк на питоне написать и с реактом разобраться.
83 2102600
>>02579
зачем из ЕТЛ выкатился? Денежное же болото.
84 2102605
>>02600
Потому что не было норм проектов, либо за всякую хуйню, типа пиления процедурок и пакетов для бэк-офиса или продажников мне не интересно, тем более за 90к.
А тут предложили и питонить + зп охуенную. Ну я и повелся, тем более думал, что меня пидорнут по окончанию испыталова, но хотя бы на пару месяцев накоплю подушку и возьму отпуск. А в итоге взяли, и теперь мне хуево, т.к. команда нормальная, и рук хороший, но работа не нра, делаю чеоез силу и очень медленно, на стендапах приходится привирать, что уже что-то сделано, а в итоге я это делаю ночью или на след утро, либо нахожу тупые отмазы, почему мне нужно еще 1-2 дня.
85 2102622
>>02451

> windows


> диск c, d, e, f, g, m


братишка, как ты дошёл до жизни такой?
86 2102674
Сначала сделаю API и бекенд, а потом буду мучиться с фронтендом. Норм идея?
87 2102766
>>02674
Через тесты норм. Синиоры могут на одних только юнитах полную бизнес логику написать, без инфраструктуры. Но ты не осилишь.
88 2102777
>>02622
Ну я не сойбой чтобы сидеть на прыщах и не пидор чтобы сидеть на мак оси
89 2102797
>>02777
Если у сойбоя вообще есть компьютер, то там 100% винда. На линуксах деды сидят.
90 2102859
>>02579
пиздец тебе везет.
я работаю в мухосрани за 18к
91 2102861
>>02797
Ноуп, на прыщах сидят красноглазики пердолики.
деды сидят на том, что им всучат.
Я помню работал в комп сервисе, пришел короче парень типа - блядь, винда чет глючит, бсодит. Я погонял день его комп, ниче не бсодило.
Говорю ему - могу переставить виндовс лицензия. тогда 3к стоило а пиратки мы не ставили чтобы не выебали.
Он такой - дорого бля.
Я ему говорю - ну тогда сам поставь или вон блядь скачай линукс бесплатный и поставь. ЕСТЕСТВЕННО ЧТО Я ШУТКАНУЛ.
И что ты думаешь?
Этот хуй пришел на следующий день что игры бля не работают, смотрю а он реально линукс накатил, лол.
92 2102869
>>02861
Этого парня звали Гейб Ньюэлл
93 2102953
Подскажите как выводить чистый текст из json
В гугле народ только из файлов читает, либо я гуглить не умею

Делаю запрос на api, возвращается json вида
{
"id": "text"
}


Как этот text в консоль вывести?
94 2102958
>>02869
кстати рили похож был, может его сын внебрачный
95 2102977
>>02953
Всё, разобрался, всё было элементарно
96 2103030
>>02579

>До этого занимался аналитикой, etl и автоматизацией на питоне в полушаражке. Вся работа заключалась в достать данные (спарсить, sql/nosql), обрабовать в питоне, куда-то залить/отправить. Всё это пилит скриптами, скрипты хранил в папочках, запускались через планировщик. Кароч всё на отъебись.


Лол, мою сейчас работу описал. Только "фронт" на powerbi. Но это тупиковая хуйня. Думаю учить dwh/какой-нибудь airflow, чтобы потом на должность типа DE перекатываться; либо идти по ветке дата сайентиста. Не знаю что выбрать.

Какие у тебя были знания жс/джанго до этого? Думаешь потом в веб перекатываться?
97 2103123
Flask + sqlalchemy
В модели есть колонка date_creat = db.Column(db.DateTime, default=datetime.utcnow())
Но время при этом получается одинаковое у всех записей с момента старта сервера.
Если при сохранении записи явно пишу date_creat=datetime.utcnow(), то все нормально.
Оно и должно так работать или я что-то не так делаю?
98 2103125
>>03123
Лол, ну у тебя просто значение текущего времени ставится в дефолт во время прогона этого кода и всё, как если бы ты на часы посмотрел и вручную датувремя вколотил. Какая-то лямбда-хуямбда или sql-функция нужна для этого. Не знаю как в питоне ебаном это делается.
99 2103126
>>03123

>default=


default вызывается один раз при инициализации. Пиши так
date_creat = db.Column(db.DateTime, default=None):
default = default or datetime.utcnow()

Это будет работать как
if default is None:
____default = datetime.utcnow()
else:
____default = default
100 2103130
>>03126
Ну как обычно, всё через жопу, так я и думал.
101 2103131
>>03123
Скобки не нужны справа от datetime.utcnow
Просто
db.Column(db.DateTime, default=datetime.utcnow)
102 2103132
>>03130
Типичная ошибка, разбираемая в любой нубской книге по бидону.
103 2103133
>>03132
Я не из книги, я из руби. Там просто не может быть таких контринтуитивных решений.
104 2103134
>>03131
Вот это лучшее. Оказывается я вызвал метод, а нужно было его передать без вызова.
105 2103135
>>03133

>контринтуитивных решений


Что контринтуитивного в том, что в функцию передаются значения? Это же не фп с lazy evaluation. Если хочешь передать функцию, то передавай функцию. Её, правда, ещё вызвать придётся отдельно.
106 2103136
>>03135

> Это же не фп с lazy evaluation


Так-то в пайтон уже много чего завезли
107 2103163
>>02859
Ты долбоеб прост.
А мне повезло с коллективом и зп ровно на столько, на сколько не повезло с проектом и задачами.
108 2103289
>>03163
Ебать ты токсичный!
109 2103308
>>02859
Какой стейк технологий и какие обязанности?
110 2103469
>>03308
Я работаю слесарем, по кодингу нет вакансий
111 2103593
Помогите пожалуйста решить задачу, одна ее часть у меня получилась, на вторую мозгов не хватает.

Сама задача: Выведите на экран все числа в интервале от 1500 до 2700 включительно, которые равны 7 и имеют среди своих множителей число 5.

https://dumpz.org/cn6nf6dEnCAQ - мой высер. Кратность 7 я смог выразить, а вот как найти числа с множителями 5 не могу. Надеюсь на вашу помощь, анончики
112 2103595
>>03593

>Сама задача: Выведите на экран все числа в интервале от 1500 до 2700 включительно, которые равны 7 и имеют среди своих множителей число 5.


В промежутке от 1500 до 2700 нет чисел равных 7
Задачу скинь нормально
113 2103599
>>03593

>т 1500 до 2700 включительно, которые равны 7



*Кратны 7. Обосрался
image.png41 Кб, 1004x603
114 2103603
Как можно решить эту задачку? Используя только sub и add. Лямбды использовать вроде нельзя, добавлять код кроме прочерков нельзя.
115 2103607
>>03603
Считайте вы не видели этого поста. Позор. Решил.
в первый прочерк sub
116 2103611
Как отсортировать объекты внутри manytomany списка в queryset'e не подскажет кто-нибудь?
117 2103613
>>03607
Непригождение школьной математики, лол.
118 2103614
>>03593

>которые кратны 7 и имеют среди своих множителей число 5


Это одно и то же условие двумяразными словами?
[num for num in range(1500,2700+1) if num % 35 == 0]
119 2103616
>>03613
Я думаю, тут скорее неочевидность того, что - и sub этодва название одного и того же.
120 2103630
>>03614

>Это одно и то же условие двумяразными словами?


Мне так тоже сначала показалось, но вроде нет. Кратные числа, это же которые делят число без остатка. То есть x%7==0.
А множитель это просто множитель. Их может быть сколько угодно.
К примеру, x= a b c * 5. В этом, собственно и проблема. Вот почему я и не могу выразить второе условие, а ты, получается написал для кратности 35.

Я не исключаю, что я поехавший. Математику не учил с 10 класса, готовился к егэ по своей гуманитарной параше, вышку по которой уже заканчиваю. Все приходится вспоминать заново. Признаю, технари дали пососать гуманитариям.
121 2103634
>>03630

>А множитель это просто множитель. Их может быть сколько угодно.


>К примеру, x= a b c * 5. В этом, собственно и проблема


Если 5 является множителем числа в твоей терминологии, то это значит, что число без остатка делится на 5.
Дай нормальную оригинальную формулировку задачи. Это уебанство писать одинаковые термины разными словами.
122 2103635
>>03630

>К примеру, x= a b c * 5


Разве такое число не разделится без остатка на 5? Получится a ✴ b ✴ c

Допускаю, что это может быть важно, если 5 и 7 были делителями друг друга, нотут они вообще простые.
image.png316 Кб, 1915x483
123 2103645
>>03634
Это и есть оригинальная формулировка. udemy

>>03635
>>03634
Я все понял, я ебанат. Спасибо, анончики, а я пойду ебну себя чем-нибудь
124 2103652
>>03645
Да, лучше сразу ебни, потом еще хуже будет.
125 2103681
>>03645
Да дважды чекни divmod
126 2103695
Перекатился из-за работы в питухон из котлина, теперь тупо боюсь каждый раз что-то вызывать потому что у объекта может не быть метода, а могут быть такие каких ты не ожидаешь, а ещё никто не проставляет аннотации и поэтому хуй пойми что вообще ожидает функция увидеть в аргументе.
Короче очень опасный, неуютный, при этом не то чтобы особо выразительный язык, джаваскрипт и то получше. Понимаю теперь почему для всякой руби/петухоно/пхп петушьи Go выглядит как пиздатый и современный язык.
127 2103722
>>03695
Пиздец вы нежные, могу спокойно писать по ссх в виме, только подсветки синтаксиса достаточно, а тут иде за тебя не напишет и уже обосрался.
128 2103747
>>03722
Дело не в иде, лол, а в том что нужно ментальную нагрузку в голове держать что какая переменная означает и что тебе могли передать в качестве аргумента. В нормальных языках с правильной системой типов такая проблема даже не стоит и человек просто пишет то что ему нужно корректно и без задней мысли
129 2103749
>>03747
Покажи на скринах как это выглядит в Питоне и в "нормальных языках". А то не очень понятен твой бугурт.
130 2103773
>>03747
Джва дня пердоля типы, чтобы просто начать кодировать.
131 2104359
Накидайте, пожалуйста, задач по питону, которые спрашивают у дата инженеров на собеседовании.
132 2104366
>>04359
Через первый скрипт базу данных можно наполнить за 6 часов, через второй за 3. Какую часть базы наполнит каждый скрипт за один час?
133 2104373
>>04366
Никакую, ведь наполнение базы должно быть атомарной операцией и наполнение базы на какую-либо часть не имеет смысла.
134 2104381
>>04373

>наполнение базы должно быть атомарной операцией


Схуяли?
135 2104382
>>04381
А зачем вам неконсистентные данные в базе?
Ок, давай свой ответ на свой вопрос, только ради христа пусть это будет не 1/6 и 1/3, соответственно, иначе я нихуя не понял.
136 2104386
>>04382
Мы вам перезвоним.
137 2104388
>>04386
Матери своей мертвой перезвони, умник.
138 2104390
>>04388
Очень низкая стрессоустойчивость у вас, младой чловек.
139 2104401
Раз уж пошла такая пьянка с задачками, то начал курс на степике и наткнулся на такое.

Использовать можно только +, -, , *, // и %. int() тоже можно

С if решается в три строчки. Три дня бился, в итоге порешал как на пике, но в лекции указывается, что проблема с округлением в большую сторону решается иначе. На примере белорусской деноминации, берется изначальная сумма и из нее вычитается 1 рубль. Потом проводим деноминацию и прибавляем рубль. Но как применить этот способ в данном случае не понимаю.
140 2104437
>>04401

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


Вычитаешь рулон в метрах, прибавляешь рулон в рулонах.
141 2104751
А почему
class Custom(object):
...

class Custom2(Custom):
...

type(Custom) -> <type 'type'>
type(Custom2) -> <type 'type'>

???
142 2104756
>>04751
Потому что класс это тип, нужно смотреть тип инстанса, чтобы получить класс.
143 2104758
>>04756
да я как отправил, сразу понял, что не инстансы проверяю, а класс
144 2104789
>>04758
Гугли метаклассы.
145 2104802
>>04789
Я знаю что это. Это мне не нужно.
what-timezone-is.jpg32 Кб, 600x450
146 2104840
Сап, может кто сталкивался с таким и сможет сориентировать. Приходит таймзона формата "Europe/Moscow", но ее нужно преобразовать в формат "UTC+3".
На ум приходит только идея со словарем, но это скорее крайняя мера. При помощи pytz костылями получилось преобразовать в MSK+0300, что не очень катит. Наверняка же есть какое-то готовое решение, но я не смог его нагуглить
147 2104978
Написал на aiogram бота, появились два вопроса.
Суть бота в чём: через инлайн отправляю сообщение кому-нибудь в чат, к сообщению прикреплена кнопка чтобы получить inline_message_id, по нажатию кнопки делается пост-запрос на api который возвращает текст, далее автоматически этот текст заменяет тот что я отправил.

1) Если кто-то один уже отправил сообщение и нажал кнопку, то второй ничего не может делать пока апи не пришлёт ответ первому
2) Если один нажмёт на кнопку второго, то в текст второго придёт замена из последнего запроса первого

Эти вот два момента я не понимаю, вроде есть догадки что по первому пункту надо копать в асинхронность, то во втором полный затык
148 2105271
>>04978
Чот представил как петрович бегает по цеху и орёт :"ПИДОРЫ КТО ОПЯТЬ МОЁ КНУОПКУ НАЖАЛ?"

Дизайн уровня /b
149 2105274
>>05271
А без кнопки это принципиально реализовать нельзя, я пытаюсь понять сейчас как делать фильтрацию по user.id
150 2105279
>>05274
Если тебе просто нужен каждый раз новый результат, ну генерируй какой-нибудь UUID/SID каждый раз ёбана. Если результат персанифицированый нужен, то что-то придётся вкладывать в запрос.
151 2105280
>>05279
Результат каждый раз новый, бот просто не понимает что с ним работает не один человек
152 2105384
Анонасы, помогите пожалуйста решить задачу. Есть диапазон (100, 500). Как вывести все ЧИСЛА, в которых нет нечетных ЦИФР?
только начал учить циклы
153 2105392
>>05384
Что делится без остатка - нечётное, дальше сам
154 2105400
>>05392
Было бы все так просто. Тут нужны ЧИСЛА, состоящие из четных цифр. То есть 232 четное, но условию не удовлетворяет, в ней находится 3.
155 2105412
>>05400
бля ну ебана чо ты как хлебушек, вложеный цикл делай

[[m for m in str(n)] for n in range(500)]
156 2105440
>>05400
Делаешь список из чисел от 100 до 500 потом через цикл прогоняешь по длине элемента если list[0][0] % 2 == 0 то продолжаешь, если нет - то стопаешь внутренний цикл и переходишь к следующему числу (элементу спсика). Если list[0][0] % 2 == 0 и итератор внутреннего цикла равен длине элемента, то аппендишь элемент к списку, который будешь отправлять на вывод.

У тебя тут получается сразу и вложенные списки и вложенные циклы, а ты говоришь, что "только начал учить циклы" лол.

Алсо я сам нубик, может чего напутал, но задачка у тебя выше уровня "только начал учить циклы".
157 2105441
>>05412
спасибо, но я 10 минут назад узнал, что такое while и for, вложенный цикл слишком сложно для меня, да и задача наверняка подразумевает какое-то простое решение. Не пойму простого решения сейчас, буду сосать еще больше в будущем
158 2105454
>>05440
Да это все сраные курсы udemy. Половину задач из их домашних заданий я решаю по 1,5 часа потому что их решение состоит в том, о чем в самих лекциях не говорили. Задачу выше вообще дали решать объяснив лишь про while. Про for не было ни слова, я час ебался и честно сидел и искал чего же я не понимаю. Как это вообще можно решить только через while Хорошо, что эти говнокурсы я спиратил. Придется походу яндекс практикум покупать.

За помощь спасибо, я правда половину не понял, но буду сидеть разбираться.
Не подскажешь как ты учишься? Литература или курсы какие?
159 2105457
>>05454
Решай на Степике лучше. Там и теорию дают и по каждому моменту теории 10 задачек сверху. Могу ссылки дать.

Я по этим курсам иду и прошел не сильно дальше тебя (до функций, дальше как раз вложенные списки и матрицы лул).
160 2105462
>>05457
Спасибо, щас попробую
162 2105480
>>04978
Первый пункт починил, остался второй
163 2105502
Колупаюсь с асиннхроностью в питоне. Вот до чего дошел. Хочу понять верно ли я понял. Смотрю видосы за видосом, хочу дойти до истины.

Синнхроный код, когда идет последовательное выполнение инструкций кода. Ну мы все знаем как это.
Асиннхроный код, когда можно запускать эти все инструкции одновременно, чтобы было быстрей, и не ждать пока закончится одно и начнется другое. Тут если можно уточните плис.
Процесс и потоки, разница там кароче есть. Поток, часть процесса, у них единая оперативная память как я понял. И можно все это запускать асиинхронно.
Не понял вот что. Про параллелизм. Это одно и тоже что и асиннхроность или нет. Ну есть вообщем еще вопросы по этой теме.
164 2105538
>>05502
Тоже хочу понять.
Как это понимаю я.
Есть хотящий срать питонист. Чтобы ему посрать, напишем простой алгоритм. Например:
1) Сесть на унитаз;
2) Снять трусы;
3) Выдавить какаху;
4) Подтереть попу;
5) Смыть.

Синхронный код всё это будет последовательно, в рамках одного процесса.
Асинхронный код это может сделать так, что садясь на унитаз (1 поток), процесс не будет заблочен им, и соответственно не дожидаясь его полного выполнения, можно начинать снимать трусы (2 поток) и (теоретически) давить какаху (3 поток).
Параллельный код это если бы мы могли этот алгоритм разбить на части, которые могут выполняться в своих процессах и со своей памятью почти одновременно. Ну т.е. теоретически садиться на унитаз и снимать трусы можно параллельно, так же как давить какаху и смывать.
image.png6 Кб, 680x86
165 2105546
166 2105549
>>05546
*Что с ссылкой на книжки?
167 2105550
>>05502
На питоне при асинхронном программировании async/await под asyncio главная сущность это Task. Это аналог потока в многопоточном программировании.

Всё работает в одном процессе, никакой параллельности нет. Причём если в многопотоке параллельности мешает GIL, а вообще она должна бы быть, то в асинхронности и не должна.

Разница между многопоточностью в том, кто переключает потоки-задачи. В многопотоке машина непредсказуемо переключает, в асинхронности только по твоему разрешению.

Это всё про питон. На других платформах свою нюансы.
168 2105552
>>05502
Есть центральный процессор. У процессора есть задачи. Есть таблица текущих задач. Есть планировщик вызывающий программное прерывание процессора, для переключения с задачи на задачу. В таблице хранится куча данных, нужных чтобы продолжить задачу с места на котором она остановилась. Называется контекст. При переключении контекста в процессор загружается уйма информации. Переключение контекста затратная операция. Но его не избежать потому что процессор вынужден обслуживать тысячи задач попеременно. Так работает вытесняющая многозадачность на процессоре с одним ядром. Но бывает что у мощного процессора достаточно времени чтобы обслуживать одну задачу, которая например читает данные из сети. Если код задачи синхронный - это означает что задача будет крутить команду NOP на процессоре пока ждет ответа от сетевой карты. Это растранжиривание времени процессора во-первых и медленная работа программы во-вторых. Поэтому придумали асинхронные задачи. Вместо того чтобы крутить NOP, задача может выполнить какие-то полезные действия еще. Для этого задачу разделили на две: один код читает из сетевой карты, а другой, например рисует прогресс бар. Сделать эти две задачи как полностью независимые, с разными записями в таблице задач слишком накладно по времени, замедление на переключение контекста может быть большим, чем простой в ожидании ответа. Поскольку эти задачи имеют единый контекст, то придумали механизмы переключения между такими задачами, без переключения контекста. Это так называемые потоки.

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

Все это очень приблизительно и есть куча нюансов
168 2105552
>>05502
Есть центральный процессор. У процессора есть задачи. Есть таблица текущих задач. Есть планировщик вызывающий программное прерывание процессора, для переключения с задачи на задачу. В таблице хранится куча данных, нужных чтобы продолжить задачу с места на котором она остановилась. Называется контекст. При переключении контекста в процессор загружается уйма информации. Переключение контекста затратная операция. Но его не избежать потому что процессор вынужден обслуживать тысячи задач попеременно. Так работает вытесняющая многозадачность на процессоре с одним ядром. Но бывает что у мощного процессора достаточно времени чтобы обслуживать одну задачу, которая например читает данные из сети. Если код задачи синхронный - это означает что задача будет крутить команду NOP на процессоре пока ждет ответа от сетевой карты. Это растранжиривание времени процессора во-первых и медленная работа программы во-вторых. Поэтому придумали асинхронные задачи. Вместо того чтобы крутить NOP, задача может выполнить какие-то полезные действия еще. Для этого задачу разделили на две: один код читает из сетевой карты, а другой, например рисует прогресс бар. Сделать эти две задачи как полностью независимые, с разными записями в таблице задач слишком накладно по времени, замедление на переключение контекста может быть большим, чем простой в ожидании ответа. Поскольку эти задачи имеют единый контекст, то придумали механизмы переключения между такими задачами, без переключения контекста. Это так называемые потоки.

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

Все это очень приблизительно и есть куча нюансов
169 2105556
>>05538

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


Для понимания асинхронности очень хорошо опыт программирования на nodejs иметь, серверного. На фронте такие вещи не очень актуальны.

Там два способа реализации асинхронности, старый, через callback, и новый, через async/await и промисы по ними.

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

async/await это механизм, который позволяет сделать асинхронный код так, чтобы он выглядел как сихнронный. Асинхронное программирование становится похожим на обычное многопоточное, только проще.
170 2105557
>>05556
Да никакой опыт на ноде не дает понимания асинхронности если в саму библиотеку uv не лезешь. Вот и ты называешь колбаки и асинк-эвейт синтаксис "разными механизмами" асинхронности.
171 2105564
>>05557
Залезание в библиотеки тебе никакого понимания не даст. Не больше, чем залезание в ассемблер для понимания ООП. Если что, что смотрел то-ли libuv, то-ли libevent и игрался с ними на сях на примитивном уровне. Не думаю, что это моё понимание улучшило.

Механизмы эти принципиально разные для программиста и для возможностей, которые они дают. Ты не можешь просто переложить код async/await на обычные промисы. То, что там в самом движке JS при этом та же библиотека используется ничего не значит. У тебя нет возможности из JS работать с этой библиотекой.
172 2105571
>>05564
Залезание в ассемблер для ООП не даст (и то даст понимание реализации ооп в реальных языках), а для понимания асинхронности даст, потому что вопрос на прямую касается времени выполнения на процессоре. Прост не надо прятаться за за магическими "вещами в себе". Эвент луп в ноде это не вещь в себе а простая модель асинхронности. Зеленые потоки - другая. В этом и есть понимание
173 2105583
>>05571
Такое ощущение, что ты прочитал несколько low level статей, и теперь бравируешь этим. Хотя не осознал, зачем это нужно вообще. Но сбиваешь с толку, вот начиная с этого >>05552

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


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

Ты сбиваешь с толку, видимо потому, что сам не осознал.
174 2105589
>>05583
Ебаный рот этого казино... Ну как не имеет. Был вопрос чем отличается процессы от потоков и чем отличается асинхронность от параллельности. Ты теперь утверждаешь что вопрос больше относится к языкам, а не различием этих понятий на низком уровне? Ты еще утверждаешь что на низком уровне нельзя понять асинхронность?
175 2105615
>>05589
Был вопрос от человека, который не понимает самой базы. Это значит, что если не игнорировать, надо вот эти базовые идеи объяснять, а не толкать что-то, что отношения к делу не имеет.

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

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

async/await в таком варианте, это когда я ухожу домой, но не занимаюсь другими делами, а сижу перед телефоном и ничего не делаю, потому что жду звонка.
176 2105617
Interruptable sleeping и есть выполнение грубо говоря NOP операции, пока таймер не переключит контекст.
177 2105622
>>05615
Не правильно. await используется внутри async не просто так. async означает что функция возвращает промис, догадайся почему.
178 2105633
>>05622
промисы это js
В js на базе промисов async/await сделаны в том смысле, что async функция возвращает промис. Но оператор await не получает промис, он ждёт его разрешения, и вот в этом главная фишка.

Потому что callback асинхронность предполагает, что если ты сделал асинхронных вызов, то ответ ты не получишь НИКОГДА. Нет никакого способа в твоей функции узнать результат. Твоя ветвь исполнения умрёт, не узнав результата. А вот коллбэк будет знать, ты просто можешь объяснить ему, что делать дальше, и он продолжит твоё дело. И это довольно сильно надо мозги извратить, чтобы вот к такому стилю программирования привыкнуть. Тут все эти callback hell возникают.

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

В питоне аналог промисов это Future, но вообще async/await другие, чем в JS. В питоне задачи надо создавать явно, просто await асинхронной функции задачу не создаёт, и асинхронности тоже не создаёт, тут можно больно споткнуться.
179 2105874
Кто-нибудь может пояснить как вообще PyCharm импортирует модули? Запуск pytest из pycharm -- все гуд, но стоит запустить pytest из цмд - ModuleNotFoundError: No module named 'dicklib'.
Я насколько понимаю, PyCharm смотрит доступные для импорта модули относительно корня проекта, а python - относительно запускаемого скрипта, но можно ли заставить их вести себя одинаково?
180 2105875
>>05874
venv
e
n
v
181 2105879
>>05874
>>05875
Ясен хер я в венве работаю и в цмд венв активирую. Я наверное плохо пояснил.
Короче есть следующая структура проекта:

project
core
class_a.py
class_b.py
tests
test_1.py
test_2.py

Тесты импортируют core.class_a.* Если попытаться из cmd из корня проекта запустить pytest (или просто python tests\test_1.py), то будет жалоба на не найденный модуль core; PyCharm же все находит. Вот и вопрос - втф?
182 2105880
>>05879
пробелы проебались

project
-core
--class_a.py
--class_b.py
-tests
--test_1.py
--test_2.py
183 2105881
>>05880
Значит в пичарме есть телепатический плагин
а где __инит__.пи в модулях?
184 2105882
>>05881

> а где __инит__.пи в модулях?


они есть, не стал писать сюда...
185 2105883
>>05882
А точно на верхнем уровне есть? Или папка прожект у тебя в консоли добавлена в пути поиска?
186 2105884
>>05883
тобишь .
187 2105887
>>05883

>А точно на верхнем уровне есть?


точно

>Или папка прожект у тебя в консоли добавлена в пути поиска?


вот это вряд ли делал, можно подробнее?
188 2105888
>>05887
Прост посмотри в конфигурацию запуска в пичарме сверху справа и в консоле делай так же
189 2105894
>>05874
>>05888
Разобрался - pycharm автоматически прокидывает корневую директорию в PYTHONPATH
190 2106027
Почитал книги из ОП-поста, ни одна не подошла. Все написаны какими-то странными людьми совсем без дара объяснения. Даже "питон для детей" оказалась околоакадемической по стилю изложения, просто в детсткой стилистике.
Короче, книгу на человеческом языке для dummies, пожалуйста. Не могу освоить язык дальше классов, совсем не вдупляю. Нужно хорошее руководство.
191 2106079
>>06027
Во дибил, и нахуй ты сюда лезешь?
192 2106107
>>06079
Для таких как я здесь в оп-посте книги и висят, но они хуйня, как и твой высер. Двачеры-дегенераты, пиздец просто.
193 2106114
>>06107

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


>Двачеры-дегенераты, пиздец просто.


лалка сасай
194 2106121
>>06027
А че там после классов?

_мимонуб_
195 2106141
>>06121
Тайные знания древних.
196 2106176
>>06114
хочешь сказать больше меня знаешь, лол?
197 2106255
>>06176
Конечно, давай, удиви меня
198 2106320
>>06027
Fluent Python.
Только вы должны знать английский и основы питона, чтобы получить от нее удовольствие.
199 2106338
>>06320
Тоже отметил ее для себя. Она пиздец некст лвл на фоне большинства курсов и прочего.
200 2106363
>>06121
фреймворки
201 2106469
>>06027
Дальше классов только практика. Тебе надо на кодворз, рубиться там до посиннения. На одном только 7ку ок 1500 кат, тебе хватит чтобы понять что к чему, чем выше тем и уровень выше, и сложность. Но там надо алги знать и решения не трвиальные, а для прокачки базы может хватить, по крайней мере там типовое вообще все есть, про листы особенно.
Ну и пет проекты. Нужно уже пилить чтот свое.
Я вот рублюсь на кодворзе.
Встал на пет проекте, хз что пилить. Все откладываю джангу и апи, хочу что-то простое запилить с апи, чтобы было по феншую, типо сервис и доступ по апи к нему, как-то так. Еще понять про бизнес логику, про процессинг, про это все, ну типо сервис, обменник, или что-то в этом духе.
И еще встал на процессах, асиннхрости, на вот этом все. А ооп как раз таки далось легче. И тут пишут про понятные учебники. Их нету. Остается только ютуб смотреть до просветления. Уже ни один курс просмотрел по питону.
202 2106559
Вчера купил персики у таджика. Попробовал. Персики оказались неспелые. Сегодня покупаю у него арбуз, сказал ему про персики, он типо, ну он не знал, сори, сделал скидку на арбуз. Еле дотащил. А, к чему я это. Зашел базар за питон, за асинхронное программирование, все дела. Я попросил его пояснить за все за это. Вот результат, с замерами, не благодарите. Пожалуй единственное видео где таджик четко поясняет за мультипроцессинг, мультитрединг и асинхронщину.
https://www.youtube.com/watch?v=R4Oz8JUuM4s&t=1198s
Можете задонатить таджику.
203 2106631
>>06121
mro, метаклассы, датаклассы, тайпинг
204 2106634
Так блять. Я может тупой, но какого хуя время исполнения теста отличается от того что выдает пайтест в 10 раз? Нахуярил принтов на все тир-дауны и тирс-апы - они дают одно время, а потом хуяк - мне пишет другое время. В чем проеб то?
205 2106647
>>06634
Как мы тебе без кода скажем?
206 2106663
>>06647
Ну вопрос не столько к коду привязан. "Брейкпоинты" идут на всем продолжении теста от сетАпа до обоих тирДаунов. Я грешу на то, что идет слишком долгий сбор, но все равно хуйня какая-то
207 2106752
>>06663
Ну ты чисто визуально 1.5 секунды от 15 отличаешь? Сколько реально работает?

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

Ну ХЗ.
208 2106757
>>06752
Визуально - есть. Запустил реальный таймер и примерно столкьо же и работает. Я запускаю конкретный тест из набора тестов, кроме него ничего не должно выполняться.
209 2106758
>>06757

>Запустил реальный таймер и примерно столкьо же и работает.


Но ведь проблема в том, что после класс-тир-даун ничего не должно выполняться.
210 2106765
>>06757
Всё из тебя клещами надо вытягивать.

У тебя ошибка замера времени. Судя по всему, ты используешь таймеры работы скрипта, которые считают, сколько ЦПУ-секунд съел твой скрипт.

Надо смотреть вот на эту часть. Проблема в том, что они считают только текущий процесс, хотя это норм в данном случае, и считают чисто ЦПУ-время, а не общее, то есть работа в режиме ОС и просто простой не учитываются.

Это примерно как time в линуксе, который показывает тебе три значения, общее время и время работы в пользовательском и системном режимах. pytest тебе общее время показывает, о твой замер процессорное.

Попробуй добавить в печать просто time.time() или time.monotonic(), без разницы особой.
211 2106817
>>06765
Бля, короче говоря я даун. Кучу времени неучтенного оно применяло миграции - сменил таймер, выключил миграциии - тест начал выполняться быстрее.
212 2106970
Анон, есть скрипт у которого есть разные режимы работы.
Как-то можно через консоль передавать параметр, который будет запускать скрипт в том или ином режиме?
213 2106971
>>06970
Можно было бы у бездушного гугла спросить.

А вообще argparse
https://docs.python.org/3/library/argparse.html, если делать полноценно.

Можно без argparse совсем примитивно, но не нужно. Делай как надо сразу.
215 2106981
>>06817
Поясни стоит ли вкатываться в автоматизацию. Бывают ли интересные задачи или это написание шаблонных тестов по кругу? Что с зп? Что в основном юзают uniitest или pytest?
Сегодня будет собес на стажировку, думаю идти или нет если возьмут.
216 2107016
>>06981

>Поясни стоит ли вкатываться в автоматизацию


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

>Бывают ли интересные задачи или это написание шаблонных тестов по кругу?


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

>Что с зп? Что в основном юзают uniitest или pytest?


Понятия не имею, я прежде всего бекендом занимаюсь. Юнит-тесты нужны только чтобы убрать прослойку из ручного тестирования АПИ.
217 2107031
>>06981

>Что в основном юзают uniitest или pytest?


Вот с этим просто, unittest уже давно приобрёл статус legacy и полностью вытеснен pytest'ом, остаётся только на каких-то старых проектах.

>>07016

>Юнит-тесты нужны только чтобы убрать прослойку из ручного тестирования АПИ.


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

Если что учить, то однозначно pytest. Хотя ещё какие-то фреймворки есть, кроме этой пары. Но наверное стандарт сейчас pytest.
15661096164040.jpg92 Кб, 678x710
218 2107033
Анон, подскажи, как запустить эту вещь
https://github.com/dipta-dhar/Automatic-Question-Generator
Функцию main надо импортировать? Или как её использовать вообще? Как аргументы передавать?
219 2107077
>>07031

>unittest уже давно приобрёл статус legacy и полностью вытеснен pytest'ом


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

>pytest можно спокойно использовать для тестирования чего-то внешнего. Как просто питон для этого используют.


Ну я про конкретно свой случай говорил.

>сли что учить, то однозначно pytest


На самом деле похуй, они не настолько отличаются, чтобы ты не смог после по разному ассерты написать после. Главное чтобы человек понимал принципы.
Снимок экрана 2021-07-26 в 13.05.41.png146 Кб, 1774x990
220 2107211
>>07033
Какие же тупые долбаебы. Вообще удивляюсь, как ты смог склонировать репу. Хотя может ты копипастил
221 2107234
Следующий программный код:

print(True + True + True - False)
print(True + (False / True))

выведет:

3
1.0

Вот это наркомания. Это во всех языках так?
222 2107240
>>07234
А что должно вывести?
223 2107241
>>07240
Просто удивлен, что True и False можно представить как числа.
224 2107243
>>07234
В большинстве языков так, true-false отображается на int.
225 2107246
>>07241
В компьютере кроме чисел и нет ничего.
226 2107249
>>07211
Разобрался уже давно без тебя.
Ну и к чему твои возмущения?
Тупо склонируй проект и попробуй это запустить.
Нихуя не выйдет, потому что, ебать, сначало надо перейти в ебучую папку и попробовать вызвать эту функцию, потом доустанавливать кучу либ, которые не указаны, потом править сами эти файлы, потому что автор положил хуй на баги, и так просто оно не запускается.
Ты бы лучше возмущался о криворуких долбоёбах, что выкладывают свои высеры, не снабжая должными комментариями и списком зависимостей, а на пользователей, которые пытаются эту срань запустить.
227 2107276
>>07246
Сейчас вот дошел до None. А None в памяти компа тоже выглядит как какое-то число, просто нам (питонистам) это знать не надо?
228 2107280
>>07276

> А None в памяти компа тоже выглядит как какое-то число


Конечно. Всё выглядит как какое-то число.

>просто нам (питонистам) это знать не надо?


Сами решайте, что вам надо и не надо знать. Даже если где-то ответа на твой вопрос нет, всегда есть ультимативный авторитет в виде исходных кодов. Всё, что есть, всё там, и именно так, как оно работает.
229 2107282
>>07280
Аминь.
230 2107398
>>07280

>Конечно. Всё выглядит как какое-то число.


Ничего не выглядит как число. Есть только сигналы той или иной модуляции и той или иной амплитуды. Иными словами есть только электроны, которые крутят вентили в транзисторах.
231 2107401
Есть текст, если его вывести через print ошибка, surrogates not allowed, погуглив понял что его нужно декодировать, в результате:

1-й пик выводит надпись с мусором, код:
text= text.encode('utf-16','replace').decode('utf-16','replace')
как полностью убрать лишний мусор?

и как убрать с 2-го пика \xa0 ? replace не помогает
232 2107411
>>07398

> электроны, которые крутят вентили в транзисторах


Просто так выглядят числа. Закорючки на измельчённых мёртвых деревьях тоже никакой неотъемлемой "численности" в себе не несут, просто мы решили, что это числа, поэтому это числа.
233 2107412
>>04840
import datetime
import pytz

sampletime = datetime.datetime.now(tz=pytz.timezone('Europe/Moscow'))
print ('UTC{}'.format(sampletime.strftime('%z')))
234 2107521
>>07401
Так ты что-то не то декодируешь, вот replace и дает мусор. Ищи правильную кодировку.
Алсо \xa0 это &nbsp, можешь заменить его на пробелы.
235 2107567
https://ideone.com/80eMds

Это точно так и задумывалось?
Можно какой-то комментарий - во первых зачем он настолько жёстко замещает результат функции, а во вторых как это примерно работает? Какое-то очень непоследовательное выполнение кода, оно хранит где-то все finnaly (что логично), и даже при выходе из функции выполняет их и может повлиять на уже передаваемый результат функции? Всё хорошо с тем, что оно влияет на значения переменных, ведь это и есть назначение finnaly, но то что оно замещает результат функции...
236 2107606
>>07567
Насколько я помню, return это не безусловный выход, он просто сохраняет это значение, потом отрабатывает finally и перезаписывает его, и уже тогда происходит выход из этого участка.
Ну а в целом надо курить dis.dis и исходники вм питоньей.
237 2107652
>>07567
Да, так задумывалось: https://docs.python.org/3/reference/compound_stmts.html#finally

The return value of a function is determined by the last return statement executed. Since the finally clause always executes, a return statement executed in the finally clause will always be the last one executed.


Код в finally будет выполнен в любом случае - было ли исключение или нет: https://ideone.com/aumSqP

В то же время PEP8 не рекомендует делать return из finally ровно для того, чтобы избежать эффектов, как в твоем примере.
238 2107677
>>06320
А вроде есть перевод, правда, достаточно топорный: "Python. К вершинам мастерства". Это в том случае, если автор некий Лучано Рамальо.
240 2107715
Сап, питонисты
Вкатился к вам поскольку уже заебался тыкаться не туда
В общем, суть в чем, я довольно неплохо знаю кор питон, структуры данных, скуэльчик и всю базу в целом знаю хорошо
Но я уже несколько месяцев просто не знаю за что взяться
Думал взять фласк, но боюсь, что мне станет скучно дрочить веб
Смотрел в сторону мл, но боюсь, что мой матан на уровне слабенького понимания интерполяции не вывезет
В общем, реквестирую какой то годный пул проектов для начинающих или просто советы в какое направление смотреть
Благодарю
241 2107728
>>07033
ну там пример мейна есть жи.
242 2107738
>>07715
Ну может тебе стоит самому понять что нравится больше?
Как мы за тебя это определим то?
243 2107743
>>07715
Ну так и решай себе задачки вроде 2+2 на core.
Практика решает, ебать тебя в сраку.
244 2107778
Какой в пичарме хоткей выравнять и отформатировать текст?
Ну типа в середине обернул кусок кода в иф, дальше приходится все руками табить. Наверняка есть хоткей.

И второе, как разом закомментить выделенный текст?
245 2107801
>>07778
Выделяешь блок и таб или шифт+таб.
Закоментитить ктрл + /
246 2107843
>>07778
Ctrl+I, как и в других ide?
247 2108072
>>00419 (OP)
Какую IDE использовать? Блоки в юпитере странная вещь.
248 2108092
Кто-нибудь с Kivy имел дело? Подкиньте, по каким курсам/литературе изучали, кроме официальных доков.
249 2108154
Как организовывать взаимодействие между приложениями внутри django приложения? Как они общаются? Материалов по этой теме мало и все говорят только в общих словах.
250 2108377
Очень сомневаюсь, конечно, что мне подскажут, но все же.

Для прометеуса поставил либу.

registry = CollectorRegistry()
BUCKETS = [1.0, 2.5, 5.0, 10.0, 30.0, float("inf")]
REQUEST_TIME = Histogram('request_processing_seconds', 'Time spent processing request', ['client'], registry=registry, buckets=BUCKETS)
Добавил кастомную метку client

Как к запоросу считающему время добавить метку о времени выполнения?

@REQUEST_TIME.time() # <--- ??
def process_request(t):
____time.sleep(t)

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

PS Сука, капчу верную вводишь, говорит что не валидна.
251 2108380
Типа такой получить

# HELP request_processing_seconds Time spent processing request
# TYPE request_processing_seconds histogram
request_processing_seconds_bucket{client="test1", le="1.0"} 3.0
request_processing_seconds_bucket{client="test1", le="2.5"} 3.0
request_processing_seconds_bucket{client="test1", le="5.0"} 3.0
request_processing_seconds_bucket{client="test1", le="10.0"} 3.0
request_processing_seconds_bucket{client="test1", le="30.0"} 3.0
request_processing_seconds_bucket{client="test1", le="+Inf"} 3.0
request_processing_seconds_count {client="test1"} 3.0
request_processing_seconds_sum {client="test1"} 0.827455997467041
request_processing_seconds_bucket{client="qwe", le="1.0"} 3.0
request_processing_seconds_bucket{client="qwe", le="2.5"} 3.0
request_processing_seconds_bucket{client="qwe", le="5.0"} 3.0
request_processing_seconds_bucket{client="qwe", le="10.0"} 3.0
request_processing_seconds_bucket{client="qwe", le="30.0"} 3.0
request_processing_seconds_bucket{client="qwe", le="+Inf"} 3.0
request_processing_seconds_count {client="qwe"} 3.0
request_processing_seconds_sum {client="qwe"} 0.827455997467041
# HELP request_processing_seconds_created Time spent processing request
# TYPE request_processing_seconds_created gauge
request_processing_seconds_created 1.627386151014053e+09
1401533723781.png104 Кб, 260x258
252 2108519
Аноний, подскажи нубу, как правильно проверять входные переменные класса?
Например, есть класс:
class S1():
--def __init__(
----self,
----x1: Union["PreTrainedModel", "TFPreTrainedModel"],
----x2: PreTrainedTokenizer,
----kwargs
----):
------super().__init__(
------x1=x1,
------x2=x2,
------
kwargs,
------)

Как проверить, что x1 и x2 пользователь указал при инициализации класса? Как в случае, если не указал, присвоить им значения по умолчанию внутри класса?
253 2108529
Есть ли смысл продолжать вкатываться в Django, если написал пару PET проектов?
254 2108539
Режим записи "a" работает только для существующих файлов?
Или его можно использовать, если файла ещё не существует?
255 2108548
>>08519
def __init__(self, x1=Default1, x2=Default2)
256 2108552
>>07778
Можешь через альт выделять несколько строк и есть колоночный ввод в пайчарме, зоткей не помню, ищи в настройках
257 2108559
>>07715
Тоже сначала подумал что веб это хуйня какая-то, потом решил для начала его подрочить, а потом уже за мл взяться и сейчас ахуеваю какие сложные штуки крутятся в вебе и просто балдею от всей этой инженерной движухи
258 2108570
Можете, пожалуйста, прислать картинку с голым брутальным мужчиной, у которого пиписка прикрыта эмблемой python? Не смог нагуглить, очень надо.
Python 259 2108617
Сап программачи,поясните за цикл for в Питоне
260 2108621
>>08617
Ну тип цикл такой. А че
261 2108644
>>08617
Пояснил тебе гуглом защеку, проверяй чмоха
262 2108676
Вопрос от студентоты.
Так вот начал изучать Django, пилю свой сайтик с PostgreSQL -
так просто руку набить (все понятно, все нравиться)
Скажите пожалуйста, не останусь ли я не удел в скором времени, в связи с появлением конструкторов?
Сегодня, например, смотрел конструктор уже от ебаного ТиньковБанка, лол.
Продолжать хуячить web и Djang'у или стоит переключиться на что то другое, в целом интерес интересом, но и перспективы для тоже важны
Повторюсь я кроме книжек и теории пока далек от реальных дел в мире IT, потому и вопрошаю к вам господа..
263 2108687
>>07715
что такое мл?
264 2108717
>>08687
Machine Learning
265 2108729
>>08676
В джангу дохуя вкатунов. В пыхе меньше.
266 2108730
>>08729
но если вакансии пайтон, то чаще всего просят джангу
что такое пых, php чтоли?
267 2108786
>>08559
что за сложные штуки?
нужен ли матан?
как думаешь есть ли перспективы мл в рашке?
268 2109048
>>08786
Как раз рашка и Китай наиболее перспективные страны для мл.
https://youtu.be/Ld9M7XgQPCE
269 2109120
>>08617
это значит ДЛЯ
270 2109122
>>08786
ты заебал нахуй тебе матан в мл?
там блядь методы как и везде в питоне.
никто не требует с тебя писать свои блядь рукописные методы.
да ты и не сможешь.
для этого надо быть математиком нахуй гениальным.
все известное методы и модели обучения уже давно существуют и записаны в библиотечные методы.
271 2109123
>>08786
в вебе тем более нет матана, бля ты разъебаешь?
272 2109140
Есть что-то типа подборки паттернов с исходниками?
273 2109155
>>08676

>Скажите пожалуйста, не останусь ли я не удел в скором времени, в связи с появлением конструкторов?


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

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

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

>Продолжать хуячить web и Djang


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

Django это просто платформа для крудов. Но это хорошая платформа. И это несколько ключевых технологий, то есть умея джанго ты будешь владеть каким-то набором технологий, и сможешь другие вещи осваивать.
274 2109185
>>09155

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


На машин лернинг, главный юзкейс гвидобейсика. Но джангисты в своей массе тупые и не осилят.
275 2109350
>>09122

спасибо бро
да на самом деле что в матане, да и в топологии ничего сложного нет - ​если ты конечно не решаешь какие то еще нерешенные задачи или доказываешь то, что еще не доказано (у меня образование как раз в околоМЛ сфере,лол, но посля я все забросил)
Когда начал слушать лекции по мл, увидел сплошную математику, ну и решил, что нахер оно мне все это по второму кругу, хотя конечно все это интересно, но уже времени нет. Понятно, что это просто теория которая объясняет, то о чем ты написал
276 2109367
Питоны, хочу клиента к api одного сервиса запилить, стоит ли прикручивать валидатор json, какой-нибудь pedantic или пустая трата времени? И если я захочу, чтобы у меня были синхронные и асинхронные методы, то мне надо будет дублировать все методы с запросами?
277 2109410
>>08786
Я писал именно про инженерно сложные штуки, когда у тебя есть сначала один сервер, потом ты выносишь бд на отдельный сервер ибо не хватает ресурсов, потом фронтент веб сервер отдельно, потом появляется несколько бекенд вебсерверов, потом еще отдельный сервер для какой-нибудь отдельной задачи, при этом это все великолепие друг с другом общается, само обновляется, само поднимается и тестируется и главное решает проблемы бизнеса, это тебе не создать класс Классификатор() и не дёрнуть у него метод процесс_дата_фрейм(дата_фрейм)
278 2109416
>>08676
Если ты джангу учишь ты и не соревнуешься с конструкторами какими-то, у джанги сейчас другая цель и никто шаблонизатором, например, не пользуется почти, потому что сейчас бек это штука которая отдает джейсончик тебе на фронт, а этот джейсончик берется из баз данных, других сервисов и определенной логике, а конструкторы дают возможность писать дефолтные магазины и лендинги, которые ты и не будешь писать на джанге, ибо зачем?
279 2109428
>>09416
Джанго для крудов. Для того, что ты описываешь, джанго не нужна.

Круды жили и будут жить. SPA архитектура ограничена. Например тебе сложно поддержать ссылки на страницы, SPA тупо индексироваться как надо не будет. А традиционное приложение на джанго будет хорошо индексироваться, ты сможешь ссылаться на страницы, ходить по ссылкам и т.п.

Технологии SPA появились больше 10 лет назад, уже тогда были приложения. Но до сих пор они не вытеснили традиционный веб.
280 2109431
>>09367
Что ты называешь валидатором json? Pydantic в некотором роде валидатор. Ну то есть из json ты получишь структуру с нужными тебе провалидированными полями.

>у меня были синхронные и асинхронные методы, то мне надо будет дублировать все методы с запросами?


Я бы сказал, что у тебя должна быть синхронная функция, которая занимается валидацией. Эту функцию ты можешь вызывать из какой-то асинхронной задачи.
281 2109470
>>09416
я так понимаю жабускрипт в любом случае надо учить будет?
282 2109497
>>09428
Смотря что ты подразумеваешь под традиционным вебом, часто сижу на хх и требование шаблонизатора почти нигде нет, джанга хороша тем, что если тебе не нужен го сеньер для 100500рпа, то ты пишешь апишку на дрф хоть тяп ляп и в продакшен, если у тебя наврятли будет даже 10рпа, то тобе не нужны эти асинхронные фреймворки и прочее, а вот как раз писать на джанге традиционный веб мне непонятно зачем, если на рынке есть тонна пхпшников, црмки и конструкторы, в общем все от задачи зависит и не стоит забывать что spa это далеко не единственное чему нужны апи, есть мобильные приложения и другие апи
283 2109500
>>09470
Ну основы может знать и надо, но учить не нужно, если собираешься работать питон разрабом
284 2109527
>>09431

>Ну то есть из json ты получишь структуру с нужными тебе провалидированными полями.


Звучит как валидатор. Мне бы хотелось чтобы и запрос и ответ проверялись. То есть создаю инстанс объекта, при создании всем всё проверяется(если оно так работает), потом сериализую в json, отправляю. Ну и с ответом все в обратном порядке. Просто не уверен стоит или оно того.
285 2109633
Питоняч, помоги.
Парсю сайт с помощью BeautifulSoup и проблема в том, что выдергивается только часть контента, который мне нужен(ссылки). Структура html, классы - все аналогично, но в итоге выводятся только первые десять ссылок и все, хотя на странице их 100.
Из за чего это?
286 2109673
>>09527
Скорее всего тебе пидантика достаточно. Его именно для таких задач и создавали.

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

Причём пидантик распарсит и вложенные поля-модели.

В каких-то случаях внешняя валидация тоже может быть полезной, но в целом, думаю, надо в первую очередь на пидантик смотреть.
287 2109773
>>08617
https://stepik.org/course/67/syllabus
И больше сюда не приходи
288 2109777
>>09633
Значит они чем-то отличаются, смотри. А может подгружаются на ходу, тоже смотри.
289 2109788
>>09777

>А может подгружаются на ходу


А как это проверить?
290 2109796
>>09788
Посмотри скачанный хтмл, есть ли они там. Или в инспекторе вкладка нетворк, там можно смотреть запросы.
291 2109847
>>09788
В браузере нажми F12 (Firefox/Chrome точно), там тебе откроется панель, смотри вкладку Network, там ты можешь видеть всю активность, что в какой момент подгрузилось, можешь смотреть заголовки и ответы и т.п.

Я работаю в файрфоксе, там это очень хорошо сделано. В хроме есть тоже, но ничего про хром не скажу.
292 2109854
>>09796
>>09847
Спасибо вам огромное, аноны, выручили.
293 2110072
Столкнулся с проблемой!
Есть код, работает через вк_апи.
Прикрутил к нему прокси, и, видимо, из-за нестабильности прокси сервера программа зависает. При этом, таймаут ошибка не вылезает (вк_апи работает через реквестс).
Есть предположения как решить?
294 2110148
>>10072
Ссылку бы хоть дал.
295 2110171
>>10148
На что?
296 2110244
>>10171
на апи этот
pandas.png2 Кб, 493x68
297 2110282
>>00419 (OP)
Банальный вопрос. Как установить pandas?
298 2110291
>>10072
логирование прикрутить
2021-07-2823-43-52.png33 Кб, 973x498
299 2110299
>>09350

Ты решил таки вкатиться в машин лирнинг?
>>10282
поставь через анаконду или пайчарм.
консоль это для прыщей
если через консоль то запусти питон
59cf8ec4cbf52ce2865222887d974788.jpg128 Кб, 781x1000
300 2110423
>>00419 (OP)
Гарри Поттер знал Python что ли?
301 2110442
Подскажите, как в пичарме каким хоткеем быстро поставить снять точку останова, чтобы мышкой по полям не тыкать?
302 2110445
>>10442
в пачарме посмотри
там даже вроде подсказки есть
303 2110886
Какая есть нормальная либа для работы с битторент протоколом?
304 2111033
Ядреная поварешка! Как понять асинхронность? Принцип понятен, но как дело доходит до практической реализации, я встаю как баран блеать.
изображение.png130 Кб, 1920x1080
305 2111063
>>00419 (OP)
Сап питонач. Необходимо очень большую строку в файле преобразовать в нечто типа "переменная нейм += кусок данных строки" т.к. необходимо впихнуть эту строку в код.

Сделал скрипт вида:
from pathlib import Path
tex= Path('1.txt').read_text()
print(len(tex))
alltext = str()
for i in range(0, len(tex), 24):
alltext += "Str += \"" + tex[i:i+24] + "\"" + "\r\n"
res = open("res.txt","w")
res.write(alltext)
res.close()

Но при копировании этого в файл res.txt выходит вот такая херня как на пикриле с пропажей одного символа. Что не так с чтением строк в питоне или у меня код полное говнище?
306 2111095
>>11063
Да вроде должно быть ок. Больше смахивает на ньюлайн в оригинальном файле.
307 2111098
>>11063
Ты уверен, что у тебя исходный файл не сбойный и там нет переходов на новую строку?

Если присмотреться, у тебя разрыв видимо на отметке 1кб ровно, 42 строки и 16 символов.

Проверь исходный файл.
308 2111113
Всем привет, как сделать чтобы при добавление foreignkey в django я пересчитывал другое поле? Есть какой нибудь метод?
309 2111617
>>11033
Рассматривай асинхронный код как две разные программы.
310 2111659
>>11113
save(self) или сигналы
311 2111770
Подскажите курс/книгу/туториал для тех кто уже более чем знаком с языками программирования и с разработкой (пусть и любительской), а то открыл на ютубе пару первых попавшихся туториалов, так они для объяснение переменных используют аналогию с коробками, да так медленно ещё всё разжёвывая. Мне же скорее надо, вот переменные они бывают такие-то и такие-то в питоне потому что... а вот примеры с подводными камнями. Короче, если тут есть кто уже зная программирование пришёл в этот язык, подскажите, что использовали для изучения.
Screenshot20210730-114459Via.jpg192 Кб, 720x1560
312 2111786
313 2111797
>>11770
Просто смотри курсы в х2 скорости
314 2111798
>>11786
Я и так в процессе чтения оного, пока читал, подумал, что может есть что лучше. Поэтому и задал вопрос выше.
315 2111802
>>11798
Лучше в каком отношении?
316 2111851
Я тут на днях читал про устройство работы пхп, и там, как я понял, на каждый запрос к серверу создаётся отдельное подключение, которое убивается после того, как запрос отработает. А в плюсах наоборот держится одно соединение для всех клиентов. Интересно, а как в питоне это работает?
image.png10 Кб, 332x167
317 2111858
>>00419 (OP)
Вот это код в одном из core-модулей у нас
Сказали что респонс 200 это не баг а фича
318 2111865
>>11851
asgi (асинхронный подзалупный сервер который имеет ивент-луп и перебирает асинхронные таски)
wsgi (синхронный подзалупный серв, внутри как правило будет юзать треды что позволяет избегать блокирования на тасках но т.к. это питоновские треды то CPU-bound таски они не ускоряют)
319 2111869
>>11851
По-моему ,что в си что в питоне как напишешь, так и будет работать. PHP может заточен на ответы клиентам, не знаю.

А языки общего назначения можно как угодно настроить.
Зависит от настроек и кода конкретного сервера.
320 2111895
>>11858
У кого у вас-то.
Говоришь как будто ты мейнтейнер фастапи, а не крудошлеп в ООО КабанСофт.
321 2111935
>>11851
Здесь определяет то, как настроен сам сервер, у тебя в промежутке что-то стоит, иногда несколько. Например связка nginx + uwsgi/gunicorn, или asgi.

Aiohttp работает напрямую, без asgi, то всё равно ты за nginx его ставишь обычно.

Ты другое имел в виду, я думаю.

Специфика PHP в том, что на каждое подключение создаётся новый процесс, причём именно процесс, а не тред, насколько я помню. Этот процесс отрабатывает результат и прибивается.

В то время как на других платформах обычно один и тот же процесс отрабатывает много соединений подряд, то есть обслужил один запрос, потом следующий, и т.п.
322 2111979
>>11858
Меня больше не 200 статус смущает, так делают иногда, когда есть варианты альтернативной обработки на стороне фронта.
А текст ошибки. Что нахуй случилось? Как узнать? Хоть бы в логгер написали содержимое exc
323 2111986
>>11979
Эксепшн отловлен, это штатная ошибка, если бы там всё пизданулось, то было бы 500 или что там ещё.
Это разные сорта ошибок на разных уровнях.
324 2112060
>>11895
Я просто челик с Большим Агрегатом, которого молодняк про себя зовет Big Daddy
Не выпендривайся особо, а то очко-то твое не долго будет девственным
325 2112062
>>11979
_on_error и напишет через logging.execption
326 2112083
>>12062
Если есть какой-то глобальный отлов ошибок есть, то logging.exception будет пустой. Поэтому правильно в явном виде передавать ошибку
327 2112106
Как скомпилить код? В примерах вижу
python -OO -m py_compile file.py
Но при запуске не создается никакого файла
328 2112170
Какой ORM использовать для асинхронного приложения? SQLAlchemy без задней мысли или что-то другое?
329 2112221
Бля, пачаны, вопрос по списочным выражениям.

Вот есть списочное выражение

max_num = [matrix[j] for i in range(rows) for j in range(cols) if matrix[j] > max_num: max_num = matrix[j]]

Вот внутри него можно сделать вложенный цикл. Вот внутри него можно сделать условное выражение if. Но блин - нельзя внутрь списочного выражения засунуть то, что будет выполняться при срабатывании условия. Вот этот max_num = matrix[j] в конце выражения не сработает - это синтаксическая ошибка.

Как быть? Забить и использовать списочные выражения умеренно или есть какой-то хитрый трюк?
330 2112340
>>12221

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


Можно? Его в начале надо писать.
Я не большой знаток питона, но если объяснишь, что ты хочешь получить, я тебе компрехеншн напишу.
331 2112355
>>12221
Нельзя.

>>12340
Он хочет стейт сохранять в процессе.
332 2112356
>>12355

>Он хочет стейт сохранять в процессе.


Если так, то нельзя. Я просто по его примеру не смог понять, что он хочет.
333 2112364
>>12355
Ну да, я хотел чтобы внутри списочного выражения сохранялось и обновлялось max_num по условию. Но по ходу облом.
334 2112430
Есть ли смысл вкатываться в пайтон в качестве веб-бэкэнд макаки, или шансов найти работу почти нет?
335 2112439
Как относитесь к аналнимусам?
336 2112512
>>12430
чел 300 резюме на вакансию, чтобы вкатиться надо сразу уровень мидла осваивать, это полтора года
337 2112531
>>12512
чел, я писал в одном из тредов, так и не ответили.
у меня есть опыт по жабе, может стоит продолжать жабу ебать?
Я просто дикий депрессняк с нее словил в силу того что там налепили кучу дублирующих стандартов и я в душе не ебу как все это учить и не проебать что-то на собеседовании, питон вроде гаромничнее в этом плане выглядит
сейчас вот открыл лутца к примеру, дохуя воды, просто дохуище, но я 90% текста тупо пролистываю на опыте(и почти уверен что с фреймворками хуёрками тоже самое будет, ибо интуитивно понятно что к чему). Плюс еще жабускрипт знаю на уровне книжки кантора +- (естессно не на уровне нетривиальных задач уровня складывания нескладываемого, ибо уже забыл нюансы), могу в NPM, подргузить модули какие-нибудь оттуда, покопаться с ними через доки и написать какое-нибудь говно через импорты, реакт компоненты +- помню (до редакса так и не дошел), плюс верстку помню. Есть ли у меня шанс получить жоб оффер если я ща питон выучу, джангу и че там вокруг нее? Сократится ли время учитывая бэкграунд?
Производственного опыта не имел, все вышеперечисленные - пет проекты, выдумывание в IDE каких-нибудь задач и т.п.
338 2112542
>>12531
Хотел добавить, что жабу освоил почти на уровне создания полноценного API с авторизацией. Спринг (местный веб каркас типа джанго походу) + Гибернейт (местный ОРМ), ну и эскюэль знаю на уровне джоинов и подзапросов
339 2112545
340 2112572
>>12545
ну и че мне никто не отвечает?
я же вроде четко вопрос сформулировал.
Есть ли смысл душить питон имея небольшой бэкграунд, будут ли шансы куда устроится или лучше продолжить ебать джаву?
341 2112574
>>12572
Смысла вообще нет.
Лучше спиться или сторчаться.
342 2112575
>>12572
Ты че тупой на хуй? Джава - тырпрайз. Серьезные дяди, серьезные деньги.

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

Ты бля чего хочешь то? Я бы на твоем месте Джаву не бросал, потому что она очень денежная.
343 2112583
>>12575

>Ты бля чего хочешь то?


программистом макакой устроится хоть куда-то. Джаву пока учил, накрыл депрессняк от количества ебаных стандартов. Одних только ОРМ интерпретаций с десяток в одном каркасе, пока учил один, второй забыл уже.
344 2112587
>>12583
Иди в Джава-тред, спроси на каком проценте, где 0 это Хэлоу ворлд, а 100 это трудоустроенный джун ты находишься.

Если меньше 50 - го к нам. Если больше - не тупи и грызи дальше Джаву. До победного.

А если ровно 50, то Го или Котлин азазазазазазазазаз
345 2112706
>>12587
Поясни за котлин. стоит его подучить? или кал без задач?
346 2112854
>>12706
Учи
Но без Жабы он нинужон
347 2113035
Кто-нибудь видел этот курс? Интересно, что за курс такой на скринах. Выглядит интересно.
348 2113134
>>13035

> Выглядит интересно


выглядит как 99.97% энтри левел курсов по питончику
349 2113183
Анончики кто шарит в английский помогите новичку ..

Вообщем я делаю игру типа юзеру показывают слово и значение слова а он должен решить правильное ли значение ему показали и нажать 1 если правильно и 2 если неправильно с соответствующим выводом в конце ( Правильный ответ. Неправильный ответ) Подскажите что делать в случае если он ответит неправильно а ответ правильный . Типа он нажимает 1 но это неправильно и поэтому вывод должен быть как 2 понимаете о чем я ? Я че то не могу сообразить никак как это в виде кода представить
350 2113187
>>13134

> Введение в многопоточное программирование: 36 минут


> Модуль threading: 4 часа 39 минут


> Модуль asyncio: 3 часа 36 минут



Ну типа сначала прослушал курс на 10 часов по питону, а дальше уже в эти тему.

Курс смотрится или для профи на других платформах, кто сел на питон. По тому, сколько времени на какую тему выделено, очень похоже.

Ну либо это полный абсурд, а не курс, потому что для начинающих с небольшим бэкграундом в программировании заведомо не подходит.
351 2113191
>>13183
if definition == random_choice1:
__if user_input=='1':
____print("Correct answer")
__else:
____print("Incorrect answer")
else:
__if user_input=='2':
____print("Correct answer")
__else:
____print("Incorrect answer")
352 2113203
>>13183
Тебе нужно брать рандом от keys и потом
if choice == 1 and word != items[random]:
'poshel nahui'
else:
'ok'
353 2113211
>>13203
Т.е. defintion !=
354 2113244
>>13183

> def game


Кого играть-то блять?

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

355 2113275
Ребята, поясните как scrapy делает обычный запрос к странице. Заебался уже. Почему код scrapy.Request(url).xpath(...) у меня выводит ошибку, что мол у реквеста нет xpath. Но если обработчик передавать через другую функцию, и параметр callback, все работает. типа scrapy.Request(url, callback=parse) и уже в parse прописать xpath(...), то все работает. ЧТО за пиздец? Как сделать обычный запрос и обработать его? Почему нужно изъебываться и писать отдельно функцию обработчик?
356 2113279
>>13275
Потому что он асинхронный внутри.
357 2113280
>>13279
т.е. это не баг а фитча? просто сделать я запрос не могу? нужно вот так вот все циклить, если мне нужно несколько разные страниц обрабатывать?
358 2113282
>>13280
Если тебе нужно пару страниц, то бери просто requests.
359 2113297
>>13275

>Почему нужно изъебываться и писать отдельно функцию обработчик


Потому что асинхронные альфачи делают именно так
Омежкам не понять
15870595557370s.jpg6 Кб, 186x200
360 2113302
>>13191
Ок спасибо огромное попробую
361 2113304
>>13297
Альфач не может быть асинхронным. Альфач берет то что ему нужно, когда оно ему нужно, а не когда кто-то пообещал выполнить и случайно не наебал.
362 2113307
>>13304
Альфач асинхронен потому что он ебет сразу десятки и сотни тянок разом, выполняет кучу тасок и усом не ведет, а омежкин ползает на карачках, постоянно блокируясь на I/O и лишь скулит в ответ
363 2113309
>>13307
Это какой-то кабанчик на коллбеках созвоне, а не альфач. К альфачу тянки сами в очередь выстраиваются.
364 2113476
Гайз, зарегался на апворке, там действительно заказы которые мне подходят, итог - Я потратил все свои коннекты и больше не могу подавать заявку на заказ, почти из 20 заказов мне никто не написал, я офигел, все 20 человек тупо проигнорили, хотя я наверно был одним из первых кто ответил на их заказ, так-же у меня всего 7 долларов в час и низкие цены. Теперь что бы брать заказы мне походу нужно платить за коннекты, это шок конечно.
365 2113480
>>13476
Не надо спамить на все проекты подряд, если будет низкий рейт по интервью-офферам то вообще словишь саспенд и пиздос.
Надо хорошенько выбрать, вдумчиво написать писулю и ждать.
366 2113494
>>13480
Реально какой-то бред, я хочу работать, мне насрать где работать, просто возьмите меня.

Я пишу типо такое - i can do this work in one day.

А оказывается за много отзывов еще и бан дадут, слов нет.
367 2113496
Есть ли специальные группы, места, где ты можешь зарегаться, а они за тебя будут искать заказы и с заказа брать доп процент?
368 2113498
>>13494
Потому что там таких хотельщиков мильйон, апворку интересны успешные проекты, где они поимеют профит, а не побольше полудиких индусов.
>>13496
Это тупая идея как для тебя, так и для таких ололо-посредников. В принципе, тебя можно кинуть после успешного выполнения, тогда норм.
369 2113499
>>13496
Галеры и бодишопы, устраиваешься - они продают твои жопочасы.
370 2113551
>>13476
надо было ставить средние для работы по россии 2-3 доллрара в час
371 2113583
>>13551
Лол, вот да. Почему люди думают, что если они поставят цену ниже рынка, то сразу станут привлекательными?

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

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

Я кстати реально знаю случай, когда на работу не взяли чувака, который понравился на собеседовании и всё такое, но запросил слишком маленькую зарплату, половину от ожидаемого.
372 2113617
А вообще много тут успешный случаев было, чтобы на апворк вкатывались, особенно за последние пару лет? На питон или какие-нибудь похожие специальности?
373 2113618
>>13583

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


А это часто делают для распродажи задержавшегося товара: кладут рядом еще дешевле. Умники думают что я буду брать фигню возьму подороже но качественнее.
374 2113623
>>13583
>>13618
Одно дело зарплаты на фулл-тайме и совсем другое хрюланс.
Там есть совершенно разные заказчики. Есть жлобы, которые за копейку удавятся и там проекты по несколько баксов или дрочение индусов сотнями часов с рейтом в 2-3. Есть наоборт, которые заваливают тебя деньгами на ровном месте. Есть средняковые - сколько скажешь, столько и дадут. Но как-то стремно много просить, лол. Надо это искоренять в себе.
375 2113656
>>13583
Дело говорит анонче.

На фрилансе главное заявку к заказу расписывать. Сразу писать, что судя по всему у вас проблема с этим и этим, вот это я уже делал, а это представляю как сделать. И бонусом - у вас на сайте еще вот эта проблема, которой в заказе нет, но я могу тоже поправить.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 1 августа 2021 года.

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

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