Двач.hk не отвечает.
Вы видите копию треда, сохраненную 18 ноября в 20:41.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущая шапка: https://goonlinetools.com/snapshot/code/#154ln61u1e2e5b4kfv6w8r
2 3187556
Добры перакат. Малайчына!
3 3187561
>>187556
Катись нахуй, драник
4 3187615
Ни нормального ООП, ни нормальной функциональщины.
Ни в пизду, ни в Красную Армию питон ваш.
Одним словом - учебный язык людей, не осиливших С.
5 3187686
Пиздец у вас в шапке. Книги 2017 года считаются свежими.
6 3188296
>>187615

>не осиливших С


Но ведь в Си нет ни ООП, ни функциональщины...
7 3188305
>>188296

>в Си нет ни ООП


Да вы затрахали, есть конечно, просто не делается искаропки. Схлопывание хвостовой рекурсии тоже вроде реализовали первыми в си
1.mp418,9 Мб, mp4,
360x640, 0:59
8 3188968
База треда:
Python - язык для школьников и data science.
Работы в разработке на питоне нет.
Питон - плохой язык, который учит плохому.
10 3189250
,fvg
11 3189253
hbhb
12 3189275
>>189242
Понял
13 3190564
>>187471 (OP)
аноны, используют ли хадуп и прочие библиотеки для больших данных в питоне?
имею в виду, не в теории возможность их использовать вместе, а на практике в компаниях?
или хадуп это чисто под жаву
14 3190598
>>190564
Кликхаус ставь. Хуйня это все дедовская.
15 3190617
>>190564
Буквально сегодня через пайспарк перекладывад данные в хадупе.
16 3190749
>>190598
>>190617
спасибо аноны, понял вас
111.png70 Кб, 1773x574
17 3191176
Подскажите почему всегда отрабатывет else, даже если проверяемый файл и значение size в нём не меняются.
image.png143 Кб, 1914x1045
18 3191728
да я ламер не утруждайся в оскорблениях
19 3191729
>>191728
Почему код в окне вывода дублируется?
20 3192036
>>188968

>Работы в разработке на питоне нет.


Работаю джуном.

>Питон - плохой язык, который учит плохому


Например? Что тебе в нем не нравится?
Ну может внем хуево реализовано ооп и нет строгой типизации это да. Но в целом удобноый язык без ебучих {} после каждого чиха. На мой взгляд отделять блок функции или класса табом гораздо лучше чем плодить {эти { ваши {скобки}}}
+ дохуя библиотек и готовыми решениями.
sage 21 3192219
>>192036

>отделять блок функции или класса табом


Невидимым символом, ага.
Петухон давно пора сжечь и обоссать.
22 3192276
>>192219
Бля поставь видимыми
И будет тебе
def foo():
\treturn 'хз что тебе не нравится'
Так то отделять отступами это как раз по человечески. Ты ж не отделяешь абзацы в тексте скобачками. Это фича блин, язык становиться более читаемым. Меня больше возмущала отсутствие строгой типизации по началу.
23 3192456
Причина отсутствия постинга?

>>191728
Это, бля, что?
24 3192477
Как выполнить какую-то тяжелую оперцию (типа запрос к апи) не блоча основной поток? Пробывал asyncio.run() но нихуя
25 3192593
>>192036
Даже Гвидо сказал, что это было ошибкой. Нельзя делать популярным язык с экспериментальным синтаксисом.
26 3192601
>>192036

>и нет строгой типизации


Хуевый ты джун, в питоне строгая типизация.
27 3192603
>>192593

>Нельзя делать популярным язык с экспериментальным синтаксисом


Си когда-то ровно таким и был. Если бы все придерживался твоих охуительных принципов, мы бы до сих пор писали на каком-нибудь монстре типа фортрана.
28 3192618
как запросить code review у анона

какую форму заполнить
29 3192662
30 3192666
>>192276

>Это фича блин, язык становиться более читаемым


Ага, то-то от нее куча народу бомбит
Менее читаемым он становится
31 3192669
>>188305
Ну таким образом ООП и в ассемблере есть и вообще везде, просто не из коробки
Речь то и идёт про из коробки
32 3192671
>>192601
А ты кто по масти?
33 3192696
>>192666

>Ага, то-то от нее куча народу бомбит


Утята, не способные выбраться за пределы си-подобного синтаксиса с нее бомбят
sage 34 3192715
>>192666
Всё так. Но петухонщики восторгаются, хотя не могут освоить даже -тся/-ться. Жаль, что Scala пошла по той же кривой дорожке.
>>192696
Я начинал с Паскаля, он куда лучше этого убожества. И при этом C-like выдержал проверку временем, его базовые идеи прижились.
Lisp ещё лучше, но он не для всех.
35 3192725
>>192715

>И при этом C-like выдержал проверку временем, его базовые идеи прижились.


Да и Питон, как видишь, чувствует себя отлично. Haters gonna hate.
36 3192732
>>192603
Тогда все языки были экспериментальные. Сейчас почти все языки общего назначения используют сиподобный синтаксис, даже, прости г-споди, php, и это удобно, гораздо легче читать программы, даже если языка не знаешь. И тут вдруг питон вылез со своими отступами.
37 3192734
>>192666
Объективно это дело привычки.
Но если принимать во внимание другие области человеческих ремесел, где есть запись информации по определенным правилам: письменность, математика, ноты. Везде блоки информации разделяют отступы, а не скобочки. Таким образом можно сказать, что для человека запись без скобочек лучше, а если тебе бомбит - значит синдром утенка.
38 3192747
>>192734
Хотя ноты наверное не корректно сравнивать, ноты это по сути график, но во всех других случаях скобочек нет и разметка идет в виде отступов. Документы, поэзия - веками отступы использовались без дополнительной разметки - всё это наглядно демонстрирует что скобочки человеку для разметки и читаемости не нужны, лишние символы.
39 3192760
>>192734
>>192747
У тебя инвалидные аргументы. В математике никаких отступов нет, там как раз сплошные скобочки.
В музыке тоже нет отступов, а специальные обозначения для блоков как раз есть. См., например, реприза.
Текстовый документ - это неструктурированные данные, плюс там ещё есть и другие способы выделения: разные шрифты, жирный, полужирный, италик, подчёркивание, заглавные буквы. Давай всё это ещё в программирование притащим.
40 3192789
Коллеги жизненна?
https://www.youtube.com/watch?v=BgxklT94W0I
41 3192882
>>192760
В математике формулы, уравнения и их решения мы компонуем в последовательные блоки по точно таким же правилам как и обычный текст. Для того чтобы разделять мат.записи, формулы и прочее между собой мы скобочки не используем, мы просто следующую формулу или решение с новой строки пишем и всё.
То, что в математике в скобках пишется и в прочей разметке в точно такой же степени и в Питоне в скобочках пишется, речь не об этом не о разметке математических действий например, а о разметке именно синтаксической. В математике нет ни каких специальных скобочек для синтаксического разделения.

>Текстовый документ - это неструктурированные данные


Текст в точно такой же степени структурирован как и код языка программирования. Точно такие же буквы складываются в обозначения неких абстракций, абстракции идут друг за другом и формируют логику. Если ты этого не понимаешь, то так себе ты погромист.
Стикер585 Кб, 250x250
42 3192910
Экспериментировал с запросами на простых форумах всё просто. На бордах тоже ничего сложного по идее не должно было бы быть, на всех WebKitFormBoundary и парсеный-нераспарсеный пейлоад за счёт него выглядит очень по разному. Примерно как ниже показал.
Но вот не знаю как правильного его отправить, навскидку глянул советуют не как дату, а вот как-то так отправлять post(url=url, files=files).

В моем случае всё еще отягощается вот такой пургой с кучей спецсимволов, борда с которой я вожусь не сосач если что.
------WebKitFormBoundaryY1APBYjD
Content-Disposition: form-data; name="e063dvnw♾1of⛵i8k☿4g9z⛢b5txypl"/☰C0x@9☁57⛶Q4bmP
Мало того в конце всё ещё интересней, подсчитывается хэш всей этой пурги name="hash", ошибка в символе приведет к несовпадению хэша. Разбирать как это всё хэшируется пока нет желания. Хотел просто поприколу продублировать запрос, да вот не знаю как правильно прицепить пейлоад. Из того что эксперементировал ничего не вышло. Может что посоветуете?

task: post
board: b
thread: 120234

------WebKitFormBoundaryNaIR1AUuHyKekGAZ
Content-Disposition: form-data; name="task"
post
------WebKitFormBoundaryNaIR1AUuHyKekGAZ
Content-Disposition: form-data; name="board"
b
------WebKitFormBoundaryNaIR1AUuHyKekGAZ
Content-Disposition: form-data; name="thread"
120234
43 3194041
>>192036

> нет строгой типизации


обычно принято говорить сильная-слабая типизация

В питоне сильная типизация. Для сравнения, в JS слабая типизация.

Ещё есть статическая-динамическая типизация. В питоне динамическая. Надеюсь ты не тот статикошиз, что тут по тредам бегает.

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

Ещё принципиальный минус, что нет декларации типов. Легко сделать ошибку из-за этого, читаемость страдает. Вот в JS есть декларации.

Ещё минус в области видимости. В питоне минимальная область видимости это функция, так внутри питон устроен. Сейчас все пришли к тому, что удобнее, когда может быть область видимости блок, внутри цикла, if-else и т.п. В том же JS так уже давно. Но в питоне это жёстко встроено, хрен уже переделаешь

бесскобочность спорное решение, и плюсы есть, и минусы. Пожалуй я бы предпочёл, чтобы они были. Если ставить скобки в стиле Java, они уже не перегружают код.
44 3194045
>>192696
Когда пишешь обычный код, отступы вместо скобочек норм, привыкаешь. Но вот этот подход ломает возможность в коллбэках функции-классы определять. На самом деле ограничивает. И косяки иногда бывают из-за отступов, стандартная история, это когда вложенные if, а потом else, который может легко слететь при рефакторинге

В общем сомнительная фича языка
45 3194047
>>192732

>Сейчас почти все языки общего назначения используют сиподобный синтаксис,


У го другой синтаксис

А php старый язык, его создавали тогда, когда в мэинстриме были си-подобные языки, в то время это C/C++/Java, причём делали не из расчёта на то, что серьёзно что-то будет, не продумывали. Его писали на Си, поэтому идеи тоже взяли от си, как проще
46 3194476
>>194041

>В питоне сильная типизация.


Обьясните простыми словами в чем смысл такой классификации, что она на самом деле отражает и для чего нужна. В википедии написано что эти понятия придумали независимо друг от друга два дида-основателя и их трактовки что называть сильной типизацией разнятся, так что когда кто-то говорит "слабая\сильная типизация" надо во-первых уточнить что он имеет в виду, чью трактовку, а потом спросить зачем он это вообще сказал.
47 3194506
>>194476

>простыми словами


В жыесе ты можешь сложить число с строкой, интерпретатор автоматически сделает приведение типов. В питоне получишь TypeError.
48 3194644
>>194506
Но в питоне я могу сложить целое число с флоат, разные типы, не такая уж и "сильная" получается типизация.
49 3194677
>>194644

>Но в питоне я могу сложить целое число с флоат, разные типы, не такая уж и "сильная" получается типизация


А есть языки в которых нельзя? По-моему в традиционных языках во всех можно. Более спорный момент, что должно быть результатом выражения
3/2
а именно 1 или 1.5
но числа это своя специфика вообще, всегда

А вот прозрачное переделывание строки в число и наоборот это уже явный признал слабого типа.
50 3194695
>>194677

>А есть языки в которых нельзя?


Ada. И если ты думаешь что это какой-то забытый язык, то нихера, критические системы для космоса, авиации и прочего транспорта пишутся буквально на 4х языках: си, кресты, ада и ассемблер. Ада только в США правда.
51 3194707
>>194695

>си, кресты, ассемблер


Это всё ассемблер и его синтаксический сахар.

>ада


Ну судя по всему какое-то невероятное говно без задач, которое сделали только по заказу министерства обороны сша, когда какому-то сапогу пришло в голову что у армии должен быть свой супер мега язык. ПОТОМУЧТО.
52 3194714
>>194707

>Это всё ассемблер и его синтаксический сахар.


Вебмакака детектед.
53 3194716
>>194695

>Ada


Ну давай всё-таки современный мало-мальски массовый язык. Современный, это который после 1985-90 года взлетел, а не говно мамонта из 60х
54 3194799
>>194677

>Более спорный момент, что должно быть результатом выражения 3/2



Ничего он не спорный. Мы же к определенному типу данных применяем определенный алгоритм. Если этот алгоритм называется деление без остатка, то мы и получим тип данных который ждем. А вопрос "типизации" насколько я понял сформулирован таким образом "как себя ведет язык если всунуть другой тип данных туда где ожидается не он". Но это всё равно хуйня какая-то и глупость, если из этого правила есть куча исключений. Впрочем похуй.
55 3194877
>>194716

>Ada


> First appearedFebruary 1980


а он, оказывается, не такой уж и старый, я думал, что его ещё до C разработали, в эпоху кобола
изображение.png37 Кб, 758x411
56 3195774
Всем ку гайз. Это я - олд. Олды на месте.

Начал тут питонировать, и встал вопрос. На каком основании классы "не видят" друг друга, если они объявлены внутри другого класса? Почему так?!

При этом, если эти классы не являются "подклассами" другого класса (т.е. объявлены не внутри класса, а просто в файле - хз как правильно сказать), то все нормально - они могут "видеть" друг друга. Что я делаю не так?!

Прошу строго не судить - питонирую не так давно.
57 3195793
>>195774
По той же причине по которой ты из внутреннего класса не сможешь достучаться до обычного атрибута, объявленного в классе Video.
Классы тут не при чём.
for1.png223 Кб, 1920x1080
58 3195798
Сап прогачам! Недавно вкатился в питонирование, и до нынешнего момента вполне успешно постигал тонкости этого занятия.
Сейчас же полнейший затуп. Решаю задачу по циклу "for". По условиям задачи дается список из чисел, нужно его перебрать и разделить на простые и составные числа, и записать их в новые списки primes и not_primes, соотвественно. Написал рабочий код, который, приводит совершенно не к тому результату который требуется (все на скрине). Вобщем уповаю на вашу помощь! Сам уже три час над этим колдую и ничего не выходит(((
59 3195812
>>195798
if i % j == 0: break; else: is_prime = False
поменять на
if i % j == 0: is_prime = False

Если хочешь делать break из цикла, чтобы не выполнять лишние итерации, то перед break'ом надо сначала занести число в список 'not_primes'

>>195793
Да блин, это пипец. Хочу сложить все в один класс, чтобы было красиво, но не получается. Как поступить? Отказаться от "вложенных" классов и все классы делать "внешними"? Я не понимаю...
for2.png219 Кб, 1920x1080
60 3195842
>>195812
Ага, так и думал, что где-то в этом месте проблема.Спасибо! Стало лучше, списки выводятся, однако в списке простых чисел какая-то ересь все равно. Все числа, кроме 3 и 15 продублированы по нескольку раз, а число 2 так вообще не вывелось.
61 3195867
>>195842
У тебя сейчас алгоритм следующий:
1) взять некоторое число i (от 2 до 15)
2) если число i не является простым (т.е. когда срабатывает условие i % j == 0), то добавить его в список 'not_primes' и перейти к следующему i (т.к. внутренний цикл 'for j ...' прерывается командой break)
3) при этом, число i будет добавляться в список 'primes' каждый раз, когда текущее число j не является делителем i (т.е. когда условие i % j == 0 не срабатывает) - из-за этого некоторые числа в списке 'primes' повторяются несколько раз, и из-за этого в 'primes' попало число 9, которое не является простым (проверили 9 % 2 - 2 не является делителем 9, добавили 9 в 'primes', проверили 9 % 3 - оказалось, что 9 - не простое число, добавили 9 в 'not_primes', перешли к следующему числу - 10)

+ ты убрал проверку значения переменной 'is_prime' и сейчас никак ее не используешь

Как должно быть:
1) Берем некоторое число i и в самом начале считаем, что оно простое, пока не доказано обратное, т.е. is_prime = True
2) Среди чисел j таких что (j = от 2 до i): смотрим, есть ли такие числа j, что j является делителем i.
3) Если хотя бы раз выполнилось условие i % j == 0, то выходит, что число i не простое: is_prime = False
4) Если мы смогли пройти весь внутренний цикл 'for j...' и условие i % j == 0 не выполнилось ни разу, значит число i простое - is_prime осталось True
5) Проверка значения переменной is_prime должна проходить вне внутреннего цикла 'for j...' (т.е. после него)

P.S.:
1) Проверять от 2 до i нет смысла, т.к. делитель числа i не может быть больше половины числа i (т.е. разумно проверять только от 2 до i // 2)
2) Если было установлено, что число i не простое (is_prime стало False), то можно делать break из внутреннего цикла 'for j...'
62 3195887
>>195812
Вот так можно через Video.Data, но не знаю сработает ли для тайпхинтов.

Фигню делаешь, скорее всего. Так на Питоне обычно не пишут.
Создай отдельные вынесенные классы и инжекти их в init.
for3.png205 Кб, 1920x1080
63 3195892
>>195867
От души, чел! Вот про проверку is_prime вне цикла 'for j...' 'это ты в точку попал. Я этот момент в глаза продолбил!
Все, теперь все запахало как нужно!
64 3195898
>>195887

> Вот так можно через Video.Data


Интерпретатор все равно ругается на тайп-хинты для аргументов и возвращаемого типа. Внутри тела метода уже можно использовать Video.Data, но это хуйня какая-то - если поменять имя класса Video на другое, то придется и в тело метода вносить правки.

Короче, действительно надо эти классы вынести и не ебать мозга.
65 3195899
>>195898
зачем вообще писать на питоне с типами? все преимущество языка в том что в нем нет типов
66 3195907
>>195899
Хз, я как питонист видимо еще не дорос до уровня, на котором используют такое преимущество, как отсутствие типов. А тайп-хинты я для себя прописываю, чтобы понимать что происходит.
image.png129 Кб, 718x727
67 3195910
>>195899
Как определять тип входящего параметра будешь? По запаху?
68 3196085
>>195910
Зачем пихать неизвестно что во все дырки?
Вот у меня есть какой-нибудь класс и метод который что-то делает с каким-нибудь типом данных.
Если в этот класс прилетит рандомная хуйня, которую там никто не ждет и так исключение высрется, это же ошибка.
А если у нас тут полиморфизм, то чекаем тип или есть прекрасные именные атрибуты, например.
Почему все так ноют про эти типы? Я думаю это всё из за того что в питухон приходят из других языков со своим уставом и вот так привыкли делать, а надо по-другому, надо ПИТОНИЧЕСКИ.
69 3196332
>>195899

>зачем вообще писать на питоне с типами?


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

Декларации крайне полезны

Это промежуточный вариант между статической типизацией с массой своих минусов и динамической
70 3196406
>>196332
Это мега бесячка, когда написано str, а тебе прилетает int
Аж трясёт от такого!
71 3196564
>>196406

>когда написано str, а тебе прилетает int


Меня вообще удивляет, как вы так код пишете, что у вас контракты нарушаются внутри кода, ладно если внешние апи какие-то долбите.
72 3196602
Заставляют переучиваться с джавы на питон и переписывать автотесты, как же не хочется...
73 3196611
>>196564
Действительно. Это как надо по клаве лицом кататься чтобы такое напитонировать.
74 3196624
Почему тут срабатывает __init__ метод класса В?
Если я правильно понял, super() это сокращение от super(__class__, self).
Вызываем конструктор класса Х().
Интерпретатор ищет метод __init__ сначала в Х (согласно MRO). Не находит, идет в класс А.
В классе А срабатывает __init__, который в свою очередь вызывает super(A, self). self в данном случае это объект класса Х, поэтому поиск идет в MRO объекта от класса Х, но после класса А, т.е В?
https://www.online-python.com/d6fB4AJEiS
75 3197352
>>195910
Я не знаю, я пишу на языке с типами, это скорее тебя нужно спросить, зачем ты выбрал питон
76 3197354
>>196332
Это никакой не промежуточный вариант, это и есть попытка сделать типизацию в языке, который для этого не предназначен. Может лучше тогда взять язык с типами?
77 3197380
Сап, погромач
Вопрос общий и нубский, говорю сразу. Не вкатун, делаю по фану, но перфекционизм ебет

Есть задача - читать некий текстовый файл (10+ мб) с периодичностью 0.5-1сек и собирать по 3 похожие строки с ключевыми словами в объекты для последующего использования.

Как делаю сейчас: читаю последние 50кб файла, фильтрую их в цикле по ключевому слову, проверяю все ли собрано для объекта, создаю объект класса и распихиваю данные из строк по его переменным

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

С одной стороны, 2 цикла получается, делающие почти одно и то же. С другой стороны, не должно быть проблем с тем, что какие то данные для объекта проебаны по той или иной причине

Как вообще это делать правильно то в итоге? Для текущей задачи допустим похуй, но если надо весь файл потом чекнуть, создавать из него массив выглядит тупо
78 3197381
>>197380

>фильтрую их в цикле по ключевому слову


Ах да, забыл уточнить, что каждый объект должен состоять из данных из 3х строк, которые идут всегда в одном порядке, но между ними дохуя левых строк
79 3197398
>>197380

>читаю последние 50кб файла


Не понял, почему читаем именно последние 50кб. Или ты читаешь файл кусками по 50кб от начала до конца?

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

В общем, чтобы было понятнее, нужен отрывок исходного кода.
80 3197451
>>197380
Правильно будет наверное конкурентности навернуть. Один тред читает (кусками) файл и складирует их в очередь. Второй тред таскает из очереди кучки строк и обрабатывает их.
81 3197468
>>197380
keyword, result, tmp = "huy", [], []
with open('my_file.txt') as f:
....for line in f:
........if keyword in line:
............tmp.append(line)
............if len(tmp) == 3:
................result.append(tmp.copy())
................tmp.clear()
....if tmp:
........result.append(tmp.copy())
print(result)
82 3197555
>>197468
ну вот я так и делаю. Только у меня 3 условия if keyword in line, потому что у меня 3 варианта ключевых слов. В принципе, поскольку порядок строк не меняется, я в теории могу потом по полученному массиву проходится каждые 3 элемента и получать свои 3 строки и разбивать их на объекты
Но что если какая то строка проебется или еще че

>>197398

>почему читаем


Ну мне же нужны только свежие строки. Я не хочу читать весь файл из 110к строк или больше. Ну верней хочу, но этот функционал будет позже и в ручном режиме. Сейчас мне надо реализовать автоматическое чтение каждую секунду на предмет новых строк (конечно я не читаю каждый раз, я проверяю размер сперва)
83 3197567
>>197555

>Только у меня 3 условия if keyword in line, потому что у меня 3 варианта ключевых слов.



keywords = ("huy", "pizda", "djigurda")
if any(kw in line for kw in keywords):
....print('this')
84 3197595
>>197567
Это понятно. Ну в общем как я понял, ответ заключается в том, что лучше сперва фильтровать строки в массив, а уже потом работать с этим массивом, а не пихать все в массив или наоборот сразу обрабатывать строки при парсе файла

А то у меня щас как у тебя в прошлом посте, только в условиях сразу разделяются строки на нужную инфу и присваиваются переменным временного объекта, после чего при наличии всех переменных создается объект класса и добавляется в итоговый массив. И мне кажется это не надежно
85 3197608
>>197595
Чел это всё индивидуально. Главное помни что у тебя файл открыт всё это время не пихай туда ничего что не касается этого файла и извлечения информации из него. Нашлось три строки делай break файл сам закроется и уже дальше продолжай.
86 3197669
>>196624
Супер при множественном наследовании идет по цепочке MRO.
87 3197698
>>197555

>Ну мне же нужны только свежие строки.



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

def read_file(file_path, start_position=0):
....keywords = ("huy", "pizda", "djigurda")
....result, tmp, last_position = [], [], 0
....with open(file_path, 'r') as f:
........f.seek(start_position)
........line = f.readline()
........while line:
............if any(kw in line for kw in keywords):
................tmp.append(line)
................if len(tmp) == 3:
....................result.append(tmp.copy())
....................tmp.clear()
............last_position = f.tell()
............line = f.readline()
....if tmp:
........result.append(tmp.copy())
....print(result, sep="\n")
....return result, last_position

file_path=r"C:\Users\Karasik\Desktop\111.txt"
result, pos = read_file(file_path)
input("\n добавь в файл строку с ключевым словом и нажми клавишу")
read_file(file_path, start_position = pos)
87 3197698
>>197555

>Ну мне же нужны только свежие строки.



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

def read_file(file_path, start_position=0):
....keywords = ("huy", "pizda", "djigurda")
....result, tmp, last_position = [], [], 0
....with open(file_path, 'r') as f:
........f.seek(start_position)
........line = f.readline()
........while line:
............if any(kw in line for kw in keywords):
................tmp.append(line)
................if len(tmp) == 3:
....................result.append(tmp.copy())
....................tmp.clear()
............last_position = f.tell()
............line = f.readline()
....if tmp:
........result.append(tmp.copy())
....print(result, sep="\n")
....return result, last_position

file_path=r"C:\Users\Karasik\Desktop\111.txt"
result, pos = read_file(file_path)
input("\n добавь в файл строку с ключевым словом и нажми клавишу")
read_file(file_path, start_position = pos)
88 3197842
>>197608
Не не, я закрываю файл в функции чтения, когда получаю 50кб последних строк, только потом передаю их в парсинг целиком как есть. Если длина файла не меняется, то и чтение не происходит. Но тут я кстати не уверен, насколько надежно это работает

>>197698

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


Да, этот вариант я тоже рассматривал. Но тут же получается, что при каждом запуске будет 1 раз читаться весь файл. В принципе, наверно это не проблема. Но в чем преимущество от чтения с конца заданного кол-ва байт?

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

Типа будет же функция, парсящая весь файл и собирающая вообще все строки в файл проги для подсчета и хранения статистики по запросу (нажатию кнопки). И логично, что при поиске новых строк для текущих функций проги мне надо будет добавлять их в этот файл на лету наверно тоже. Не делать же мне при каждом запуске проги сверку статистики в файле проги с файлом в котором я ее собираю. Или делать?
89 3197909
>>197842
Когда ты читаешь файл с определенной точки, ты не читаешь байты которые были до этой точки. Записывай дату изменения своего файла чтобы знать менялся он или нет. записывай положение курсора чтобы читать только новые байты.
90 3197935
>>197909
Это я понимаю. Но в таком случае, мне же нужно будет сохранять готовые данные в постоянный массив (между тиками чека файла) и убирать оттуда устаревшие? В принципе, получается на этом этапе устаревшие данные можно сохранять в свой файл для статистики. Звучит логично

Потому что щас получается у меня все просто срабатывает заново каждые 0.5сек (кроме чтения, если длина файла та же)

>Записывай дату изменения


Из метаданных? Это не работает, я пробовал. По всей видимости файл остается открыт владельцем какое то время после записи
91 3198062
>>197935
Может, стоит проверять контрольную сумму файла чтобы отслеживать факт его изменения?

мимо нешарящий в погроме, где-то слышал про такую штуку, как контрольная сумма
92 3198219
>>198062
Ужывай функцыю hashlib.md5()
93 3198236
>>198219

> Ужывай


Это как?
94 3198467
>>198236
from hashlib import md5

...
kantrolnaja_suma = md5(binarny_fajł)
95 3198476
>>198467
Понял, спасибо.
96 3198529
>>198467
>>198476
Если ты прочитал файл и запомнил положение указателя tell(), а потом снова открыл файл и после этого положения появились ещё байты, то очевидно что файл дописали. Нет блядь хочу каждый раз читать 10мб файл целиком и высирать хэш.
Вот кто тупее мовный клоун или тот кто его слушает?
97 3198535
>>198529
Ужывай функцыю hashlib.md5()
98 3198608
>>198529
А як у файле змянілі некалькі байтаў? Пацерлі і дапісалі столькі ж новых? Прапанаваны табой мэтад не ўлічвае гэты варунак. Яго можна ўжыць у якасці аптымізацыі перад выклікам md().
99 3198613
Насколько продолжительный должен быть опыт питонирования, чтобы использовать следующую букву в письменной речи?

> ў

100 3200132
Запускаю из питона js-код вот так:
context = execjs.compile(combined_code)
Собственно более простой у меня так и работал. Но есть те в которых есть объект window, естественно из браузера запущенный через хтмл всё работает. А как сделать чтоб всё это запускалось из питона.

Понятно есть жуткие костыли в виде селениума. Но можно без этого может как-то адаптировать код? Я хз.
101 3200523
>>198529

А как в файле изменили несколько байтов? Потерли и дописали столько же новых? Предложенный тобой метод не учитывает это условие. Его можно применить в качестве оптимизации перед вызовом md()
102 3201039
>>200523
Анон которому это надо писал выше, что сейчас читает последние 50 байт файла и вообще, похоже что у него в файл только дописывают, непонятно откуда набижали желающие каждый раз весь файл целиком читать чтобы хэш считать. Хэш считать это вообще самый последний варик, если ни каких других не осталось. Все софтины которые я видел как могут изьябываются чтобы полностью файл не прочитывать, а то это же пиздец. Представляю анон наслушается советчиков и у него скрипт будет каждую секунду 10мб файл перечитывать. который просто дописывается.
103 3201858
Чем больше изучаю питон - тем больше проигрываю в голос с этого недоязыка.
По пунктам.
1. ООП нормального нет.
2. Приватных методов и аттрибутов нет, есть какая-то нелепая хуета с запеканием имен.
3. Скорость говно говна
4. Зачем-то сделали возможность добавлять на ходу свойства и методу экземплярам класса. Результат - дичайший жор памяти. Если хочешь нормально - юзай __slots__. Вопрос - а какого хуя сразу не сделали __slots__ изкаропки? А хуй его знает.
5. Какие-то невнятные рывки в сторону ФП с костылями.
104 3201897
>>201858
сначала подумал ты про джаваскрипт
105 3202864
>>3202648 →

>2. Приватных методов и аттрибутов нет, есть какая-то нелепая хуета с запеканием имен


В крестах есть приваты, но (по крайней мере по гугловому стандарту) их все равно надо префиксить всякой хуйней. Вот незадача.
106 3202866
>>202864

>префиксить всякой хуйней


Например?
107 3202919
>>201858
сунул тебе пипиську, обтекай.
Не те задачи написал. Каждый язык решает свои задачи. Если хочешь писю быстро-быстро сувать в шлюху процессор - юзай с++ или си
108 3204154
Не нашел нейротред

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

На самом деле, все уже готово. Откопал весь код (но не модель и датасет) на собственном гите.

Никогда не искал датасеты в интернете. Вот нашел, допустим, что-то:
https://www.kaggle.com/datasets/rohansahana/gender-voice-detection

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

Так что. Там где-то написано, как эти файлы получились и я просто в глаза долблюсь? Или это общеизвестное знание?
109 3204271
>>204154

>ищу датасет


Ты явно даже не понимаешь что это такое. "Датасет" может быть чем угодно. Реквест "ищу датасет" читается как "ищу хз чё"

>нигде не написано, как получился csv


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

>Не нашел нейротред


Попробуй следующий раз искать не жопой, на дваче отдельная доска для этого есть.
110 3204312
>>204271

>Ты явно даже не понимаешь что это такое. "Датасет" может быть чем угодно. Реквест "ищу датасет" читается как "ищу хз чё"


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

>на дваче отдельная доска для этого есть


Если ты про /ai/ то там в основном готовые юзают

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

А тебе спасибо за охуенную любовь к вытиранию соплей ньюфагам, ну прям охуенно помог.
111 3205421
люблю я ваш питон, всё на нём можно делать. Был бы девушкой отдался бы разработчику.
140301121415.jpg180 Кб, 2000x1500
112 3206252
Проблема такая, открываю в Вижиал Студио много всякого кода из разных папок, но постоянно нужно прописывать или прямой путь к файлу или через костыль.
Потому что по умолчанию папка проекта например c:\Studio и он все результаты работы прёт туда и она же является путём по умолчанию для всякого такого
with open('image.png', 'wb') as out_file:
out_file.write(pic)


Можно как-то настроить VS чтоб если файл image.png находится рядом с кодом, то оттуда же брался и путь.

Если честно давно заебала эта тема, хочешь скрипт проверить по пути с\хуй\пизда и надо его вручную раз за разом забивать или использовать свою функцию. Если открываешь *.py двойным кликом, то естественно пути указывать не надо, а вот в VS надо. Подскажите можно как-то пофиксить?
1000014584.jpg28 Кб, 821x428
113 3206993
>>206252
Если у тебя есть директория проекта C:\Studio, то ты и не должен ничего снаружи открывать и ничем снаружи пользоваться. По хорошему ты должен иметь виртуальную среду на уровне своего проекта созданную через venv или poetry, чтобы все зависимости находись внутри .venv а скрипты запускаемые в этом проекте тоже были в корне проекта или в поддиректориях с файлами __init__.py
114 3207165
Кто-нибудь работал с aiogram?
115 3207179
>>207165
Может быть
116 3207612
>>187471 (OP)

Посоны я слегка тупой и на питоне на досуге всякой хуnтой страдаю, самоук во все поля.

Решил вот скачиватель видосов с ютаба для Андройда на питоне запилить.
Короче суть в том что для конвертов видосов yt-dlp использует ffmpeg, который, как я понял, он не может на андройде с нихуя просто так юзануть.

Ну я поседел попердел в chatgpt, погуглил чё как, наткнулся на вот это:
https://github.com/ArqiesAr/FFmpeg-Kit-Python
Я так понял, что надо скомпилять ffmpeg под нужные архитектуры и с помощью враппера потом его запускать.
Или же не нужно и там уже на этом гите всё что нужно есть?

Ну в принципе я вообще нихуя не понял и методом рандомного тыка перепробовал всякое.
Скачал с этого гита /com/ с /android/ffmpeg-kit-android-lib/src/main/java/com/, запихнул в свою папку с сурс кодом.
Нихуя.

>from jnius import autoclass


>from jnius import



>FFMPEG = autoclass('com.sahib.pyff.ffpy')



выдаёт ошибку:

FFMPEG = autoclass('com.sahib.pyff.ffpy')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\...\Python\Python312\Lib\site-packages\jnius\reflect.py", line 209, in autoclass
c = find_javaclass(clsname)
^^^^^^^^^^^^^^^^^^^^^^^
File "jnius\\jnius_export_func.pxi", line 22, in jnius.find_javaclass
File "jnius\\jnius_utils.pxi", line 79, in jnius.check_exception
jnius.JavaException: JVM exception occurred: com/sahib/pyff/ffpy java.lang.NoClassDefFoundError


В конце описания он там пишет:
Building (Skip this part, its for myself lol)
Run android.sh at project root directory to build ffmpeg-kit and ffmpeg shared libraries.


Что (вроде) ничего самому строить не надо. Короче я вообще хз.
Что в этом сраном FFMPEG = autoclass('com.sahib.pyff.ffpy') должно находится то блеать?
.so либы, *.class джава классы? Пиздец, помогите тупому. Умоляю.
Как какать?
116 3207612
>>187471 (OP)

Посоны я слегка тупой и на питоне на досуге всякой хуnтой страдаю, самоук во все поля.

Решил вот скачиватель видосов с ютаба для Андройда на питоне запилить.
Короче суть в том что для конвертов видосов yt-dlp использует ffmpeg, который, как я понял, он не может на андройде с нихуя просто так юзануть.

Ну я поседел попердел в chatgpt, погуглил чё как, наткнулся на вот это:
https://github.com/ArqiesAr/FFmpeg-Kit-Python
Я так понял, что надо скомпилять ffmpeg под нужные архитектуры и с помощью враппера потом его запускать.
Или же не нужно и там уже на этом гите всё что нужно есть?

Ну в принципе я вообще нихуя не понял и методом рандомного тыка перепробовал всякое.
Скачал с этого гита /com/ с /android/ffmpeg-kit-android-lib/src/main/java/com/, запихнул в свою папку с сурс кодом.
Нихуя.

>from jnius import autoclass


>from jnius import



>FFMPEG = autoclass('com.sahib.pyff.ffpy')



выдаёт ошибку:

FFMPEG = autoclass('com.sahib.pyff.ffpy')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\...\Python\Python312\Lib\site-packages\jnius\reflect.py", line 209, in autoclass
c = find_javaclass(clsname)
^^^^^^^^^^^^^^^^^^^^^^^
File "jnius\\jnius_export_func.pxi", line 22, in jnius.find_javaclass
File "jnius\\jnius_utils.pxi", line 79, in jnius.check_exception
jnius.JavaException: JVM exception occurred: com/sahib/pyff/ffpy java.lang.NoClassDefFoundError


В конце описания он там пишет:
Building (Skip this part, its for myself lol)
Run android.sh at project root directory to build ffmpeg-kit and ffmpeg shared libraries.


Что (вроде) ничего самому строить не надо. Короче я вообще хз.
Что в этом сраном FFMPEG = autoclass('com.sahib.pyff.ffpy') должно находится то блеать?
.so либы, *.class джава классы? Пиздец, помогите тупому. Умоляю.
Как какать?
117 3207714
>>207179
Пока не вкурил корутины.
http://pastie.org/p/3zdWJUzKslXseQgD7vC0lD
Вот тут я совсем ересь делаю, или не совсем?

Что я хочу:
Управлять ботом в тг через другого бота. Хочу, чтобы бот остановился, если прочитает в файле единичку.
Для этого корутина должна остановиться.

Я беру корутину, в ней запускаю корутину с ботом, а затем бесконечно проверяю файл. Если надо - останавливаю корутину с ботом.
Проблема в том, что бот не останавливается от task.cancel(). Только от task.result().
Так можно?
118 3207732
>>207612

>Как какать?


Это ж Kivy.

Скачивалку он решил сделать. Ха!
Пиши лучше CRUD-ы и не выебывайся.
Из-за редкости этой штуки, нагуглить ничего нельзя.
119 3207746
>>207732

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

Но поскольку я в гитхабе умею разве что склонировать гит и запустить setup.sh, думал может тут кто шарит и сразу своим прошаренным оком поймёт что да как там надо тыкать, чтоб нужные библиотеки высосать.
120 3207827
>>207714
Да можно, добавь ещё try except вокруг result()
121 3208406
Проверка абу пидор или нет.
122 3208412
>>208406
О бля отправилось. Кароче есть свежие книжки хорошие на русском? Читал Eric Matthes - Python Crash Course на ангельском, и чет чем дальше тем больше понимал что какое то туманное говно в голове образуется(остановился на 18 главе), возможно дело не в языке. Спрашиваю чтобы 600 страниц говна не читать. Пока зырю автоматизацию рутинных задач, но чет она старая, может чет новее есть. С меня тонны нефти.
123 3208591
>>208412
Тебе не нужна свежая, потому что ничего значительно не изменилось с момента выхода той книги.
124 3208860
>>208591
Понял, спасибо.
125 3209598
Аноны, подскажите что именно прочитать. При запуске скрипта появляется вопрос "Ввести данные вручную(1) или автоматически(2), по умолчанию автоматически" и юзер должен ввести ответ или просто нажать enter. При любом ответе должны получится две переменные
126 3209600
Как можно добавить в каждый элемент списка кортежей [(val1, val2, val3), (val4, val5, val6), (val7, val8, val9)] значение val10, чтобы получилось [(val10, val1, val2, val3), (val10, val4, val5, val6), (val10, val7, val8, val9)], не разбирая каждый элемент в цикле? Что-то типа zip бывает для таких случаев?
127 3209763
>>209600
Кортеж - неизменяемый объект, лалка.
list1= [(val1, val2, val3), (val4, val5, val6), (val7, val8, val9)]
list2 = [tuple([val10] + list(x)) for x in list1]
128 3210212
>>201858

>ООП нормального нет.


define нормальное ООП

> Приватных методов и аттрибутов нет


define "приватные методы и аттрибуты"

> Скорость говно говна


По сравнению с чем?

> Зачем-то сделали возможность добавлять на ходу свойства и методу экземплярам класса?


Динамическая типизация ради этого и затевалась

> Какие-то невнятные рывки в сторону ФП с костылями.


Двачую, за лямбды по рукам бьют
129 3210215
>>210212

>Двачую, за лямбды по рукам бьют


Кто и почему?
130 3210254
>>210212

>define "приватные методы и аттрибуты"


методы и аттрибуты к которым ты не можешь получить доступ снаружи класса
131 3211684
Делаю телеграм-бота.
Сейчас прикручиваю к нему апи.
Как мне защитить хостинг от бомбардировки запросами, если вдруг его кто-то найдет?
Ничего секретного я пока хранить не планирую, однако, как сделать так, чтобы на запросы только я получал ответ?
132 3212320
>>211684
Через декораторы к функциям, которые запускаются на команды.

https://dpaste.org/7exwB
133 3212585
Есть некая функция которая принимается в себя объекты классов. Нужно проверить, есть ли в классе функции, которые вызывают остановку эвент лупа. Может ли пистон в такой уровень рефлексии?
134 3212791
>>208412

>книжки


>>208412

>600 страниц говна


>>208412

>(остановился на 18 главе



Нет смысла задрачивания книжек.
Достаточно туториала по базе https://www.w3schools.com/python/
Ну и по концепциям основным чтобы понимание было.

Книжки дрочить можно когда устроишься на работуа такое вообще вряд ли случится, если быть честным
image.png43 Кб, 639x394
135 3212971
>>212585

>есть ли в классе функции, которые вызывают остановку эвент лупа


"остановку" в смысле просто авейт?
136 3213249
>>212971
Молодец, Анон. Просто взял и сделал
137 3213288
>>212971
Нет, не то, нужно проверить есть ли в коде класса или функциях/методах, которые он вызывает asyncio.get_event_loop().stop() в любом виде
image.png145 Кб, 647x1288
138 3213674
>>213288
Как-то так наверняка можно
image.png1,3 Мб, 1500x1545
139 3215381
Заебали в вакухах писать "автоматизация на питоне". Да что это значит, блять?
Написать однострочник чтоб упаковывать в архив и перетаскивать на сетевую шару? Что?
140 3215461
>>215381

>вакухах


Чел, думаешь у тебя есть шансы устроиться куда-то, если ты:
не оканчивал вузик
не олимпиадник
не имеешь коммерческого опыта по спецухе 1, желательно 2 года

?
141 3215744
>>215461
Знаю большое количество таких людей, вопросы?
WOJAK-POINTING-MEN-meme-6.png148 Кб, 1080x967
142 3215751
>>215744

>Знаю большое количество таких людей, вопросы?


Вопросов нет, есть сомнения.

500 - 1000 откликов на вакуху как бэ.
143 3215790
>>215751
1. Один кандидат-вкатун откликается не на одну вакансию.
2. Качество как минимум половины из этой тысячи - супер хуевое.
3. Всегда можно накрутить.
144 3215963
>>215461
1. Оканчивал вузик.
2. Школу закончил без троек.
3. Имею коммерческий опыт от продажи пк и сборок их до построения скс-ок на виланах, линуксового админства, телефонии, виртуалок, контейнеризации, сиайсиди пайплайнов, написания ванлайнеров на баше.

Я просто спросил до какой степени копать питон чтоб этого хватило дево-псу.

Где твой бог теперь?
145 3216140
>>215963

>Я просто спросил до какой степени копать питон чтоб этого хватило дево-псу.


Ну если ты девопс, то очевидно же, что подразумевают под автоматизацией - написание скриптов для всех девопс-задач (разворачивание, CI/CD, инфраструктура, облака, логирование, и т. д.)
146 3216207
Смарите, надо извлечь кое-что из xlsx файла. Строчек не так много, всего 100к, но ебейшее количество колонок.
Делаю через openpyxl, все очевидные и гуглящиеся оптимизации включены. Скорость терпимая, но на 35к в несколько раз замедляется, хотя там нет никаких отличий на вид, память не течет.
И хуй знает, как его профилировать или дебажить, как даже найти, на какой строчке начинается. Весь код внутри, сводится к:
for i, row in enumerate(sheet.iter_rows(values_only=True)):
pass
147 3216256
>>216140
для всего этого есть ямлики, ансибл, терраформ, там своя логика и свой синтаксис. плюс можно немного это всё прикостылить башем. Видимо, подразумевается, что костылить нужно питоном.
148 3216734
>>216256

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


Да.
149 3216921
>>216207
Ты строки извлекаешь целиком или проходишь каждое значение ячейки? И как открыт у тебя файл? В load_workbook указано read_only=True?
150 3216923
151 3216927
>>216923
Мы вам даже не перезвоним.
130713550.webp10 Кб, 630x630
152 3217110
>>216927

>Мы вам даже не перезвоним.

153 3217310
Есть готовый скрипт где-нибудь, который бы читал хэш файла с одной машины раз в 5 минут, и при его изменении копировал бы на другую машину?
154 3217343
>>217310
На Баше 1 строчка:
f() { cp --update src.txt dest.txt; sleep 1800; f; }; f
155 3217407
>>217343
Твой скрипт сегфолтнится, чел
image.png59 Кб, 804x613
156 3217423
>>217343
А нахуя мне Баш, если тред по Питухону то?

>>217407

>сегфолтнится


Расшифруй.
158 3217491
>>217407
Да вроде не должен.

>>217423

>А нахуя мне Баш, если тред по Питухону то?


Потому что такие задачи обычно делают через баш скрипты.
159 3217494
>>217491

>Да вроде не должен.


>бесконечная рекурсия


Ты даже не спавн процесса делаешь, а в одном процессе стек дрочишь. Разве не?
160 3217509
>>217494
Да, ето так...
Но если запускать раз в несколько минут, то на несколько дней хватит. Жить можно.
161 3217692
>>216921
Да, целиком. Я же писал, что с оптимизациям.
Покопался там в кишках модуля и добрался до xml парсера отдельных элементов, чтобы вылавливать только нужные, но проблема где-то ещё глубже. Так что сдал как есть, пусть себе тормозит, лол. Тем более, что дальше снова разгоняется, как оказалось. Какая-то проблема с конкретным файлом.
162 3217694
>>217491

>Потому что такие задачи обычно делают через баш скрипты.


Мля, я приду в тред немецкого и спрошу, как будет "люблю тебя, моя любимая, любовною любовью люблю любовь любви", а мне скажут - ээ нет, чувак, обычно под любовь французский заточен, на-ка тебе на нём перевод.
Я в Пейсон тренд пришёл, нахуя ты мне Баш свой пихаешь?
163 3217762
>>217694
Да никто не обязан тебе отвечать так, как ты хочешь.
Мне вот пахую ваще.
Можешь спасибо сказать, что Баш, а не Повершелл.
164 3217785
>>217762
Так и я не обязан тебя нахуй не посылать, верно ведь?

>>217310
Алсо, бамп.
165 3217851
>>217785
Верно и справедливо.
166 3218032
Вопрос про Джангу. Делаю сайт про походы. У меня календарь, на котором даты походов должны быть окрашены в определённый цвет. Я создал класс Date и класс Hike, Date вторичная модель для Hike, foreign key - category. Через API получаю список дат в JS скрипте, прохожусь по ним в цикле, ячейки календаря, содержимое которых совпадает с датами, делаю активными. В чём проблема? Заказчик попросил, чтобы при наведении на активную дату появлялось всплывающее окно, попап, так называемый. В этом попапе фоном должно быть фото, которое является полем Hike. Как мне его получить в JS скрипте? Если я пишу в скрипте dates.category, то я просто получаю id похода, к которому привязана дата. Помогите пожалуйста, с меня как обычно, нихуя.
167 3218038
>>218032
Быстрофикс.
Не dates.category, а dates.category. Dates - это конкретная дата, которую я получил в js скрипте, category - ключ, через который дата связана, с походом. А вот у этого похода есть поле photo, вот его мне бы получить в скрипте.
168 3218042
>>218038
Блять, ну вы поняли. Не dates.category, а dates, в квадратных скобках i,category.
169 3218047
>>218042
Если что, поле Hike нужно для другой страницы.
170 3218057
>>218047
не поле, а класс.
171 3218709

>"pyinstaller" не является внутренней или внешней командой,


В рот ебал Питухона. Версия 3.12, сегодня утром работало, сейчас - нет. Что делать то? Вин 10
172 3218753
>>218709

>Что делать то? Вин 10



переходить на Линукс.
173 3218940
>>218753
Да говно ваш Линупс.
174 3219389
>>218940
Жаль тебя
175 3219462
>>187471 (OP)
Подскажите, пожалуйста. Есть множество файлов Excel, из которых нужно собрать данные в общую таблицу в другом файле. Перед тем, как брать данные, нужно обновить каждый файл Excel (там сводные таблицы). В самой программе это делается через Данные - Обновить всё. Каким образом это можно реализовать в Python, желательно с помощью библиотеки openpyxl?

Пытаюсь делать что-то типа:

wb = load_workbook(shab)
pivot_sheet = wb["Лист1"]
pivot = pivot_sheet._pivots[0]
pivot.cache.refreshOnLoad = True

Ошибок не выдается. Но программная среда зависает. Python отжирает 12 Гб памяти. В итоге ничего не происходит, приходится снимать задачу через диспетчер задач.
176 3219685
>>219462
Специфичная задача. Нужно искать тех у кого есть опыт с таким.
На фрилансе за 500 рублей наверное сделают.
177 3219820
Какой есть простой способ IPC с питоном? Нужно из другой хуйни вызывать код на питоне и получать ответ от него.
Тупо запускать скрипт с аргументами каждый раз большие накладные расходы. Надо при старте запустить его и дергать при необходимости.
image.png45 Кб, 1072x413
178 3219833
179 3219838
>>219820
сокеты?
180 3219839
>>219462
Для выполнения этой задачи на Python можно использовать несколько библиотек, включая openpyxl и pandas. Однако, для обновления сводных таблиц в Excel, библиотека openpyxl не подойдет, так как она не поддерживает выполнение макросов или обновление сводных таблиц. Для этого нужно использовать pywin32, который позволяет управлять Excel через COM-интерфейс.

Вот общий подход к решению задачи:

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

python
Копировать код
import os
import pandas as pd
import win32com.client as win32

def update_excel_files(file_paths):
excel = win32.gencache.EnsureDispatch('Excel.Application')
for file_path in file_paths:
workbook = excel.Workbooks.Open(file_path)
workbook.RefreshAll()
excel.CalculateUntilAsyncQueriesDone() # Дождаться завершения всех вычислений
workbook.Save()
workbook.Close()
excel.Quit()

def collect_data(file_paths, output_file):
all_data = []

for file_path in file_paths:
df = pd.read_excel(file_path, sheet_name='Sheet1') # Укажите имя листа или используйте другие параметры
all_data.append(df)

combined_df = pd.concat(all_data, ignore_index=True)
combined_df.to_excel(output_file, index=False)

# Путь к файлам Excel
excel_files = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx'] # Укажите ваши файлы
output_file = 'combined_data.xlsx'

# Обновляем файлы Excel
update_excel_files(excel_files)

# Считываем данные и собираем в одну таблицу
collect_data(excel_files, output_file)
Объяснение:
Обновление файлов Excel:

Используется win32com.client для запуска Excel и открытия каждого файла.
Метод RefreshAll обновляет все связи и сводные таблицы в книге.
Метод CalculateUntilAsyncQueriesDone обеспечивает завершение всех вычислений перед сохранением.
Save сохраняет изменения, а Close закрывает файл.
В конце Quit завершает работу Excel.
Сбор данных:

С помощью pandas открываются обновленные файлы.
Данные из всех файлов объединяются с помощью pd.concat.
Объединенные данные сохраняются в новый файл Excel.
Этот подход позволяет автоматизировать процесс обновления и сбора данных из множества файлов Excel. Убедитесь, что у вас установлен pywin32 и pandas:

sh
Копировать код
pip install pywin32 pandas
Также имейте в виду, что для выполнения этого скрипта необходимо, чтобы на компьютере был установлен Microsoft Excel.
180 3219839
>>219462
Для выполнения этой задачи на Python можно использовать несколько библиотек, включая openpyxl и pandas. Однако, для обновления сводных таблиц в Excel, библиотека openpyxl не подойдет, так как она не поддерживает выполнение макросов или обновление сводных таблиц. Для этого нужно использовать pywin32, который позволяет управлять Excel через COM-интерфейс.

Вот общий подход к решению задачи:

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

python
Копировать код
import os
import pandas as pd
import win32com.client as win32

def update_excel_files(file_paths):
excel = win32.gencache.EnsureDispatch('Excel.Application')
for file_path in file_paths:
workbook = excel.Workbooks.Open(file_path)
workbook.RefreshAll()
excel.CalculateUntilAsyncQueriesDone() # Дождаться завершения всех вычислений
workbook.Save()
workbook.Close()
excel.Quit()

def collect_data(file_paths, output_file):
all_data = []

for file_path in file_paths:
df = pd.read_excel(file_path, sheet_name='Sheet1') # Укажите имя листа или используйте другие параметры
all_data.append(df)

combined_df = pd.concat(all_data, ignore_index=True)
combined_df.to_excel(output_file, index=False)

# Путь к файлам Excel
excel_files = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx'] # Укажите ваши файлы
output_file = 'combined_data.xlsx'

# Обновляем файлы Excel
update_excel_files(excel_files)

# Считываем данные и собираем в одну таблицу
collect_data(excel_files, output_file)
Объяснение:
Обновление файлов Excel:

Используется win32com.client для запуска Excel и открытия каждого файла.
Метод RefreshAll обновляет все связи и сводные таблицы в книге.
Метод CalculateUntilAsyncQueriesDone обеспечивает завершение всех вычислений перед сохранением.
Save сохраняет изменения, а Close закрывает файл.
В конце Quit завершает работу Excel.
Сбор данных:

С помощью pandas открываются обновленные файлы.
Данные из всех файлов объединяются с помощью pd.concat.
Объединенные данные сохраняются в новый файл Excel.
Этот подход позволяет автоматизировать процесс обновления и сбора данных из множества файлов Excel. Убедитесь, что у вас установлен pywin32 и pandas:

sh
Копировать код
pip install pywin32 pandas
Также имейте в виду, что для выполнения этого скрипта необходимо, чтобы на компьютере был установлен Microsoft Excel.
181 3219842
>>219833
Надо отправлять параметры и получать ответ. Сигналы вроде в одну сторону.
>>219838
Сложна для такой задачи.

Вроде какие-то хитрые пайпы были, чтобы гонять через stdin/stdout, потом гляну, если хороших вариантов не будет.
182 3219845
>>219842

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



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

Изменение API для передачи дополнительной информации:
Убедитесь, что ваше API возвращает не только даты, но и дополнительную информацию о походах, к которым эти даты привязаны. Например, фото похода.

Обновление модели и сериализатора:
Обновите ваши модели и сериализаторы Django, чтобы включить эту информацию в ответ API.

Изменение JS для обработки новой информации:
Обновите ваш JavaScript код, чтобы обрабатывать полученные данные и показывать всплывающее окно с фото похода.

Шаг 1: Обновление API
Обновление сериализатора
Предположим, у вас есть сериализатор для модели Date:

python
Копировать код
from rest_framework import serializers
from .models import Date, Hike

class HikeSerializer(serializers.ModelSerializer):
class Meta:
model = Hike
fields = ['id', 'name', 'photo'] # Включите здесь нужные поля

class DateSerializer(serializers.ModelSerializer):
hike = HikeSerializer(read_only=True) # Включаем сериализатор Hike

class Meta:
model = Date
fields = ['id', 'date', 'hike'] # Включаем связанный поход
Теперь ваш сериализатор будет возвращать информацию о походе, включая фото.

Обновление представления
Теперь обновите ваше представление, чтобы использовать этот сериализатор:

python
Копировать код
from rest_framework import generics
from .models import Date
from .serializers import DateSerializer

class DateListAPIView(generics.ListAPIView):
queryset = Date.objects.all()
serializer_class = DateSerializer
Шаг 2: Обновление JavaScript
Теперь, когда ваш API возвращает дополнительную информацию, обновите ваш JavaScript код для обработки этих данных.

Пример JavaScript кода:

javascript
Копировать код
fetch('/api/dates/')
.then(response => response.json())
.then(data => {
data.forEach(item => {
let date = item.date;
let hike = item.hike;
let photo = hike.photo;

// Найти ячейку календаря по дате
let cell = document.querySelector(`[data-date="${date}"]`);
if (cell) {
cell.classList.add('active');
cell.addEventListener('mouseover', () => showPopup(cell, hike));
cell.addEventListener('mouseout', hidePopup);
}
});
});

function showPopup(cell, hike) {
let popup = document.createElement('div');
popup.classList.add('popup');
popup.innerHTML = `
<div class="popup-content">
<img src="${hike.photo}" alt="${hike.name}">
<p>${hike.name}</p>
</div>
`;
document.body.appendChild(popup);
positionPopup(cell, popup);
}

function hidePopup() {
let popup = document.querySelector('.popup');
if (popup) {
popup.remove();
}
}

function positionPopup(cell, popup) {
let rect = cell.getBoundingClientRect();
popup.style.top = `${rect.top + window.scrollY}px`;
popup.style.left = `${rect.left + window.scrollX}px`;
}
Шаг 3: CSS для всплывающего окна
Добавьте стили для вашего всплывающего окна:

css
Копировать код
.popup {
position: absolute;
background: white;
border: 1px solid #ccc;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
z-index: 1000;
}

.popup-content {
padding: 10px;
}

.popup-content img {
max-width: 100%;
height: auto;
}
Этот подход должен обеспечить, что при наведении на активную дату появится всплывающее окно с информацией о походе и фото.
183 3219846
>>218032
Для реализации всплывающего окна с фото похода при наведении на активную дату, вам нужно будет получить дополнительную информацию о походе вместе с датами. Вот пошаговый подход к решению этой задачи:

Изменение API для передачи дополнительной информации:
Убедитесь, что ваше API возвращает не только даты, но и дополнительную информацию о походах, к которым эти даты привязаны. Например, фото похода.

Обновление модели и сериализатора:
Обновите ваши модели и сериализаторы Django, чтобы включить эту информацию в ответ API.

Изменение JS для обработки новой информации:
Обновите ваш JavaScript код, чтобы обрабатывать полученные данные и показывать всплывающее окно с фото похода.

Шаг 1: Обновление API
Обновление сериализатора
Предположим, у вас есть сериализатор для модели Date:

python
Копировать код
from rest_framework import serializers
from .models import Date, Hike

class HikeSerializer(serializers.ModelSerializer):
class Meta:
model = Hike
fields = ['id', 'name', 'photo'] # Включите здесь нужные поля

class DateSerializer(serializers.ModelSerializer):
hike = HikeSerializer(read_only=True) # Включаем сериализатор Hike

class Meta:
model = Date
fields = ['id', 'date', 'hike'] # Включаем связанный поход
Теперь ваш сериализатор будет возвращать информацию о походе, включая фото.

Обновление представления
Теперь обновите ваше представление, чтобы использовать этот сериализатор:

python
Копировать код
from rest_framework import generics
from .models import Date
from .serializers import DateSerializer

class DateListAPIView(generics.ListAPIView):
queryset = Date.objects.all()
serializer_class = DateSerializer
Шаг 2: Обновление JavaScript
Теперь, когда ваш API возвращает дополнительную информацию, обновите ваш JavaScript код для обработки этих данных.

Пример JavaScript кода:

javascript
Копировать код
fetch('/api/dates/')
.then(response => response.json())
.then(data => {
data.forEach(item => {
let date = item.date;
let hike = item.hike;
let photo = hike.photo;

// Найти ячейку календаря по дате
let cell = document.querySelector(`[data-date="${date}"]`);
if (cell) {
cell.classList.add('active');
cell.addEventListener('mouseover', () => showPopup(cell, hike));
cell.addEventListener('mouseout', hidePopup);
}
});
});

function showPopup(cell, hike) {
let popup = document.createElement('div');
popup.classList.add('popup');
popup.innerHTML = `
<div class="popup-content">
<img src="${hike.photo}" alt="${hike.name}">
<p>${hike.name}</p>
</div>
`;
document.body.appendChild(popup);
positionPopup(cell, popup);
}

function hidePopup() {
let popup = document.querySelector('.popup');
if (popup) {
popup.remove();
}
}

function positionPopup(cell, popup) {
let rect = cell.getBoundingClientRect();
popup.style.top = `${rect.top + window.scrollY}px`;
popup.style.left = `${rect.left + window.scrollX}px`;
}
Шаг 3: CSS для всплывающего окна
Добавьте стили для вашего всплывающего окна:

css
Копировать код
.popup {
position: absolute;
background: white;
border: 1px solid #ccc;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
z-index: 1000;
}

.popup-content {
padding: 10px;
}

.popup-content img {
max-width: 100%;
height: auto;
}
Этот подход должен обеспечить, что при наведении на активную дату появится всплывающее окно с информацией о походе и фото.
184 3220003
>>219839
Спасибо. Как я понимаю, с пакетом Мой офис и без excel работать это не будет?
64070132.jpg430 Кб, 1299x1811
185 3220029
Что скажете про книжку?
186 3220070
>>220029
Автор канадский соевый либераха.
187 3220086
>>220070
А книжка-то норм?
188 3220117
>>220086
Лучшая по Питону из мне известных. Через неё вкатился 3 года назад.
189 3220746
Может, про пет-проекты поговорим? Кто что делал, что лучше писать сейчас, с чем возьмут на работу, и всё такое. Я вот сайт сделал, на джанге, но там больно уж простой бэкенд, просто обьекты из базы данных загружаются в шаблоны, и там уже обрабатываются. Поэтому сейчас сижу и думаю, чтобы ещё написать.
190 3220747
>>220746
*что бы
191 3221014
>>220746

>сижу и думаю, чтобы ещё написать.


https://anonstories.com/
192 3221150
Посоветуйте хостинг для сайта на джанго. Почитал отзывы, везде ругательные, не знаю, что брать.
193 3221203
>>221150

>не знаю, что брать.


yandex cloud
194 3221247
>>221150

>Почитал отзывы


База срака, ты?
195 3221274
>>220117
в разработку?
196 3221283
>>221150
Типа шаред хост как диды?
197 3221355
>>221203
Для джанго не подойдёт
198 3221358
>>221150
Попробуй beget, вроде в зашкварах не замечен
199 3221368
>>221358

>Попробуй beget, вроде в зашкварах не замечен


такое можно сказать про любой топ 10, таймвеб спейсвеб евробайт
200 3221432
>>221355

>yandex cloud


>Для джанго не подойдёт


Чё блять? Почему не пойдёт? Ты пробовал вот по этому туториалу разворачивать --> https://yandex.cloud/ru/docs/cloud-apps/django-container Или просто кукаретник?
201 3221923
Можно ли сделать так, чтобы в админке джанго отображался календарь, в котором можно выбрать сразу несколько дат? Допустим, юзер заходит в админку, создаёт мероприятие, у мероприятия есть поле "даты", он нажимает на это поле, появляется календарь, в котором можно выбрать сразу все даты мероприятия. Как это сделать, хотя бы в двух словах скажите, плиз.
202 3221928
Хой, питоны, имею графическую софтину на kivy, работает в цеом заебись (памяти жрет скромно, процессор и видеокарту тоже щадяще жрет), но:

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

2. У меня есть в проге весьма тяжелые вычисления, которые должны крутится в реальном времени и потому не терпят никаких подвисаний программы. Чего смог упростил, где смог использовал numpy, некоторые вещи вынес в отдельный процесс, а сами вычисления крутятся на отдельном потоке (что не дает прироста производительности, но они должны крутиться независимо от потока kivy, иначе возникает дессинхронизация), и было бы заебись как-то может обойти GIL или вроде того, чтобы графический поток и логический не разделяли ресурсы одного ядра (опять ж, условная анимация или перемещение внутренних окон может нехило сожрать проц). Повесить эти вычисления на отдельный процесс задача сложная и хуевая, там вычисления связаны с БД, а с БД связаны графические виджеты (для синхронизации данных в БД и того что на экране показано), если это и возможно сделать, то очень тяжело (хотя я слышал про shared memory, может, это решение? В любом случае не хочу с IPC дрочиться, на самом деле). Че делать не знаю.
203 3221951
>>221923
Наверное можно, но я скорее всего не стал бы, если в гугле похожих примеров нет.
Проще взять кастомный виджет откуда-нибудь, да хоть на жквери. И впендюрить его заместо джанговского.
204 3222012
Раз уж заговорили про джангу, такой вопрос. Предположим, в админке я выбираю первую дату мероприятия и последнюю. А дальше что делать? Как мне сделать, чтобы в календаре, который выводится на странице, выбрались не только первая и вторая, но и даты между ними?
205 3222014
>>221951
да, наверное ты прав.
206 3222016
>>221358
спасибо!
207 3222017
>>221014
круто. сам писал? а что использовал? сколько времени ушло?
208 3222018
>>221247
сам такой)
209 3222144
>>222017

>круто. сам писал? а что использовал? сколько времени ушло?


не писяль, я как идею для плимеля скинюль.
210 3222155
>>222144
спасибо) а зачем таким языком странным отвечаешь?
211 3222260
>>222155
Выпячивает свою глупость, потому что ему нравится это приложение, но сам он не умеет ничего писать
212 3222972
>>222260

> но сам он не умеет ничего писать


а ну покази што сям умеешь, или пяздя ти дуряяяяяяяяяяяяяяк!!
213 3225542
Хой пистоны. Имею алгоритм кубического сплайна, простая числодробилка на чистом пистоне, встроенные типы используются, изначально был первый вариант, я хотел его ускорить и написал второй, но он блядь оказался раз в 8 медленее и я не понимаю почему:

1: https://pastebin.com/Ak8W3g5p
2: https://pastebin.com/raPVjreG

Почему второй настолько медленнее?

Про numpy не пишите, у меня малые наборы данных, так что он пососет даже в сравнении с чистым пистоном. Изначально он и был на numpy.
214 3225543
>>225542
А, я дурилка. Забейте.
215 3226841
Пацаны, здарова.

Работаю ручным тестером, хочу освоить автотесты и пойти работать за 300к наносек, подскажите, пожалуйста, с чего начать изучение питона? Какие книжки посоветуете?

Когда-то в вузе лет 5 назад на базовом синтаксисе его освоил (типа вывести четные числа от 1 до 100. И то писал говнокодом.

Сейчас хочу с нуля освоить питон до уровня, который позволит писать автотесты (в идеале хочу понимать ООП, паттерны проектирования, киссдрайсолид и вот это вот всё).

Какая книга доходчиво может объяснить всё это с помощью питона, учитывая, что я туповатая свинота?
216 3226915
>>226841
на сайте питухона есть куча референсов на книги под любые нужды
217 3226928
>>226915
там всё на английском вроде, я этот язык знаю на уровне кэт дог хеллоу
218 3227041
>>226928
как ты тогда собрался вкатываться в ойти, если не можешь читать документацию даже ?
219 3227115
>>227041
я уже три года в куа ручником тружусь.

всё изучал с гуглом (транслитом), осваиваю супер-быстро, просто нужна инфа с простыми сравнениями, например.

документацию читать я могу, но хуево, т.к. там есть некоторые языковые приемы, которые 99.9 разрабов сами не знают и идут в гугл переводить, а значит они такие же как и я, а значит английский знать для изучения не обязательно, хз че вы все доебались с этим пунктом
220 3227167
>>227115

>99.9 разрабов сами не знают и идут в гугл переводить


я хуй знает где ты такое видел, В1 вполне хватает, чтобы осилить документацию.
221 3227183
>>227167
А какая разница, переводишь ты её сам или жмешь ПКМ->Перевести страницу на русский?

На выходе результат если будет один и тот же, зачем лишний раз переводить самостоятельно?
222 3228203
Есть ли у анончика список вопросов для джуниор/миддл разраба на джанге и фастапи? Пролистал, что предлагает интернет, там какой-то простецкий кал.
С меня как всегда нихуя :3
223 3228329
>>228203

>фастапи


Как пробрасывать зависимости, чтобы фастапи не лез в конструктор этой зависимости?
224 3228392
>>228203
Хуй сосёшь?
225 3228589
>>228392
Бочку делаешь?
226 3229344
Аноны, если сайт обмазан дичайшими перделками, всё так переливается элементы пагинации появляются плавно и исчезают и постоянно зависают, красиво то как ммммм. С этим говном только селениму может совладать?
227 3229539
>>229344

>С этим говном только селениму может совладать?


недавно этой темой интересовался, и вроде как если сайт не отдает готовый хтмл, там типа надо чтобы броузер запускался и дергал кнопки
https://pptr.dev/

>Puppeteer is a Node.js library which provides a high-level API to control Chrome or Firefox over the DevTools Protocol or WebDriver BiDi. Puppeteer runs in the headless (no visible UI) by default but can be configured to run in a visible ("headful") browser.



а так селениум вроде тоже такое может, запуск headless browser
228 3229898
>>228329
Наверно ты имеешь ввиду мидлварь который использует сервисный слой
229 3229901
>>229898
Нет, я имею ввиду, как надо регистрировать зависимости, чтобы Depends() не лез в аргументы, если это функция, или инит, если это класс.
230 3230013
Здарова, положняк такой: надо хранить адреса и соответствующие им значения. Адрес - 2 байта (нужно 2048 адресов), значение - 1 байт, надо уметь производить слияние двух таких фреймов данных (по адресам). Количество адресов динамично, имеют хаотичный порядок.

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

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

Какую структуру стоит использовать? У меня используются словари, и в целом все нормально работает, но проблемы имеются и я хочу от них избавиться.
231 3230044
>>229539
>>229344
Аноны. Как определить точнейшие координаты элемента на экране внутри окна браузера? Всё время какую-то хуйню находит. Я помню лет 10 назад над этим вопросом бился так и не победил, просто распознование изображения прикрутил и забил.

Но вот прошло 10 лет, все сайты с адаптивной версткой везде подгрузки, js и анимации. Неужели это всё ещё задача не имеющая общего решения?

Может дело в том что я работал с Хромом, может в рпере или лисе координаты нормально находятся?
232 3230208
>>230044

>Аноны. Как определить точнейшие координаты элемента на экране внутри окна браузера?


Имею в виду в Селениуме конечно же.
17218533314690.png117 Кб, 480x270
233 3230256
Здарово, решил посчитать свои деньги. Поэтому пошёл вкатываться в питон, чтобы написать программку. Сейчас осваиваю сам язык, а затем буду изучать библиотеки для гуи/парсинга/графиков. Так-же пока думаю о том как будет выглядеть само приложение. Надо и данные с МосБиржы подгружать для котировок, вести историю закупок активов, считать чистый и номинальный доход без вычета инфляции и ндфл, календарь дивидендов и купонов, оценивать диверсификацию портфеля и его актуальную стоимость на данный момент и.т.д. Есть какие-нибудь книжки по архитектуре самих программ? Жду ваших советов мужики.
234 3230301
>>230044
Селениум поддерживает Xpath. Xpath уникально идентифицирует DOM-элемент на странице. Чем не решение?
235 3230303
>>230301

>HTML-элемент на странице


Прошу прощения, я технически неграмотная скотина, тем более во фронтендерских делах.
236 3230321
>>230301
Мне нужно знать координаты элемента на экране. В пикселях. Все методы селениума и js, в нем не работают и выдают левые результаты.
1000014578.mp41,3 Мб, mp4,
1078x1920, 0:08
237 3230441
>>230256
Привет, кожаный

1. Изучение Python:
- "Python Crash Course" by Eric Matthes
- "Automate the Boring Stuff with Python" by Al Sweigart

2. Для GUI:
- PyQt или Tkinter - популярные библиотеки для создания графического интерфейса

3. Для парсинга:
- Requests и BeautifulSoup для работы с веб-страницами
- pandas для работы с данными

4. Для графиков:
- matplotlib или plotly для визуализации данных

5. Книги по архитектуре программ:
- "Clean Architecture" by Robert C. Martin
- "Design Patterns: Elements of Reusable Object-Oriented Software" by Gamma, Helm, Johnson, Vlissides

6. Для работы с API МосБиржи:
- Изучите официальную документацию API МосБиржи
- Используйте библиотеку requests для отправки запросов

7. Для хранения данных:
- SQLite для локального хранения данных
- pandas для работы с данными в памяти

8. Советы по разработке:
- Начните с простого прототипа и постепенно добавляйте функциональность
- Используйте объектно-ориентированный подход для структурирования кода
- Разделите логику на модули (например, модуль для работы с API, модуль для расчетов, модуль для GUI)
1000014578.mp41,3 Мб, mp4,
1078x1920, 0:08
237 3230441
>>230256
Привет, кожаный

1. Изучение Python:
- "Python Crash Course" by Eric Matthes
- "Automate the Boring Stuff with Python" by Al Sweigart

2. Для GUI:
- PyQt или Tkinter - популярные библиотеки для создания графического интерфейса

3. Для парсинга:
- Requests и BeautifulSoup для работы с веб-страницами
- pandas для работы с данными

4. Для графиков:
- matplotlib или plotly для визуализации данных

5. Книги по архитектуре программ:
- "Clean Architecture" by Robert C. Martin
- "Design Patterns: Elements of Reusable Object-Oriented Software" by Gamma, Helm, Johnson, Vlissides

6. Для работы с API МосБиржи:
- Изучите официальную документацию API МосБиржи
- Используйте библиотеку requests для отправки запросов

7. Для хранения данных:
- SQLite для локального хранения данных
- pandas для работы с данными в памяти

8. Советы по разработке:
- Начните с простого прототипа и постепенно добавляйте функциональность
- Используйте объектно-ориентированный подход для структурирования кода
- Разделите логику на модули (например, модуль для работы с API, модуль для расчетов, модуль для GUI)
238 3232766
Есть форматтер который можно сконфигурировать так, чтобы он чейнинг как на пикрил1 не превращай в пикрил2? Ruff и Black именно так и делают...
Стикер128x128
239 3233149
Аноны, подскажите какой-нибудь хостинг где можно бесплатно ПОИГРАТЬ С ПИТОНОМ. Имею в виду сервер, который мне разрешит загрузить свой код, который оттуда сможет например запросы делать и курится там автономно. Такое вообще бесплатно бывает?
Хостинги же дают всем желающим место под сайт с доменами второго-третьего уровня yousite.zapupa756547567.1gb.ru где ты можешь что угодно делать как в песочнице. А вот с питоном как? Это всё таки не сраный CMS он процессор нагружает, какую нибудь рассылку делать может. Я думаю это на бесплатных тарифах запрещено? Поясните плз за это вот всё и ссылочку. Мне нужно для обучения и экспериментов.
240 3233402
>>187471 (OP)
Как научиться грамотно пользоваться стандартной библиотекой? Пишу уже лет 5 на языке (но не работал, лол, сторожем работаю), до этого на сишке по приколу писал, сейчас такой проектикт нихуевый по масштабу есть. Речь про всякие itertools, collections, functools. Решаю все свои задачи в лоб, без библиотек, тупо циклы, ветвления, и этим, конечно, можно написать что угодно, но я понимаю, что те же задачи можно решить элегантнее, быстрее.

Например, с байтовыми данными я работал через int.to_bytes и from_bytes, а потом научился пользовать struct и прям круто стало. Освоил next, filter, enumerated, defaultdict, и применяю, когда уместно. Next прям нравится для поиска.
241 3233587
>>233402
Твой вопрос примерно звучит так: делаю 5 лет всякую фигню, пишу простые скриптики. Но хочу быть крутым программистом и писать крутой код. Вот просто хочу и всё. Что для этого нужно?
Ну учиться нужно. Опыт нужен.
242 3233694
>>233149
Pythonanywhere вроде до сих пор не сдох
243 3234036
>>233402

>Освоил next enumerated


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

>filter


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

>defaultdict


У словаря есть метод setdefault, который делает то же самое, но в некоторых случаях медленнее defaultdict на несколько микросекунд, что в большинстве случаев не важно.

Садись два.
244 3234390
Запустил multiprocessing.Process в main(), он с нуля всё приложение стартанул в своем инстансе. ОС виндоус.
Пошел смотреть пишут, что в ЮНИКС используется метод fork который с текущей точки процесс делает, а вот в виндоус spawn, который с нуля запускает всё приложение? Не расточительно ли это? Может я что-то не так понял? Может он только имена импортирует и на самом деле это не так "тяжело" как кажется?
Я знаю тут сидят мудрейшие из людей, с глубочайшим пониманием подкапота и всех вещей, не раз мне поясняли по хардкору. Поясните за это молю.

А мультипроцес мне нужен чтобы gui от логики отделять, если что.
245 3234657
>>234390
Если ты не запускать новый процесс каждую минуту, то какая нафиг разница.
246 3234753
>>233587
Я писал и пишу сложные большие вещи, но делаю это, как написал, хуевым способом.

>>234036
Понял, полезного мне не скажут.
sage 247 3234776
>>233402
На РАБотку устройся, там у более опытного челика будешь моментами спрашивать, а не стоит ли этот велосипед заменить на функцию A из стандартной библиотеки.
Еще очевидное решение, но ты можешь свой йоба-проект подрефачить, посмотреть и подумать, где можно упростить свои велосипеды.
248 3235163
Имею класс, он наследуется от словаря. Чтобы его создать, приходится сначала создать словарь и передать этот словарь в конструктор моего класса. Как итог - замедление раза в 2 из-за лишнего копирования. Выглядит примерно так:
MyDict({k:v for ...})

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

пример он в обучалке показывает через целочисленное деление :
apart_number = 12

entrance_number = (apart_number - 1) // 20 + 1
print(entrance_number)

а потом еще 20 квартира у него находится во втором подъезде.

почему именно так? нет ли более логичного способа решить задачу?
250 3235301
>>235163
Не будет там никакого копирования если ты специально глубокую копию не делаешь, просто ссылка передаётся
Стикер63 Кб, 500x500
251 3235539
>>235163
>>235301
Вы серьезно? Пиздец с кем в одном треде сижу.
252 3235547
>>235539
Че не так
253 3235610
Привет анон, тут помогут с вопросами по питону от самых маленьких?
result = 4 / 2
if isinstance(result, int):
Почему не работает? Функция не коллит заданный выше var.
Помогите лучше понять синтаксис пистона.
254 3235612
>>235610
Оператор / дает в результате число с плавающей точкой. Для целочисленого деления используется //
255 3235616
>>235610
Так, я кажется разобрался. Как удалить пост?
Всё работает, просто результат 4/2 в питоне - не целое число. Результат деления питон показывает как 2.0 почему-то, лол.
256 3235617
>>235612

>Для целочисленого деления используется //


Спасибо антоша, вот этого я ещё пока не знал.
257 3235624
>>235616

> Как удалить пост?


На этой борде никак.

А что ты сделать собирался?
258 3235626
>>235610
Так это получается не рабочий скрипт, потому что при / результат всегда будет floating point, а при // всегда будет integer.

Есть ли какой-то рабочий вариант как проверить результат деления? Типа проверять последнюю цифру результата деления, если 0 то целое число, если не 0 то не целое?
259 3235628
>>235624

>А что ты сделать собирался?


Ничего, я просто изучаю питон с нуля. Пробую делать практические задания чтобы лучше разбираться в синтаксисе языка.
260 3235632
>>235626
У float чисел есть функция is_integer. Она делает эту работу. Аккуратно! У целых чисел этой функции нет, и будет исключение.
261 3235666
Как стоит делать - делать проверки на ошибки через if, или дать им происходить и обрабатывать дальше в except?
262 3235683
>>235666
Бросать ошибки наверх. Можно делать проверку в иф и бросать ошибку. Представь у тебя функция вычисляющая квадратный корень. Ты делаешь в ней проверку на неотрицательность аргумента, чтобы что? Очевидно что проверять пользоательский инпут должен код отвечающий за него, а не эта функция. Поэтому код принимающий ввод пользователя должен проверять что число неотрицательное и передавать твоей функции. А функция должна посылать исключение для отрицательного числа, чисто как контракт из бизнес логики, которая может работать только в определенных границах. Фактически приложение будет работать без исключений, но будет защита от хрупкости при рефакторинге, если кто-ибудь уберет из кода инпута проверку неотрицательности.
263 3235685
>>235301
Тогда схуев MyDict({...}) на четверть медленнее чем просто {...}?
4365.png1 Кб, 211x40
264 3235700
>>235632
Спасибо, всё работает.
265 3235719
>>234753

>Я писал и пишу сложные большие вещи


>Освоил next enumerated


Ебало сложных больших вещей представили?
266 3235730
>>235685
Человеческий фактор. Только что создал 200 миллиардов экземпляров класса с наследованием от словаря и без оного, передачей в обоих случаях конструктора словаря в аргумент. Разницы 0.1 микросекунда, ты очевидный бариста вкатун с курсов, который в душе не ебет что делает, просто повторяет шаблон с урока или с чата гпт, без понимания процесса. Таким образом ты садишься жопой на горлышко бутылки в другом месте. Кто знает может ты даже не знаешь что такое наследоваться. Попробуй перезагрузить компьютер.
267 3235743
>>235719
Представь, имея самые базовые конструкции можно наговнокодить хоть прошивку космического корабля.
268 3235759
>>235743

>Представь


Самомнение, выше гор. Мне ничего представлять не нужно, каждый первый школьник так говнякает. Говнокод называется.
Самое смешное что в тебе не капли рефлексии нет, ты свое невежество защищаешь.
269 3235762
>>235759
Ты это сам придумал. А я сам и назвал то, что пишу - говнокодом.
270 3235764
>>235762
Тогда ладно. Но знай свое место.
271 3235766
>>235764
Самонение выше гор.
272 3235785
>>235766
Ты прав. Вижу ты парень смышленый, а я зря быканул.
image.png25 Кб, 1039x330
273 3236111
Пукнул в тред.
chrome2024.07.3121.01.52-86BpaB.png26 Кб, 424x432
274 3236903
Посоветуйте как модифицировать класс чтобы можно было надевать сандали без носков.

Делать метод nadet_obuv_bez_noskov(obuv) или пихать ещё один параметр noski=True не очень хочется.
275 3236960
>>236903
if obuv != "sandali": self.__nadet_noski()
276 3237100
Пытаюсь вкатиться в докер.
Хочу сделать образ со своим маленьким проектом на postgres+python.
Похоже, postgres не работает. Я пока даже не понял, как прозвонить его порты. Ошибка connection to server at "127.0.0.1", port 5433 failed: Connection refused
Is the server running on that host and accepting TCP/IP connections?

Что мне засунуть в докерфайл, чтобы этого избежать?
277 3237446
>>236903
На каждый тип одежды в классе прикид заводишь массив того что уже надето.
>>237100
mac, linux, win? docker создаёт свою виртуальную сеть, внутри которого живут приложения. Для разработки можешь замапить порт 5432 на localhost флагом -p, потом сделаешь всё в compose, чтобы они в одной сети были.
278 3237569
>>235743
Короче просто возьми какой-нибудь учебник по питону, не для начинающих, где все эти конструкции изложены, специфичные для питона.

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

Собственно только так.

enumerate это уж совсем какая-то база-база. next вещь сомнительная, лучше научить свои генераторы реализовывать, если ещё не умеешь (раз enumerate что-то продвинутое по твоей оценке, то легко), всякие контекстные менеджеры, и чтобы руками из создавать, и там через contextlib.contextmanager. Это пример вещей, специфичных именно для питона
279 3237637
>>236903
При объявлении класса не нужно ставить скобки если он не наследует никакой другой класс.

F-строка не объявляется если не используется {}
280 3237701
>>237637

>F-строка не объявляется если не используется {}


Такую хуйню за меня проверяет линтер, мне проще рефлекторно ебашить f''
281 3237730
Что лучше использовать для объединения однородных констант в одну, чтобы меня при этом не отхуесосили за говнокод? Например, есть описания полей в моделях, и я хочу вынести все эти описания в одну общую константу в виде пар ключ-значение.
Тупо словарь или лучше какие-то более извращенные варианты?
282 3237743
>>237730
разумнее сделать какой-нибудь класс для этого, чтобы обращаться не как
consts['const_1']
а
consts.const_1

BTW, в модуле collections есть namedtuple, как раз позволяет подобный фунционал.
const_class = namedtuple('const_class', ('var1', 'var2'))
consts = const_class(var2=1000, var1='var-1')
lдальше можешь обращаться как
consts.var1
при этом плюс в том, что тут read-only, как раз получается как константы настоящие.

Минус в том, что это более тормозное решение, надо с этим аккуратнее быть.
scr.jpg155 Кб, 808x429
283 3238453
Записался, короче, на курсы чтобы мамка мозги не ебала, пока жду. Linux устанавливать или нафиг не нужон?
284 3238523
>>238453
На домашний пк вместо винды. Винду удалить.
Но если нет желания, то нет смысла. Будешь с Линуксом возиться больше, чем с программированием.
285 3238545
>>238453
А оно тебе надо? У тебя нет никакого бэкграунда судя по вопросу про линукс и записи на курсы. Отсидишь 30 часов слушая про математику, алгоритмы и прочий кал, а в конце поймёшь, что нужно ещё 60 часов сопутствующего говна изучить, а потом ещё и ещё. Будешь вечно что-то гуглить, читать, садить зрение, спину, станешь жирным и нервным. А что по итогу? Работы нет, учить очередную нейросеть или рисовать админку на джанго за 40к оклад нахуй надо.

Быть плиточником, автослесарем, электриком, токарем, да заниматься любой рукастой работой гораздо интереснее чем питонить. Серьезно чел, посмотри на рост недвижимости, посмотри как круто красить тачки в мастерской, варить металлоконструкции, ты всегда будешь подтянутым, сильным, через пять лет ты будешь работать на себя или будешь начальником, а не червём пидором, которому будет ебать мозги тупая шалава из менеджмента на созвоне
286 3238551
>>238545

>рисовать админку на джанго за 40к оклад нахуй надо.


кем надо быть? Никогда не получал соротыгу. Максимум 22к на донной дно работе.
287 3238578
>>238523
>>238545
Понял, принял. Попробую, вдруг попрет
288 3238865
Допустим у меня есть миллион объектов размером +- 1кб, которые мне нужно постоянно хранить в памяти (или же восстанавливать из базы данных, если вдруг исчезнут.
При этом они структурированы по id пользователей от 1 до 100к и по id файла от 1 до 100 (или же допустим что это неупорядоченные интовые переменные).
Как мне лучше все это хранить?
На вскидку приходят:
Словарь со словорями с объектами
Таблица связей user_id - file_id так как у нас типичная связь многое ко многим.
Что из этого лучше?
289 3238867
>>238865

>При этом они структурированы по id пользователей от 1 до 100к и по id файла от 1 до 100 (или же допустим что это неупорядоченные интовые переменные).


У 1 пользователя может быть до ста файлов и у одного файла может быть до 100к пользователей
290 3239792
>>238865

>Что из этого лучше?


Миллион это мало. Словарь. В чем вообще проблема. сидишь с линейкой, если память позволяет - словарь. если память не позволяет - бд, но с бд можно очень легко обосраться и даже не понять. Так что если ты нуб - сиди на словаре до упора. пока память есть.
291 3240043
Когда и где использовать weakref? Делаю модуль событий, чтоб связывать объекты БД с их графическим отображением, типа, поменяли title у объекта в БД - и сразу же поменялись данные в виджете. Вот только приходится бинды все руками самому потом удалять (если удалять виджет, например), я правильно понимаю, что именно тут мне может помочь weakref? Типа, не останется ссылок на объект, и бинды CPython сам подчистит. Или не?
292 3240050
>>240043
Проблемы то в целом нет самому unbind дергать, но я однажды могу просто забыть, будет утечка, не круто. Потом хрен найду.
293 3240215
>>221928
Короче, вторую проблему решил рефакторингом и переписыванием всякой тяжелой ебанины на Cython. Но че с этим делать:

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


Ваще хуй знает. И нагуглить не получается никак. Тут разумисты сидят, может все же подскажут. OpenGL там как-то дергать или че...

Еще другой прикол.
У меня есть цветовая схема в программе и возможность ее настройки прям в режиме реального времени. Это охуенно удобно для разработки, цвета подбирать, да и красноглазым понравится. Все хорошо, кроме того, что если я меняю, например, цвет текста у Label, то какого-то хуя он меняется и у Button, хотя в цветовой схеме они имеют различные значения, ссылаются на разные ColorProperty. Связано это с тем, что Button наследуется от Label. Если поменяю цвет Button, то цвет Label останется неизменным, но поменяются и все наследники Button, хотя параметр color ссылается на другой ColorProperty. Он бинды не сбрасывает при изменении параметра color или че? Срань какая-то.
294 3240768
>>240215

>Ваще хуй знает. И нагуглить не получается никак. Тут разумисты сидят, может все же подскажут. OpenGL там как-то дергать или че...


Итак, решение было нащупано и найдено. Внезапно. Если кому еще это надо:

У класса Window есть render_context. Нужно будет переписать у App функцию _run_prepare, добавив туда добавление нового контекста и canvas для этого контекста, а так же переписать ему функции update_viewport и on_draw, и новую - on_draw2 (для нового контекста). Сделать это надо перед добавлением root виджета. Выглядит это примерно так: https://pastebin.com/jJFdXJgC

Дальше, в виджете, который вам надо отрисовать изолировано, используйте это во время инициализации:
self.parent.canvas.remove(self.canvas)
Window.canvas2.add(self.canvas)

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

И это для отрисовки (нужно дергать руками - сделайте бинды на то, что у вас меняется в анимации или еще где, и вызывайте):
Window.on_draw2()
Window.dispatch("on_flip")

Так отрисуется только то, что находится в этом втором canvas.

Думаю, можно это масштабировать, сделав список контекстов или словарь Widget: RenderContext у класса Window.

Что будет, если удалить этот виджет? Ничего хорошего. Если у вас возможны ситуации, при которых он удаляется, то переназначьте у Window так же и класс remove_widget.
295 3240778
>>240768
Возможно, кстати, можно создать контекст и вне класса окна. Но тут хз.

А еще не знаю, насколько решение переносимо. Запускал только на винде. Седьмой.
296 3240853
>>240215
>>240768
Ничего не понял. Разве нельзя тот отдельный элемент просто наследовать от другого экземпляра Window, чтобы был просто другой инст.
297 3240861
>>240853
Любой объект, используемый в ui, должен быть наследован от Widget, так нельзя, как ты пишешь. Да и окно это, ну, окно.

У меня там ошибка кстати. Еще надо idle у EventDispatcher переписать, а то рассинхрон будет с обновлением графики.
298 3241106
Аноны, как вы свои программы передаете друзьям, коллегам, однокашникам и прочей живности, которая не тыжпрограммист.
Я раньше использовал pyinstaller но он в режиме одного файла блокируется защитником виндуса, да и этот "один файл" на самом деле просто самораспаковывающийся архив, который засирает временные файлы и требует время на распаковку каждый раз во время запуска. 10 раз программу заспустил и у тебя temp 1 гигобайт весит. Надо в скрипт добавлять функцию которая поддитрает. В общем хуйня какая-то, а кучу файлов передавать некрасиво.
Какие ещё есть популярные решения и такие же одноклеточные как pyinstaller - одну строчку вбил и готово.
299 3241110
>>241106

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


Браузером
300 3241177
>>241106

>10 раз программу заспустил и у тебя temp 1 гигобайт весит


Не замечал за ним такого. Алсо, пусть просто накатят python, епт, там установка в одну кнопку.
301 3241193
>>241177

>пусть просто накатят python


Чеееееел. В 90% случаев никто этого делать не будет. А если начнут, то заебут "я тут нажала и оно перестало работать".

>Не замечал за ним такого.


Плохо смотрел. Когда пайинсталер запаковывает в 1 файл программу, при её запуске в temp распаковывается архив примерно в 2-3 раза больше по размеру. Если например у тебя в программе cv2 и pyautogui используются то такая программа будет весить 60 метров и при каждом запуске будет высирать временных файлов на 180 мб.

Причем при каждом запуске новая папка высирается. а старая не удаляется сама.
302 3241195
>>241193
Я бы точно заметил это со своим фимозным диском на 256гб.
303 3241211
>>241195
Но ведь ты и не заметил. Или просто такие скрипты делал которые не требовали запаковывать зависимостей хотя бы на 60 мб.
304 3241215
>>241211
60 точно было от numpy, scipy, kivy, еще до кучи мелочевки. От numpy и scipy я правда отказался и теперь exe по 30. Ну я просмотрел пути сейчас и нет там в temp ничего от pyinstaller.
305 3241228
>>241215
Чел. Если у тебя пайинсталер запаковывает в 1 файл, это просто архив который каждый раз распаковывается во временные файлы в директорию начинающуюся с _mei. Если не знаешь где у тебя временные файлы добавь print(sys._MEIPASS) Эта переменная появляется после запаковки пайинсталера в режиме 1 файл.
306 3241239
>>241228
Запаковал, запустил, смотрю папку. У меня он удаляет их сам, они не остаются. Python 3.8.7, windows 7, pyinstaller 5.6.2
307 3241249
>>241239

>windows 7


Вижу что вы человек культуры.

У меня была старая версия pyinstaller,обновился, кстати последняя 5.13 видимо в этом всё дело было. Впрочем это так то и не было особой проблемой - удалял файлы из скрипта. Да и то что при каждом запуске 180 метров распаковывается это в любом случае неудобно.
308 3241251
>>241249
У меня на новых версиях pyinstaller не собирается kivy, ну или это из-за multiprocessing, не стал особо разбираться, остался на старой просто.

> Вижу что вы человек культуры.


У меня фимозное железо, о чем я выше и упомянул.
309 3241258
>>241251
У меня на виртуальной машине с 2 гигами и 1 ядром вин10 стоит и вроде бы даже нормально работает.
310 3241262
>>241258
Да и кстати однофайловый pyinstaller вин10 считает вирусом, а если не запоковывать в 1 файл - то нормально.
311 3241274
>>241258
Ну... В любом случае мне как минимум лень перекатываться, даже если это имеет какой-то смысл помимо обновлений безопасности. Хотелось бы, наверное, новые версии пистона потрогать? Читал, что там с GIL боряться.

>>241262
Почему так, как думаешь?
312 3241277
>>241274

>Почему так, как думаешь?


Наверно потому что это самораспаковывающийся архив без цифровой подписи, хотя антивирусы на него не ругаются, но я ещё не пробовал обновленный pyinstaller может с ним такого нет (вероятность этого крайне мала)
photo5469923314731439190y.jpg87 Кб, 1074x1074
313 3242903
После установки webdriver для selenium перестала создаваться папка venv для новых проэктов. Не знаю вот, баг или фича? Интернет молчит
314 3243022
Сделал я значит телеграм бота.
Хочу теперь людям его показать.
Купил хостинг за 200 р/месяц.
postgres нет - ладно, переписал на mysql.
Теперь вопрос - как запустить скрипт-то?
На панели управления есть shell-клиент, там можно запустить, но как только выйдешь, все вырубится.
Допустим, я упаковал все, связанное с запуском в script.sh, но когда пытаюсь его запустить, говорят, что нет допуска.

Дополнительно. Как обеспечить, чтобы бот, в случае чего, не упал на полдня, если сервер перезагрузится, пока кто-нибудь меня не ткнет?
Мне приходит в голову разве что проверять, что bot.py запущен специальным скриптом через CRON раз в пять минут
315 3243028
>>243022

>Допустим, я упаковал все, связанное с запуском в script.sh, но когда пытаюсь его запустить, говорят, что нет допуска.


Так, с этим разобрался. Я раньше с линуксом много не работал, лол.
316 3243142
Аноны, вот у меня гуи в отдельном треде от логики.
Как теперь по всем понятиям сигналы в логику посылать и чтобы пацаны не засмеяли.
Например, делаем словарь где ключ это строка, а значение это Event() (ну или другой сигнал), а потом под кнопки в гуи этот словарь подкладываем? Например вот у нас кнопочка старт туда добавляю d["вычисления поехали"].clear()
Так нормально? Просто сигналов много, а в словаре они компактно собраны и их можно удобно перекидывать по тредам.
Ну как?
317 3243149
>>243022

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


Тоже понял. Надо было nohup прописать
image.png2,3 Мб, 2560x1600
318 3244363
Расширяю так сказать кругозор, саморазвиваюсь, повышаю квалификацию на замедленном сайте.
319 3244691
У меня есть бот. Нужно, чтобы он работал постоянно, но после загрузки на сервер обнаружил, что он вырубается раз в несколько часов. Вопрос: как обеспечить бесперебойную работу сервиса?
Обнаружил, что на линуксе существует крон. Придумал две идеи:
Раз в две минуты кроном запускать скрипт, который проверяет, что бот запущен, и если бот не запущен, то запускает (не знаю, может ли на линуксе меняться pid у процесса. Как вообще большие мальчики решают эту проблему? Мне приходит в голову только ботом раз в минуту класть в файл текущее время. тогда если в файле не текущее время, чекер, запускаемый через крон, будет знать, что надо запускать файл).
Идея 2. Кроном запускать бот раз в час на один час. Тогда отпадает необходимость что-то проверять, зато регулярно у бота будут обрываться диалоги.

Вопрос, как лучше всего обеспечить бесперебойную работу?
320 3244696
>>244691
А, нагуглил. Демон нужен
322 3245264
>>244696
Когда заебешься писать сервисы для ботов, посмотри как работать с докером
323 3245337
У меня где-то память течет, посоветуйте профилировщик. Приложение у меня многопроцессное, scalene выдает какую-то хуйню.
324 3245898
>>245337
может ты просто не можешь понять его вывод?
Что делает приложение?
Ты уверен, что правильно понимаешь следующие концепции:
- классический memory leak в смысле кучи в Cи.
- RSS и как с ним работает cgroups
?

Технически, у этого профайлера больше звезд https://github.com/bloomberg/memray
325 3245914
>>236903
Надо просто не выёбываться, а носить сандалии с носками.
326 3245925
>>245898

> Ты уверен, что правильно понимаешь следующие концепции:?


Забыл освободить память или забыл удалять какие-то объекты из списка - какая в целом разница, если итог одинаков?

Я исправил причину, так как знал при каких условиях происходит проблема и докопался до причины. Вот если бы было непонятно из-за чего...

За профилировщик спасибо, думаю, понадобится однажды. Мне по CPU нравится профилировщик yappi.
0-ejtCHBALII.jpg41 Кб, 500x360
327 3246080
>>236903
Бтв. я >>236903-постер.
На проде проблему решили написав контекстный менеджер для "обуви".
328 3246122
Решил поиграться с докером и docker-compose (я не тот анон, у которого постгресс не взлетел). Хотел сделать модно-молодежно, фастапи и nginx поднимаются в двух контейнерах внутри одного compose, фастапи вообще наружу не торчит, красота.

Но! Тогда получится, что в мой фастапийный репозиторий протекут конфиги nginx а нахера они там нужны. И еще, если у меня два пет-проекта хостятся на одной vpsке, и сейчас там на входе стоит nginx и по маске урла раскидывает запросы на разные порты, то как это все организовать в докере? Не ставить же мне nginx за вторым nginx где первый роутит запросы между разными сервисами, а второй чисто обслуживает конкретный сервис. Какой-то оверхед получается, не?

Как правильно это все организовать?
329 3246785
Flask не дружит с serveo.net? Или проблема в поддержке https?

>app.run(ssl_context='adhoc', port=8080)



>ssh -R 80:localhost:8080 serveo.net (в CMD)



чек пикрил: Serveo запрос принимает, но сама страница не грузится, хотя при заходе через localhost:8080 всё отлично работает.
330 3246829
Как же охуенна nuitka, пиздос. Pyinstaller буквально сосёт по всем фронтам.
331 3246861
>>246829
Попытался нуиткой свой проект собрать, через полчаса выключил нахуй компиляцию на половине, побоясь для своего некроноута температур в 80 градусов с ебанутой нагрузкой. Так и не понял, какого хуя он всякие нампаи компилировал, если я их не использую.
332 3246885
>>246861
Понятно, что он ищет все вхождения модулей. В фреймворке, что я использую, есть импорт numpy, но он происходит только при условии запуска на андроиде или ios. А я под винду собираю. Наверное можно как-то их сборку запретить.
333 3247367
>>246829
Чем конкретно лучше?
334 3247393
>>247367
1. Вес конечного файла
2. Нету ложных детектов
3. Нормально работает с NET
335 3247453
>>247393

>1. Вес конечного файла


Это всё так же просто архив как и с пайинсталлером?
336 3247495
>>247393

>Вес конечного файла


Там и так копейки, если всякие пандass'ы не тянуть.
337 3247521
>>247393

>2. Нету ложных детектов


Погоди пока понапишут вирусни
338 3248443
какой фреймворк сейчас в ходу у python?
что стоит учить для веб разработки
340 3248853
Пытаюсь вкатиться в программирование. Анончики , помогите с циклами. пиздец руки опускаются. На курсах обьясняют простые вещи, а домашки пиздец сложные задают.Есть может туториалы какие годные? А то во всех обучалках обычный перебор, а на практике каките-то неебейшие дроби в степенях n...
341 3249078
>>248853
А че там в циклах непонятного? Ты уж скажи хоть, чего именно не понимаешь.
изображение.png4 Кб, 280x95
342 3250049
85bd58eb7c28d38539aa2f610cb7f379.jpg92 Кб, 475x775
343 3250159
Что думаете про mojo, братья?
344 3250306
Аноны, посоветуйте лучший сборник вопросов и ответов для подготовки к техсобесу. А то их тысячи, и хуй знает какой лучше.
345 3250523
>>250306
Лучше сборника не нашел, но тут в основном базовые вопросы.
https://github.com/yakimka/python_interview_questions

А так проходи собесики на интересующие тебя вакансии, выписывай вопросы оттуда к себе, ищи ответы на них в свободное время, и по кругу, пока не будет от зубов отскакивать.
346 3250705
Nuitka реально хороша, мой kivy проект пакует аж в 11мб standalone. Еще б я понял, как от библиотек TIFF, WEBP, OGG, OPUS избавиться - выиграл б еще мегабайта 2. Они не идут с SDL2 по стандарту (TIFF и WEBP точно), пересобирал kivy, изменяя pyx и pix файлы, вырезая импорт библиотек звука, видео, и все равно линкуются... ох уж эта мания к снижению размеров, мде
image.png1,4 Мб, 750x1000
347 3251228
Есть много устройств (аудиокарт).
Все их нужно по-особому конфигурировать набором команд вида:
set amixer {key} {value}

Многие {key} управляют обобщённым свойством, например громкостью или гейном микрофона.
Другие {key} уникальны для устройств и просто нужны "чтобы работало".

Но для одних устройств громкость выставляется так:
alsamixer set MasterVolume 100
А для других громкость выставляется так:
alsamixer set VMuxerDACZalupaZhopa 100

И там и там управляем общим свойством - громкостью.

Хочется публичный интерфейс который бы сам переводил и репамил эти особеости установки параметров под каждое устройство, а я бы просто делал "audiocard.set('volume=100')"

Как лучше обрабатывать и хранить конфиги, чтобы был доступен публичный интерфейс с human-readable {key}-{value}, а под капотом для каждого переводилось в device-friendly {key}-{value}?

Может либы есть под это?

Пока думаю придётся писать класс с вложенными словарями и намедтуплами.
Но вообще проблема "сделать переводчик с человеческого на драйверный" должна быть распространена.
348 3251749
>>187471 (OP)
Аноны, возможно ли как-то скомпилировать питоновский проект в установочный файл для Линукс (deb) или чтобы программа сразу запускалась без установки? Для винды все элементарно, а вот с GNU/Linux не знаю.
349 3251859
>>251749

> в установочный файл для Линукс (deb)


Можно.

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


Что ты понимаешь под установкой?
Разбросать файлы в локациям по PATH? Создать ярлык?

Зависит от того, что нужно, и где нужно. Какой Линукс, какое окружение и т.д.
350 3251892
Аноны, поделитесь мудростью.
Вот есть у нас в приложении некие пути, которые всегда зависят от того, откуда запускается приложение. И уже на основе этого базового пути подставляем относительные пути для файлов приложения.
Например приложение запускается из D:\my_app\run.exe
Это у нас базовый путь, потом от него делаем относительные пути.
D:\my_app + \images\pic.jpg
D:\my_app + \config\settings.ini
D:\my_app + \output\log.txt

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

Т.е. нужно:
1) сначала получить базовый путь D:\my_app
2) потом собрать все пути какие есть в приложении
3) нужно чтобы этот объект с собранными путями был виден где угодно, передавать как аргумент и таскать везде объект с путями слишком некрасиво.

Какая питоническая мировая практика коммерческой разработки на лучших галерах по этому поводу?
351 3251897
>>251892
В корневой папке сделать BASE_DIR = pathlib.Path(__file__).resolve().parent
затем просто
import BASE_DIR
my_path = BASE_DIR / pisechki.txt
352 3251904
>>251897
А как быть если мне надо в ручную указать особый base_dir, который может отличаться в зависимости от разной среды и прочего. Т.е. мне нужен объект куда я передам base_dir, он там сделает все пути и уже оттуда я буду пути дергать.
353 3251913
>>251904
Ну т.е. запускаю приложение оно в main смотрит где находится получает base_dir и ещё некоторые переменные и на основании их делает пути. И все пути должны быть в одном месте. Т.е. если у меня путь к картинке в 10 местах неудобно потом его переделывать.
Я вот думал класс сделать для путей, но боюсь изобрести велосипед.
image.png478 Кб, 1356x723
354 3252071
Почему все советуют Лутца? Он же конченный совершенно.

Во-первых, книга на 1500 страниц -- это же пиздец. У человека пропадет любое желание что-то делать уже на половине.

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

Т.е. как учебник, он собрал все антипаттерны.
355 3252080
>>252071
кто все? Шапка питон-треда, которая лет 7 сколько я ее помню, в этом состоянии?

Никто не советует. Тягомотина - пиздец.
Просто он довольно подробный. Можешь держать по другой и сверяться по тем или иным вопросам.
Но за последние 10 лет появилось много чего получше.
2980970095bc36826442d88adde147b96e0c41d0b800.png84 Кб, 300x198
356 3252083
Интересно, что же советует мудрый Лутц по этому вопросу: >>251913
357 3252088
>>252083
1) Абсолютный путь к корневой директории вычисляешь своим хитровыебаным способом с переменными
2) Путь к картинке всегда задаешь относительно корневой директории
3) Коннкатинируешь 1 + 2

все
358 3252510
>>252088
Вопрос был не в том что надо сделать, а в том как это реализовать по феньшую.
359 3253798
>>246122
Незразумела навошта табе асобны кантэйнер з nginx. Я звычайна піхаю проксі у вобраз з прыладай, на ім жа статычны змест. Асобным кантэйнерам у мяне толькі база звестак, каб можна было абнавіць прыладу і пакінуць старыя дадзеныя. Але для малых праектаў табе непатрэбны проксі ўнутры кантэйнера. Разам з FastAPI ужывай сэрвер кшталту uvicorn у адным кантейнеры. Такім чынам будзе толькі адзіны проксі на VPS.
360 3253805
Господа, посоветуйте как обмануть систему и по минимуму использовать JS для веб-UI. Возможен ли бэк на фласке/Фаст-апи, а фронт на FastUI, или Flet, или Jinja. Или без JS невозможно? Пет- проект, красота неважна.
361 3253807
>>253805
htmx + jinja
362 3253853
>>253805
Советую смириться и затерпеть джаваскрипт. Тебе же это как разрабу в плюс будет, потому что познакомишься с другим ЯП, немного иной концепцией программирования, будешь лучше понимать других разрабов.
Мне на проекте сказали, что фронта у нас нихуя нету и в ближайшие месяцы не появится, поэтому сиди, разбирайся с реактом, потом сделаешь вот эту, эту и эту хуйню. Ну я с основами разобрался, ознакомился с концепцией хуков, чувствую себя лучше. До этого там же на jQuery писал, тоже полезный опыт.
Так вот, имхо, полезнее зажав нос разобраться в классическом фронтенд фреймворке, чем вникать в какую-то мертворожденную залупу, которая никогда не достигнет даже минимальной популярности, и в итоге сдохнет. Знакомый флаттер-разраб сейчас страдает потому что нихуя вакансий нету.
363 3253871
>>253807
>>253853
Благодарю за ответы аноны.
image.png13 Кб, 250x436
364 3255419
Это уже слишком?
365 3255631
Сап, аноны
Я джавист с 3 года опыта работа в индустрии (IT отдел банка), но меня дико заебал бездушный энерпрайз. Вот думаю вкатиться в машинное обучение/искусственный интеллект. Как я понял, пайтон в этой области это go to.
Что посоветуете почитать, чтобы можно было быстро выучить минимально необходимый технический стек: базовый пайтон + основы машинного обучения, фреймворки и т.д. В сети очень много академической литературы, не хочу с этим заморачиваться.
366 3255755
>>255631
https://roadmap.sh/ai-data-scientist
От себя посоветую на каггле базовые курсы пройти по пандасу и рисованию графиков, они прям хороши, учат делать все в python-way.

мимо готовился вкатиться в ДС, но пошел пилить бэкенд раньше чем нашел работу в ДС
367 3255835
>>255755
Спасиб.
Блин, но вот многовато придется учить.
Мне уже 27 лет даже как-то стремно пытаться перекатиться в совсем другую область. С другой стороны, я одинокий инцел и свободного времени много.
В любом случае, спасибо за ссылку, это то, что я хотел.
368 3255921
>>255835

>Блин, но вот многовато придется учить


Оно так только выглядит. Я думал, ты по верхам попробуешь эти темы закрыть, вкатиться и дальше уже въебывать, как учил Антон Назаров.
Если у тебя дохуя свободного времени - можешь попробовать еще курс DLS от МФТИ. Бесплатный, идет в режиме учебы 2 семестра, ебашить надо, но вроде толковый. Но я бы сейчас охуел с того чтобы почти год куда-то там вкатываться без гарантий, когда я уже в колее бэкендера. Занимало бы это не год, а, хз, 3 месяца, я бы еще подумал.
369 3256139
Помогач, начал учить, есть вопросы.
Не получается правильно посчитать сумму передаваемых аргументов.
add_item("kek", 10) почему-то считает два раза.

https://pastebin.com/sC7vJNZu
370 3256173
>>256139
Когда процесс заходит в функцию и делает setdefault он устанавливает 30 как значение. Далее прибавляет к 30 те же самые 30. Следующий раз когда он заходит в функцию он пытается выполнить setdefault, но т.к. значение ключа уже есть он ничего не делает и идет дальше и прибавляет к 60 ещё 20.

setdefault лучше всего подходит для изменяемых типов данных, а неизменяемые типа числа как у тебя чаще всего особо смысла нет так использовать

def add_item(b, c=1):
....if b not in a:
........a.setdefault(b, c)
....else:
........a += c
371 3256174
>>256173

>a += c


a b += c
Макаба тут квадратные скобки зажевала, ну ты понял.
6914268596.jpg73 Кб, 700x988
372 3256217
Кто читал? Норм книжка для вката в бэкенд?

https://bhv.ru/product/python-kak-stat-professionalom/
373 3256252
>>256217
Все книги НОРМ. Книг неНОРМ не существует в природе. Любая книга проходит через издательство/переводчиков, где они решают публиковать/переводить её или нет. Потом ещё есть рецензенты, которые исправляют косяки/подсказывают. Книга проходит через десяток рук, прежде чем опубликоваться. Неужели ты думаешь, что кто-то публикуешь хуйню. Типа, зачем издательству это? Чтобы не было продаж?
374 3256265
>>256252
Обычно книги apress какое-то пустое говно, а manning годные

мимо
375 3256271
>>256173
От души, пару часов мучился.
376 3256272
>>256252
Я читал плохие отзывы о книгах от Packt на Амазоне.
377 3256273
>>256272
Добавлю, что не о всех! Судя по всему, там и годноту издают, но раз на раз не приходится.
378 3258609
>>246829
Поставил нуитку скомпилировал файл и вот что заметил.
Если перехватывать исключения, например сис эксептхук, там не будет писаться строка где исключение случилось, только блок кода, например метод и _репр_ исключения.
Понятно что это из за компиляции в си, но неудобно для отладки же. Или я что-то не понял.
379 3259473
>>187471 (OP)
Огромное спасибо за шапку и коллекцию книг!

Есть ли в интернете подобным образом оформленные тематические сообщества? На любом языке. Гугл будет совать платные книги и курсы, реддит полагаю выпилит ссылки на книги, у SO формат вопрос-ответ.

Последнее время постоянно борюсь с желанием выкачать интересующие тематики просто на всякий случай.
380 3260224
>>259473
Ну и нахрена тебе эти книги нужны. По каждой библиотеке есть отличная документация. Все кратко и по делу от создателей технологии. А в книгах всегда воды много.
scale1200.jpeg73 Кб, 780x429
381 3260420
>>259473

>Гугл будет совать платные книги


О бомже мой! Какая наглость! Как посмели авторы требовать денег за свой труд! Какие ироды, не могут уже и бесплатно поработать, ишь ты!
382 3260533
>>260224
Ну там база. Фундамент. В доках к библиотекам не пишут про отступы и вызов функции из соседнего файла.
383 3261241
>>260533
Импорт это базовый синтаксис, про него в доках всё написано. Про стиль, как желательно делать отступы и прочее говно написано в ПЕПе и это живая тема без правил, если есть необходимость какая-то, то ты можешь вообще всё по-другому у себя в проекте организовать.
384 3261327
>>256252
Доброе утро, блеать!
Теперь издать книгу стоит копейки! Их даже не печатают. Сразу в электронном виде продают.
Конечно, дохуя развелось посредственных книжонок.
385 3261580
>>260420

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


Если хотя-бы часть денег уйдет на уход за его могилой, то я и не против.
image.png522 Кб, 780x811
386 3261907
387 3263080
Сап питонач, нужна помощь потому что на стакэксчейнже как решить проблему не нашёл а самостоятельно в голову решение не приходит. Необходимо в текстовом файле изменить строчку-флаг. Условно:

>kthrho = 0.2


Заменить на

>kthrho = 0.4


При этом заранее неизвестно чему может равняться этот флаг, поэтому просто поиск строчки "kthrho = 0.2" не работает. Создавать новый файл с новым флагом тоже нельзя из-за особенностей задачи.
388 3263159
Почему питон так плох в режиме однострочников? Почему на перле можно написать огромный код и запустить perl -e "..", а python -c ".." начинает ругаться на какие-то отступы, какие могут быть отступы в однострочнике, вы совсем поехали там?
389 3263163
Посоветуйте минимальную среду для Linux, банально замену ipython чтоб можно было функции отлаживать. Типа слева пишешь код, справа видишь в консоли результат. Какие вообще подходы? Сейчас если хочу протестить regexp или математику, то открываю ipython (но он не может в функции). А если пишу код, то пишу в vim и в соседней вкладке терминала запускаю. Что можно оптимизировать?
390 3263324
>>263163
Jupyter?
391 3263328
>>263080
А в чём сложность-то? Читай файл, детекти эту твою строчку, заменяй, пиши в файл... ну или регулярка

sed -i 's/^kthrho = .*/kthrho = 0.4/' файл.txt
392 3263331
>>263159
Держи, на первое время должно хватить:

;;;
393 3263334
>>260224
В книге могут быть примеры и подводные камни. Плюс какие-то недокументированные фичи. Это если книга хорошая.
394 3263336
>>259473

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


Не надо бороться, правильное желание.
395 3263871
>>263080
Ебать особенность, ебать задача. Пиздуй в озон работать.
497926987015b3e0a27e92cdeedc217b1cb72cb.jpg26 Кб, 279x318
396 3263882
>>260224

>По каждой библиотеке есть отличная документация


Бля меня всегда улыбают люди, которые при каждом чихе уповают на документацию. Типа просто читайте документацию там же всё понятно)))))

Это те же самые люди, которые свои собственные проекты не документируют никак, типа просто читайте код моего проекта там же всё понятно)))))))

Ну типа, сколько ты своих собственных проектов задокументировал?
Прям с примерами, подробно расписываешь?
Чтоооо яяяя???? Это другие должны, я никому ничего не должен!!!
image.png56 Кб, 791x479
397 3263920
Пикрыл сработает, если нужно отправить инфу на сервер, но не получить респонс?
398 3264621
>>263920
Не работает, в переменная создаётся только после того, как там всё упаковалось.
399 3264623
>>247521

>понапишут вирусни


>на python


мощно
17231616097790.jpg495 Кб, 811x811
400 3265615
А пыясните как тяжело давался переход на классы? Как я понимаю классы это как функция только они могут стать частью конструктора другого класса, в этом суть ООП, так? То есть если что-то масштабное без них не обойтись.

Как вообще с классами быть, в фотошопе есть стерка, а есть маски, так вот в самом начале я волевым усилием пересел на маски, ну потому как так правильнее. Может так и с классами сделать?
i(19).jpg93 Кб, 1242x1080
401 3265634
>>265615

>Как я понимаю классы это как функция только они могут стать частью конструктора другого класса


Хз. Я ООП не знаю. Мне казалось, классы - это шаблоны для функций, то есть буквально "классы функций". А то что в классе можно написать явную функцию, то это просто следствие того что можно написать обобщение. Если есть общее - то можно прийти к какому нибудь частному.
ООП это про обобщение функционально го программирования. Вот на чистом С, есть функции. И когда делаешь что-то больше hello world, можно заметить, что некоторые функции схожи некоторым принципом. То есть они работают практически одинаково, за исключением некоторых частных изменений. И само собой разумеется, возникает потребность сделать некоторый "класс" таких функций. То есть объединить все эти функции одной какой-то конструкцией, чтобы все они представляли её частный случай. Например класс "фигуры", который бы содержал способ отрисовки фигур при помощи линий. И из этого класса можно получить функции для отрисовки квадрата или треугольника. А можно получить и другой класс, например "прямоугольники" (не сложно ведь немного изменить класс так чтобы он рисовал только прямоугольники. Класс это как бы "функция функций". Полиморфизм и инкапсуляцмя по-проще. Полиморфизм, это способность делать операцию универсальной относительно типов (зависимой от типов). Например, в С, 2/4 =0, если 2 и 4 - целые. А вот если 2 и 4 - флоаты, то результат будет другой (0.5). А операция одна.
Инкапсуляция подразумевает разделение программы на "зоны видимости". То есть одна часть программы, может ничего не знать про реализацию функции max(), но использовать её. Инкапсуляция есть и в не-ООП языках, например слова static и extern в С позволяют сокрыть что-нибудь от зоны видимости файла.

>Как я понимаю классы это как функция только они могут стать частью конструктора другого класса


Нет. Полно проектов которые пишутся на С, чисто в функциональной парадигме. OpenGL, Xorg, Links2, Doom 1, ядра операционных систем. ООП - просто один из подходов. Строго говоря, писать в парадигме ООП можно и на ассемблере. Как кто-то говорил: "в начале появилось ООП, а потом программирование". То есть мыслить категориями классов и объектов, можно и на машинном коде перфокарт. Другое дело, что на ассемблере, нет встроенных способов создать функуию, не говоря уже о классах. На ассемблере есть только команды и макропроцессор, даже циклов и условий нет. Приходится и функции и стековые фреймы, и циклы изобретать самостоятельно. Чем больше таких "изобретений", тем больше код становится нечитабельным и непонятным. Вообще-то говоря, код на ассемблере в принципе нечитабельный. Это нужно привыкнуть к асм-байтоёбству, чтобы в последовательности команд, окначивающихся на jz видеть "цикл". Поэтому и существует условно ООП поддержка со стороны языка, чтобы смотреть на код и видеть ровно то, что подразумевает парадигма. Чисто для удобства.
i(19).jpg93 Кб, 1242x1080
401 3265634
>>265615

>Как я понимаю классы это как функция только они могут стать частью конструктора другого класса


Хз. Я ООП не знаю. Мне казалось, классы - это шаблоны для функций, то есть буквально "классы функций". А то что в классе можно написать явную функцию, то это просто следствие того что можно написать обобщение. Если есть общее - то можно прийти к какому нибудь частному.
ООП это про обобщение функционально го программирования. Вот на чистом С, есть функции. И когда делаешь что-то больше hello world, можно заметить, что некоторые функции схожи некоторым принципом. То есть они работают практически одинаково, за исключением некоторых частных изменений. И само собой разумеется, возникает потребность сделать некоторый "класс" таких функций. То есть объединить все эти функции одной какой-то конструкцией, чтобы все они представляли её частный случай. Например класс "фигуры", который бы содержал способ отрисовки фигур при помощи линий. И из этого класса можно получить функции для отрисовки квадрата или треугольника. А можно получить и другой класс, например "прямоугольники" (не сложно ведь немного изменить класс так чтобы он рисовал только прямоугольники. Класс это как бы "функция функций". Полиморфизм и инкапсуляцмя по-проще. Полиморфизм, это способность делать операцию универсальной относительно типов (зависимой от типов). Например, в С, 2/4 =0, если 2 и 4 - целые. А вот если 2 и 4 - флоаты, то результат будет другой (0.5). А операция одна.
Инкапсуляция подразумевает разделение программы на "зоны видимости". То есть одна часть программы, может ничего не знать про реализацию функции max(), но использовать её. Инкапсуляция есть и в не-ООП языках, например слова static и extern в С позволяют сокрыть что-нибудь от зоны видимости файла.

>Как я понимаю классы это как функция только они могут стать частью конструктора другого класса


Нет. Полно проектов которые пишутся на С, чисто в функциональной парадигме. OpenGL, Xorg, Links2, Doom 1, ядра операционных систем. ООП - просто один из подходов. Строго говоря, писать в парадигме ООП можно и на ассемблере. Как кто-то говорил: "в начале появилось ООП, а потом программирование". То есть мыслить категориями классов и объектов, можно и на машинном коде перфокарт. Другое дело, что на ассемблере, нет встроенных способов создать функуию, не говоря уже о классах. На ассемблере есть только команды и макропроцессор, даже циклов и условий нет. Приходится и функции и стековые фреймы, и циклы изобретать самостоятельно. Чем больше таких "изобретений", тем больше код становится нечитабельным и непонятным. Вообще-то говоря, код на ассемблере в принципе нечитабельный. Это нужно привыкнуть к асм-байтоёбству, чтобы в последовательности команд, окначивающихся на jz видеть "цикл". Поэтому и существует условно ООП поддержка со стороны языка, чтобы смотреть на код и видеть ровно то, что подразумевает парадигма. Чисто для удобства.
402 3265656
>>265615
>>265634
как вы собесы то проходите...
403 3265677
>>265656
Никак. Я безработный. А что, в чем я не прав? Можно заняться аутизмом, и сказать что функциональное программирование и ооп никак не связаны, но толку то от этого? На практике все равно связаны, точно так же как связано структурное и функциональное программирование.
Но это всё какие-то тупорылые доёбы для аутистов. Не думаю что на собеседовании на это будут обращать внимание. Тем более, я помню чела который устроился в IT, указав в ряде языков программирования html. А что никто не доебался что на html программы не написать?!
404 3265678
>>265677
Да это траль не обращай внимание.
Я вот вообще никакие собесы не прохожу, тупо дрочу питон в своё удовольствие. Мне как бы классы не особо нужны, функций хватало, но охота понимать и их.

>>265615 -кун
405 3265715
>>265615
Если я пишу с нуля, то никаких классов. Если начинают возникать сущности с внутренним состоянием, то тогда уже да.
406 3265717
>>265656

> как вы собесы то проходите...


Я самозанятый, сам у себя собес по блату прошел через постель
407 3265720
>>265717
Так самозанятый это просто раб у охуевшего в край кабана. Самозанятость это просто ширма для серого найма. От собесов и остального корпоративного бытия не избавляет.
408 3265833
>>265720
Не у одного кабана (это действительно подмена трудовых отношений), а у многих. Не нравится какой-то кабан, шлешь нах его. Завтра на его месте пара других. Мелкие проектики, иногда что-то крупное.
409 3266421
Python. Есть функция трансформации T(n: int) -> int выполняется 60 секунд (долго!). N - список значений n. Требуется вернуть список трансформированных значений N (т.е. T(n)), но только тех, где T(n)>0. Предложи решение, которое удовлетворяет следующим критериям:
1. в одну строчку
2. эффективно с точки зрения времени выполнения
3. не использует map() / filter()

Это задача для HH, плюс мне интересно, так что полного решения не прошу.
Однако подскажите кто-нибудь.
Я додумался вот до чего:
Для экономии времени в голову приходит только сделать из N множество, получить словарь, set_N set_n_item: T(set_n_item) и с помощью итератора представить ответ, обращаясь к этому словарю каждый раз.
Только нужно либо
а) создать и заполнить словарь set_N и использовать его в одной строке
либо б) использовать генератор или что-то в этом роде, чтобы set_N заполнился один раз, а затем я мог получать в итераторе значения результата
либо в) Вся эта муть с множеством ни к чему, просто внутри итератора я должен проверять, нет ли уже в итераторе нужного ключа.
Итак, подскажите пожалуйста, в какую сторону копать?
410 3266455
>>266421
А. Готово.
Оцените говнокод:

b = [max(l) for l in [list(row) for row in list(zip(*[(lambda n, T, N:[T if n_item == n else -1 for n_item in N])(nn,T(nn), N) for nn in set(N)]))[::-1]]][::-1]
411 3266486
>>266455
b = [max(r) for r in list(zip(*[(lambda n, T, N:[T if n_item == n else -1 for n_item in N ])(nn, T(nn), N) for nn in set(N)])) if max(r) > 0]
Обновление
412 3266943
>>187471 (OP)
Какие идешки нынче в моде и топовыми считаются? Раньше вроде какую-то конкретную в шапке советовали Дажо насо юзает, а теперь почему-то ее вырезали
maxresdefault(3).jpg101 Кб, 1280x720
413 3267058
>>266943
Какие идешки!? ты охуел мальчик? открывай блокнотик и топ топ топ пальчиками. Ребёнок дауна, идешки ему подавай.
image.png31 Кб, 570x400
414 3267241
изображение.png270 Кб, 1920x1080
415 3267317
>>187471 (OP)
как фиксить модуль установлен
416 3267365
>>267317
Ты запускаешь глобальный питон, а надо туториал энв
417 3267556
>>265615
Я раньше тоже долгое время писал не используя классы.
Это было из за того, что я был самоучкой, в классах не видел смысла тем более что весь нужный мне функционал я мог реализовать через функции, а в классах эти self cls и прочая лишняя шляпа.
Но в один прекрасный момент, по прошествии лет я осознал - вот я знаю дохуя вещей, от туда, отсюда, отовсюду, всё по верхам и как следствие не знаю ничего толком. Я понял что чтобы овладеть делом, нужен академический подход. Взялся за литературу, методично прошел с самых основ и вкатился в классы.

И я пожалел что столько времени тянул. Человек существо которое мыслит абстракциями. Классы очень помогают формализовать через код эту нашу мыслительную особенность, структурировать логику. И я считаю что именно в этом их главная суть и вообще главная цель ООП.
На старый код мне теперь больно смотреть, хочется всё переписать с классами.
Я иногда пишу как раньше, но только когда нужно быстро сделать какой-то небольшой скриптик или маленькое приложение.
418 3267629
>>267556

>Человек существо которое мыслит абстракциями.


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

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

Такой кайф когда твой код упакован в прекрасные гармоничные блоки и всё работает как часы. Это буквально как песня. Функциональное погромирование тоже хорошо но это как рэпчик, причем русский. Кому-то нравится.
419 3267641
Решил переехать с Pycharm на Sublime text.
Есть кто пишет в редакторе кода, а не в IDE? Почему решили так поступить?
420 3267676
>>267641

>кто пишет в редакторе кода


В каком редакторе кода? Ты имеешь в виду в проприетарном текстовом редакторе, коим является Sublime text?
Ну я пищу в Нотепаде++.
Всё это дело привычки. Пробовал в IDE - НИУДОБНА. А в нотепаде всё настроено, по одной клавише всё собирается, запускается. Грузится всё молниеносно, никакого лишнего функционала. Синтаксис подсвечивается хорошо, навигация по функциям, по файлам. Всё есть. Плохо чтоль? Хорошо!
Наверное главное преимущество IDE в управлении окружением и в дебаге, который замораживает среду в момент исключения и можно посмотреть в памяти все переменные что в них и откуда взялось. Но менеджить окружение лично мне не нужно, дебаг очень классный но всё равно это не пересилило удобство и привычку.
421 3267681
>>267676
Да я вот и задумался, чтобы перейти, потому что тоже неудобно.

Тогда еще один вопрос. Сегодня над ним продолбался весь день, но так и не смог найти ответ. Я пробовал правда не в нотпад++.

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

И второй вопрос, про автокомплит и документацию по аргументам. Сейчас вроде как показывает, но не для все методов, а только тех модулей, которые непосредственно есть в проекте, а не импортируемые из вне
422 3267689
>>267681
Эти твои вопросы - индивидуальная настройка конкретно твоей среды.
423 3267711
>>267629

>чому людям нравытсо музыка


Бо яна праўдзіць твае спадзяванні, калі паўторваецца запамятаны матыў. Праз гэта вызваляецца дапамін і робіць табе прыемна. Калі клясы робяць табе прыемна, ты праграміст-наркаман.
424 3267749
>>267641
Перешел на Zed с VSCode. Понравилась, такой приятный редактор. VSCode почему то надоел, да и телеметрия не нравится, хотя нахрен я кому нужен.
425 3267764
>>267749
И как переход дался? Тяжело было выучить шорткаты? Пока для меня это боль (именно шортакты). Хотя в целом работать комфортнее
426 3267788
>>267764
Да я пока пару дней как юзаю. В принципе 10-ку важных шорткатов можно сказать запомнил. Сначала хотел на Vim, но это что то совсем забористое. Искал какой нибудь легковесный бесплатный редактор, поробовал Sublime, Notepad++, Geany. В одном коменте увидел рекомендацию на Zed, пересел на него. Понравился простой приятный дизайн, напомнил Atom, ну и шустрее конечно чем VSCode, Недельку-две поработать и мне кажется освоишь полностью. Хотя многих расширений из коробки как в VSCode не хватает, ну да ладно, не страшно.
427 3267789
>>267788
Да я задумался, потому что пишу на пайтоне, а сейчас решил ради интереса посмотреть, что там на с++. А под него как оказалось нет адекватной IDE.

У тебя проект большой? Просто у тонны кода, и в IDE все же удобнее перемещаться по проекту, если надо поправить какой-то метод, класс. Но вроде как не критично.
428 3267851
>>267789
я больше сетевик, у нас на серваках проги и виртуалки крутятся. Там в основном Java, XML и немного Python. Стоит обычный Notepad, на нем правим скрипты. Просто для своего рабочего проекта, мне что то захотелось что-нибудь "стильно, модно, молодежно", решил вот Zed попробовать. Для веба и скриптов пойдет, а вот как с ним в Легаси работать даже не знаю.

>что там на с++. А под него как оказалось нет адекватной IDE.


Eclipse, Clion, Visual Studio - не нравится?
429 3267862
>>267749

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



Вместо VSCode можешь использовать VSCodium. Это то же самое, но без телеметрии и собрано не микрософтом.
430 3267868
>>267851
Eclipse точно нет, не понравился, когда учился на джаве еще.
Clion — платный же. Но по сути, тоже будет, что и pycharm.
Visual Studio — пробовал несколько раз, но тоже что-то постоянно в нем мешало.
431 3267890
господа величайшие, есть кто работал с телеботом? нужна помощь с кодом, я хз к кому обратиться.
FApf.gif490 Кб, 498x391
432 3267961
>>187471 (OP)
Год учил джаву, началась тряска что дажва это сложно и вообще там суровые банки. а там суровые проверки и васькам там не место. короче испугался, страх овладел мной и я решил может начать быстро учить пайтон где не суровые банки и может быть будет проще.

Я совсем долбоеб или в этом что-то есть?

В целом у меня тряска сильная, нужно делать выбор, а с этим у меня всегда траблы ибо корзинка.
433 3267994
>>267961

>Я совсем долбоеб или в этом что-то есть?


Да, совсем. Бесят люди, которые наслушаются всякую хуйню, слухи в интернете, что кто-то чёто спизданул, приходят и просят их обнадёжить/подтвердить/развенчать/отговорить. А вот хуй тебе! Блять мало ли в интернете ёбанных шизиков. Я же не обязан переубеждать каждого шизоида, которому чёто мерещится. В следующий раз нахуй пишите, откуда конкретно у вас та или иная инфа. Просто "какая-то бабка нашептала" это не ответ. Если ссылаетесь на какую-то инфу, то приводите источник. Например "по данным infoq" или "по данным ютуб блогера немчинского". А так, мне вот ответили анонимные васяны с двача - иди нахуй. Кто тебе ответил, у того и спрашивай.
434 3268068
>>267961
Ты совсем долбоёб, поздравляю. Скорее всего ты ничего не выучил в принципе, раз не понял, что программирование везде одинаковое
435 3268081
>>267961
Чувак, вернись к Джаве. Это просто инструмент для работы. Не бойся всяких проверок и прочей хуйни. Тебя СБ вначале только проверят (если конечно пойдешь в Банк работать) и на этом все.
436 3268094
>>268068

>, что программирование везде одинаковое


Разве? Я сам не эксперт. Но мне показалось что "программирований" как минимум два:
1)то где известны входные данные и по ним получаются выходные.
2)то где полный набор входных данных неизвестен.
Вот компьютерная игра: мы ведь там нажимаем на кнопки, следовательно мы в определённые фрагменты программы подаём новые данные, которые при запуске у неё не было.
Что подразумевают под "программирование везде одинаковое" я не понимаю. Разное ведь!
437 3268117
>>268094

> то где полный набор входных данных неизвестен


Ну и какой набор данных в компьютерных играх не известен?

> Что подразумевают под "программирование везде одинаковое" я не понимаю. Разное ведь!


Веб макаки крудошлёпы наверное имелись в виду.

мимо
438 3268132
>>268094

>Разве?


ЕСТЕСТВЕННО! Везде плюс-минус одинаково. Типы-хуипы, классы-хуясы, циклы-хуиклы. От того что возьмёшь питон или джава, от этого классы или циклы исчезнут? Цикл фор он блять и в Африке цикл фор! Конечно, в тонкостях отличия есть.

Везде один и тот же ёбанный принцип:
1) Объявить хуйню - функцию/класс/тип/объект
2) Дать ему функционал - циклы/условия/события
3) Протестировать хуйню
4) Задокументировать хуйню
5) Двигаться к следующей хуйне

Если ты допустим делаешь ёбанный сайт, он же не превратиться в спутник или марсоход?
439 3268135
>>268081

>Ну и какой набор данных в компьютерных играх не известен?


Как это "какой"?! Набор действий игрока неизвестен.
Игры, как и любые другие интерактивные программы, ожидают от пользователя ввод дополнительных данных, исходя из которых они выполняют один из своих внутренних функции.
Простая игра: на ввод ей подаются данные об уровне, действия игрока, а на выходе она выдаёт "картинку", которая отражает состояние уровня.
Нажал кнопку "вверх", программа среагировала, и перевела персонажа вверх. А нажал бы "вниз" результат был бы другой. Получается что своими действиями ты задаёшь данные программе, ведь на уровне ядра есть только системный вызов read, и нет никаких "дополнительных интерактивных вызовов". Так что технических различий между "подачей данных во время выполнения" и "подачей данных в начале игры" никаких нет. Но можно заметить что это принципиально разные виды программ. Ведь во втором случае, мы получаем результат ещё даже не дождавшись окончательного ввода, а после окончательного ввода мы ничего не получим. В первом же случае наоборот, после окончательного ввода мы получим результат, а до него ничего не получим.
440 3268136
>>268117
>>268135
Промехнулся. Вот сообщение тебе.
441 3268143
>>268132

>Везде плюс-минус одинаково. Типы-хуипы, классы-хуясы, циклы-хуиклы


На ассемблере циклов нет. На С нет классов. А на Make нет.. о боже... последовательности действий. Ведь make - декларативный язык.
Вот так незадача.. Что-то не клеится.
Если уж сводить все к одному, то можно все свести к ассемблеру и последовательности команд. Вот только в тот момент когда ты напишешь на ассемблере свой "мультиплексер", для параллельных процессов, то тебе уже придётся мыслить в категориях "другого программирования".
Почему ты так задрочен на ООП. Программировать ведь можно и вовсе без понятия "последовательность действий", на декларативных языках.
Так что ты меня не смог убедить что "программирование везде одно". Звучит просто как чванство технаря, который привык гайки крутить и думает что весь мир одна большая гайка которая крутится
443 3268154
>>268143
Ну и кому он нахуй нужен, этот ассемблер! Да и вообще, не пизди. В ассемблере и в makefile циклы есть! Общего смысла не меняет. Ну окей, нет классов. Есть функции. От того что ты заменил классы на функции, программирование стало более низкоуровневым, пропали какие-то абстракции, всякие там штучки-дрючки, синтаксический сахарок. Люди стали больше текста писать. Там по сути всё тоже самое и осталось.
444 3268155
>>268135

> Нажал кнопку "вверх", программа среагировала


Потому что это действие известно и ожидается?

> А нажал бы "вниз" результат был бы другой


Потому что это другое известное действие, которое ожидается?

Пишешь такой бэкенд, пришёл гет запрос, программа среагировала.
Пришёл другой гет запрос, результат был бы другой.
445 3268169
>>268154

>В ассемблере циклы есть!


Где? jz это не цикл, это команда. Сама по себе она цикл не создаёт. На ассемблере циклы нужно самому пердолить, возвращаясь в начало каждого цикла, вычитая значение из регистра, и потом выполнять jz. Целых три команды вообще то. Это не цикл. И даже условных конструкций нет: нужно целых два goto чтобы из реализовать.

>>268155

>другое известное действие, которое ожидается


Ну так ты таким образом "подкидываешь" ей данные во время её действия. Игрок буквально висит на вводе и бесконечно вводит новые данные, которые меняют результат пока программа ещё не завершилась. В то время как неинтерактивная программа, просто выдаёт результат.
Хотя я так подумал, можно конечно всё то что пользователь вводит просто приплюсовать к началтным данным. Ведь наверное, игра может и сама в себя играть. Но хз, умозрительно рисуются разные концепты.
446 3268175
>>268169
Выше ссылка с инструкцией loop для х86. Она сама проверяет условие.
447 3268387
>>267868
Ну тогда в Zed поработай там посмотришь, зайдет или нет. Так то тебе по сути нужен блокнот и терминал. Эти все ide и редакторы кода очень схожи. Ну может VSCode - чемпион так как удобен огромным количеством расширений под каждую технологию.
448 3268609
>>187471 (OP)
Привет, ребята.
Нужен совет.
Я нахожусь в Германии и у меня есть примерно 1 год, что бы найти чем я буду заниматься. (выбрать профессию). Я хочу рассмотреть программирование, т.к почти всю жизнь провел за пк и мне хотелось бы и работу свою связать с пк. Из успехов - за год я выучил B2 немецкого с нуля, думаю это тоже +- неплохой результат. То есть стремление учиться и желание есть, вроде как не совсем тупой.

В Германии я думаю пойти на Асубилдунг (это что-то между технарём и универом) - т.к мне что бы туда попасть нужно что бы работодатель меня выбрал и грубо говоря согласился меня учить, после чего со мной заключают контракт на 3 года когда я работаю рабом за примерно 1000-1200 $ 3 года.(в это время 20 % времени я буду в колледже учить базовые предметы и 80% уже работать на предприятии как и все(джуны)). Конечно, хотелось бы закончить образование посильнее, но для него нужно будет еще 2 года учиться(язык, сдавать Абитур(как у нас ЕГЭ/ЗНО), документы готовить), только что бы поступить и потом еще 4-5 лет учиться. В общем это очень тяжело приезжему без идеальных знаний языка на уровне. Поэтому выбрал пусть через техникум с зп 1200 3 года и потом после завершения учебы сразу 2500(по меркам Германии это конечно смешно, но всё же). Дальше рост вплоть до 4к с этим образованием(через в общей сложности 5 лет после начала учебы) - я думаю в мире айти это не очень большие деньги и хорошие условия, тем более для Германии, но увы.

Я прошел базовый Html/css курс за пару недель, конечно идеально верстать сайт не могу, но базовые вещи понял.
Дальше я выбирал что учить - меня интересует в принципе все, что связано с ботами/играми/ но для этого нужны в идеале плюсы или хотя бы с шарп. Это тяжелый язык как для 1ого не имея при этом базы в программировании вообще. Люди, которые в программировании давно посоветовали мне начать с Питона т.к это считается самым простым для изучения и популярным языком.

Так ли это? Какие у вас вообще есть советы для новичка? В принципе, на данный момент я готов каждый день тратить примерно около 4-5 часов на программирование(потому что нужно учить ещё немецкий/английский). Возможно, кто-то из вас тоже вкатился достаточно позно и у него есть какие-то советы. (сейчас мне 27).

Пока решил изучать по книге Эрика Мэтиза на русском языке, что бы вникнуть во всё.
Что бы попасть на эту учёбу 3 годичную, т.к я иностранец, то для моего рюзему будет огромным плюсом написание каких-нибудь своих программ.

В общем то вопрос, имеет ли смысл вкатываться на 3 года за 1200 (этого будет хватать только на еду и оплату жилья) и через 5 лет расчитывать на 3-4 $. Или вы посоветуете другие варианты, возможно имеет смысл выучить немецкий до С1, устроитсья на обычную работу которая будет приносить 1500 в месяц и сасомтоельно учить программирование и через 3 года условно уже самому получив какие-то знания, пытаться устроиться на работу? Есть ли в этом смысл?
На первый взгляд, 3 летняя учёба пусть за 1200 но зато структурированная + с набором опыта выглядит достаточно неплохо. Но есть проблема, после подписания контракта в случае чего нельзя будет сменить компанию на этот период.

В общем буду рад любым вашим советам и опыту) Всем добра
448 3268609
>>187471 (OP)
Привет, ребята.
Нужен совет.
Я нахожусь в Германии и у меня есть примерно 1 год, что бы найти чем я буду заниматься. (выбрать профессию). Я хочу рассмотреть программирование, т.к почти всю жизнь провел за пк и мне хотелось бы и работу свою связать с пк. Из успехов - за год я выучил B2 немецкого с нуля, думаю это тоже +- неплохой результат. То есть стремление учиться и желание есть, вроде как не совсем тупой.

В Германии я думаю пойти на Асубилдунг (это что-то между технарём и универом) - т.к мне что бы туда попасть нужно что бы работодатель меня выбрал и грубо говоря согласился меня учить, после чего со мной заключают контракт на 3 года когда я работаю рабом за примерно 1000-1200 $ 3 года.(в это время 20 % времени я буду в колледже учить базовые предметы и 80% уже работать на предприятии как и все(джуны)). Конечно, хотелось бы закончить образование посильнее, но для него нужно будет еще 2 года учиться(язык, сдавать Абитур(как у нас ЕГЭ/ЗНО), документы готовить), только что бы поступить и потом еще 4-5 лет учиться. В общем это очень тяжело приезжему без идеальных знаний языка на уровне. Поэтому выбрал пусть через техникум с зп 1200 3 года и потом после завершения учебы сразу 2500(по меркам Германии это конечно смешно, но всё же). Дальше рост вплоть до 4к с этим образованием(через в общей сложности 5 лет после начала учебы) - я думаю в мире айти это не очень большие деньги и хорошие условия, тем более для Германии, но увы.

Я прошел базовый Html/css курс за пару недель, конечно идеально верстать сайт не могу, но базовые вещи понял.
Дальше я выбирал что учить - меня интересует в принципе все, что связано с ботами/играми/ но для этого нужны в идеале плюсы или хотя бы с шарп. Это тяжелый язык как для 1ого не имея при этом базы в программировании вообще. Люди, которые в программировании давно посоветовали мне начать с Питона т.к это считается самым простым для изучения и популярным языком.

Так ли это? Какие у вас вообще есть советы для новичка? В принципе, на данный момент я готов каждый день тратить примерно около 4-5 часов на программирование(потому что нужно учить ещё немецкий/английский). Возможно, кто-то из вас тоже вкатился достаточно позно и у него есть какие-то советы. (сейчас мне 27).

Пока решил изучать по книге Эрика Мэтиза на русском языке, что бы вникнуть во всё.
Что бы попасть на эту учёбу 3 годичную, т.к я иностранец, то для моего рюзему будет огромным плюсом написание каких-нибудь своих программ.

В общем то вопрос, имеет ли смысл вкатываться на 3 года за 1200 (этого будет хватать только на еду и оплату жилья) и через 5 лет расчитывать на 3-4 $. Или вы посоветуете другие варианты, возможно имеет смысл выучить немецкий до С1, устроитсья на обычную работу которая будет приносить 1500 в месяц и сасомтоельно учить программирование и через 3 года условно уже самому получив какие-то знания, пытаться устроиться на работу? Есть ли в этом смысл?
На первый взгляд, 3 летняя учёба пусть за 1200 но зато структурированная + с набором опыта выглядит достаточно неплохо. Но есть проблема, после подписания контракта в случае чего нельзя будет сменить компанию на этот период.

В общем буду рад любым вашим советам и опыту) Всем добра
449 3268629
>>268609

>3 летняя учёба пусть за 1200 но зато структурированная + с набором опыта


В принципе этот вариант вполне приемлем если готов вести аскетичный образ жизни и перетерпеть эти 3 года. Так то время быстро пройдет, может и задачи будут интересные. Если хочешь связать свою жизнь с компами то можно выбрать этот вариант. Главное начни а там по-любому будут "окна" и возможности для дополнительного заработка.
450 3268762
Можно ли технически эксплуатировать уязвимость в зависимости, которая лежит в requirements.txt, но при этом никак не используется в коде приложения?
Нас безопасники дрочат только по очевидным проебам в пентесте, но вот задумался, стоит ли почистить старые зависимости, которые уже не используются в проектах.
451 3269681
>>268609
Перекатился в Германию
@
Чтобы сесть на жопу и сычевать за пекарней.

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

Я бы на твоем месте реализовывал бы второй вариант. Учить ЯП в свободное от более реальных дел время и дальше. У тебя же учебная нагрузка и так большая будет, тут если только один ЯП учить - большие сомнения что ты был бы проф.пригоден через год, учитывая что ты полный нуфаг, а тебе там кроме ЯП ещё кучу всего надо делать и учить.
452 3269784
Аноны, подскажите пожалуйста. Какие дашборды используете вместо платных Tableu и Power BI. Нашел список бесплатных альтернатив и думаю попробовать Apache Superset. У кого есть опыт работы с таким или другим опенсурсом. Поделитесь опытом. Благодарю.
453 3269817
>>268609
Единственное что имеет смысл делать в Дерьмании это работать, потому что там зп выше. А так это такая же блинолопатия, так что нах ты там сидишь без работы - я в душе не ебу.
454 3269986
разрабатываю калопровод на drf + react + postgre, пока что просто в докере запускаю на manage.py runserver
как и на чём надо деплоить?
nginx + gunicorn?
и как вообще со статикой будут дела обстоять, надо ебаться или нет?
455 3270076
>>269817
Да оно так кажется, что выше)
Обычный чел на обычной(почти всегда, тяжелой, т.к без перфект немецкого никуда не возьмут) - работе в месяц будет получать 2000-2200 евро.
800 уйдет на квартиру в лучшем варианте, зимой 1000
На продукты - 500, что бы 3 раз в день кушать, без ресторанов и прочего
Заправить машину - 200
Оплатить интернет/телефон/какие-то расходники еще 100-120
вот и получается что ты тратишь 800кв 500еда 200машина(до работы), 120 техника = 1620. Вот и получается что получишь ты в месяц в лучшем случае 380 евро на руки, которые сможешь "потратить на себя" - при этом будешь вьебывать за эти деньги целый месяц на ишак-работе.
Деньги вроде бы не маленькие, но учитывая что ты в Германии и тут все очень дорогое - то сам понимаешь, на что их хватит(толком ни на что).

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

Без образования( моё тут не катируется - юр.фак) - всю жизнь тут будешь подай-принеси за 2000-2500(максимум)
456 3270220
>>270076
Я конкретно про IT. Мне знакомый который во Франции пентестером работает, говорил что если работать в IT то лучше не в рабсиие.
457 3270876
>>268609
Ты бы ещё поваром захотел стать потому что ты всю жизнь ешь или электриком потому что всю жизнь используешь электричество
458 3270956
>>270876
Я буквально по этой причине электриком стал. Хз че не так.
459 3271213
>>267961
Тебе в js
461 3271863
Аноны если есть пиксельный кликер, его можно сделать для нескольких окон сразу что бы слал клики ? типо для каждого окна отдельно ? Ну грубо говоря я запущу 3 окошка с играми и для каждой он будет кликать по пикселям, делая эти свои снимки экрана.

Как это будет в коде выглядеть, типо вот скрип выделяет окошко нейм, а для нескольких будет просто в цикле перечисление окошек и для каждого запуск функции с кликами ?
462 3272080
>>271863
Всё можно. Только клики обычно это высокоуровневые сигналы апи, а у приложений бывает свое поведение, например приложение если не на переднем плане может не принимать клики по своей логике.

>Как это будет в коде выглядеть


Ну смари сверху кода будет импорт, потом два пробела, потом код, потом нудисы твоей мамки.

>в цикле


Лучше конечно сделать потоки или запускать каждый клик в субпроцессе, тогда они не будут друг друга тормозить. А если ты в одном цикле запустишь, то пока одно окошко будет обрабатываться другие его будут ждать.
463 3272783
Кто знает по бесплатным дедикам, там вообще выход в интернет есть?
На pythonanywhere.com залил простой кусок кода:
response = requests.post('https://api.myip.com', json={'key':'value'}, timeout=3)
print(response.json()['ip'])
Ошибка. На компе работает нормально, локально там код тоже запускается, а в инет выход вообще есть?

В этой теме полный ноль, понятно если деньги закинуть то все будет, но хотелось тупо потестить что да как.
464 3272789
>>272783
Похоже ответ в этом, у пидаров белые списки:
https://help.pythonanywhere.com/pages/RequestingAllowlistAdditions/

Ну и есть бесплатная нормальная альтернатив кто знает?
465 3272797
>>272789
Я бы для чего-то простого использовал облачные функции или gitlab CI. Ну или гитхаб.
Но если опыта нет, то много времени потратить придётся, скорее всего.
466 3272809
>>272080

> сделать потоки или запускать каждый клик в субпроцессе


Ясно спс, а можно же написать скрипт который будет запускать другой скрипт для каждого из нужных мне окошек ? такое возможно в питоне ?
467 3273014
>>272783
Дэдзік - гэта dedicated server, разумееш, гэта сапраўдны кампутар, што стаіць у спецыяльным памяшканні, займае месца. Табе ніхто яго не дасць. Забудзся на гэта. Выканаць свой гаўнакод ты можаш на розных пляцоўках, напрыклад на https://replit.com/@ploomum/SadRespectfulMoto працуе.
ssssss.png11 Кб, 894x122
468 3273330
Как сменить цвет этой белой рамки в Spyder или это в Винде можно сменить?
1725095126123298058.jpg33 Кб, 700x709
469 3274203
Поясните тупому. Есть aiogram, есть бот, я хочу чтобы:

Пользователь отсылает сообщение. Этот апдейт обрабатывается одним хендлером, а потом передается дальше и обрабатывается другими.

Типа:
@Хендлер(без фильтра)
функция ответить_1(): {
бот.ответ("я тя услышал")}

@Хендлер(фильтр_текст "привет")
функция ответить_2(): {
бот.ответ("и тебе привет")}


В итоге если пользователь послал "привет", бот отвечает "я тя услышал" а потом "и тебе привет"
Если сообщение, например "а у коня хрен 30 см", бот пропустит приветствие, но все равно ответит "я тя услышал"

Пробовал с разными роутерами, с небом, даже с аллахом, все равно апдейт отрабатывая по хендлеру уничтожается. Кажется, я просто чего-то не понимаю.
470 3274766
Сап двач
Я вообще не разбираюсь в этом вашем кодинге, но мне моча ударила в голову, чтобы реализовать такой прикол
У меня есть локальная LLM через LM Studio, есть яндекс станция
По идее существуют навыки яндекс алисы, с помощью которых запрос можно перенаправить на нейронку
Но у меня ваще ниче не получается
ЛЛМ запускается в локальном сервере, выяснил, что можно запустить в интернет через ngrok, но тоже чето не получается
Вот кусок кода со стороны нейронки, который работает:

import openai
from flask import Flask
from flask import request
import json
# Set the base URL and API key for the OpenAI client
openai.api_base = "http://localhost:1234/v1"
openai.api_key = "not-needed"
# Create a chat completion
response = openai.ChatCompletion.create(
model="Orenguteng/Llama-3.1-8B-Lexi-Uncensored-V2-GGUF", # this field is currently unused
messages=[
{"role": "system", "content": ""},
{"role": "user", "content":""}
],
temperature=0.7,
max_tokens=1024,
)

# Print the chatbot's response
if 'choices' in response and len(response['choices']) > 0:
print(response['choices'][0]['message']['content'])
else:
print("Нет ответа")

Помогите пж доделать эту херь
если что у меня есть Яндекс облако, в котором могут быть сохранены функции для алисы
470 3274766
Сап двач
Я вообще не разбираюсь в этом вашем кодинге, но мне моча ударила в голову, чтобы реализовать такой прикол
У меня есть локальная LLM через LM Studio, есть яндекс станция
По идее существуют навыки яндекс алисы, с помощью которых запрос можно перенаправить на нейронку
Но у меня ваще ниче не получается
ЛЛМ запускается в локальном сервере, выяснил, что можно запустить в интернет через ngrok, но тоже чето не получается
Вот кусок кода со стороны нейронки, который работает:

import openai
from flask import Flask
from flask import request
import json
# Set the base URL and API key for the OpenAI client
openai.api_base = "http://localhost:1234/v1"
openai.api_key = "not-needed"
# Create a chat completion
response = openai.ChatCompletion.create(
model="Orenguteng/Llama-3.1-8B-Lexi-Uncensored-V2-GGUF", # this field is currently unused
messages=[
{"role": "system", "content": ""},
{"role": "user", "content":""}
],
temperature=0.7,
max_tokens=1024,
)

# Print the chatbot's response
if 'choices' in response and len(response['choices']) > 0:
print(response['choices'][0]['message']['content'])
else:
print("Нет ответа")

Помогите пж доделать эту херь
если что у меня есть Яндекс облако, в котором могут быть сохранены функции для алисы
471 3274814
>>274203
Что тебе непонятно, долбоёб? У тебя первый хендлер без фильтра, он принимает любые сообщения.
28b2c1cdc78e31541e87e51593290511.jpg32 Кб, 807x574
472 3274868
3400/10-8

340000000000.0

почему так?

почему не 0.000000000034 ?
473 3274876
>>274868
fix
3400/10-8

340000000000.0

почему так?

почему не 0.000000000034 ?
474 3274877
fix да бля
3400/10-8

340000000000.0

почему так?

почему не 0.000000000034 ?
475 3274954
А в чем смысл такого поведения импорта модулей?

Если сделать import math, то надо чтобы функцию использовать явно указать названии модуля откуда она, типа math.sqrt()
а если сделать from math import * и таким образом все функции импортировать, то уже не нужно
Наверное в этом есть какой-то смысл, просто я не понимаю
476 3275002
>>274954
Вообщем явное "import math" лучше не явного "import ".
Но если импортировать надо много то можно использовать "import
".
478 3275102
Столько разных методов для строк, чисел. Понимаю, что просто тупо зубрить их сейчас это идиотизм, но если пробежаться глазами по всем, то потом, когда они понадобятся, то уже не вспомнишь, что был такой-то метод, который сейчас в твоей ситуации будет полезен и будешь костылями решать проблемы.

Я вот не зная о .replace() два цикла нагородил, чтобы пробелы из строки убрать
479 3275105
>>274814
Нихуя. Вешаем на два роутера: первый без фильтра, второй с фильтром.

Если сообщение не подходит под фильтр - то оно принимается первым. Если подходит - вторым. Только вторым. А мне надо чтобы оно прошло через первый тоже.

Так что ты сам долбаеб и тебе даже вопрос мой не понятен.
480 3275523
Чят, а вы что спрашиваете на собесах мидла/синьки? У нас работа с даткой, поэтому веб и асинхронщина не интересует, гоняю по чистому по питону, и кажется что у меня скучные поверхностные вопросы.
Сначала вопросы про принципы ооп; вопросы про всякие конструкции, декораторы, итераторы, контекст менеджеры, зачем это нужно, как сделать свой, какие дандер методы и проч; какой нибудь вопрос-наебка с мутабельным дефолтным аргументом; поверхностная скука про GC и GIL; и так в полчаса укладываюсь без лайвкодинга.
Если мидлов по этому еще интересно гонять, то синьки скучают, говорят что "ой тут теория а хрычка не предупреждала ну я не помню я не знаю". Грустно их после этого сливать и думать, что это их проблема что они даже на поверхностные вопросы не могут ответить или это моя проблема, что я никак иначе не могу оценить знания и спрашиваю скуку.
Так вот, чего бы спрашивать ИНТЕРЕСНОГО? Метапрограмминг не предлагать.
481 3275746
>>275105
https://docs.aiogram.dev/en/latest/ читай, блядь безмозглая
482 3276116
>>275102
На двух циклах это типа

def test(string):
temp = []
result = ""
for i in range(len(string)):
if string != " ":
temp.append(string)
for i in range(len(temp)):
result += temp
return result

?

На самом деле я хз, всё можно сделать Своими руками

Но я слышал что использование методов по типу replace() немного ускоряет/оптимизирует код.
Однако, в работе этих методов всё-равно нужно разбираться
483 3276390
>>191176
Ну а у даты какой тип? Может там пустой лист, а ты его на None проверяешь>>191176
484 3276418
Пытаюсь разобраться с сериализацией в yaml.
Когда дампаю в ямл, возникают какие-то ебучие записи, начинающиеся с двух восклицательных знаков, которые при десереализации выдают ошибку.
Откуда эта хуйна берётся?
Как сделать, чтобы её не было?
485 3276451
>>276418
Сам нашёл. В строке 35 нужно метод to_dict вызывать, раз уж я его сделал.
486 3276536
Аноны, а посоветуйте литературу по дизассемблу этого вашего Пайтона, а то я чёт не особо вникаю в это ваше высокоуровневое программирование!! Например:
Пик-1, я хочу понять, что делает компьютер, когда работает этот генератор. И что вообще такое этот ваш генератор?? Хочу посмотреть, куда прыгает компьютер, когда этот ваше генератор работает, хочу посмотреть где хранится старое значение месаги, в каком регистре сохраняется адрес на новую область памяти, когда шифр Цезаря "начинает свою работу", и что происходит со старым значением месаги????
Пик-2, в общем, цель такая, чтобы понимать эти ваши высокоуровневые "фишки", и читать эти ваши высокоуровневые "тексты" так же, как пик-2, в котором всё чётко и ясно разложено по полочкам.
Поэтому прошу совета насчёт лит-ры по дизассемблу Пайтона, либо что нужно делать, чтобы дойти до понимания этих ваших высокоуровневых "текстов".
487 3276775
Читаю про dsa немного и понять не могу это всё просто абстракция над обычными листами, массивами и тд?

Я так понял в питоне только и есть что листы, туплы (и вся стандартная залупа дальше по списку), массивы через модуль стандартный, и dequeq. А все эти стаки, очереди, linked листы, я всё это сам должен делать и это не отдельный тип хранения данных, а просто логика как я работаю с ними? Типа хочешь себе стак, то просто делай dequeq и добавляй в него данные в конец, а бери в начале, вот тебе и стак? А если будешь брать в начале, то хоба, у тебя теперь очередь (надеюсь правильно пишу русские названия)?

Ещё в статье какой-то писали так, что linked листы чуть ли не базовый тип, прям база база, это знать надо, а в другой по питону пишут, что они не нужны в питоне, можно только по приколу разве что самому(!) их сделать, если тебе интересно ковыряться с этим
488 3277318
Ну и как этот ваш Пайтон хранит строки?? Кто-нибудь может мне это объяснить?
Это не набор последовательных ячеек памяти, это какая-то "разнобойная" мешанина из ячеек памяти!! Причём удивительно то, что букву 'l' он хранит всего в одной ячейке (пик 3-4).
Как я понимаю, что каждый элемент строки он сохраняет куда попало, а затем берёт указатели на эти все "куда попало" и, мб, схороняет их в массив, оттого, мы можем обращаться по индексам к элементам строки.
489 3277324
>>277318
Пик-1 - так яснее.
Пик-2-3 - та же хрень, если строки разбить на элементы и сделать из них список.
Причём, если делать таким образом список, состоящий из цифр, то этот список он хранит последовательно, только одна ячейка для одного элемента списка занимает 48 байт, Карл (пик-4)!!! Что он туда сохраняет? Тайны Массонской ложи? Гей-порно в 48р???
490 3277399
>>277324
А теперь, аноны, ещё более удивительные вещи:
1) Если выводить алфавит, то тут можно утверждать, что символы идут последовательно, с разницей в 48 байт (пик-1).
2) Теперь, если собирать рандомную строку и нашего алфавита (строки a), а затем сравнить адреса элементов рандомной строки и исходной, то окажется, что каждый элемент этих разных строк имеет каждый один и тот же адрес (пик-2-3).
3) Если поступить так: из алфавита, состоящего из букв нижнего регистра, вычесть алфавит в верхнем регистре, то разница между адресами каждого элемента будет 1536. Зная, из предыдущих двух пунктов, что символ занимает 48 байт, то поделив 1536 / 48, мы получим 32!!! 32 символа это разница в таблице ASCII между 'a' и 'A', что и показывает последняя строчка (пик-4) - это разница между 'a' и 'Z' в таблице ASCII, точнее 7 это все символы между 'a' и 'Z' плюс сама 'Z'.
491 3277403
>>277399
Вот об этом (пик-1) 3-й пункт моего предыдущего поста.
Теперь мне думается, что строка в Python это не последовательно расположенные ячейки памяти, а тупо массив указателей на вшитую в Python таблицу символов. Зачем и почему хз!! Зачем пиздят в учебниках и в тырнетах о том, что строка это последовательно расположенные ячейки памяти - хз!!! ЕБУЧИЙ ЗАГОВОР!!!!!!
Если строка в Python это массив указателей на вшитую в него таблицу символов, то как тогда выглядят слайсы? Получается, что слайсы выглядят типа пик-2?
492 3277567
>>277399
Так вроде питухон строковой объект каким-то особым образом хранит чтобы он в памяти лишнее место не занимал. Типа если ты создашь массив каждое значение в котором будет строка "huy" у тебя памяти не хватит, а так они все будут ссылаться на одну и ту же строку. Но это не точно, мне эта тема вообще не интересна была я краем уха что-то такое читал когда пытался невпихуемые питонические типы данных как-то запихнуть в память. В итоге просто взял бд
493 3277687
>>277567

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



Ну вот, если в первом варианте сбора рандомной строки можно было ссылаться на непонимание работы ссылок, то даже в этом вариант (пик-1-2), когда рандомная строка никакого отношения не имеет к исходной строк, подобные элементы (т.е., например, буква 'a' в исходной строке и буква 'a' в рандомной строке) разных строк "занимают" одну и ту же ячейку памяти.
Поэтому действительно, строки это просто массивы указателей на таблицу символов. Конечно, наверняка, это как-то по-другому называется, но я хз куда копать - везде пишут, что это последовательные ячейки памяти. Так-то, конечно, массив это последовательные ячейки памяти, но это не просто массив символов, как это пытаются представить в книгах и тырнетах, а именно массив указателей на ячейки определённой таблицы символов.
изображение.png37 Кб, 1032x234
494 3277756
>>277687
Забавные штуки позволяет делать этот ваш Пайтон.
Короче, логически строки это действительно массивы указателей на объекты (в данном случае символы), но со своими приколами. Указывают разные элементы строки на один и тот же участок памяти, потому что это фишка Пайтона (называется интернирование), которая позволяет экономить место, типа чтобы не плодить одни и те же объекты (одни и те же буквы, например) в памяти, Пайтон одним и тем же элементам присваивает один и тот же адрес, который указывает на один символ.
495 3277787
>>277756
Диды основатели знали что делали. Если так сделоли, значит это оптимальное сочетание сложности алгоритма и занимаемой памяти, не бухти.
496 3277835
>>267556
Тебя спросили что такое классы,но ты и тут обосрался
497 3277836
>>277756
Выколи глаза, еба говнокод
498 3277847
>>277787
Да я и не бухчу!

>>277836
Не бухти, а лучше покажи пример не говнокода.
499 3277927
>>276536
Ты для начала изучи основые, матчасть вообще и базу по языками и всему прочему, что и для чего. А потом такие глупые вопросы сами собой отпадут.
Дизасемблерщик хуев.
изображение.png70 Кб, 2228x591
500 3277992
>>277927
Ты чего так сильно возбудился то, педик??
Услышал где-то, что дизассемблят только компилируемые языки, а интерпретируемые нет?
Педик, посмотри на пик! Видишь, справа на картинке, педик? Это называется байткод Пайтона. Но, если считать дизассемблом изучение этого байткода, то это просто шутка какая-то, потому что сам этот байткод написан на другом языке (скорее всего на Си). Чтобы понять внутреннее устройство Питона нужно читать именно тот код, который есть суть байткода Пайтона, педик, шурупишь??? Вся эта магия "лёгкости" Пайтона, на самом деле, неимоверный труд линкеров и лоадеров, чью работу и можно изучить и понять, если задисассемблить не в "потешный" байткод, а в настоящий ассемблированный код. Ну либо читнуть исходники этого байткода.
Вот я и спрашиваю, педик, где можно читнуть эту литературу, в треде, где люди должны были заинтересоваться внутренним устройством языка, на котором кодит весь этот тред. Педик!
501 3278014
>>277992

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


Те кто интересуются кодом интерпретатора в ужасе от гвидокостылей сваливают на другие языки.
Питон не тот язык в потроха которого лезут.
502 3278025
>>277992
Шизик, твой слог читать невозможно, таблетки прими.

Питон - это язык для того, чтобы напохуй что-то написать быренько, всем похуй как это работает, все поебать что там внутри происходит, интересуютя этим только разработчики интерпретаторов этого говна, которые все пытаются там ускорить это неускоряемое говно с GIL'ом.
Никто в серьез не пишет на питоне что-то большее, чем прототипы и небольшие приложения.
Ты пытаешься косить под умного, будучи совсем глупым, еще и с надменным стилем написания "в этом вашем". Думаешь ты пришел в этот тред и все такие удивились что ты смог на си написать какую-то залупу из 10 строк? Уебок, тут сидят дяди которые на си десятки лет писали и видели миллионы строк кода на ассемблере. А на питоне пишут, потому что это быстро и удобно для определенных целей. Лично мне вообще похуй как там че питон делает внутри, абсолютно, я даже не задумывался об этом никогда, как и пологается при использовании языков такого высокого уровня. Если я захочу побыть байтослесарем, я пойду на С++ напишу что мне нужно, вот там да надо знать все как внутри работает, потому что у языка абсолютно другая целесообразность применения. А тут нет. Короче иди нахуй дауненок.
503 3278031
>>278025

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


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



Ты сам себе противоречишь, педик!!!
Как ты собираешься писать прототипы, чтобы потом реализовывать их, допустим, на Си, не понимая, как эти прототипы устроены внутри?

>Никто в серьез


Всерьёз, глупый школьник!
504 3278133
>>278031
Боже... болезненный, ты из какой дурки-то сбежал?
505 3278168
>>278133
Педик, какие-нибудь вразумительные аргументы будут?
Давай так, чтобы мне понять, можно ли с тобой вести продуктивную беседу, ответь, пожалуйста, на вопрос:
Какая величина больше - километраж увиденных и опробованных твоею мамкой больших, чёрных хуёв;
или, как здесь, >>278025

>видели миллионы строк кода на ассемблере


увиденных дядьками строк на ассемблере?
506 3278190
>>278168
Какие тебе аргументы, ты несешь дичайший бред сумашедшего. Нахуя мне с тобой вообще дальше разговаривать, иди со своим лечащим врачом разговаривай лучше, анскил.
507 3278235
>>278190
Понятно! Только абсолютные шлюхи могут вырастить так возбуждённых педиков, как ты.
508 3278243
Как можно на этом нетипизированном говне что-то написать сложнее 100 строк, это пиздос
509 3278278
>>278243
Писать с типами...
510 3278419
>>278278
Это "писать типы" на деле просто "писать типы" больше никакого от них толку нет, кроме лишней писанины, интерпретатор тебе ошибку не выдаст и не ругнется даже никак. Я заебался сейчас после рефакторинга небольшого отлавливать баги и не состыковки кода.
Мое приложение упало раз 15 прежде чем я пофиксил все недочеты.
И большая часть из них была, типа перенес функция в класс - забыл дописать self функция падает, тоже самое и с переменными класса.
Немного поправил функцию которая должна возвращать строку с путем, она в некоторых случая стала позвращать Path из-за чего падало все непредсказуемо, бля ну это пиздос, такихх ошибок может быть тысячи, которые в статически типизированном языке тупо невозможны в рантайме и все вылезут на этапе компиляции, либо на этапе подсфетки кода в редакторе, но в питоне ты их заебешься отлавливать в рантайме. Я уже 10 раз пожалел что начал на питоне свою хуйню писать. Хотя там либа только для питона нужная мне. Но уж лучше запускать питон субпроцессом для доступа к данным сервиса через эту либу из статически типизированного языка, чем отлавливать кучу рантайм багов. Ну его нахуй короче. Питон это язык для программ не больше 400-600 строк.
511 3278466
>>278419

>интерпретатор тебе ошибку не выдаст и не ругнется даже никак


Чел... типы не интерпретатором проверяются
512 3278509
Это как надо говнякать спагетти и кататься ебалом по клавиатуре, что у тебя блоки кода начинают срать во все стороны произвольными данными.
Никогда не понимал этих нытиков, которые что-то сложнее хело ворлд не могут написать без святой типизации, которая им сопельки вытрет. В питоне есть аннотация типов, что тебе ещё нужно, чорт. А если ты забываешь self дописать, ну что поделать - обосрался с синтаксисом, скил ишуе.
513 3278603
>>187471 (OP)
В pandas команда df['date'].astype('datetime64') юзает же формат YYYY-MM-DD по умолчанию? Формат явно прописать можно?
Я знаю как это делать через pd.to_datetime, мне интересно именно по методу astype.
514 3278644
>>278509
Да нет, просто язык говно by design. Такое же говно было и с джабаскриптом, который по итогу превратился в строго типизированный тайпскрипт потому что все поняли что анрил что-то сложное писать на говне без типов. Вообще питон изначально довольно говенный язык, просто баблишко и влияние корпораций решают, а так же простота использования и вката. Любая обезьяна которая еще вчера бегала с камнем в руке сейчас может выучить питон и гордо называть себя "РАЗРАБОЧИКОМ" очка тут в питоне это и плюс и минус, простота использования оборачивается другой стороной медали в виде сложности написания реальных приложений сложнее пары сотен строк.
Если один человек может допустить кучу багов отловимых только в рантайме, то сколько сможет допустить комманда разработчиков? И вопрос тут не скила, а вопрос безопасности языка. Для меня питон такой же небезопасный как и си, си даже может будет побезопасней, все таки типизация какая никакая там есть, нету эксепшенов и есть goto, который в случае ошибки может перекинуть нас на блок освобождающий ресурсы, главное соблюдать все правила, но с питоном хоть тут и невозмоно мемори лики, очень легко выстрелить себе в ногу и пока ты не прогонишь все бранчи своего приложения в рантайме ты никогда не поймешь есть ли там баг или нет. Единственное отличие в том, что на питоне куча высокоуровневых либ котоыре в пару десятков строк могут тебе сделать то, что ты хочешь, где на си или даже С++ тебе бы пришлось писать кучу бойлерплейта и сотни или тысячи строк. Поэтому питон должен оставаться в своей естественной среде в виде скриптового языка для консольных утилит, которые можно написать на коленке.
515 3278748
>>278644
Всё о чем ты разнылся это всего-лишь помощь в дебаге и отладке, которую дает типизация. В питоне если ты не можешь что-то больше 100 строк написать не обосравшись с типами у тебя есть аннотация типов, которая используется IDE, который тебе каждое использование переменной проверит и если она используется не соответсвенно заявленному типу - подсветит ошибку.
image.png889 Кб, 3070x1726
516 3279577
питон рили такой простой язык?

ни разу не погромировал, читаю ща питон не для погромиздов. уже смог ужать код из начала книги в четыре строчки на зависть индусам
517 3279691
>>278243

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

if N

Начинают давать false, когда N==0. Это пиздец.. Пришлось пробежаться по всему коду и заменить на

if N!=None
518 3279707
>>279577
Я тоже его начинал как не-программист, да и сейчас уровень у меня околонулевый.
По началу реально просто. Условные конструкции, циклы и функции идут как маслице - все очень дружелюбно, просто и понятно.

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

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

Плюс довольно хуевый дефолтный упаковщик pyInstall, который 20 строк кода пакует в екзешник, который может весить и 5 мегабайт и все 80. Как будто он всю ветку зависимых библиотек полностью засовывает, лол. Еще и работает через раз. Правда там и другие упаковщики есть, я пока еще не все варианты опробовал.

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

Вообще я питон даже не как язык программирования воспринимаю, а как компьютерный мультитул, в том числе и для домащенго пользования. Переводить pdf-ки в docx, компрессия фоток, API, какая-нибудь несложная считалка которая автоматом дописывает текст для типовых отчетов, или наоборот программа, которая ищет в сотне текстов какое-нибудь слово, и выводит по 2 предложения до и после, что-нибудь такое. Недаром в репозиториях лежит 130к библиотек для него.

До этого немного писюкал на паскале в школе с очень смутным пониманием, в университете С++ блядский, который я вообще не вкуривал и делал как-то по аналогии информацию тогда просто не умел искать нормально и все. Питон первый язык от которого не тянет блевать. Только regex гумозный, надо будет его как-нибудь задрочить, набить руку просто.
518 3279707
>>279577
Я тоже его начинал как не-программист, да и сейчас уровень у меня околонулевый.
По началу реально просто. Условные конструкции, циклы и функции идут как маслице - все очень дружелюбно, просто и понятно.

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

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

Плюс довольно хуевый дефолтный упаковщик pyInstall, который 20 строк кода пакует в екзешник, который может весить и 5 мегабайт и все 80. Как будто он всю ветку зависимых библиотек полностью засовывает, лол. Еще и работает через раз. Правда там и другие упаковщики есть, я пока еще не все варианты опробовал.

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

Вообще я питон даже не как язык программирования воспринимаю, а как компьютерный мультитул, в том числе и для домащенго пользования. Переводить pdf-ки в docx, компрессия фоток, API, какая-нибудь несложная считалка которая автоматом дописывает текст для типовых отчетов, или наоборот программа, которая ищет в сотне текстов какое-нибудь слово, и выводит по 2 предложения до и после, что-нибудь такое. Недаром в репозиториях лежит 130к библиотек для него.

До этого немного писюкал на паскале в школе с очень смутным пониманием, в университете С++ блядский, который я вообще не вкуривал и делал как-то по аналогии информацию тогда просто не умел искать нормально и все. Питон первый язык от которого не тянет блевать. Только regex гумозный, надо будет его как-нибудь задрочить, набить руку просто.
image.png794 Кб, 3070x1726
519 3279720
я немношк туповат поэтому написал комментарии.

гордитесь мною.
520 3279864
>>279720
выколи глаз, pep8 тебе в помощь
521 3280118
чет в шапке не нашел, есть годные курсы по python django? udemy или еще что
Снимок экрана 2024-09-24 210306.png191 Кб, 1919x1032
522 3280518
Обновлял кто пайчарм до 2024.2.2 версии на 12 винде?
Не видит установленные пакеты.
Кеш валидировал, в %APPDATA% и %LOCALDATA% всё удалял, полностью сносил и заново ставил - не помогло.
523 3280577
>>280518
Хуясе, я думал это только у меня траблы с пайчармом, потому что на 7 винде сижу. Спасибо Билу гейтсу за вскоде, который без лишних вопросов цепляет pip из терминала.
524 3282251
>>279577

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

И все программирование состоит из этих базовых конструкций, никакой магии нет. В любом языке, сделать то, что у тебя на пикче элементарно. А вот сделать из этого сложные системы -- это уже задача.
image.png428 Кб, 2560x1440
525 3283539
просто оставлю это здесь
526 3283546
>>279577
Это ты еще про генераторы не читал сокрощальщик
def matrixA_by_matrixB(A: list[list[float]], B: list[list[float]]):
return [[sum([row_element*column_element for row_element, column_element in zip(row, column)]) for column in [[row[j] for row in B] for j in range(len(B[0]))]] for row in A] if len(B) == len(A[0]) else None
527 3283586
>>220070
минусы?
1727606467.png84 Кб, 797x724
528 3284502
Помогите, я даун. Надо вспомнить питон, решил почитать стандартную либу, поделать каких-то простых задач и решил написать функцию, чтобы соединить n многострочных текстов в один ряд, с вертикальным центрованием по самому высокому.
Блять, у меня реально опухоль в мозгу или сифилис мозга, я не знаю. Как это сделать как нормальный белый человек? Почему я могу придумать только какое-то дерьмо на 100 строк. Это же точно решается аккуратно и нормально строк за 10. Придумал два варианта, оба ублюдское говно.

https://www.online-python.com/TckJHlmwvb
530 3315826
>>187471 (OP)
Коллеги, подскажите плз вопрос по камере HikVision iDS-TCM203-A. Не могу разобраться, как с неё вытянуть номер автомобиля

https://stackoverflow.com/questions/79141957/how-to-capture-car-license-plate-by-using-hikvision-isapi-ids-tcm203-a-camera
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 18 ноября в 20:41.

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

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