Это копия, сохраненная 2 августа 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>2686473 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
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, но разницы почти нет)
— Какие книги считаются лучшими?
На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых?
Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
старая версия шапки, треды 90-148 и ранее: https://dumpz.org/bASGKD8cCFDf
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущий исходник: https://goonlinetools.com/snapshot/code/#8gd2g1snu3l8i26k0bc6k9
накидал гуй
как выводить числа? через псевдонимы?
Зависит от того, как импортируешь, но вообще говоря, все имена, кроме условно приватных копируются.
Быть питонистом - это даже хуже, чем быть пхпшником или дотнетчиком.
Мы понимаем твою боль, боль истинного шарписта, который достигает результата вшестеро медлненнее питонистов. И даже немного разделяем.
Так толока это что-то для бомжей, щас бы судить по ней о конторе. Ты бы еще предложил посмотреть условия работы для таксистов.
mechanical turk, о.
Бамп
Переписать на Electron
streamlit странный, если ты опытный программист.
Это просто какая-то удивительно нетрадиционная штука
Пиши-страдай. Спрашивай.
>нужно сделать приложения для корреляцционно-регрессионного анализа,
вообще-то как говно выглядит. Это типа калькулятора мощности?
Студенческий проект или реально нужное?
студенческое
думаю делать без задней мысли в google collab (или в юпитере)
не знаю только будет ли это считаться за приложение
на с# делать не хочу
ебош на streamlit.
в collab тоже есть элементы интерфейса, но могут доебаться.
streamlit же - как живой.
Шоб вы поняли, шо я хочу. Пикрил получается, если все делать стандартными средствами.
расскажи лучше как и куда выводить данные, в entry?
Нет, не работает. Label это просто текст, а не специальная нода.
if some:
...tmp = str.startswith
else:
...tmp = str.endswith
for x in range(milliards):
...string_var.tmp("test")
Всё разобрался методом тыка.
Представил, что startswith это как будто бы метод в обычном классе, а значит он ожидает строку как селф, над которой будет проводить действие - так и оказалось.
Интересно такое использование быстрее или медленнее обычного вызова?
timeit на 100 млн итераций показал абсолютно идентичную скорость, присвоение метода к переменной даже быстрее на на пару процентов.
Потому что не резолвится имя. На дохуя вызовов так и оптимизируют.
А есть какой-нибудь встроенный метод чтобы точно так же разделить строку в список но по ИНДЕКСУ ?
Только срез?
нихуя не понятно
>Я застрял где-то на планке 3,3 тысячи долларов в месяц
И чё те ещё надо, собака? Мало платят? На феррари не хватает? На устрицы с лимоном не хватает? На студию в москва-сити с мебелью от boca room не хватает?
>Варианты нахожу в основном среди фирм, которые перенесли деятельность из РФ
Ебать ну естественно, ажур ушёл с рынка же. Ты случайно не в анабиозе был последние 1,5 года? Хотя, обходить ограничения из России можно.
>Как вообще стать хорошим, ценным специалистов?
Работать, читать, изучать, развиваться. Ты продаёшь знания и своё время. Чем больше знаний накапливаешь, тем больше можешь предложить рынку.
>Как прокачиваться, в какую сторону?
Ажур + рякт + базы данных (nosql + реляционные бд) для начала будет норм. Ажур - это гигант сам по себе, там невъебенное количество сервисов. Ты пока их все изучишь - состаришься.
Какова цель АЙТИ - никто не знает. А те кто, знают не могут объяснить.
Обычно кода сделано так много, что выкинуть его никто не решается.
Получается, суть АЙТИ в постоянном ПЕРЕделывании.
Код с ORM переделывать несколько проще. Вот и все.
берешь да выводишь. хз в чем у тебя проблема
орм удобную абстракцию делает поверх базы. + за счет описания схем ты можешь генерить удобные миграции и потом их же применять/откатывать/делать бочку
а я смотрю ты трейни раз такие вопросы задаешь
Ты тупой? Ты итак можешь по нему через индекс гонять. У тебя строки итерируемые
>Сырыми sql-запросами же гораздо приятнее и удобнее
А потом после апдейта аппы тебе приходится в куче мест сырые скуэль строки редачить.
Сейчас полулегаси пытаюсь чинить. И там дегенераты прямо угорели.
Делают объект, репрезентирующий таблицу, добавляют ему в класс-атрибуты все названия колонок, потом пишут для каждой таблицы методы селекта, джойнов и прочее, которые генерируют на основе аргументов и f-строк запросы, которые потом посылают в пандахаус.
Вот так делать, как эти додики сделали - зашквар, который потом в нормальный вид приводить - много часов.
Плюс челики, добавив в одну из схем дополнительную колонку, все нахер сломали в одном из модулей. И ты пойди определи в нагромождениях бойлерплейт кода, где насрано.
Если не можешь осилить ормки, то юзай хотябы генераторы запросов как те, которые в алхимии или в пипике.
Блядь. Хотел спросить, почему? Взял да переписал затронутую sql-ку. Репозиторий же.
мимоанон, это лютый пиздец на самом деле, когда тебе надо поддерживать сырой sql. Хорошо, когда у тебя 10-20 запросов в коде, а когда счёт идёт на многие сотни-тысячи, это просто нереальный ад. Ну и вся эта тупая привязка к названием столбцов.
А ещё зачастую очень тупой код, когда ты сам руками джоины делает.
Полные ОРМ то ещё говно, которое тюнить надо, префетчить и т.п., но хотя бы уж промежуточные варианты надо использовать. Когда почти сырой sql, но всё-таки через какую-нибудь оболочку вроде алхимии.
>Ебать ну естественно, ажур ушёл с рынка же.
Да тралль он. Это же самое крутое, когда тебя из РФ перевезут, да ещё и денежку платить будут адекватную
Проще на собесе ответить "кем вы видите себя через три года", а не "как вы видите РФ через три года"
>Взял да переписал затронутую sql-ку. Репозиторий же
В куче мест репозитория, ага
Имагинируй, что у тебя 25 табличек, и где-то с пять сотен запросов.
В одной таблице захотели добавить новую колонку, а в другой свапнуть форейн-кий, третью таблицу сплитанули на две и каждую дополнили дополнительными колонками. А запросы у тебя все ручками написаны с захордкоженными названими таблиц и строк, ну или через самописный генератор запросов, как я выше описал, что почти всегда не далеко уходит от сырых запросов.
Сосать. Теперь у тебя приятное времяпрепровождение по гармонизации и поиску заафекченных запросов.
Когда используешь какую-нибудь алхимию, то просто меняешь пару классов, перебиваешь алиасы, и в ус не дуешь.
Гораздо быстрее апдейтить, ощутимо легче мэйнтейнить.
+ как бонус, у тебя не засран код многострочными дегенеративными запросами.
а ты еще представь как все эти миграции в проде придется прокатывать и не проебаться нигде.
Ботрос С., Тинли Д. - MySQL по максимуму, 4-е издание (Бестселлеры O’Reilly) - 2023.PDF
Советы ? Мнения ? Ебало?
Вот странно. Если после того, как большая часть спецов сейчас свалила за бугор, не значит ли, что их места стали вакантными? По-моему наоборот востребованность должна подскочить, а следовательно и зарплаты.
Не, ну понятно, что бизнес в России после начало войны жестко продристался и здох, но труба то как качала, так и качает газ в европу.
Я это к тому, что у власти то деньги точно есть и они могут их слить в ИТ, чтобы еще больше ужесточить режим и тотализировать власть. Если бы мне хорошо заплатили, то я готов работать на благо родины, затралить всех либерашек, вычислить их по айпи и обеспечить им еще долгие годы диктатуры находясь при этом в другой стране, разумеется
Вместе со спецами ушли компании, дохуя людей работали на галерах, с иностранными заказчиками, которые после начала всего этого говна отказались от сотрудничества.
Ну и не большая часть, но значительная, при этом у них есть возможность продолжать работать в тех же местах удаленно. а ещё дохуя погромистов знают англюсик только на уровне чтения доки
Если все закончится хорошо, то рынок опять придет сюда и тогда снова потребуются программисты, так как места для новых спецов будут уже свободны. А те, кто за бугром достаточно обжился - вряд ли уже захотят возвращаться сюда.
Ты дядя майор который угрожает попыткой покушения на мой анус или ты имеешь ввиду мою проф.пригодность?
>Если все закончится хорошо, то рынок опять придет сюда и тогда снова потребуются программисты, так как места для новых спецов будут уже свободны
А с чего ты взял, что это быстро закончится? Оно может еще с десяток лет продлится. И заходить обратно будут осторожно. А ты не молодеешь, кто бы что не говорил, а вкатываться в 22 гораздо легче чем в 30 и тебе все это время надо зарабатывать чем-то.
Ну, это я про совсем нуфагов и тех, у кого денег на переезд нету. А так то да, валить надо с Пидорашки нахуй ебаной, сука бля.
>>27757
Мир вообще изменчивый, кто знает, что вообще будет через три года. Сколько всего обычная ковидла поменяла, само ИТ меняется очень сильно, рынок меняется, а ещё кризис мировой раскочегаривается. И там скоро ChatGPT 6 выпустят.
Даже в мире не понятно, что будет, не то, что в Пынестане
Но рашкопеспективы сомнительные. Денег в любом случае становится меньше. Тратят их тяжелее. Перспектив, чтобы на хню тратить, мало кто видит. Уезжают не только разрабы, но и те, кто бизнесы создаёт, в которых внедряет ИТ или просто ИТ бизнесы.
Это же не так работает, что куча самообразованных джунов сидит, а тут бац, и кто-то приходит их хайрить.
Ну как бы ИТ в любом случае всегда будет, но вряд ли ещё когда-нибудь будет такое время расцвета, каким оно было.
>тогда снова потребуются программисты, так как места для новых спецов будут уже свободны
А ещё вот это вот не так работает
Бизнес любит приходить туда, где работников много, где компаний много, потому что это возможности нанять опытных людей, это наработанные схемы и т.п.
По этим причинам компании в основном в Москве-Питере были, хотя казалось бы, почему ты не в мухосрансках открывать. Это ещё в офисные времена. Но плохо в мухосрансках. Лучше открыть в Москве, платить больше за офисы и зарплаты тем же мухосранским понаехам.
У меня есть лист диктов c 10 полями у каждого. Эти дикты я рендерю на страничке в табличном виде, но отображаю там только 7 полей (3 поля - служебные и не требуют отображения). У каждой строки в таблице есть кнопка edit - и вот тут у меня проблема.
Мне нужно по кнопке edit отрендерить новую страничку со всеми 10 полями дикта, но я не понимаю, как это сделать. Я бы мог прокинуть по onclick() все 10 полей, но там есть 3 очень длинных поля, перекидывать это гет-параметром выглядит как пиздец. Есть ли какая-то возможность все же прокинуть на другую страничку весь объект, или надо будет в роуте новой странички забирать этот конкретный дикт с бека?
Забирать, конечно, передавать это вообще идиотизм.
Хотя отдельные страницы сейчас редко делают, в основном какой-то попап с ажахом.
Спасибо.
В ажакс (да и в жс как таковой) я просто не умею, поэтому у меня максимально SSR с минимум логики на фронте.
все нормально. доверяй но проверяй называется.
после генерации миграции, заглянуть внутрь и перепроверить что он там собрался делать с таблицей.
ебало додиков не могущих в орм?
Я просто не понимаю какого хуя "программисты" безапелляционно рассуждают о том, что ORM всегда лучше.
Не всегда.
Отсутствие ОРМ - почти что метаклассы.
Если ты не понимаешь, зачем тебе нужны метаклассы, то они тебе не нужны. Если ты не можешь убедительно аргументировать, почему ты обмазался сырыми скуэль строками нинужность ОРМ, в веду хорошего владения СКуэЛь и плохого владения первыми - не считается за убедительный аргумент, значит тебе следует юзать ОРМ.
Скушаю, спасибо за прокорм
Нет, всё-таки не так, потому что метаклассы это глубокие низкоуровневые кишки, в то время как SQL сам по себе фундамент, который знать в любом случае надо. Это как Си, который база для C++/Java/C#/JavaScript
ОРМ же это надстройки, причём их много разных, не совместимых друг с другом, сложно встраиваемых куда-то, в то время как базовый SQL куда угодно можно встроить.
В общем ОРМ придуманы для того, чтобы полноценно поддерживать сложные базы. Это там для сайтов-крудов надо. Если же у тебя лёгкое хранилище на несколько таблиц, то ОРМ может быть не нужен и даже в чём-то вредить.
Вообще не лучше, иногда можно за один запрос сделать все пиздато и почти не писать код, с ОРМ постоянно приходится ебаться
>Если же у тебя лёгкое хранилище на несколько таблиц, то ОРМ может быть не нужен и даже в чём-то вредить.
Вот это хороший аргумент в пользу обмаза сырым скуэлем.
Ты можешь хорошо уметь sql, ассемблер, системные вызовы и массу всего ещё. Но от этого использование напрямую sql без промежуточных оболочек не перестаёт быть антипаттерном.
Зло это потому, что у тебя логика кода и структур данных выносится куда-то наружу, теряется контроль. В ОРМ твой код контролирует структуры данных, которыми ты пользуешься. Когда ты работает напрямую с sql-запросами, логика уходит в код внутри строковых переменных, на инородном языке.
Когда база простая, это не страшно. Там ОРМ тоже зло, потому что лишняя зависимость и привязка к конкретной ОРМ. Но чем дальше, тем критичнее эти вот архитектурные вопросы.
>антипаттерном
Лол, обычно когда вижу такое слово дискуссия перестает быть осмысленной
>Зло это потому, что у тебя логика кода и структур данных выносится куда-то наружу, теряется контроль.
Что тебе надо контролировать какие поля у тебя в результатах? Никто не запрещает тебе класс обертку написать вот тебе и оболочка, а в компилируменых языках так и так должна быть какая-то структура, никто не будет в здравом уме везде какой-нибудь dict гонять разве что пхпшники битриксоиды
>Когда ты работает напрямую с sql-запросами, логика уходит в код внутри строковых переменных, на инородном языке.
Какая нахуй логика в sql запросе, ты там просто пишешь хочу получить то-то и так-то, это просто процесс получения данных, какую ты логику туда собрался запихивать я не знаю. Или для тебя банальные фильтры уже логика надо которой нужен контроль?
>Когда база простая, это не страшно.
Это двачаю когда база простая не страшно использовать ОРМ
Когда тебе нужно сделать какую нибудь хуйню для бухгалтерии, например unoin нескольких таблицы, отфильтровать по результатом из подзапроса и приджойнить с минимальной болью из другого подзапроса с ОРМ начинается сущий пиздец от всяких N+1 до того что ты кодом из ОРМ генерируешь точно такой же запрос, либо делаешь несколько запросов и проворачиваешь это говно в куче циклов не гляда на сколько O(n) у тебя большое.
мимо
>Никто не запрещает тебе класс обертку написать вот тебе и оболочка,
Ок, понял, надо написать свою собственную ОРМ. С "дураком" и путанами
>>29586
>Какая нахуй логика в sql запросе
Имена столбцов, их отношения с другими столбцами и т.п. У тебя часть кода фактически выносится из кода куда-то ещё. Что нехорошо.
>>29586
>отфильтровать по результатом из подзапроса и приджойнить с минимальной болью из другого подзапроса с ОРМ начинается сущий пиздец
В принципе не совсем, если дружишь со всякими префетчами, то джанга та же пресказуема. Правда тебе в любом случае надо понимать, что там на уровне SQL происходит.
Потом, на самом деле никто же не запрещает наполовину руками запросы составлять. Вот алхимию так часто используют, ты пишешь что-то, что реально очень близко к SQL, руками описываешь логику джоинов, фильтров и т.п., то при этом делаешь это через оболочку.
>или для тебя банальные фильтры уже логика надо которой нужен контроль?
Мимо, но вставлю 5 копеек. Если у тебя не статический запрос на все случаи жизни, а серия запросов, где ты варьируешь колонки, не важно, ручками, или условными f-строками или самописными васягенераторами, и тем более если в зависимости от условия что-то меняется в запросе на уровне клоуза, то ты хардкодишь запросы, что очень херово, если у тебя запросов больше 10.
>Когда тебе нужно сделать какую нибудь хуйню для бухгалтерии, например unoin нескольких таблицы, отфильтровать по результатом из подзапроса и приджойнить с минимальной болью из другого подзапроса с ОРМ начинается сущий пиздец
Не понимаю о чем ты. В той же алхимии очень удобный декларативный слой над этим всем, просто без задней мысли чейнишь и в ус не дуешь, получая результат, какой хочешь
Единственный случай, когда ОРМ никак не заюзаешь, это когда нужно сделать джойны по таблицам из разных датабаз дебсы, которые до меня работали, по приколу или слабоумию юзали мускул и клик для разных, но очень связанных данных, литературно одна из колонок в клике - условный форейнкий для половины таблиц в мускуле.
Можно ли написать более просто и понятно код, по-питонски??
# преобразовать это
# [('spr_progs',), ('sqlite_sequence',), ('client_point',), ('clients',), ('ass',), ('spr_hard',), ('spr_ofd',), ('hardwarass',)]
# в это:
# ['spr_progs', 'sqlite_sequence', 'client_point', 'clients', 'ass', 'spr_hard', 'spr_ofd', 'hardwarass']
# пока смог только так:
# dbtables = []
# for i in cursor.fetchall(): dbtables.append(i[0])
# print(dbtables)
О! Точно! Добра тебе, Анон !
Проблема в том, что в какой-то момент они просто перестают работать - я пытаюсь вызвать функцию, но он никак не реагирует - при чем это происходит без каких-либо изменений в коде. Условно вчера в 17 я закончил работать с ними, протестил что все норм - сегодня уже все перестало работать.
Вот в каком формате я вызываю функцию:
bot.message_handler(commands=['start'])(lambda message: start_command(bot, message))
А вот вызываемая функция:
def start_command(bot, message):
message_text = "Привет!"
bot.send_message(message.chat.id, message_text)
Кто-нибудь с таким сталкивался, в чем может быть проблема?
Какая разница? У сайта есть рейт лимит, если его превысишь, он будет бухтеть. А с асинком ты его превысишь намного быстрее.
У тебя возможно один из вызовов блокается, добавь дебаг логинга на все что можно и смотри.
Да.
чо блять? а в каких ты еще сценариях к базе решил сходить? обновить конфиг бд или вьюхи посоздавать?
Если нет желания, то и начинать не надо.
Главный профит Яндекса - опытные код-ревьюверы, они реально внимательно смотрят твои проекты и дают советы, как сделать код хорошим.
Плюс теория, которая и так есть на пиратских сайтах.
И так называемый карьерный трек, где тебя натаскивают на прохождение собесов.
Всё остальное - хуйня. Вебинары - бесполезное говно, а наставники в основном вообще не замотивированы помогать тебе.
По факту остается только код-ревью и подготовка к собесам, но для этих целей проще и дешевле будет найти себе опытного ментора, который будет точно так же ревьювить твой код, устроит тебе мок-собес, и какого-нибудь эйчара/карьерного консультанта, который поможет по софтам.
> Главный профит Яндекса - опытные код-ревьюверы, они реально внимательно смотрят твои проекты и дают советы, как сделать код хорошим.
>>опытные код-ревьюверы
Пробовал проходить у них курс когда работа давала возможность.
В итоге ради эксперимента решил сделать задачу но которая выглядит как верная, но полностью не выполняет условия задачи.
В итоге ревьювер мне нихуя не сказал, ничего не проверил насчет этого. Автотесты их проверили что это говно без ошибок запускается и поставили мне зачет.
После этого я тупо свалил от них. Ну нахуй этих дауничей.
Там за лямбду уже надо бить по ебалу. А вообще если такие умные то могли либо матч патерн заюзать или через dict сделать красивее, а не лепить вот это вот говно.
Можешь пройти нахуй пидор мелкобуквенный. Пиши классы для простых функций и итерируйся по списке через O(n^2).
Желтое a ^ b, белое a & b.
сука, даже пакманов сделали геями. ну сколько можно, блядь
Там боттлнек в графонии, который канпилируем. Твой ООП никакой погоды не сделает, а организация и порядок в плюс.
>>выглядит неправдоподобно.
А как оно должно было выглядеть? Что ревьюверы запускают твой код и глядят как он работает или просто просматривают его глазами на похуй?
>>Покажи ревью-репорт
Как ты себе это представляешь? Это было год назад
яндекс дурачек спок
Стоит ли с нее начинать путь в программирование?
Очень соблазнительно звучит использование Питона для автоматизации.
Учить ЯП по книгам, особенно когда ты смешарик, ничего не лапавший - крайне хреновая затея.
Единственный более менее адекватный способ изучать язык, это что-то калокодить и получать мгновенный фидбек от системы проверки/тестов и еще чего-то.
Если ты вообще зеро, то прочтение книги будет для тебя бесполезным и ты достаточно быстро дропнешь, когда поймешь, что ты не учишься идентифицировать повторяющиеся простые паттерны с повышением сложности задач.
Если хочешь уметь что-то накодить осмысленно, то возьми какой-нибудь бесплатный курс по петухону на степике, и читай параллельно какого-нибудь Лутца в качестве справочника, чтобы углубиться по пройденным темам.
>Как ты себе это представляешь? Это было год назад
Вот ты и спалился. Доступ ко всем пройденным материалам, проектам и ревью остается даже в случае, если ты съебываешь с курса.
Вот я например уже давно отчислился, а все ревью остались в личном кабинете.
Чушь несёшь. Смотря какая книга. Не все книги научные, заумные и полные теории.
Я когда-то вкатывался по книжке Python Crash Course. Там пол книги - практика. И я с абсолютного нуля смог начать благодаря ей.
https://mitpress.mit.edu/9780262542364/introduction-to-computation-and-programming-using-python/
Книга идёт в нагрузку к курсу MIT 6.00.1X
https://www.edx.org/course/introduction-to-computer-science-and-programming-7
Это и введение в Питон 3.5 и в программирование.
притом учти что я в прошлый раз замечания его пофиксил и потом его повторно же без проверки приняли.
Оно само где-то сгенерировалось на основе Модели OrderItem?
Сложно понять вот это все.
https://www.youtube.com/@PROGRAMMER_SEREGA
Я потихоньку учусь писать модели, недавно сделал парочку для распознавания капч. Сейчас решаю задачу от яндекса, нужно сделать классификатор, чтобы отличать мужской голос от женского.
Проблема в том, что в массиве для обучения аудиофрагменты разной длины.
Как лучше сделать, обрезать аудио до шумных моментов, чтобы каждое длилось секунду или дополнять пустотой, чтобы каждое длилось четыре секунды? Можно ли кормить модель файлами разного размера?
Пройдись оконной функцией до какого-нибудь разумного интервала, заодно аугментацию получишь.
>полноценные тяжёлые системы шаблонизации
>>> format = "Hello %s"
>>> format % "World"
'Hello World'
>>> format % "Dvach"
'Hello Dvach'
Я не кодер и пока становиться им не планирую, но хочу частично автоматизировать свою работу. Если не вдаваться в подробности, то я наполовину менеджер, наполовину аналитик и у меня очень много всякого дроча в духе "сделать запрос в базу, выгрузить в эксельку, сверить данные внутри эксельки, потом сверить данные с отчетом в адинэске, потом сверить данные с заказчиком" и "проверить, что в результате расчетов цифры не вышли за пределы определенного диапазона и отправить их письмом". Задач, как вы понимаете, довольно унылые и примерно одинаковые, а времени моего отнимают дохера.
Вопрос в следующем: с чего мне лучше начать? Я посмотрел книжки из библиотеки наверху, но там очень много всякой теории, которая, думаю, мне пока особо не нужна. Посоветуйте, пожалуйста, курс/книгу/статьи/мануалы, ориентированные в первую очередь на решение вот таких практических типовых задач, как у меня.
Ну и да, совсем базовые знания у меня есть, могу простенький sql-запрос написать, понимаю в целом, как сложность алгоритма посчитать и т.д.
Извини за ламерские вопросы, но в каком смысле аугментацию?
Как я поверхностно нагуглил, аугментация это создание новых данных для обучения на основе старых. Мне нужны для обучения одинаковые фрагменты, и я вырезаю из сырых данных отрезки одинаковой длины с нужными данными (в данном случае, игнорирую тишину и вырезаю те места, где в аудио есть любой шум).
Короче говоря, если я первоначальные аудио нигде не использую, то где здесь аугментация? Или ты предлагаешь, например, из трехсекундного фрагмента вырезать пять двухсекундных и этим обучать?
Пацаны, а че это вдруг он ничего не выводит, когда засовываю exc внутрь принта или логгера? Раньше же выводил вроде
Спасибки •√•
Ебать там кейвордов нахуярили в описании, лол.
Но нахуя, вряд ли там будет какая-то значимая подписота. Где перспективы для монетизации?
Kivy Framework посмотри, для мелочи всякой без требований по части дизайна мб пойдёт
Технически можно, но нахуя? Каждый язык это инструмент, и он хорош в своей сфере применения.
Ну я знаком с синтаксисом питона и у меня есть богатый опыт написания программ правда другой направленности. А тут знакомый написал что у него есть гениальная идея для приложения для смартфона а ТЫЖПРАГРАМИСТ. Разумеется ради этой аферы новый инструмент я осваивать не буду, есть лимоны - надо делать лимонад.
Ну если приложением будешь пользоваться ты или узкое комьюнити - можешь использовать киви.
Скорее всего программа будет для для какой-то монетизации, а значит для широкого круга. Это что-то меняет?
Можно сделать МВП, а если взлетит, то уже делать сириус бизнес и нанимать разработчиков.
Уже 6 утра, готовился ко сну, а потом увидел это и как обзмеился на всю комнату!
Можно конечно печатать вручную эту хуиту, если ты смешарик, но хакеры делают вот так, как я.
Это платина питухонтреда, нюфань.
Ты зашквар.
На деле в сливояндексотреадах в /б, местная фауна не смогла сделать решение, которые одновременно 1) давала бы точно такой же результат, 2) была бы быстрее древа иф-элсов.
Вот и думойте теперь.
>2) была бы быстрее древа иф-элсов.
Что бы функция выполнялась быстрее на 1 наносекунду быстрее?
>Ты зашквар.
>=
>Вы все пидорасы. Но сам то я ниче показывать, конечно, не буду, а то самого еще говном ненароком обольют. Лучше посижу тут и умный вид поделаю.
Я не понимаю, как учить-то ваше программирование? Вот я начал учить питон, освоил базовые операторы if/else/print и т.д. Но там этих операторов ещё дохулион. Я должен просто каждый из них учить отдельно, по очереди?
Я хочу сказать, что у меня этот материал не укладывается в единую картину и понимание того, как это всё вместе можно применить и для чего. Я придумываю сам себе простые идеи: типа создать массив, выделить из него там чётные/нечётные числа, напечатать только слова с большой буквы и т.д. Но это же простейшие банальные вещи. Я неделю позанимался и дропнул, потому что не видел в этом смысла.
Но сейчас хочу продолжить, т.к. соблазняют высокие зарплаты программистов и возможность переехать.
Подскажите мне, пожалуйста, что я делаю не так и в каком направлении двигаться новичку.
>как это всё вместе можно применить и для чего.
На первых порах всегда так. Первое что нужно сделать, это выучить все операторы полностью. Потом ключевые слова, модули, паттерны и т.д. И разбирать каждый пример по 100 раз до автоматизма, а потом сам начинаешь понимать где и как складывать.
Начать можешь отсюда:
https://www.w3schools.com/python/default.asp
>соблазняют высокие зарплаты программистов и возможность переехать.
Как бы тебе помягче сказать...
Поздно пить Баржуми, потому что отучиться и накопить денег до того, как тут железным занавесом все накроет для тебя времени уже не осталось, сладкий. Максимум будешь потом Великий Русский Файерволл обслуживать.
С его бати подобрал?
>соблазняют высокие зарплаты программистов и возможность переехать
Ахахахах!111
Забудь про это, бариста-вкатун. Тут талантливые котята галеру найти не могут, а ты даже из под палки базовый синтаксис освоить не можешь, а о каких-то небесных кренделях размечтался.
Как будто он что-то значит, лол. У пидоров из РДК (запрещенного в России) тоже паспорта есть.
Такие вещи пиздец как демотивируют. Сидишь, стараешься, учишься, потом встречаешь очередной пост про то, что питон - ненастоящий язык, который используется только для обучения детей, и всё, минимум на неделю выпадаешь из режима, так как начинаешь хвататься за все языки подряд и искать что-то настоящее и серьезное.
>Почему
Так они же тебе сами написали почему - потому что питон это скриптовый\игровой язык для обучения детей что-то вроде AutoHotKey
Я джавер, обожаю питон.
>Почему к питону такой хейт
Потому что так устроен человек. Они всегда считают, что только то, что им близко лучше, чем все остальное. Сишники и вовсе считают все остальные языки говном и не важно - жава, питухон это или руби. А последние, в свою очередь, уже смотрят на PHP или HTML как на младенцев макак.
хотя все из них хорошо справляются каждый со своей функцией и такие споры это просто переливание мочи из одной бутылки в другую.
Я как-то посидел джавсита поколупал это вопрос по существу. Итоговый тезис выкристаллизовался такой:
> В питоне нет вебфреймворка уровня спринга. Спринг - вершина эволюции, эти ваши фастапи - костыли и недоделки.
Почему ты так думаешь?
Ну да, джависты в наше время это спринг программисты.
>Такие вещи пиздец как демотивируют
Тя как это ваще ебёт? Главное что купюры шелестят, а кто больше программист а кто меньше программист это вы на соревнованиях по спортивному программированию выясняйте. Пойди ебать запишись на google code jam и там доказывай кто больший программист. Нахуя вы забиваете голову какими-то бреднями? Если продукт выпущен на рынок, работает, приносит профит, то и какая хуй разница на чём он написал? На visual basic, на питоне или на scala?
Я сам питонист, меня такое в своё время замотивировало несколько других ЯП выучить, ни о чём не жалею. Хотя питон не брошу - это как первая любовь всё таки, да и вакух много... Кста, по работе не раз встречал довольно компетентных разрабов которые взяли питон как второй или дополнительный ЯП, имея основной бэкграунд в джаве/шарпе
Ну, если уж быть совсем объективным, то некоторые языки и правда хуже. Например, я в программисты пошел только для того, чтобы вирусы писать, заниматься взломами и т.д А оказалось, что питон вообще-то не про это, но учить его все-равно не перестану пока в совершенстве не освою, а потом уже на C++ наверно перейду.
Похоже на какие-то оправдания. Что значит "в совершенстве не освою". Синтаксис, ООП, типы данных можно "в совершенстве" освоить за месяц, тем более все эти понятия общие для всех языков. А модули, фреймворки и всё остальное говно освоить невозможно полностью, потому что его бесконечное количество - ты берешь из этого океана то что нужно для работы.
>1С
Кстати в два раза лучше питона. Потому что выполняет свои узкие задачи. А питон ни туда ни сюда, хочет везде применяться, но в итоге в каждой области находится более специализированный инструмент. Таким образом питон вытесняется на обочину во всех сферах и потому его справедливо поносят. Он как бы и прикладной, но округление в нем не человекопонятное, он как бы и должен быть эргономичным но подкопотная о-нотация в нем такая хуевая, что элементарные алгоритмы выполняются там архимедленно, как будто диды-основатели специально саботировали свой язык. Ну и GIL конечно. Язык тролль, язык школьник, язык ни рыба ни мясо.
>в совершенстве не освою
Если субъективно, то совершенство для меня это уровень сеньера. Нельзя потратить всего каких-то пол года на изучение, а потом уже переходить к следующему языку. Так одна каша в голове будет, и узконаправленный специалист стоит сотен кодомакак как по мне.
Что вы с этим иГИЛом носитесь, уже давно всё I/O-bound перекатилось в асинк, а какие-то числодробилки писать на бидоне это изначально идиотская затея.
>Если субъективно, то совершенство для меня это уровень сеньера
Если говорить про то, что спрашивают на собесах для оценки сеньористости, то это несколько книг по языку, просмотр конференций и иногда поедание говна когда на работе пытаешься понять причину поведения.
Только вот код писать это не особо поможет, лул, у меня он как говно выглядит, зато собесы прохожу влет.
Чел, это в /б было. Там додики не могли воспроизвести такой же вывод, как яндексоида. А хитрая математика основанная на делениях, внезапно, оказалась медленней.
А как дело дошло до того, чтобы это сделать на таблице произвольного размера, так сразу сисяны начали дристать под себя.
Без питона как минимум современный датасаенс представить невозможно, это уже де факто стандарт. Может для продуктовой разработки он не настолько хорош как статически типизируемые компилируемые ЯП, но для всяких небольших программ, которые нужно по быстрому написать и они не требовательны к ресурсам, он идеален. Консольный файловый менеджер Ranger например написан на питоне. Да и не нужно забывать, что на бэке часто используются не менее, если не более ебанутые языки, вроде похапе или жс. Так что хуй знает, что там жаберы пиздят.
годнота пошла!
>>Я застрял где-то на планке 3,3 тысячи долларов в месяц
>И чё те ещё надо, собака? Мало платят?
Если жить в европках, то это нихуя не высокая ЗП, там ЖКХ, жильё, налоги легко съедвают 1,5-2k$ (в грециях с италиями), а то и под 2-3k$ (во франциях с германиями). Остатки уйдут на медицину и прочие услуги, так что жрац придётся мягко говоря не деликатесы.
>И чё те ещё надо, собака?
Вот тебе не хватает мозгов.
Хорошо работать в богатой стране, но жить в дешёвой бедной. Там-то цены охуеешь. 2к за нормальную хату, а не конуру с клопами в чёрном районе.
>Какое мнение двачеров о Mojo?
Не вышел в адекватное свободное пользование.
Пока ощущается как попытка сделать тайпскрипт на петухон.
Приживется или нет - время покажет.
Пока что непонятная поделка находящаяся в зародыше.
а это что за аниме?
>они используют орм. Зачем?
Чтобы абстрагироваться от СУБД. Типа "зачем учить скуль, если можно не учить скуль".
> Сырыми sql-запросами же гораздо приятнее и удобнее манипулировать
Предлагаю перейти на следующий шаг (я как раз свой пэт перевожу, пока нравится подход): сделай из СУБД интерфейс - насоздвавай там хранимок для внесения данных и вьюх для получения, потом можно перекрыть доступ к таблицам, вот это - тема. Так ты и ИБ закроешь (а то бывало такое...✱), и внутреннее устройство будет защищено, и скуль может быть быстрее (а может не быть).
✱См. пик. На одном не особо крупном сайте я получил вот такое вместо окна комментария. Если присмотреться, то из-за употребления у меня в тексте камента символа ['] (апостроф или одиночная кавычка) возникает уязвимость, на втором скрине - примерный вид камента, который просто снёс бы все каменты в системе вообще. КХУЯМ.
>а ты еще представь как все эти миграции в проде придется прокатывать и не проебаться нигде.
Liquibase
если будет совместимость с нативным питоном то будет бомба, а так хз, нахуя нужна еще одна джулия?
>по приколу или слабоумию юзали мускул и клик для разных, но очень связанных данных
Забавно. Но в принципе в этом может быть смысл. Например, Glaber работает похоже, если я тебя правильно понял. И там в этом есть смысл.
От игры. Если это текстовый квест, то вряд ли получишь профит (хотя и хуже не будет). А вот если какой-нибудь экшон, то, скажем, врагов делать экземплярами класса со своими параметрами - прям вообще маст хэв.
>Там боттлнек в графонии, который канпилируем.
Опять же от игры, но даже если взять графонодроч, то он реализуется не на пистоне, а на Vulkan'е, и томоза (действительные или мнимые) от питона зависеть не будут.
>к питону такой хейт
Потому, что все ЯП относятся к одной из двух категорий: мёртвые и те, которые ругают.
Но ненависть жавистов и сишников имеет понятные корни: на Питоне писать проще и быстрее, поэтому если сидит два человека и решают одну задачку, то питонист её решит быстрее. Потом доработает, переделает пару раз и, в конце концов, получит готовый проект, когда у сишника будет версия 0.1 pre-alpha. Но при этом код на питоне будет работать медленнее (как правило некритично медленно, но всё же) и на фоне сишного монстра это будет выглядеть как поделка из лего.
Истина на самом деле примерно посередине: в идеале ты сначала берёшь питониста, он за несколько итераций делает тебе конфетку, потом натравливаете профайлер и находите 1-5% самого тормозного кода и просите сишника по уму реализовать ВОТ ЭТОТ небольшой кусочек, который потом подключится как so-шка. И так часто делают те, у кого котелок варит.
Тут надо знать, что есть 1С. И отдельно знать, кто пишет для эски конфигурации. И я не знаю даже близких ЯП, делающих то, что дедает он лучше. Из одного запроса, накликанного мышкой, генерируется целый бизнес-процесс, это тема.
Если захочешь приблизиться, то самым близким станет... Всё-таки Питон, но для него нужно будет целый фреймворк написать.
Groovy — динамический, гибкий, при этом хорошо совместим с Java, а ещё пробелы не влияют на компиляцию. Чем не вариант?
используй, так быть может он совсем не помрёт. плюс на жабе в принципе тоже много сторонних пакетов/модулей/либ, так что камом, перекатывайся в жабатред.
>ВОТ ЭТОТ небольшой кусочек, который потом подключится как so-шка.
У ffi есть один большой недостаток, это то, что приходится руками переводить данные в понятный для него формат. Т.е. случайный объект взять и передать либе ты не можешь, тебе нужно объяснить сишке, что это за объекты. Есть конечно библы с поддержкой numpy для C++ (pybind11 например), но в общем случае придется заморочиться.
Или вот есть у тебя бутылочное горлышко в виде императивного алгоритма с вложенными циклами, где внутри цикла вызывается какая то функция или метод над определенным питоновским объектом (не numpy массив), типа как в сортировках есть колбэк на оператор сравнения. Возьму конкретный пример -- фигуры в shapely и перегруженные операторы & и | для них. Сами то циклы ты может и перепишешь на Си, а как передать туда объекты shapely и тем более функции для них? Придется конвертировать шейпы в список вершин и переписывать алгоритмы объединения и пересечения. Там, где я такую задачу встретил, переписывание на C++ будет оверкиллом и код вполне летает и на питоне, но тем не менее, такая ситуация вполне может встретиться.
Может, я что-то не знаю, если кто много работал с ffi, можете оспорить или дополнить.
Clojure динамический, тоже JVM и по крайней мере не дохлый.
>>37588
>>37590
Какие-то вредные советы ИТТ. Если у чела встает вопрос ООП или НЕТ, значит он нюфаг. А это значит, если он будет делать не в ООП то у него будет монструозная каша, в которую он уже не сможет вносить изменения через месяц. ООП же в первую очередь для человека нужно.
Вообще не вижу смысл делать хоть что-то без ООП, разве какие-то совсем микроскопические проекты на 1000 строк.
ну ну, 1000 строк для нюфака не дом гори.
В Го и Расте нет ООП в привычном понимании, там тоже весь код -- каша по этой логике? Или для тебя ООП -- это вызов функции через точку? Так это кроме полиморфизма в питоне само по себе ничего не дает.
ООП нужен нюфагу в первую очередь для того, чтобы код состоял из упорядоченных абстракций. Без этой парадигмы у нюфага 100% получается каша, которую автор сам прочитать не сможет уже через неделю.
Вот тут хз. Если ньюфаг будет на каждый чих делать класс, то лучше не станет. Ньюфагам лучше советовать не слишком сильно угорать по ооп и объектам, а научить правильно декомпозировать кашу на что угодно.
Когда вел петухон у непогромистов в шараге, огромную часть времени потратил на то, чтобы вдолюить в мелкие биологические головешки тот факт, что надо разделять код на модули.
Например, есть функция:
def func1(s):
__l=[]
__for i in s:
____l.append(i+1)
__return l
Тут, насколько я понимаю сложность O(n).
Теперь перепишем функцию:
def func2(s):
__for i in s:
____yield i+1
Если я сделаю ее вызов:
for n in func2(s):
__print(n)
То какая будет сложность ? O(n^2), раз у нас два цикла - в функции и при вызове?
Или ч что-то не понимаю?
Получается, при экономии памяти функции-ненераторы делают все медленнее?
>код вполне летает и на питоне
Значит, этот код не трогай. Питон медленный не в принципе вообще весь, а просто у него есть хуёво работающие места, практика коллег покаызвает, что в больших проектах нужно ускорить очень небольшие участки, если прям пичот.
Впрочем, и это нужно редко, в конце концов там, где используется питон CPU-bound актуален сильно меньше, чем I/O-bound (ну или питон там используется для связки сишных модулей, как в ML/DS).
Какие либы ставите обычно внутрь контейнера с питоном? Использую чаще всего python:%VERSION%-slim с вот такими пакетами:
ARG BUILD_PACKAGES="gcc g++ software-properties-common apt-transport-https apt-utils gnupg1 libcurl4-openssl-dev libssl-dev git-core python-setuptools"
ARG BUILD_DEPS="netcat ca-certificates"
О(n) никуда не делось. Вложенных же циклов у тебя нет
Но генераторы и правда немножко замедляют процесс
разобрался
str555[-2:]
Можно ли развернуть этот срез через указание шага и не создавая новые переменные?
Если сразу взять str555[-2::-1], получается херня какая-то.
Если ты используешь классы и методы вместо структур (датаклассов/диктов) и функций, принимающих в качестве первого аргумента ту или иную структуру, то это не ООП, а синтаксический сахар над обычной процедурщиной.
ООП про рантайм диспатч и иерархии классов, а в пет проектах это оверкилл.
Чел от шизы таблетки есть. Пей таблетосы, что доктор прописал, а не выясняй что является истинным ООП.
Для динамических языков да. См Smalltalk, Ruby. Определение ООП от автора этого самого ООП и смолталка.
Google, recursive factorial python
>Вообще не вижу смысл делать хоть что-то без ООП, разве какие-то совсем микроскопические проекты на 1000 строк.
Ну, если это будет таки текстовый квест, например, то там прям уапсче от классов никакого плюса.
А в целом вот этот антон прав:
>>37928
>не слишком сильно угорать по ооп и объектам, а научить правильно декомпозировать кашу на что угодно.
Да, две функции по 30 строк лучше, чем одна на 45 для понимания, даже если они неразрывно связаны. Но это не имеет никакого отношения к ООП.
>Какие либы ставите обычно внутрь контейнера с питоном?
Те, которые нужны для работы конкретной программы. Как же иначе?
> gcc g++ software-properties-common apt-transport-https apt-utils gnupg1 libcurl4-openssl-dev libssl-dev git-core python-setuptools
Нахуя тебе это всё? Если так уж нужно, собери сначала вилы в мультистейдже, а потом - инсталлируй их пипом в образ, где они будут использоваться.
> получается херня какая-то.
А что ты хочешь-то?
Вот у тебя строка:
>>> from string import ascii_lowercase
>>> ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
Дальше ты берёшь от неё срезы:
>>> ascii_lowercase[-2:]
'yz'
>>> ascii_lowercase[-2:][::-1]
'zy'
>>> ascii_lowercase[:-3:-1]
'zy'
Так?
Или другие языки подойдут ?
P.S. - курсовая по нахождению обьектов при чтении входного потока камеры на raspberry pi.
>это не ООП, а синтаксический сахар
Но ведь суть явления определяют свойства, которые характерны явлению во всех его проявлениях. ООП это общее размытое обозначение некоего стандарта индустрии, без четких границ. Даже "три столпа" ООП не во всех языках реализованы. Таким образом ООП это просто условность, обозначающая упорядоченный по принципу объектности-субъектности код, а всё остальное - просто частности.
Да.
Поясни такую вещь за генераторы. Вот все говорят "генераторы экономят память". Прям все преподы как один, как будто заучили мантру.
А где конкретно в какой точке эта экономия памяти то? Что под этим имеют в виду?
"Память экономится" в том смысле что ты перезаписываешь переменную в бесконечном цикле и gc просто потом очищает память? Так это и в обычном цикле сделать можно, при чем тут именно генератор? Или у gc какое-то особое поведение с генератором?
Тебе нужно проитерировать миллиард значений, которые могут быть вычислены, есть вариант сделать это через массив предварительно записав туда все значения и сохранив их в памяти, а есть вариант через генераторы, получая значения по необходимости. Так например работает итерация файлового дескриптера, который ты через open получаешь. И погугли про ленивые вычисления.
Т.е. генератор "экономит память" потому что он... итератор. Ясно.
>Такое и в обычном цикле сделать можно
В цикле ты перебираешь значения иммутабельного объекта range, если говорить о `for i in range()`
Его можно реюзать
Да, если это именно классическое `for i in range()`, то по итогу, поскольку объекту не будет назначено имя, он просто удалится после отработки рейнджа, но в процессе будет в памяти весь, целиком
Генератор же надо перезапускать, чтобы заново заюзать, он типа попроще
Что-то я уже мысль потерял, короче, хуй его знает, что там по памяти экономнее, лишь бы код работал как надо и читабельный был, наверное, мне вообще самому интересно узнать
мимонуфаня месяц питона
elif call.data == 'search_chapter':
chat_id = call.message.chat.id
msg = bot.send_message(chat_id, "Введите номер главы манги, которую вы ищете:")
handle_search_chapter_input(chat_id,msg);
def handle_search_chapter_input(chat_id,msg):
try:
manga_name = chapter_selection[chat_id]['manga_name'] # Получаем значение manga_name из словаря
chapter_number = msg.text
conn = sqlite3.connect('manga_bot.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM chapters WHERE manga_name=? AND chapter_number=?",
(manga_name, chapter_number))
chapter_data = cursor.fetchone()
conn.close()
if chapter_data is not None:
chapter_title = chapter_data[3]
chapter_url = chapter_data[4]
chapter_number = chapter_data[2]
result_message = f"Глава {chapter_number}: {chapter_title}\n\nСсылка на главу: {chapter_url}"
bot.send_message(chat_id=chat_id, text=result_message)
else:
bot.send_message(chat_id=chat_id, text="Некорректный номер главы. Пожалуйста, введите число.")
except ValueError:
bot.send_message(chat_id=chat_id, text=".")
Проблема в переходе к функции handle_search_chapter_input - после того, как я нажимаю кнопку Поиск (call.data == 'search_chapter':) - он присылает мне сообщение с просьбой ввести номер, после чего не дожидаясь от меня сообщения, сразу же присылает сообщение, что номер главы некорректный.
Получается, что он определяет это значение как пустое и передает его в следующую функцию, из-за чего она всегда выкатывается с одинаковым результатом. Как мне это пофиксить?
elif call.data == 'search_chapter':
chat_id = call.message.chat.id
msg = bot.send_message(chat_id, "Введите номер главы манги, которую вы ищете:")
handle_search_chapter_input(chat_id,msg);
def handle_search_chapter_input(chat_id,msg):
try:
manga_name = chapter_selection[chat_id]['manga_name'] # Получаем значение manga_name из словаря
chapter_number = msg.text
conn = sqlite3.connect('manga_bot.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM chapters WHERE manga_name=? AND chapter_number=?",
(manga_name, chapter_number))
chapter_data = cursor.fetchone()
conn.close()
if chapter_data is not None:
chapter_title = chapter_data[3]
chapter_url = chapter_data[4]
chapter_number = chapter_data[2]
result_message = f"Глава {chapter_number}: {chapter_title}\n\nСсылка на главу: {chapter_url}"
bot.send_message(chat_id=chat_id, text=result_message)
else:
bot.send_message(chat_id=chat_id, text="Некорректный номер главы. Пожалуйста, введите число.")
except ValueError:
bot.send_message(chat_id=chat_id, text=".")
Проблема в переходе к функции handle_search_chapter_input - после того, как я нажимаю кнопку Поиск (call.data == 'search_chapter':) - он присылает мне сообщение с просьбой ввести номер, после чего не дожидаясь от меня сообщения, сразу же присылает сообщение, что номер главы некорректный.
Получается, что он определяет это значение как пустое и передает его в следующую функцию, из-за чего она всегда выкатывается с одинаковым результатом. Как мне это пофиксить?
Он у тебя будто свое же сообщение и съедает, ты присваиваешь msg значение bot.send_message(), а потом msg передаешь в функцию
Питон -- это де факто стандарт МО, для него больше всего современных уроков, библиотек и проектов. Если тебе пиздец нужно на другом языке, то можно на другом, если например Машоб -- это небольшая часть проекта, написанного не на питоне, или модель должна запускаться на железе, которое питон не тянет, например, эмбеддед какой-нибудь. Но даже там можно тренить модель на питоне, а деплоить ее на C++.
https://pytorch.org/tutorials/advanced/cpp_export.html
Распбери должен тянуть питон по идее, даже деплоить на C++ возможно не придется, так что смотри сам.
Вот нужно тебе загрузить с диска 1000 фотографий, обработать их и записать на диск. И ты по какой то причине захотел это сделать не в одном цикле, а сначала загрузить все фотографии, потом их всех обработать, и потом все записать. В список тебе придется реально грузить все фото, а генератор просто запомнит как это сделать и будет грузить их по одному, когда ты начнешь его разматывать в цикле.
Но это не повод все списки превращать в генератор, это будет преждевременной оптимизацией. Нет, видишь, что приложение жрет много памяти, прогнал через мемпрофайлер, увидел огромные списки по несколько гигов и только тогда превратил их в генераторы.
СУКА, КАК ЖЕ БЕСИТ. При каждом чихе нужно прогонять заново все куски кода, рассованные по блокам, иначе привет, старые значения и ошибки в расчётах.
НЕТ НОРМАЛЬНОЙ ЕДИНОЙ ДОКУМЕНТАЦИИ. Я узнала о функциях для матриц от друга, а не от ёбаной туевой хучи сайтов, потому что эта хрень поглотила много библиотек типа numpy, а свести все доки в одно место и под один формат - хуй.
Сгори в аду, порождение математического угара. Я забуду о тебе, как о страшном сне.
ML-шики подсчитайте пжлста
1 pronouns упоминаний в женском, 0 pronouns в мужском. Если считать в процентном эквиваленте, то вероятность сочной, ароматной, мясистой THICK ASS этом треде равно 100% процентам.
Всем приготовить сухие салфетки и баночки для сбора мочи.
Если бы мальчики не были озабоченными, они бы с вами не общались и не помогали. Что мы думаем об одном, это, конечно, правда, но вот только средняя сельдь только это одно предложить и может. Так что радуйся, сельдь.
Тогда как увлеченный гик обмазывается доками, месяцами и годами забывая про сон и еду как шизофреник упарывает материал и только достигнув каких-то промежуточных результатов может уделить время другим вещам.
def _(text: str, _: dict = json.loads(Path(__file__).parent.joinpath('i18n.json').read_text(encoding='utf-8'))) -> str:
____lang = locale.getdefaultlocale()[0]
____if lang in _:
________if text in _[lang]:
____________return _[lang][text]
____return text
Аноны смотрите. В этом примере анон по два раза обращается к ключу в словаре. Он его сначала проверяет "if lang in _" - это о(1), а потом ещё раз проверяет и берет "_[lang]" т.е. опять выполняет то же самое действие о(1).
Правильно ли в таких случаях брать ключ с помощью get() в переменную и уже смотреть эту переменную?
var = _.get(lang)
if var: pass
Зато проебешь на .get.
Прогоны сто тыщь мильйонов раз оба варианта (как это и происходит в реальных проектах) и сравни.
В целом это преждевременная оптимизация.
зелёный
Ничего я на гет не проебу. Тот же самый вызов ключа, я таким образом просто один вызов ключа меняю на бесполезную переменную. И без замеров понятно что проверить является ли переменная None это быстрее чем взять значение из словаря, но меня просто бесит тот факт что джва раза одно и то же действие выполняется. Это же некрасиво и непродуктивно. Раз мы что-то берем из словаря так надо это использовать.
А вообще вопрос был про культуру письма так сказать. Как более правильно, и не считаю это какой-то оптимизацией я вот всегда так делаю уже автоматом.
Чем тебе gettext не устраивает? Там хоть 80 языков и перевод автоматизировать можно, нахуя велосипед?
Ебать ты додик, перезвоним.
> В этом примере анон по два раза обращается к ключу в словаре.
Если ты схоронишь значение в словарь, то в развороте ты получишь три обращения по ключу вместо 4. Потому что любое обращение к переменной в питоне это обращение к словарю vars() по имени переменной. Примерно так, см.:
>>> a = 1
>>> vars()["a"]
1
>>> vars()["b"] = 2
>>> b
2
Хм. Ясно. Спасибо.
Учился, лул, специальность 02.03.02, протоколы и их отличия разбирали, но чего-то уровня парсилки http не делали
например через aio-pika
В тред врывается IT-тян, и проводит тебе пелоткой по губам. Скорее всего ты лентяй, оп. У нас в оффисе все программисты получают минимум 150к, и это даже не джуниоры, а какие то духи 16-ти летние после школы. Я Синьор спешалист по саппорту, сижу на телефоне и решаю проблемы клиентов, у меня ЗП 500к+ премии, я всего добилась сама, в 20 лет у меня Х6М ProSport Elite Tunning изсалону, элитный тюнинг, занижение -10, музыка HarmanCardon по спецзаказу на 3 миллиона, всего 5 машин в мире, хата на Кутузовском двухуровневая, дом в Италии и земля в Айдахо, на старости заведу ферму и буду пасти там коров. Или что там делают старые фермеры, не знаю. Причём у меня нету богатых родителей, нету отца, мне в 16 лет было нечего есть. Я всего добилась сама и своим трудом. А местных петухариусов, которые создают нытик треды мне искренне жаль, честно. Надо было учиться, а не бухать по подъездам, ныть на дваче и сидеть на шее у мамок.
Мог просто статью в википедии прочитать.
Я никогда не пойму, какого хуяникто не читает википедию, в которой написано всё.
Забери меня к себе, я молодой и красивый. Буду твоим рабом.
>>dict = json.loads(Path(__file__).parent.joinpath('i18n.json').read_text(encoding='utf-8'))
Чо это за говно ты насрал в параметры функции?
https://github.com/Shapestack/ExamplesOfMyWorks
Это забавно, канеш. https://github.com/Shapestack/ExamplesOfMyWorks/blob/main/Bomb.py#L25
В целом, корявые вкатунские эксерсизы после прочтения нубской книжки. Посиди ещё полгодика и пробуй делать что-то полезное, а не ололо-упражнения.
Как вы поняли, сервака который слушает коннекшны там нет, у меня есть 2 стула:
1. Прикрутить какой-то небольшой сервер который помимо реббита будет слушать http порты
2. Отправлять запрос хеалфчека туда через другой сервис
Не понятно следующее. По п.1 - что асинхронное туда прикрутить чтоб было легковесное? Джанга очевидно не подходит лол. По п.2 - - так вообще норм делать хеалфчек? Прокидывать запрос через другой сервис? Чет мне кадется, херня какая-то
Кринж, начиная от классов старого стиля и заканчивая логикой в методе str вместе с импортом внутри него. Зато интерфейс нахуячил.
Тебе надо что бы сервис который слушает реббит знал о том, что сервис-паблишер жив? Так сделай отправку тех же хелсчеков через тот же реббит и начинай алертить, если больше 1/2/5/10 секунд ничего нет
Ладно, видимо пора перестать брать методички с Рашкинских сайтов и переходить полностью в eng сегмент.
Я прекрасно знаю, что эта хуйня излишняя, тем более для такого маленького кода, но я думал, что так профи пишут, что так и надо.
Как проверить, что тип у значений тоже разный/одинаковый?
Нужно всё что есть в б, удалить из а, но труфолсы должны быть не тронуты. Надо циклом пройтись по б и если значение есть в а и его тип такой же, то удаляем.
Как это лучше реализовать, не двойные же циклы хуярить для этого? В подсказках дают наводку, что нужно сравнивать кортежы. Это получается, что через генераторы нужно просто два новых списка из кортежей(с значением и его типом) сделать и уже их сравнивать? Это самое верное решение или есть более правильный подход?
не, хеалфчек нужен именно на сервис-консьюмер который слушает реббит а не на паблишер. На паблишере сервак на фастапи, там и так хеалфчек
Я указал в одном из пунктов что думал посылать запрос через сервис с фастапи чтоб он слал через реббит сообщение. Но мне сказали, что так дела не делаются
Ты генератор не проверишь на вхождения в цикле, он в первый же раз размотается полностью.
Делаешь сет туплей для б и потом итерируешься по а и сверяешь, есть ли такая тупля.
c = {(val, type(val)) for val in b}
Спасибо, понял, в принципе так и хотел сделать. Только мне не сет а лист нужен, задание немного не так сформулировал, но да ладно.
Опять рашка гению в штаны насрала, да что ты будешь делать.
Есть проект Django с приложением
> project/app1
Есть шаблоны html
> project/app1/templates/app1/index.html
А также джаваскрипт в этой же директории
> project/app1/templates/app1/script.js
Я пытаюсь подключить этот скрипт следующим путём
>{% block content %}
>script src="script.js"></script>
>{% endblock %}
Через дебагер я выявил, что относительный путь "./script.js" преобразовывается в адрес хттп://localhost/index/script.js, что в принципе, логично, но совсем не то поведение, которого я жду.
Абсолютный адрес прикручивать это плохая практика наверное, как выйти из этой ситуации, помогите, пожалуйста.
Спасибо.
ну тут конеш как то не сильно ок.
попробуй элементарно на ютюбе поглядеть разные обзорчики разного кода. или просто походи поанализируй как другие пишут код.
А причем тут англ и ру сегмент? Ты тут выдал то что даже в нигерии в проде не делают.
А по сабжу в рф норм код пишут. Просто нужно учиться у норм челов, а на ютюбных диванщиков уровня хайдихо.
Ну все верно. А что не так собственно?
>К сожалению, в настоящий момент мы не готовы
>пригласить Вас на дальнейшее интервью.
>Мы внимательно ознакомились с Вашим резюме
>и, возможно, вернемся к Вашей кандидатуре
>когда у нас возникнет такая потребность.
А, я ток щас заметил. Не обратил внимания.
>>41568
Потому что информация которая находится тут по большей части устаревшая и не полная, я по ней и обучался, а потом мне говорили, что я какую то старперскую дичь несу, которая давно не актуальна.
Да и челиксы с ютуба то же самое говорят - учи доки на англюсике. Но нет, я решил не жертвовать комфортом чтения на родном и вот результат.
>хайдихо
Я его посматривал, но УЧИТЬ язык с ютуба это вообще шизофрения.
>>41598
Спасибо, я уже прочитал.
Разобрался, я долбоёб, приятно познакомиться.
скрипты надо положить в статику и загружать оттуда ...src={% static 'script.js' %}
Да далеко ходить не надо даже. Захотел я значит почитать про паттерны. Захожу к русскому челику и вот - информация 10летней давности. И так у нас повсеместно. Можете сами проверить.
https://github.com/pkolt/design_patterns/tree/master
Захожу сюда
https://github.com/faif/python-patterns/tree/master/patterns
На ангельском есть больше и информация свежая, максимум год назад обновлялось.
Какие тут выводы? Что учиться на русских сайтах зло, нужно либо вуз оканчивать, либо хорошее знание английского.
Вот и думайте теперь головой.
Как думаете, что интуитивно понятнее и правильнее при создании константных переменных, чтобы сделать код менее вонючим?
Вариант 1:
>def foo(args):
>____SEND_PACKETS_SECONDS = 25
>____код на 100+ строк
>____keepalive(SEND_PACKETS_SECONDS)
Вариант 2:
>def foo(args):
>____SEND_PACKETS_EVERY = {'seconds': 25}
>____код на 100+ строк
>____keepalive(SEND_PACKETS_EVERY['seconds']
?
Глобальная переменная без глобальной переменной.
https://github.com/vsp245/Colab-AutoWebUI-Downloader
Весь код в одном файле и 'do_once' - для удобства использования в колабе.
Будьте снисходительны, делал для себя и сам пользуюсь постоянно, но вот решил поделиться и заодно попробовать оформить публичный репозиторий.
Если вдруг захотите посмотреть как скрипт работает в колабе, то единственное условие для его запуска - создать пустую директорию "stable-diffusion-webui" (колаб сейчас выдает предупреждение, если в тексте кода есть такая строка, но это не страшно)
Первый вопрос, на котором бы, все ранее тобой сказанное поросло бы красными флагами был бы "для чего ты везде засунул классметоды, хотя нигде преимуществ от мутирования самих классов не используешь?'
Выглядит будто ты просто пернул в лужу, чтобы пернуть в лужу, но обосрался.
Я сделал методы классовыми только в тех классах для которых не создаются экземпляры в процессе работы.
Экземпляр в этом скрипте это скачанный файл или файл который уже находится на диске. Все методы которые меняют такие объекты не классовые, а обычные, Классовые методы относятся к изменениям GUI и к изменению общих классовым переменных, таким как например списки всех скачанных файлов или очередь на скачивание. Мне было проще так разграничить методы и мне кажется это логичным.
Хуйня без преимуществ и задач, ты не используешь инкапсуляцию, где нужно, но используешь полиморфизм там, где не нужно.
Олсо, предыдущий ответ не я писал.
Т.е. когда классовые методы работают только с общими классовыми данными, а обычные методы работают с экземплярами + классовыми данными это плохая практика?
Не использовать рекурсию?..
Это не рекурсивная проблема. Или ты что-то не так понял, или это какое-то идиотская задачка.
да сойдет, разве что елс убрать чтобы пару строк сэкономить
def nat(n, c=0):
....if c != n:
........print (c)
........c += 1
........nat(n, c)
Братва, искал способ объединить несколько enum-ов в пистоне и увидел вот такое. Офигел когда понял что оно реально работает, aenum можно на обычный модуль enum поменять если что.
Так че можно было что ли? Че я прямо в теле класса какой-то код высираю и он работет? Синтаксис такое разрешает? Думал только в методах можно код исполняемый хуячить, в классе только переменные объявлять
Ты прекрасно понимаешь разницу между объявлением переменной и исполняемым кодом, не верти очком
Вот жс тебе как бэ подсказывает что делаешь хуйню
Нет никакой разницы, class это как тот же def, делаешь там что хочешь, у него даже свой отдельный скоуп для этого. Методы в классе это просто обьявление функций, методами они становятся при инстанциировании через связывание с созданным объектом.
А жс в качестве примера можно приводить разве что для примера ебанутости.
Твой код на скрине абсолютно легален. Сработает и в жс и в го (только там не классы будут а структуры)
Ты просто присвоил по дефолту аргументу a значение None, параллельно выполнился код с пуком
Я же хуярю код прямо в теле класса, что в общем-то хуйня ебаная и ни один мажорный ЯП такого не позволит
Мой код показывает, что при обьявлении класса он исполняется, оттуда и пук. Значит исполнится всё что угодно.
Этим и отличается навесной ооп питона от заранее спроектированного, в котором всё обозначено. Оттуда же и явный self для методов, который только self по соглашению.
Можешь ещё ооп в перле глянуть, там ещё охуеннее навесили ооп на процедурный перл.
> Этим и отличается навесной ооп питона от заранее спроектированного, в котором всё обозначено.
Навесной ООП в ООП языке? Ты бредишь?
> Оттуда же и явный self для методов, который только self по соглашению.
Какое это вообще отношение имеет к тру ООП/не тру ООП? В каких мажорных языках int или dict являются объектами? Вот и думай головой
Ну почитай доку, там всё описано. https://docs.python.org/3/reference/compound_stmts.html#class-definitions
> Какое это вообще отношение имеет к тру ООП/не тру ООП?
Это не про тру, а про динамическую природу питоновского ооп. Это просто использование существующих возможностей, посыпанное сахарком, а не отдельный механизм, в котором строго описано, что можно делать, а что нет, на уровне синтаксиса. В питоне этого нет.
Челик с хеалфчеками снова заглянул к вашему шалашу. Заебошил небольшой http-сервер на starlette (потому что это говно оказывается уже подтянулось в зависимостях проекта). Но возникла проблема с запуском этого сервака. Белый человек бы просто запустил это через asyncio.gather и все норм бы работало, но ебучий вызов uvicorn.run - блокирующий а не асинхронный. Пришлось это высирать внутри треда (loop.run_in_executor запускает все в ThreadPoolExecutor). Есть какие-то альтернативы? Неужели ызов uvicorn не может быть неблокирующим?
>Неужели ызов uvicorn не может быть неблокирующим?
Нет, тебе нужен вебсервер который поддерживает ASGI, что бы твои веб-фреймворки запустились потому что напрямую они порты не слушают.
Как вариант можешь инверсию сделать, где Starlette во время инициализации запускает твой сервис. Или через asyncio самому сделать сервис, а aiohttp предоставит фабрику для HTTP протокола, а можешь сам ее написать.
https://gist.github.com/ethanfrey/75e58db27095936b9e5e
https://docs.python.org/3/library/asyncio-eventloop.html#creating-network-servers
Предлагаешь писать самому http сервак поверх транспортного уровня? Парсить байтики? Без базара, это будет интересно на первый хпорах, но нахера?
>писать самому
Ты мои ссылки открывал? Все уже сделано за нас
https://docs.aiohttp.org/en/stable/web_reference.html#aiohttp.web.Application.make_handler
https://docs.aiohttp.org/en/stable/web_advanced.html#aiohttp-web-app-runners
А еще aiohttp наконец завезли раннер нормальный
Тебе уже сказали, что все эти фастапи-старлеты сделаны из расчёта, что твое приложение это веб-сервер.
Если тебе надо запускать веб-сервер как одну из задач, тебе надо использовать aiohttp, это его фишка. И даже ссылку тебе дали на то, как именно в этом режиме запускать
https://docs.aiohttp.org/en/stable/web_advanced.html#aiohttp-web-app-runners
всё очень просто в общем
>А, я ток щас заметил. Не обратил внимания
Вот в этом и проблема... Зачем-то публикуешь на всеобщее обозрение код, который никому не нужен вообще. Видимо чтобы можно было зайти и убедиться, что ты программист. А как откроешь файл, то там такое...
Кстати, вот отрываешь твой гитхаб, сразу бросается в глаза имена файлов с большой буквы. Уже коробит. Открываешь файл, а там табуляции вместо 4 пробелов.
Как бы формально не запрещено, но в системе свой-чужой ты сразу попадаешь под "не наш человек, не наш"
С точки зрения кода тоже мягко говоря то ещё, сплошные копипасты и т.п. До того, чтобы шла речь о реальном коммерческом программировании, хотя бы стажировках, речи не идёт.
Короче дальше тренируйся и осваивайся, может через год созреешь. Серьёзно.
>Нахуя тебе это всё?
g++ (или может просто g++) идёт в стардантом питон-контейнере, поэтому он весит гигабайт
Нужно для сборки некоторых модулей при установке через пип
>Открываешь файл, а там табуляции вместо 4 пробелов.
>системе свой-чужой ты сразу попадаешь под "не наш человек, не наш"
Это потому что я на горьком опыте убедился, что таб безопаснее и не вызывает случайных ошибок отступа при копипасте кусков кода.
Лучше руки отрежу, чем себе в этом изменю.
Добавь туда фастапи и чекай, как и паблишер, отдельный хттп сервак, который будет дергать хттп порты твоего сервиса это какой-то пиздец
О, делал это в тестовом задании. С самописной классической NN на 80 входных нейронов добился 96-97% правильных ответов. Прогнал аудио целиком через трансформацию Фурье и даунсемпльнул диапазон 0-1000 Гц до 80 значений
>>42639
>Мой код показывает, что при обьявлении класса он исполняется, оттуда и пук.
Честно говоря, это на первый взгляд пиздец как неочевидно, что именно должно произойти. По мне, так такой код во-первых не должен так работать, во-вторых - ни в коем случае не должен использоваться в этом качестве в проде потому, что неявное хуже явного.
На самом деле, если разобраться, то вяснится... Что код метода ololo не исполнялся, исполнилось только объявление функции и расчёт дефолтного аргумента. Собственно, вот более правильный и наглядный скрин.
Из этого скрина следует, что:
1. При объявлении ФУНКЦИИ формируется значение по-умолчанию. В этом есть логика: не каждый же раз, когда функция вызывается рассчитывать его отдельно.
2. При объявлении класса пробегают все инструкции в классе. Как при подключении модуля (очевидно, что при объявдении функции так же рассчитается дефолтное значение её переменных). Это... Нужно просто иметь в виду. По-хорошему в классе должны быть ТОЛЬКО ОБЪЯВЛЕНИЯ, конечно. Просто потому, что явное - лучше неявного и вот это вот всё.
Бонус(скрин 2): правильно передавать функцию внутрь без скобок, тогда она не будет исполняться потому что функции Python — это объекты первого класса. Подробнее: https://habr.com/ru/companies/otus/articles/725374/ .
Пишу это всё сейчас и одновременно понимаю, насколько важно понимать (желательно, интуитивно), что, зачем и почему происходит и при этом насколько Гвидо и компания сделали охуенную и гибкую вещь.
>>42745
>Это просто использование существующих возможностей, посыпанное сахарком, а не отдельный механизм, в котором строго описано, что можно делать, а что нет, на уровне синтаксиса. В питоне этого нет.
Это круто. Когда пришло понимание, только зауважал авторов.
>>41325
Возвращаясь сюда, обнаруживаем, что
class Powder(object):
....print('Порох')
идентично в данном случае простейшему
print('Порох')
и вообще никак от него не отличается.
Вообще всё сильнее подозреваю, что тут просто чувак троллил тупостью.
>>42639
>Мой код показывает, что при обьявлении класса он исполняется, оттуда и пук.
Честно говоря, это на первый взгляд пиздец как неочевидно, что именно должно произойти. По мне, так такой код во-первых не должен так работать, во-вторых - ни в коем случае не должен использоваться в этом качестве в проде потому, что неявное хуже явного.
На самом деле, если разобраться, то вяснится... Что код метода ololo не исполнялся, исполнилось только объявление функции и расчёт дефолтного аргумента. Собственно, вот более правильный и наглядный скрин.
Из этого скрина следует, что:
1. При объявлении ФУНКЦИИ формируется значение по-умолчанию. В этом есть логика: не каждый же раз, когда функция вызывается рассчитывать его отдельно.
2. При объявлении класса пробегают все инструкции в классе. Как при подключении модуля (очевидно, что при объявдении функции так же рассчитается дефолтное значение её переменных). Это... Нужно просто иметь в виду. По-хорошему в классе должны быть ТОЛЬКО ОБЪЯВЛЕНИЯ, конечно. Просто потому, что явное - лучше неявного и вот это вот всё.
Бонус(скрин 2): правильно передавать функцию внутрь без скобок, тогда она не будет исполняться потому что функции Python — это объекты первого класса. Подробнее: https://habr.com/ru/companies/otus/articles/725374/ .
Пишу это всё сейчас и одновременно понимаю, насколько важно понимать (желательно, интуитивно), что, зачем и почему происходит и при этом насколько Гвидо и компания сделали охуенную и гибкую вещь.
>>42745
>Это просто использование существующих возможностей, посыпанное сахарком, а не отдельный механизм, в котором строго описано, что можно делать, а что нет, на уровне синтаксиса. В питоне этого нет.
Это круто. Когда пришло понимание, только зауважал авторов.
>>41325
Возвращаясь сюда, обнаруживаем, что
class Powder(object):
....print('Порох')
идентично в данном случае простейшему
print('Порох')
и вообще никак от него не отличается.
Вообще всё сильнее подозреваю, что тут просто чувак троллил тупостью.
>Нужно для сборки некоторых модулей при установке через пип
НИНУЖНО.
Вечером протестирую и распишу подробнее, сейчас не успею.
>таб безопаснее
Нет. Вообще нет. Наоборот все редакторы его по-своему обрабатывают и это некстати.
Суть примера была просто показать, что класс исполняется. Если завернуть деф с пуком в другой деф, то пука не будет.
> Если завернуть деф с пуком в другой деф, то пука не будет.
Смотря как завернуть. При объявлении функции рассчитываются дефолтные параметры и, если для этого нужны доп. вычисленния, они будут произведены в этот момент.
Нет, обьявление функции внутри другой функции это уже код, который не исполняется при обьявлении внешней.
Объявление внутри — да, не вызовет. Просто могу сочинить такой код, что через прокладку вызовется, но это довольно искусственный пример будет.
Бамп.
Если ты продолжишь вкатываться в питон, то тебе всё равно придется переходить на проблеы, потому что это стандарт и у всех пробелы. Неудобно будет кодом обмениваться и поцаны не поймут. А ещё замахаешься потом все свои старые коды перекатывать в пробелы. Так что лучше сразу себя к ним приучай.
>А ещё замахаешься потом все свои старые коды перекатывать в пробелы.
Э-э-э…
>find ~/proj -type f -name *.py exec sed -i 's|\t| |' {} ;
Или как-то ну очень похоже. Протестить надо.
Ясно, учту.
А почему бы просто не написать программу, которая бы заменяла табы на пробелы после написания?
В нее импортируешь, она реплейсит, на выходе нормальный код и никаких проблем. По-моему ничего сложного.
Да есть полно такой хуйни, которая форсит любые стили. Встраивается в тулчейн вместе с линтером.
Так pycharm буквально из коробки делает
>>Потому что информация которая находится тут по большей части устаревшая и не полная, я по ней и обучался, а потом мне говорили, что я какую то старперскую дичь несу, которая давно не актуальна.
Нет. Ты просто хуйней маялся.
Начинающие питонисты что-то вымерли, кстати. Раньше постоянно спрашивали как сложить 2 и 2, а щас тишина.
Это цыгане похудели и перестали везде рекламу хуярить?
Как правило, у 80% процентов любых начиналов начиналка заканчивается спустя неделю. Яндекс рекламу кисельных берегов покажет и пошел наплыв, а через месяц опять все затихнет. Типично.
Я знаю drf и ещё жабаскрипт с реактом, но работу не найти. По джанге вообще почти 0 вакансий для джунов.
Зато на ПХП дохера. Учил бы пхп - уже бы работал. Хз че делать. Третий язык учить не хочется. На следующей неделе не найду работу - пиздую говночистом пахать. Вот тебе и вкат длинной в полтора года.
Паттерны вечны, чел... Мне кажется, погромирование — это не твоё. Тебе надо что-то, где новые версии каждую пятницу выходят. Браузер обозревать, может, в видеоблоге? Скачка, распаковка, обзор фич, установка новой темы, пары плагинов? Часа на три подкаста.
Койсанский тоже языком не считают, тем не менее, чтобы объяснить чёрной шлюхе, что ты намерен загнать в неё своего питона, этот язык придётся выучить.
Зачем ты для джунов ищешь? И что значит "знаешь"?
Пет-проект фуллстековый на жанге и рррякте сможешь захуячить?
Если да, то хуячь, деплой и показывай хрюшам.
нахуй инкримент, ебаш сразу nat(n, c+1)
>Если да, то хуячь, деплой и показывай хрюшам.
До хрюш еще надо дойти, автофильтры HH сейчас отправляют в мусор все резюме с опытом меньше 1-2 лет.
А, намекнул, что мой уровень интеллекта как у Стаса Ай как просто, неплохо. Но я могу отличить один паттерн от другого, у меня претензии к тому, как он написан и про общее устаревание ру сегмента. Да и дело тут не только обучающем материале, если уж говорить о последнем.
Дело в паттерне психики в твоей голове. Таким кажется, что за соседней дверью пизда жирнее.
Смею огорчить: всюду, куда ты ни сунешься, ты принесёшь своих тараканов. И они организуют то же гнилое болото вокруг тебя, что и в любой другой точке интернета или планеты.
Можно задеплоить хоть аналог гугла и его никто не посмотрит пока не нарисуешь себе год опыта, а лучше два.
>Зачем ты для джунов ищешь
А для кого искать? Я джун и есть. У меня нет реального опыта, но есть нормальный опыт на своих проектах.
Нет, их называют проекциями, шаблонами действий и паттернами мышления. Не думай, что их можно волевым усилием изменить, они лежат в лимбической системе, программируются с пелёнок и никакими обратными связями из неокортекса не обладают. Ты буквально не можешь ничего изменить сознанием, волей, усилиями твоего «я».
>Не думай, что их можно волевым усилием изменить
Из-за проблем с легкими мне говорили, что спорт это не мое, а спустя полтора года я занял в второе место города по арму. Так же я бросил курить. В реальной жизни не существует вечных констант. Нет и внутренних шаблонов, зато есть такие в которые тебя вписывают другие. Но они всегда и во всем заблуждаются, а ты больше всех.
>>Это должен знать каждый начинающий питонист.
В этом то и дело что только начинающие его изучают. А опытные все уже на fastapi
В любом случае есть планки. Да и генетически заданное не перепрыгнуть. Если нет абстрактного интеллекта, не получится в программисты. Нет музыкального слуха — не станешь композитором. Нет реакции — не станешь боксёром. И так далее. Причём, это не тренируется, это уже в генах есть. Или нет. Ну вот и у тебя видно, что алгоритмизация — это не твоё.
Не знал, что знание алгоритмизации закладывается генетически.
Ладно, передавай глухому Бетховену и мешку Валуеву привет.
Бетховен начал терять слух к 30 годам примерно, когда уже стал состоявшемся композитором. Про Валуева анон конечно странный пример привел, мне вот с дивана кажется, что в поединке борцов руками можно побеждать не только скоростью, но и выносливостью, например. Короче пример нерилейтед.
На счет абстрактного мышления тот анон прав. Факт в том, что есть люди с развитым абстрактным мышлением, а есть с не развитым. Выводы о таких вещах мы можем делать только из эмпирического опыта, так что точно сказать ничего нельзя. Но что есть личность? Это связи нейронов в сером веществе? Если ты согласен, что личность человека формируется до определенного возраста и дальше практически не меняется, то должен согласиться и с тем, что абстрактное мышление тебе сильнее не развить чем есть сейчас. Только на пару миллиметров за долгие годы.
https://www.youtube.com/watch?v=atIwagMBDi4
>поединке борцов руками можно побеждать не только скоростью, но и выносливостью
Его слова дословно.
>Нет реакции — не станешь боксёром
>есть люди с развитым абстрактным мышлением, а есть с не развитым.
Значит его не надо развивать? Ну, хуле. Двачер сказал не твое - значит не твое. Мамка говорит что наркоманом вырастешь - значит можно уже колоться. Препод сказал что ты тупой - значит можно уже идти только в рос.гвардейцы, зато знаешь свой потолок.
>Если ты согласен, что личность человека формируется до определенного возраста
Нет, не согласен. Знаю людей, которые до 70 лет не могли пользоваться кудахтером, а теперь спокойно могут регистрироваться на почте или смотреть ютубчик.
>на пару миллиметров за долгие годы.
Я могу любую прогу написать без проблем, было бы время и доки под рукой. А пол года назад мне это все казалось из области рокетсайенс.
Короче, все слова о "Не твое" это попытка набить себе цену избранность, либо попытка кого-то сказать, что твое болото и так не плохо и нечего тебе из него вылезать. Сиди, перди в диван. Это твой потолок.
Весь смысл в видеорилейтеде.
Вот есть функция которая добавляет текст в другой модуль.
with open(path, 'r+') as file:
----file.write(text)
А как сделать так, чтобы текст не добавлялся повторно после если он и так уже в нем есть?
И второе, как импортировать файл чтобы он не запускался. Ну, или хотя бы игнорировал print и input.
Если ты можешь написать что угодно, то чому у тебя в портфолио, которые ты отослал работодателю и показал в треде примеры уровня "учим питон для дошкольников" да и те с ошибками? Это риторический вопрос, можешь не отвечать, я прекрасно знаю почему.
Людей подобных тебе очень много, особенно сейчас, когда курсы "стань наносеком за пол года" заполонили всё медийное пространство.
На счет простыни которую ты тут накатал. Вот некоторые тейки.
>Препод сказал что ты тупой - значит можно уже идти только в рос.гвардейцы
>Знаю людей, которые до 70 лет не могли пользоваться кудахтером, а теперь спокойно могут регистрироваться
Очевидно, что ты не понимаешь контекст явлений о которых рассуждаешь. Каждому анону, который это прочтет будет это очевидно. Почему так? Потому что у тебя не развито абстрактное мышление и логика твоя линейная и поверхностная, не идущая дальше первого порядка. Такие дела.
Вообще непонятно зачем ты тут оправдываешься, делай что хочешь. Тебе только дали добрый совет основанный на опыте других людей который многократно был пройден и повторен. В ответ на этот совет ты начинаешь истерику, что кстати тоже довольно типично для барист-вкатунов.
В оконцовке ты просто в пустую потратишь свое время.
>Весь смысл в видеорилейтеде.
Нет, спасибо, поучительные видоски с пикабу смотреть нет желания.
Я прошу совета. На данный момент разрабатываю на django анонимный форум, и встал такой вопрос. Точнее, несколько.
Я не храню ip юзеров в базе данных специально. Но как мне банить по ip если я их не храню?
Далее - банит ли двач юзеров? Потому что если банит, значит хранит ip адреса, так?
>А как сделать так, чтобы текст не добавлялся повторно после если он и так уже в нем есть?
Читай файл перез записью и проверяй на содержимое. Просто длину проверить, наверное, хватит.
>И второе, как импортировать файл чтобы он не запускался
Гугли "if __name__ == 'main'"
>прекрасно знаю почему
Потому что у меня нет абстрактного мышления? Видишь, догадался - значит есть.
>Очевидно, что ты не понимаешь контекст явлений о которых рассуждаешь
Очевидно что ты любишь вешать ярлычки.
>логика твоя линейная и поверхностная
В твоих суждениях я обратного не увидел, только какой-то доисторический пещерный высер про особенных людей.
Если говорить про шаблоны, то ты как-раз из того типа людей, которые делают предположение, сами себе их обосновывают и сами же верят.
>Каждому анону, который это прочтет будет это очевидно. Почему так? >Потому что у тебя не развито абстрактно
Хихикнул.
>логика твоя линейная и поверхностная, не идущая дальше первого порядка
Да куда уж мне до тебя, ты поди и Тзинча с Хермеусом Морой в рот выебешь.
>Вообще непонятно зачем ты тут оправдываешься
Это называется диалог.
>Тебе только дали добрый совет основанный на опыте других людей который многократно был пройден и повторен
Ты поучился и бросил? Тогда че ты тут сидишь? Что то-типо бабки-гардеробщицы в театре?
А если не бросил и из числа избранных, то откуда тебе знать какой путь проходят те, кто не был избран?
>начинаешь истерику
До сего я сидел с каменным ебалом, но сейчас на ней лишь насмешка.
>в пустую потратишь свое время.
Может быть, но мне нравится так его тратить.
>Нет, спасибо, поучительные видоски с пикабу смотреть нет желания.
Ну, и пошел нахуй, пидор, блять, ебучий. Слишком уберменьш видать, чтоб выйдосики смотреть. Австралопитек, ебучий, охуеть блять.
Короче, мотай на ус. Логика подкрепляется аргументами, а в твоих словах я ничего подобного не увидел, только безаеляционные утверждения. Мне кажется ты школьник.
Уебищная химия начинается с того что я select-ом выбираю данные которые мне надо вытащить и только потом навешиваю источники и фильтры. Не получается заменить колонки на sa.func.count
>Значит его не надо развивать?
Интеллект ты можешь «развить» только в своих генетических рамках. Если ты слабоумный или плохо соображаешь — это так и будет. Тем более, после 15–18, когда биология уже совсем другое развивает и останавливается на этом.
Правильное слово не «развивать», а «тренировать». Сколько есть потенциала — только это натренируешь, не больше. Да ещё он после 45–50 начнёт заметно снижаться.
Словом «развивать» маркетологи завлекают туповатое быдло, опустошая тем карманы, а взамен давая ощущение, что они тоже когда-нибудь станут умными, если прочитают 100 книг и вот эти вот курсы.
Разум не развивается, только тренируется. Как и мускулы. Как и музыкальный слух. Как и умение рисовать. Как и склонность к танцам, скульптуре, шахматам и прочее. И программирование не исключение.
>длину проверить
Ну и что толку? Запустил программу, в тестовом файле было 10 символов, добавил 'huy' стало тринадцать. Потом опять запустил прогу, len показало тринадцать и добавило снова 'huy' - len показало 16. Теперь у меня два хуя в тестовом и так по кругу.
Нужно чтобы такого не было.
Сделай общий код для where и не еби мозг.
>Ну, и пошел нахуй, пидор, блять, ебучий.
>Короче, мотай на ус.
Ебать тебя порвало братишка. Зашивайся.
>я могу что угодно написать... только не буду... патамушта мням мням время надо много
Не повезет кому-то с коллегой, когда такого клоуна жадный кабан возьмет себе на галеру.
>Тзинча с Хермеусом Морой в рот выебешь.
Тебе лет 16, что ли? Чел, просто если так, то ты ребёнок и извини, что я тебя уничтожил. У меня внуки немного младше тебя. А тебе ещё расти и расти, ггг.
nikak
redis
Все понятно. Дед пердед под 60 лет опять жалуется на непутевую молодежь и хвастается бабке, что кого-то якобы "слил" в интернете на анонимном форуме для девочек. Мда, блять, мда, пиздец...
Заработало, спасибо.
Бот должен:
Дождаться сообщения пользователя;
Написать "Привет";
Дождаться второго сообщения;
Написать "Привет 2";
Дождаться третьего сообщения;
Написать "Привет 3";
Дождаться последнего сообщения, выдать "Привет 4", и остановиться.
Насколько я знаю, апи вкудахта не позволяет отсылать сообщения не сертифицированным программам. Раньше позволяло, но из за борьбы с ботами они запретили. Так что тут нужно п переподвыподвертом делать. Например через селениум т.е. открывать браузер и эмулировать действия реального человека.
Я сам такую хуню делал года два назад, может сейчас и другие варики есть, хз.
Ты такой клоун что слов нет, нихуя не умеешь нихуя не знаешь, зато гонор выше гор. Хррр тьфу.
inb4 я вообще другой анон
Да не, я уже на ВПС бота загрузил, и всё норм работает, я просто не знаю, как мне логику самого скрипта описать, вот например что мне сейчас выдал ЧатГПТ:
# Основной цикл программы
while True:
# Получаем новое сообщение
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
item = response['items'][0]
message = item['last_message']
user_id = message['from_id']
# Отправляем приветственное сообщение
send_message(user_id, "Привет")
# Ждем второго сообщения и отправляем "Привет 2"
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
message = response['items'][0]['last_message']
send_message(user_id, "Привет 2")
# Ждем третьего сообщения и отправляем "Привет 3"
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
message = response['items'][0]['last_message']
send_message(user_id, "Привет 3")
# Ждем последнего сообщения, отправляем "Привет 4" и завершаем диалог
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
message = response['items'][0]['last_message']
send_message(user_id, "Привет 4")
break
Какого-то хуя приветы шлются совершенно рандомные, уже час с ним ебусь.
Да не, я уже на ВПС бота загрузил, и всё норм работает, я просто не знаю, как мне логику самого скрипта описать, вот например что мне сейчас выдал ЧатГПТ:
# Основной цикл программы
while True:
# Получаем новое сообщение
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
item = response['items'][0]
message = item['last_message']
user_id = message['from_id']
# Отправляем приветственное сообщение
send_message(user_id, "Привет")
# Ждем второго сообщения и отправляем "Привет 2"
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
message = response['items'][0]['last_message']
send_message(user_id, "Привет 2")
# Ждем третьего сообщения и отправляем "Привет 3"
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
message = response['items'][0]['last_message']
send_message(user_id, "Привет 3")
# Ждем последнего сообщения, отправляем "Привет 4" и завершаем диалог
response = vk.messages.getConversations(count=1, filter='unread')
if response['count'] > 0:
message = response['items'][0]['last_message']
send_message(user_id, "Привет 4")
break
Какого-то хуя приветы шлются совершенно рандомные, уже час с ним ебусь.
Семен, успокойся. Ты прав, программистами рождаются, а не становятся. Ты только пей таблеточки.
Нахуя? У ВК в сообществе настроил бота, получил токен, через vk_api отправляю. Я не разбираюсь, может это и модуль, кста, я нуп.
Ясно, совсем я отстал от жизни.
msgl = ["Привет", "Привет2", "Привет3", "Привет4", ]
conversations = {}
while True:
....response = vk.messages.getConversations(count=1, filter='unread')
....if response['count'] > 0:
........item = response['items'][0]
........message = item['last_message']
........user_id = message['from_id']
........if user_id not in conversations:
............conversations[user_id] = msgl.copy()
........send_message(user_id, conversations[user_id].pop())
........if not conversations[user_id]:
............break
Попробуй так может заработает, но не факт, понятия не имею где ты там пишешь и как этот модуль работает, просто вслепую накидал.
Работает, только почему-то наоборот - начиная с "Привет 4" и до "1", и так по кругу. Мне в принципе и так пойдёт, а можно его как-то остановить после "Привет 1", чтобы вообще ничего не выдавал?
>pop(0)
Я ноль проебал, добавь и будет не по кругу.
Убери из списка msgl остальные сообщения после "Привет 1" и не будет выдавать.
>Я ноль проебал, добавь и будет не по кругу.
Я добавил ноль в pop(0), и оно пошло по возрастающей, а вот
>Убери из списка msgl остальные сообщения после "Привет 1" и не будет выдавать.
Я не понял, если я из массива всё уберу кроме одного сообщения, то оно же одно и будет, кек.
msgl = ["Привет", "Привет2", "Привет3", "Привет4", ]
conversations = {}
while True:
....response = vk.messages.getConversations(count=1, filter='unread')
....if response['count'] > 0:
........item = response['items'][0]
........message = item['last_message']
........user_id = message['from_id']
........if user_id not in conversations:
............conversations[user_id] = msgl.copy()
........tmp = conversations[user_id].pop(0)
........send_message(user_id, tmp)
........if tmp == "Привет 2":
................#сюда команду остановки бота
................pass
........if not conversations[user_id]:
............del conversations[user_id]
............break
Всё чел, давай меня как следует отблагодари и дальше сам уже допиливай, я помог уже достаточно.
А что хранишь?
Бот всё равно не останавливается, ладно, спасибо большое, буду завтра допиливать.
Можно просто break привязать к ключевому слову в логике.
>А тебе обязательно их в определенном порядке слать?
>Может тебе нужно чтобы он на определенные слова отвечал?
Вообще, мне естественно не приветы нужно отправлять, а определённый текст для группки в ВК, сначала будет показываться рандомная картинка (это уже сделано), потом пользователю должен отправиться определённый текст в нужной последовательности естественно. Ищу как остановить бота, пока не нашёл.
>А тут он только первое сообщение шлёт по кругу.
Хз, quit() попробуй, только тогда он вообще всю программу закроет. Ищи раба на зарплате, пусть он тебе в доках команду выхода ищет.
А я кажется допер что тебе нужно. Тебе нужно не чтобы он после "определенного сообщения выключался", а чтобы он просто затыкался когда все сообщения выдаст.
В таком виде скрипт будет запоминать с кем уже говорил со времени своего запуска и больше им ничего отвечать не будет, пока не перезапустишь. Но лучше тестануть такое поведение и с разных айдишников попробовать написать.
Я уже было хотел вызваться за напивко, но так и быть держи. Там всего одну строчку переставить надо было.
msgl = ["Привет", "Привет2", "Привет3", "Привет4", ]
conversations = {}
while True:
....response = vk.messages.getConversations(count=1, filter='unread')
....if response['count'] > 0:
........item = response['items'][0]
........message = item['last_message']
........user_id = message['from_id']
........if user_id not in conversations:
............conversations[user_id] = msgl.copy()
........if not conversations[user_id]:
............continue
........send_message(user_id, conversations[user_id].pop(0))
Ооооооо, анон, каеф, спасибо тебе большое, всё работает!
Да, видимо я как-то не правильно объяснил что ли? Видимо после работы и 4 часов ёбли с этим петухоном башка уже не соображает.
Непереставая выполняется строка
response = vk.messages.getConversations(count=1, filter='unread')
Я всё правильно понял? Значит такой скрипт будет очень сильно нагружать сервер на котором выполняется. Ему надо ставить какую-то паузу time.sleep или искать в апи команду слушателя?
Надо проверить.
после while True добавить строку
while True:
....for i in conversations:
........send_message(i, "---test---")
Если после первого сообщения боту он начнет тебе спамить "---test---"
Значит и запросы сообщений он делает каждую секунду, с таким поведением тебя вк забанит или сервер
Самое примитивное и простое в таком случае добавить паузу.
В самом начале скрипта пишешь import time
а после while True пишешь
while True:
....time.sleep(5)
Где число сколько ждать в секундах прежде чем проверить сообщения.
Спасибо, завтра посмотрю.
У меня единственный вопрос остался, как мне отправку сообщения впендюрить, чтобы картинка отправлялась после первого "Привета".
Не знаю. Я доки этого апи в глаза не видел.
Ты походу тот чел, который свою борду сделал и начал банить всех подряд.
>как банить по ip если не хранишь их в базе данных
Сделать эту базу данных. Очевидно же.
нет это не я. Он сделал борду, а у меня больше функционала.
Но не хранить IP в базе данных - это вопрос принципа, на этом строится вся социальная сеть. Регистрация только по юзернейму.
Вот и получается диллема, как банить если IP адресов не храню.
Вот модель юзера, тут ничего особенного нет.
Тогда не бань, это ж суть твоей социальной сети. Правильно? Или ты не понимаешь, что такое «суть»?
Или тебе придётся делать аналоги уникального идентификатора или хеша и хранить их. Но это всё равно будет привязка человека к идентификатору. Понимаешь суть? Понимаешь, что ты насквозь прогнил и хочешь унижать и контролировать людей?
вовсе я не хочу контролировать людей.
Мне нужна защита от долбоебов постящих гуро, скам и прочее, неугодное мне.
А в целом я его задумываю как платформу для высказывания на политические темы. Поэтому и нельзя хранить IP
ну тогда совершенно очевидно что ты дебил, далекий от пограмирования. храни ипы в хэше, шизик. хэши в обратную сторону не расшифровываются. хотя даже это тоже совершенно не нужно, но мне даже объяснять лень, пиздец просто, абу вводи логарифмическую капчу на этой борде. откудаж вы лезете
Почему даже это не нужно? Объясни, пожалуйста. Я тогда заведу поле для юзера без хеша. Спасибо.
>юзера без хеша
Как же меня трясе тот твое тйпости. Ты ведь очевидно даже не знаешь разницу межу кэшем и хэшем. АААА БЛЯ СУКА!!111 Прсото закрой эту вкладку и никогда не заходи сюда, ты же овощь просто. IQ 50
да что с тобой не так?
я же написал - заведу поле для класса юзера без хеша - без хеширования, то есть, так как ты и посоветовал, ибо даже это не нужно. Разницу между кешем и хешем я знаю, конечно же.
А теперь ты вдруг начинаешь выпендриваться, вместо объяснения, почему это не нужно.
Мне вот начинает казаться что ты ни хрена не знаешь
вот видите, шарящий человек спокойно объяснил в две строчки, почему можно хранить адреса в базе данных
Добавляем к строке с ip адресом строку с хэшем этого адреса и всё вместе хэшируем. Шах и мат.
На самом деле, надо делать регистрацию и привязывать телефон + e-mail. Для надёжности — фото и биометрию. Можно сделать модный вход по включённой вебкамере.
Хм... задачка. Вот смотри берем огромную строку 1к символов. Это будет наш ключ шифрования. Берем каждую цифру в ип адресе и умножаем на следующий порядок в этом ип адресе 273.454.3434.656. тут 2 умножаем на 454, 7 умножаем на 454. И берем из нашего ключа шифрования символ с этим номером. Короче делаю такую тупейшую обфускацию на основе строки. Это и кэшируем. Подобрать брутфорсом 255^4 это уже на 10 порядков сложнее т.е. невозмножно и файл ключ можно удалить\заменить.
А? А? А? А? А? А? А?
Современные видяшки оперируют сотнями гигахеш(=миллиард) в секунду.
А у тебя конечное количество значений, которые ты приводишь к своей велосипедной форме. Ты можешь и тысячу хеширований завернуть, это ничего не меняет. Нужна теоретическая база, которая сможеть замедлить до неприемлемого уровня, а не оборачивать слоями говна, это не работает.
Ключ 10м символов и формула из нескольких действий деления умножения степени. Пока хватит до квантовых пекарен.
товарищ майор скозал - убрать хэширование айпишников
далее он будет просто сидеть со шваброй наготове и ждать, пока вы не скажете юхню и не засветите айпишники
И поставить у себя серверную стойку под кроватью вместо впски за три копейки, малацца.
Ладно. Сдаюсь.
>как двач хранит IP?
В распечатанном виде, просто курирующий офицер плохо с этими вашими печатными машинками управляется.
анонимность превратилась в тыкву
хочешь реальной анонимности - размещай сайт в даркнете
У анона просто задача тупая. Вот ко мне заходит синий человек, карсный человек и зеленый человек. Я хочу их учитывать по цветам, но при этом не знать какого они цвета. А цветов всего три. тут либо ты на своей стороне делаешь дополнительный костыль вроде шифрования за сохранность которого сам отвечаешь, либо нет.
смысла в шифровке нет если к анону админу могут прийти менты. Хотя как защита данных от случайных хакеров - это имеет смысл.
Ты не понимаешь, сука, у тебя нет абстрактного мыШЛЕНИИИИИИЯЯЯЯЯЯЯЯЯ!!!Я!Я!!Я!Я!!!!!!!!!!!!!
С одной стороны это очень смешно, что ты уже сутки горишь и потухнуть не можешь, а с другой стороны как-то не очень хорошо, что ты своей жопоболью тред засираешь. Ладно, думаю, за неделю всё-таки потухнешь автоматически.
Вкат это ловушка джокера.
Катись в чоткий парсинг с миллонами страниц, еблей челленджей, ордами лямбд и впсок на амазоне и прочим.
Обычный сайт любой даун спарсит, это такая же хуйня для детей как телеграм-боты.
О, да, кстати.
А каким проектом можно заинтересовать потенциального работодателя? Чтоб он посмотрел и сказал - вот это круто, вот это наш, берем.
Может хоть кто направление подскажет к чему стремиться?
А нахуя тебе парсинг и петухон, когда давно мог выучить нормальный язык, нормальный фреймворк и стать белым человеком?
Есть проект: тг бот,онлайн игрушка
Ищу джуна (сильнее не потяну.) для обсуждения и реализации проекта
Если кому интересно,то пишите в тг @Anivans
Я же картинку намекающую прикрепил.
Хочешь потом найти работу веб разработчиком - лучше учи PHP
Вообще, сейчас не имеет смысла учить какие-либо ЯП. Чтобы зарабатывать деньги нужно только знание PHP, он легко учится и пользуется большим спросом. А все остальное только для души.
>Нужно для сборки некоторых модулей при установке через пип
>>43387
https://goonlinetools.com/snapshot/code/#2aoj2n4ji1yvpipt6nmunm
Примерно такое. В первом приближении. Быстро не вышло, дела-с типа.
Пример, правда, довольно искусственный, ведь абсолютное большинство пакетов поставляется в вилах и сейчас в докере сразу есть модуль wheel, но если ВДРУГ, ВНЕЗАПНО попадётся такой пакет, который надо собирать, это ещё не значит, что его действительно надо собирать в продовом образе и таскать с собой 100500 пакетов для сборки там же. В моём примере, с fastapi и uvicorn для итоговых пакетов: anyio, click, fastapi, h11, idna, pydantic, sniffio, starlette, typing_extensions и uvicorn в убунту понадобилось отдельно доставить только питоновский модуль билд, плюс при установке питона поставилось много чего, что в проде не понадобится. Результирующий образ без проекта ~62МБ (и ещё, навреное, метров на 10-15 можно сквошнуть при желании), что даже на очень маленьких и дорогих SSD в современных сетях не напрягает прям совсем.
> Второй
скобочку одну забыл опустить, так было бы понятнее
но в любом случае услышал тебя няша, спасибо за отзыв!
оставлю тяк =^-^=
Чистый бек удобнее делать на FastAPI.
> нахуй ты свой пр везде запускаешь?
Чтобы определить, когда точно он запускается. Был бы ты внимательнее, заметил бы, что он ни разу сам не вызывается из кода в явном виде.
А что это вообще такое? Типо расстояние между синусом косинусом высчитывать? Я не силен в матане.
>мы вам перезвоним...
У тебя два прохода, пынямаешь? Два прохода будет всегда медленнее чем один, даже если он сделан через компрехеншн
Торговать жопой парицаемо во все обществе, а работа с пыхой только среди парочки шизов
А, графы хуяфы.
>додик с высшим образованием
Да, поварской колледж оканчивал, сейчас уже поднялся до должности собачий депутат.
>не хранить IP в базе данных
А ты не храни ВСЕ IP. Храни только зойбаненных, сверяйся с ними и не сохраняй адреса тех, кто прошёл через фильтр.
Здравствуйте, я к вам мимо с дельфи и турбопаскаля. Скажите, пожалуйста, могу ли присвоить полю некоторого объекта значение вне методов этого объекта, даже если оно было не определено изначально? Ну то есть obj.field = val всегда будет работать, вне зависимости от того где вызывается и было ли установлено obj.field в некоторое значение до этого?
Извиняюсь за сумбурность, спасибо.
> я к вам мимо с дельфи и турбопаскаля.
Как и я. У этих ЯП есть кое-что общее с питоном: очень сложно случайно выстрелить себе в ногу, если ты всё делаешь по уму.
> Скажите, пожалуйста, могу ли присвоить полю некоторого объекта значение вне методов этого объекта, даже если оно было не определено изначально?
Если я тебя понял, то вопрос занятный. Но непонятно, зачем его задавать, если всё так легко проверить самому.
См. скрин.
Итого: да, ты можешь напихать в объект новые свойства (и даже методу потому, что >>43378
) даже после его создания.
Непонятно только НАХУЯ. Встроенными методами ты новое свойство всё-равно не обработаешь, так что оно абсолютно ничем не будет отличаться от переменной (кроме, пожалуй, того, что будет передаваться со всем объектом, но я пока не придумал практического применения, это свойство всё-равно должны там ждать).
Пилить вордпресс за 30к? Достижение уровня /pr.
>>47471
Спасибо
>>47471
>если всё так легко проверить самому
Вот я проверил, и для встроенных классов такое провернуть у меня не вышло. Вот и подумал что тут какая-то более сложная система
>>47471
>Непонятно только НАХУЯ.
А, ну в моём случае я пытаюсь отметить некоторые сторонние объекты определенным образом, и чтоб без сильной ссылки на них, что-то вроде эфемерона, тут главное имя поля позакоыврестей придумать.
Возможно для ситуаций, когда ты импортируешь какой-то модуль для какой-то своей функции и тебе надо допилить его напильником, не изменяя сам модуль.
>для встроенных классов такое провернуть у меня не вышло.
Это могут быть, например, не питоновские, а сишные класс и тогда оно может работать иначе.
> отметить сторонние объекты ... чтоб без сильной ссылки на них
Ну, ХЗ. Я бы, наверное, добавил их в какой-нибудь лист, то есть как раз ссылкой.
Кстати...
>>47525
> импортируешь какой-то модуль для какой-то своей функции и тебе надо допилить его напильником
А унаследовать (и опционально что-то перезагрузить) не проще?.. По крайней мере это будет более явно и может помочь в редких, но возможных ситуациях.
Покажи свой невкатнуский код
Из логов нжинкса, благодарю
Ребят, "Хочу в ИТ". Думаю утроится на курсы интенсив питон в скилфактори, привык к организованному обучению и возможность есть. Потом что понадобится буду доучивать сам но хочется организованный старт. До этого опыт программирования так се - незаконченная вышка и переодическое ковыряние в коде модов для того чтобы ту или иную игрушку выправить чуть чуть.
Насколько актуально на ваш взгляд то чему там учат и насколько вообще можно устроится с таких курсов на работу если реально потеть и быть готовым дотаскивать что там не дадут до той или иной вакнсии.
Я вижу вы рекомендуете нах ЯП учи PHP, но я хочу потом вышку закрыть и в Data Science податься и из того что я вижу, Python для этого хороший старт. Мне не надо много бабла, человек я скромный, поэтому больше волнуют вообще перспективы найти джун позицию а там дальше разбираться, город Питер если что.
всем похуй сколько
Я скилфактори прошел и диплом получил. Хуйня полная. Я туда пошел потому что бесплатно была возможность, чому бы и нет. База питона была. Во-первых охуел от того что на курсе 90% тёть срак и бывших поворов, которые из программирования до этого только включение ПК освоили. Экзамен был уровня ответьте на 10 вопросов что такое Питон, что такое класс.
Итоговое задание было лень делать пошел на гитхаб, нашел там вкатуна который год назад то же задание там же делал и копипастнул половину его репы. Вторую часть задания надо было сдавать в гуглдокументах и я просто пустой документ сдал - по логике мне за это оценку бы на половину снизить должны были, но так как у меня до этого все оценки 100% мне уже похуй было. Я очень удивился когда мне в ответ пришла рецензия от экзаменатора какой я молодец и всё у меня отлично. Т.е. они не то что не проверяют, они даже не открывают работы.
Вывод в том, что от самообучения больше пользы чем от курсов.
Спасибо за ответ. Я уверен что от самообучения больше пользы, моя проблема в том что я давно из всего этого вывалился и хочется конкретная точка старта чтобы влится обратно, и какая никакая бумажка что мол чтото знаешь для поиска работы. Про кучу странных людей тоже не удивляет рекламы много, сам наверное еще долго буду странным выглядть для людуй, кек.
Неколько вопросов, если не сложно:
Давно было?
Как сам материал, как база знаний для "вката", с учетом что дальше сам буду учится, вменяемо?
После того ты закончил, как с трудоустройством - искал, помогали? Не знаешь те кто с тобой проходили как у них прошло?
Еще раз спасибо что уделил время.
В начале самый базовый материал совершенно дефолтный как будто с pythonworld.ru взяли. Да даже там лучше, потому что у скилфактори всё разбавлено какой-то кринжовой лирикой для самых маленьких дегенатов типа "мы с Алисой шли по дорожке и подумали а что такое тип данных, курлык".
Периодически проводят вебинары, я в начале сидел там но лекторы-менторы, которые их проводят даже не знают как некоторые встроенные функции питона работают и прямо во время трансляции идут их гуглить, я чуть не помер от кринжа и больше не приходил.
Дальше хуже, когда база пройдена и начинается спецификация там написано всё максимально непноятно и с ошибками, мне в какой-то момент даже стало жалко тёть Срак, не имея опыта вкатуну вьехать в это не реально, остается только мучить жопу либо жульничать списывая всё из общего чата для всех "студентов", чем все собственно и занимались. Ещё смешно то что техподдержке пишут в чате про ошибки в учебном материале, техподдержка отвечает - приняли исправим. Я полистал историю и про те же самые ошибки им каждый поток пишет уже пол года и ничего не исправлено, потому что похуй. Но сейчас кстати весь скилфактори перешел из слака, так что история чатов не доступна.
Работу не искал пока - сижу пержу, думаю ещё репу наполнить, то что за время "обучения" там появилось - скрыл - это детский сад.
Спасибо, хз что буду делать но инфу к сведению принял.
потому что это константа долбоеб
Мимо другой анон, но хочу тоже свои пять копеек внести.
Я не работодатель, но даже меня не впечатлила бы бумага от курсов, у которых единственный порог входа - это деньги на оплату самого курса, а "успешно" заканчивает их примерно каждый первый. Профессия максимально самоучная, и по факту твой лучший показатель знаний - портфолио проектов на гитхабе, даже надуманных и из пальца высосанных. Ты где-то сам по собственному желанию ковырялся, не денег ради, так что ты уже впереди большинства вкатунов, красава.
По поводу структурированного начала - курсы это не плохо само по себе, просто к ним необходимо относиться как к одному из многих источников знаний которые ты ищешь самостоятельно, т.е. они не всегда верные, и они определенно не исчерпывающие/достаточные для поиска работы сами по себе. Я в свое время частично прошел известный курс на курсере по машинному обучению - ровно до части, которая мне была нужна, как я считал; дальше я упорно грыз разношерстные статьи и блогпосты, всё в том же направлении. Когда собеседовался в свое текущее место работы, показал мой проект на гитхабе, который практически демонстрирует 1) что я умею (само)учиться, и 2) собственно мой набитый скилл в ML, в порядке важности.
Спасибо что обратил внимание на портфолио вместо бумажки. Я недавно начал всерьёз в этом разбираться, поэтому, нестмотря на то что слышал про проекты на GitHub как показатель скила, как-то в голову не запало что это действительно портфолио которое стоит развивать чтобы продать себя работодателю. Я привык решать проблемы, нежели самому изобретать задачи, поэтому интересует - как думаешь = имеет ли смысл набивать скилл на штуках типо exercism.org и прочих доступных в открытом доступе сборниках задач и потом это вешать в Гите? Т.е. набивать руку всё равно полезно но интересует оценит ли ктото такой труд, или это только для саморазвития подходит а для работодателя нужны на порядок более трудные штуки.
Я понимаю что курсы не исчерпывающие, но без базы знаний сложно метить на какую-то работу, учиться с 0, и надеется что делашь не зря. Но в любом случае да - курсы это только начало. я понимаю. На правах интереса - как ты выбирал проект который готовил для демонстрации - это было что-то с курсов, что-то совсем своё, или что-то по требованиям/из области фирмы? Я понимаю если не хочешь в детали вдаваться просто интересен подход.
>учиться с 0
Чел, тот анон тебе пытался сказать, что пока ты сам с интересом и искренней страстью не занырнешь в этот чан с говном, забывая про сон и еду не будешь изучать доки, а потом писать программы в стол или для своих каких-то хобби, то далеко ты всё равно не уедешь.
В этом то и обман курсов вката, туда тёти сраки идут с полной уверенность, что сейчас им приоткроют магию СВЯТОГО ПОГРАМИРОВАНИЯ и как по щелчку пальцев у них изменится сознание и они станут тыжпрограммистами.
Ты можешь спокойно вкатываться по урокам с ютуба, а если тебе не хватает мотивации, то курсы твое сознание сильно не переменят. Ты их пройдешь и останешься сидеть без мотивации с этими новыми знаниями, которые МИНИМУМ и не тянут даже на джуна.
Не зная будущее сложно говорить о том хватит моей мотивации пройти весь путь, но тут какая штука - по ощущениям да, но каждый ходит по своему, и мне привычно организованное обучение, где самообучение идёт как дополнение нежели основной ресурс. В дальнейшем, из всего что я слышу, мне придётся сменить такт, но я не вижу смысла усложнять себе задачу на первом, без того сложном шаге переиначивая себя и то как я подхожу к решению проблем по жизни. С теми проблемами которыми я сталкивался которые я мог бы в теории решить кодом, они либо решались доступными онлайн программами/скриптами, сравнительно незначительным количеством кода, простыми AHK скриптами например, или там сравнением/коррекцией/переиначиванием пары, нежели перепиской их с 0 с детальными изучением языка на котором они написаны. Возможно я просто не вижу проблемы которые можно было бы решить написав маленькия для себя проект, но врятли я их увижу если я просто не торопясь начну на абы как ковырятся в ресурсах.
Пойми меня правильно - я благодарен за фидбек. Может окажется что ты прав а я зря время потратил, особенно учитывая кучу народа которые ломанулись в IT и потом отфудболились, но на данный момент у меня есть время и желание этим заниматся, и хочется это делать оптимальным для меня способом, нежели тем который вымярен для сферического вкатуна в вакууме. Отсюда и вопросы про то как люди в области подходят к решению, чтобы выбрать тот путь который мне наиболее понятен, близок и удобен, в том числе чтобы на больший период времени сохранить мотивацию
Мне кажется что решения чисто синтетических задач котируются не так хорошо, как какой-то проект который ты разработал самостоятельно для решения более реальной задачи, даже если она очень специфичная и никому кроме тебя не нужна. У самого такие есть, но я слишком трус чтобы их выложить напоказ. Я ставил в свой CV что, мол, решаю Advent of Code (задачи реально прикольные), но не думаю что это отражает что-то кроме того, что я примерно понимаю как решать алгоритмические задачи - это мало или совсем ничего не покажет в плане других граней разработки типа знаний best practices/"know your tools" в твоем языке, поддержка проекта, скилл усваивать/осваивать документацию и либы и т.д. Если сможешь найти себе такой проект, который можно прогрессивно развивать, это было бы идеально.
Курсы это неплохое начало если ты к ним предрасположен, да и в открытом доступе есть хорошие, платить совершенно не обязательно.
>и надеется что делаешь не зря
Тут ничего не могу практического посоветовать кроме как не унывать и продолжать упорствовать. МЛ был моей первой работой и я в него пошел потому что в дурке от военкомата встретил другого МЛщика, и он меня вдохновил попробовать; я мало себе представлял, тем ли я занимаюсь или нет и на самом деле мало рассчитывал на успешный вкат.
Для демонстрации я выбрал самописную сеть из >>43370; еще во время знакомства с тем челом я задался себе целью "я напишу нейросеть с нуля". В матане сам не силен, но и не боюсь. Прошел тот курс ровно до окончания модуля по классическим нейросетям и остальное не трогал. Не один вечер провел подальше от компа, с тетрадкой и ручкой пока пытался понять как обобщить обратное распространение ошибки на Nный слой, ну не обобщается сцуко. Поучительный для меня момент был: я несколько раз видел упоминание одной херовины матрица Якоби и избегал её, потому что СЛОЖНА. Когда исчерпал все остальные варианты и таки пришел к ней, оказалось что это была та серебряная пуля которой мне не хватало.
Мне повезло, что компания в которую я по итогу пошел работать, как раз искала МЛ специалиста чтобы попробовать прогнать несколько экспериментов, типа есть ли смысл от МЛ в их кейсах или всё таки хуйня. Со временем я там же перекатился в бэк, потому что питонщик-млщик я один, а меня окружают другие бэкендеры - больше прокачаюсь если тоже буду ебашить бэкенд.
Работаю соответственно не в яндексе, выполнил только 3 из 6 тестовых заданий в обоих попытках, да и в посте немного слукавил - прогнал заново процесс пару раз и получал ~95.9%, а там требовали 98%.
Мне кажется что решения чисто синтетических задач котируются не так хорошо, как какой-то проект который ты разработал самостоятельно для решения более реальной задачи, даже если она очень специфичная и никому кроме тебя не нужна. У самого такие есть, но я слишком трус чтобы их выложить напоказ. Я ставил в свой CV что, мол, решаю Advent of Code (задачи реально прикольные), но не думаю что это отражает что-то кроме того, что я примерно понимаю как решать алгоритмические задачи - это мало или совсем ничего не покажет в плане других граней разработки типа знаний best practices/"know your tools" в твоем языке, поддержка проекта, скилл усваивать/осваивать документацию и либы и т.д. Если сможешь найти себе такой проект, который можно прогрессивно развивать, это было бы идеально.
Курсы это неплохое начало если ты к ним предрасположен, да и в открытом доступе есть хорошие, платить совершенно не обязательно.
>и надеется что делаешь не зря
Тут ничего не могу практического посоветовать кроме как не унывать и продолжать упорствовать. МЛ был моей первой работой и я в него пошел потому что в дурке от военкомата встретил другого МЛщика, и он меня вдохновил попробовать; я мало себе представлял, тем ли я занимаюсь или нет и на самом деле мало рассчитывал на успешный вкат.
Для демонстрации я выбрал самописную сеть из >>43370; еще во время знакомства с тем челом я задался себе целью "я напишу нейросеть с нуля". В матане сам не силен, но и не боюсь. Прошел тот курс ровно до окончания модуля по классическим нейросетям и остальное не трогал. Не один вечер провел подальше от компа, с тетрадкой и ручкой пока пытался понять как обобщить обратное распространение ошибки на Nный слой, ну не обобщается сцуко. Поучительный для меня момент был: я несколько раз видел упоминание одной херовины матрица Якоби и избегал её, потому что СЛОЖНА. Когда исчерпал все остальные варианты и таки пришел к ней, оказалось что это была та серебряная пуля которой мне не хватало.
Мне повезло, что компания в которую я по итогу пошел работать, как раз искала МЛ специалиста чтобы попробовать прогнать несколько экспериментов, типа есть ли смысл от МЛ в их кейсах или всё таки хуйня. Со временем я там же перекатился в бэк, потому что питонщик-млщик я один, а меня окружают другие бэкендеры - больше прокачаюсь если тоже буду ебашить бэкенд.
Работаю соответственно не в яндексе, выполнил только 3 из 6 тестовых заданий в обоих попытках, да и в посте немного слукавил - прогнал заново процесс пару раз и получал ~95.9%, а там требовали 98%.
Спасибо за детальный, развёрнутый ответ. Буду думать что куда и дальше искать для себя инфу. Удачи с бэкендом.
1) Курсы по питону учат веб-разработке на питону, а не питону для дата сайнс. Хочешь питон для дата сайнс - ищи курсы по дата сайнс.
2) Скиллфактори говно, если так хочешь пройти курсы - выбирай Hexlet или Яндекс Практикум. Но, повторюсь, просто для того чтобы выучить питон лучше ебани какой-нибудь курс с курсеры/юдеми или Поколение Python на степике.
Словно что-то плохое. Это же питон-тред, мы тут все толерантные и открытые к экспериментам.
1. Ебу мамку ОПа
а. Сильно функция f_1a()
б. Слабофункция f_1b()
в. Не стоит совсемфункция f_1v()
q. Выход из режима трахафункция f_1q()
2. ёбу батьку на спине мамки
а. аж возбудилсяфункция f_2a()
б. Слабо, не кончилфункция f_2b()
в. Не стоит писяфункция f_2v()
q. Выход из режима трахафункция f_2q()
inp = input("комманда?").strip().lower()
Как можно реализовать такой трах? В консоли, на чистом пистоне.
да, но не быстро. потому что на питоне написано пиздец как много софта и переписывать его на каком-то МоЖо никто не собирается
Мне кажется mojo это хуета маркетинговая, никому нахуй не нужна будет, ровно как и deno или vlang.
ну, правды ради, рано или поздно один язык сменит другой и тут как кому повезет
Это копия, сохраненная 2 августа 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.