Вы видите копию треда, сохраненную 23 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: >>1787217 (OP)
Предыдущий: >>1699561 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
— А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
https://dumpz.org/bASGKD8cCFDf
О, следующий юбилейный
у тебя список. очень большой. нужно сравнить все со всеми. и удалять дубли из списка как только их встретил
питон 3.7
элементарно решается с потоками, но с процессами я задумался
чтобы дать доступ каждому процессу к мутабельному!!! списку и простого решения в голову не пришло. Идеи конечно были, но вот "да хуле там делать изи" не было
Меня тоже этот момент смущает. Вообще надо смотреть раскладку, сколько занимает картинка в закодированном состоянии, сколько времени она декодируется и какой декодированный размер.
Из этого уже можно проектировать алгоритм.
Если все сравнивать со всеми, то одну картинку надо передать в каждый воркер в любом случае, каждый воркер будет сравнивать со своей частью базы картинок, не всей.
Но пересылка данных не такая дорогая операция. То есть или ты упираешься в процессор, и тогда выгодно пересылать в раскодированном виде, или ты упираешься в объём данных, тогда проще распаковывать в каждом процессе отдельно. Кроме того, вопросы возникают по тому, как вообще это сравнение работает и нельзя ли там радикально оптимизировать.
Вообще задача выглядит из тех, что хорошо распараллеливается. Есть очень неудобные задачи, но другого класса.
Ну само собой многие операции на питоне тормозные, если сравнивать производительность в один поток. На чём-то можно и в 100 раз проиграть относительно других платформ, особенно если ускорялками не пользоваться.
>Почему нельзя картинку взять сразу в воркере? Зачем её прогружать в мастере? Судя по всему у тебя мастер как-то агрегировал эти картинки. Мог ли воркер сделать частичную агрегацию на своей стороне, а потом отдать только результат для финального мержа?
Результат все равно пришлось бы копировать в основной процесс, где находилась нейронка. Вариант чуть лучше, но производительность все равно в разы ниже, чем при использовании потоков.
>>1793252 →
>Может у тебя там сериализация тормозила? Или мастер тупил. Ну реально, звучит как хуета что оперативка не справляется с копированием.
Проблема не в скорости копирования в оперативки, а в имплементации копирования между процессами на питоне. Не забывай, что у каждого процесса свое адресное пространство памяти, и просто взять и скопировать не получится.
>>793259
>То есть или ты упираешься в процессор, и тогда выгодно пересылать в раскодированном виде, или ты упираешься в объём данных, тогда проще распаковывать в каждом процессе отдельно.
Я упирался в место на диске, поэтому пришлось шакалить картинки, которые потом хотел разжимать в реальном времени при помощи нескольких потоков (процессов).
> элементарно решается с потоками
Ну это пока оперативы на компе хватает. По-хорошему надо разбивать на части.
> чтобы дать доступ каждому процессу к мутабельному!!! списку
Вот здесь надо было остановиться и писать на шарпе, если очень нужно решение "в лоб". Самое забавное что гил замедлил бы твой код в количество процессоров раз. Вон у тебя 4 минуты на шарпе, стало бы допустим 30 минут. А ты нагородил такого, что аж 5 часов работало.
> в имплементации копирования между процессами на питоне
Ну о чём я и говорил, ты сильно терял на сериализации. Причём удивительно, что это не куча мелких объектов, а бинарный кусок, и это по идее тормозить не должно. Такое ощущение что там сериализация пошла по каким-то бэкреференсам и выносила чуть ли не весь стейт интерпретатора в сообщение.
Когда ты пишешь, что 90% времени идёт на копирование, мне кажется, что проблема в архитектуре или реализации.
Ну здесь просто варианты, декодировать в нескольких процессах, запускать нейронку в нескольких процессах и т.п.
Описанная задача выглядит как такая, что хорошо распараллеливается.
Я вообще не вижу принципиальных проблем с пересылкой большого количества данных, хоть через сокеты можно, но если объёмы действительно большие, то насколько оптимально дальше эти данные обрабатываются?
Факт, питон не предназначен совсем для обработки бинарных и численных данных. Без неконвенционных оптимизаций просадка в десятки раз легко может быть. PyPy и некоторые другие инструменты иногда позволяют очень прилично разогнать, но всё равно.
Но в том, что ты описываешь, меня в первую очередь архитектурный вопрос распределения задач смущает. Надо разбираться :)
> Ты ведь мог бы запустить на одном процессоре,
а я это прямо и написал что на питоне была однопоточная версия
потому что мне не пришла в голову простая реализация на питоне
учитывая что я знаю шарп где даже мудрить не нужно
я переделал на шарпе сделал дело и забыл
но я не забыл что мне было неудобно решать ее на питоне именно из за природы процессов, необходимости дать процессам один список, да еще чтобы он был мутабельным. Я привык к обычным задачам где "сделал пул, дал им задачи и они перемололи друг на друга им плевать", а тут плотное взаимодействие
собственно об том, что гил заставляет брать процесы и городить костыли (ибо это процессы) я и сказал в самом начале
Ну то что ты называешь мудрить это вообще-то нормальный человеческий подход, разделить задачу на части. И собственно в самом начале про гил всегда и говорится, что многопоточные вычисления над неделимым стейтом в питоне будет больно. Твоя ошибка в том, что ты не подумал и начал откровенно колхозить, закономерно облажался, и теперь пришёл рассказывать что гил жить мешает.
Твоя задача кстати разделяется относительно легко. Разделяешь большой список на N частей, затем с помощью itertools.combinations_with_replacement каждому воркеру говоришь какие из двух частей прогрузить и однопоточно перебрать. Результат, найденные дубликаты, пишешь в виде индексов, и после основного map делаешь постпроцесс, который их по индексам удаляет.
Requests вообще не занимается валидацией. Jsonschema вообще не занимается http протоколом.
Ну как не решаешь? Индексы проставляешь же в базе?
Ну ты можешь любой жсон свалидировать любой схемой. К примеру конфиг приложения, или пришедшие данные от юзера, да что угодно может быть. К примеру проверить что в жсоне используется только словарь с определёнными ключами, или что аррей содержит только числа от 0 до 10, и чтобы этот аррей был длиной ровно 3.
Ещё хороший юзкейс только для жсонсхемы это динамические валидаторы, к примеру пользователи могут на твоём сервисе задать вид жсонов, которые они хотят получать от других пользователей. Для этого они отправляют тебе жсон схему, а ты уже делаешь валидацию. Всякие pydantic такое не умеют, так как жёстко вбиты в код приложения.
>>793350
Ну тогда awesome interview questions в зубы и вперёд. Думаю вряд ли кто-то решает олимпиадные задачи чтобы постоянно держать анус закалённым. Перед поиском новой работы месяца-двух хватит чтобы снова надрочиться.
>Ну то что ты называешь мудрить это вообще-то нормальный человеческий подход
нормальный человеческий подход это потоки, которые работают параллельно по настоящему. В этом и есть суть потоков - иначе зачем они нужны.
Процессы вместо потоков это костыли - параллелить надо. а потоками не выходит ибо гил
>всегда и говорится, что многопоточные вычисления над неделимым стейтом в питоне будет больно
чавоооо? я же это и говорю, что в питоне не всегда удобно делать многопоточные вещи, потому что там не настоящие потоки из-за гил
>закономерно облажался
я всего лишь здраво оценил количество гемора в такой задаче в питоне и количество "гемора" в шарпе и сделал правильный выбор
но как это отменяет то, что в питоне приходится ебаться с "а как распаралеллить, потому что потоки гил?". ответ: никак
>и теперь пришёл рассказывать что гил жить мешает
я с этого и начал.
>Твоя задача кстати разделяется относительно легко.
разное у нас понимание слово относительно. Конечно для питона это "относительно легко". Но по сравнению с потоками это "нихера себе конструкция на ровном месте".
И ЕДИНСТВЕННАЯ причина городить такой огород - гил
Пока никак. Через год начнёшь сам проектировать структуры кода в зависимости от задач.
Не, проектировать структуру приложения и прочее - я не про это.
Имею в виду, вот я разбил свою задачу на кучу маленьких. Допустим, первая подзадача - прочитать xml и забрать такой-то тег.
Я в 100% случаев тупо возьму кусок из своих старых наработок, или, если похожего нет, тупо возьму с инета и переделаю под себя. И чем дальше, тем больше я такого за собой замечаю, так как я ленивый пиздец, наработок все больше и больше, а писать 2 раза я не люблю.
Руками с нуля почти не пишу, в результате забываю многие простые вещи, и поэтому без наработок и инета под рукой (или возможности им пользоваться, например за собесе), я жидко перну и обосрусь.
Тогда будет медленно шопипец.
По джаве у меня был собес давно как-то. Сказали написать какую-то херь онлайн при них. Без IDE. Я забыл какую-то мелочь типа порядка аргументов в методе, мне сказали ЦОК ЦОК ЦОК ПОНЯТНО ВСЕ С ТОБОЙ. Я говорю - ребят, ну вы че епт, я когда пишу - есть автодополнение IDE и документация под рукой, я не могу такие вещи помнить наизуть. Мне главное знать как оно работает, каким способом решать ту или иную задачу, а синтаксис и вот такие нюансы типа порядка аргументов - это несущественно и решается/вспоминается на месте. А вы мне мол даете аля блокнот и типа давай пиши работающее нахуй приложение.
Послали тогда нахуй, в общем. Было обидно.
>я всего лишь здраво оценил количество гемора в такой задаче в питоне и количество "гемора" в шарпе и сделал правильный выбор
И о чём это? Кто-то не знает, что потоки в питоне слабо реализованы? Это проблема не только питона, но и многих других динамических языков.
В питоне будет больно в одном месте, в языках со статической типизацией в другом месте.
В твоём случае налицо ещё проблема проектирования. Конкурентное программирование требует грамотного проектирования.
В тех задачах, которые могут сильно выиграть в производительности именно на потоках, а не процессах, питон чаще сольёт по другим причинам, то есть он сольёт и в однопоточном режиме тоже и это ограничивает питон сильнее, чем проблема GIL.
Нужно ли создавать отдельную модель для десятилетий(decade) и устанавливать связь?
Как я это вижу сейчас:
Модель - десятилетие
Модель - фильм
----устанавливаем связь с моделью десятилетия
Конечно, за одно знание питона тебе должны сразу корпоративную машину дать, свой кабинет и макпук последней серии.
На текущем месте чуть меньше зп, плюс работаю из дома. Наверное я еще кроме питона чего-то знаю лол.
>Кто-то не знает, что потоки в питоне слабо реализованы?
потому и говорю, что в питоне параллелить не всегда удобно. Что то не так? Не говори, что "там все изи" и я не буду говорить обратное
>со статической типизацией в другом месте
это уже софистика
>Конкурентное программирование требует грамотного проектирования
само собой. но я рассматриваю вопрос не "как грамотно делать многопоток", а "сколько преград ставит яп при этом". И почему итоговый огород именно такой, а не что-то проще
>чем проблема GIL
это не мешает работе. я знаю что беру питон за практичность, а не за скорость. и меньшая производительность питона не заставит меня мудрить хитрожопую конструкцию. А гил заставляет.
Всмысле? Я спросил анонов которые с похожими скиллами вкатывались на такую вилку, если нечего сказать то можешь пройти нахуй.
конкретно в этой задаче в шарпе я заменю foreach на Parallel.Foreach добавлю логов для списка и проверку выхода за границы и все
в питоне же придется думать как это разбить на чанки, как давать процессам воркерам, как получать результат, как учесть то, что элементы удаляются и нехорошо воркерам работать с тем, что уже удалено и так далее.
Я не говорю, что питон плохой. я люблю питон
но GIL зло, а процессы это просто костыли
>отработал полтора года единственным питонистом на дно проекте,
>могу калькулятор сделать или игру "виселица", вот
Выпей кофе и подумай как ты реально можешь описать проект. Тут все пишут на питоне, лол.
> в питоне же придется думать как это разбить на чанки, как давать процессам воркерам
result = executor.map(...)
И все
> Тут все пишут на питоне, лол.
Писал небольшой монолит на джанге + селери, БД постгрес, в БД приходилось писать хранимки, так как в том кейсе без них нельзя было обойтись, писал разные парсеры selenium + bs, писал сервера для вебсокетов, либы для джанги которые юзали на других проектах, был опыт написание либы на С. Также занимался автоматизацией сборки и деплоя, но в рамках стейдж инфраструктуры. Ну и в жс и реакт могу.
> какая несусветная глупость. условия задачи почитал бы
Какая же? На питоне есть один способ ускорить cpu задачу это раскидать по процессам, для ввода вывода лучше использовать асинхронность. Ну есть варианты завернуть С/C++/Rust в питон биндинг, так обычно и делают.
если ты ленивая жопа, ссылайся на NDA, а то спросят почему GitHub пустой. тут уже кто-то советовал отвечать "пет проектов нет, во внерабочее время занимаюсь семьей/собакой/попугаем"
У меня есть 2 проекта свежих, но 2 нужно дописать, но мне на самом деле не да этого, учу смежные технологии и CS
Я спросил про другое, мне интересно ситуация на рынке перед тем как искать работу.
Бро, не я тебя собеседую. Ты уже понял, что надо делать. Никто не мешает кстати искать работу, пока сидишь на своей галере.
>>793642
Смотри вакансии habr'a и vc для начала, потом копайся в говне на hh и прочих. Можешь посмотреть что на upwork творится, надо будет ИП открывать для этих целей. Опять же на VC и Habr все разжевано.
Правильно советовали.
Большая часть программистов в мире программирует ради денег, а не ради жизненного признания, в том числе и те долбоебы, что его будут собеседовать. Если воротят нос из-да отсутствия какой-то ебалы, не имеющей отношения к работе, можно считать это подарком судьбы, что тебя не взяли в говноконтору. Это то же самое, что хрюши с их "мы не нашли тебя в соцсетях, нам скрытень не нужен" или "мы нашли фотку, где ты пляшешь на столе в баре, поэтому код писать мы тебя не возьмем".
Если бы кодил ради жизненного призвания, то точно бы не сунулся в СНГ конторы лол.
https://career.habr.com/vacancies?utf8=✓&q=python&location=&city_id=&type=all
вот, ищи. там есть и раздел для фриланса.
>>793644
Ну если на проекте ты кодишь по 10-12 часов, то как бы какое нахуй свободное время? Тем более в одно рыло тащить репозиторий. Таких единицы. Скорее всего это студенты CS или фрилансеры.
Хотя есть и люди которым 8 часов хватает на все и их совесть не тревожит.
>потому и говорю, что в питоне параллелить не всегда удобно. Что то не так?
Всё так, в этом ничего нового, что многопоточность в питоне примерно никакая. В го хорошая.
Про машинное обучение. Можешь конечно про бэкэнд почитать (Django) и читай про сам принцип написания кода.
доки
>На питоне есть один способ ускорить cpu задачу это раскидать по процессам
я это знаю. и мой аргумент звучит так - не все задачи хорошо раскидываются по процессам и в результате может получиться знатная монструозная хрень
И считать такую хрень нормой есть дикость
а дикость сия спровоцирована гил
так что аргументы тех кто грит "асинкио хватит, а остальным охуенчик мультипроцессинг" суть фантазеры которые не видели что такое реально охуенчик
зы: в данной задаче executor.map(...) не в тему. там общий мутабельный набор данных мутации которого всем воркерам нужно бы знать
Нормальный онлайн тренажер
Что ты подразумеваешь под тренажером?
Если изучать хочешь, то ставь питон, качай/покупай книгу и вперед, обычно всегда есть упражнения для закрепления знаний из главы.
Если тебе потренироваться, то литкосы/кодварсы/любой другой онлайн ресурс с задачками, где есть градация по сложности, встроенные тесты и т.д.
>я это знаю. и мой аргумент звучит так - не все задачи хорошо раскидываются по процессам и в результате может получиться знатная монструозная хрень
>И считать такую хрень нормой есть дикость
>а дикость сия спровоцирована гил
Не понимаю, к чему ты это говоришь. Хочешь просто понабрасывать, и всё.
Любые технологии имеют свои плюсы и минусы. Архитектура высокоуровневых интерпретируемых языков позволяет делать массу всего, чего стандарные компилируемые не могут, и благодаря чему они удобнее. Но это же усложняет их реализацию, в том числе поддержку многопоточности. Потому что вот совсем не понятно, так тягать все эти машины в разных потоках, как синхронизировать данные, менеджмент памяти и др.
Это ограничение, оно есть, из-за него потоки теряют вычислительный смысл. Но кстати их не для этого придумывали изначально, треды на всех платформах появились тогда, когда в основном все компьютеры были однопоточными. Треды нужны были чтобы разделить потоки исполнения, а не пытаться накручивать производительность.
При этом примеров, когда именно потоки критичны, не так много. Особенно для питона. Хорошая архитектура должна быть спроектирована так, чтобы более-менее легко было портироваться на много процессов.
Если у тебя много разных мютексов в коде, то это лапша в стиле лапши из goto из очень древних времён. Сейчас это не комильфо, сейчас принято использовать концепции каналов, очередей, заданий и т.п.
Обычно треды могут дать большое ускорение в том виде кода, который на питоне в принципе работает медленно, потому что питон плохо работает с прямой обработкой численных и бинарных данных.
Треды плохо масштабируются. А если у тебя спроектировано на много процессов, то ты легко можешь поддерживать кластеры, микросервисы и т.п.
Наконец, если тебе хочется потоки и без GIL, ты можешь глянуть на решения вроде Stackless Python. Это альтернативный, но официально признанный интерпретатор.
>К примеру проверить что в жсоне используется только словарь с определёнными ключами, или что аррей содержит только числа от 0 до 10, и чтобы этот аррей был длиной ровно 3.
Так ведь все это я могу реализовать обычными тулсами и кондишинами?!
>Не понимаю, к чему ты это говоришь
к тому что в питоне вместо потоков процессы. я сказал что это доставляет проблем, что не всегда удобно использовать процессы вместо потоков
меня спросили пример - я его привел
меня стали критиковать "ты не умеешь готовить, ничего не понима, бла бла, бла бла ,бла"
я своих аргументов не менял. Если кто то забыл с чего все началось то это его проблемы
JSON Schema это как документация. Подключаешь OpenAPI, создаёшь демостенд и твою систему тестируют. А главное JSON schema не привязан к языку и ее можно будет портировать.
А так вообще pydantic хватало за глаза.
Такого не бывает, хочешь сам напиши такую книгу.
Задач и инструментов овердохуя. Определись что ты хочешь узнать и это уже расписано на StackOverflow или в документации интересующего тебя инструмента.
Хотя есть вариант скачать курсы, там как раз пилят проект и объясняют шаг за шагом, с самостоятельной работой естественно
a = [4,2,2,4]
arr = {}
1) for i in a:
... arr += 1
2)>>> for i in a:
... if i not in arr:
... arr = 1
... else:
... arr += 1
Очень много повторений будет. Если ты начнёшь абстрагировать это всё в функции, рано или поздно изобретёшь что-то вроде жсонсхемы. Зачем изобретать своё если можно взять готовое? Где уже съели пуд соли, пофиксили пару тысяч багов и даже спецификацию написали.
У тебя там много чего проебалось.
a = [4,2,2,4]
arr ={} # инициализация перемнной типа dict
for in a:
arr+=1 # запусти и увидишь ошибку TypeError: unsupported operand type(s) for +=: 'dict' and 'int'.
словарь заполняется через объявления ключа и присваивание значения если это не DefaultDict, т.е.
arr['one'] = 1
на выходе arr({'one':1})
короче ты принес какой-то контекст и спрашиваешь.
если у тебя arr =[{}], то это список словарей. Откуда ты это говно притащил?
Ниоткуда. Я сам это сделал.
Моя задача добавить содиржимое словаря по ключам, где значения показывает кол-во элементов в арреи. То есть, если один раз встречается, то 1, если 2, то 2 и тд. По сути счет.
def __repr__(self):
----return "MyClass(\
и собираюсь на каждой отдельной строке обозначать новый атрибут, чтобы было читаемо, экранирование с помощью \ позволяет переносить строки, но сцука итоговый результат получается с большими пробелами между атрибутами, потому что табуляция внутри строки сохраняется, как убрать и ее?
Делай через \n, хули.
Потому что я не знаю даже с чего начать. Пока мне менеджер сказал, поверхностно изучи гит, мы дадим тебе аккаунт - Что это значит ??? что мне нужно делать с самого начала? git init в рабочей папке ? Потом git pull master?
ХЭЛП
Уровень абстракции: писюн.
Тебя смущает что там не две страницы? Тебя бы самого не смутило что к тебе пришёл джун с двумя листами регалий?
return (
"MyClass("
"attribute=3"
" attribute=3"
" attribute=3"
")"
)
Обратный слеш почти всегда не нужен.
Заведи аккаунт на гитхабе, сделай приватный реп. Изучай git clone, add, commit, push. Осознай что add не перманентный, оттуда файлы можно вернуть или вообще стереть изменение, это как бы черновик коммита.
Дальше учись работать с ветками. Осознай что ветки это всего лишь указатели на определённые коммиты, и если checkout выбрал именно ветку, то при коммите она автоматически сдвинется на новый коммит. Осознай что ветки легко добавляются и стираются в репозитории, что до push они у тебя живут локально и ты можешь их не публиковать.
Дальше merge/rebase. Это уже не поверхностный уровень. Поверхностно нужно только представлять почему случаются конфликты изменений и чем мерж от ребейза отличается.
Дальше узнай про remote. Ты можешь синхронизироваться сразу с несколькими репозиториями, например с основным и с форками. origin это всего лишь имя ремоута по умолчанию, и таких имён можно надобавлять целую кучу.
>Дальше учись работать с ветками. Осознай что ветки это всего лишь указатели на определённые коммиты, и если checkout выбрал именно ветку, то при коммите она автоматически сдвинется на новый коммит. Осознай что ветки легко добавляются и стираются в репозитории, что до push они у тебя живут локально и ты можешь их не публиковать.
Спасибо, но как это сделать?
По сути все возможные комбинации? В чем смысл-то?
Вот тут читай, всё разжёвано и переведено.
https://git-scm.com/book/ru/v2/
И практикуйся. Сделай просто текстовые файлы со списками фруктов/овощей/животных, добавляй, редактируй, удаляй.
Сабсет это подмножество. All subsets это все возможные подмножества.
https://ru.wikipedia.org/wiki/Подмножество#Примеры
Откуда мне знать зачем тебе это понадобилось?
Кстати на картинке пиздёж, там только подмножества из трёх элементов.
Собеседовался недавно, спросили за гит. Сказал, что юзал SVN всегда, а гит один раз ставил чисто от нехуй делать, пробовал конвертнуть репозиторий. Получилось, ну и забил, ибо нахуй он мне нужен. Мне сказали УУУУ КАК ТЫ БЕЗ ГИТА ЖИВЕШЬ, НЕ НУЖЕН ТЫ НАМ ТАКОЙ.
Дебилы, блядь. Как будто принципиальная разница есть. Пересесть и привыкнуть за полдня можно, если потребуется. Тем более есть клиенты, за которыми даже похер что у тебя, типа черепашки.
Это как прийти в стартап и рассказать про богатый опыт программирования на коболе. Ну ты и дурень.
Похуй. Во-первых, это написано в резюме. Во-вторых, я не люблю пиздеть.
В третьих, я был только рад отказу, когда понял, что меня собеседуют 2 начальника, один из которых формально у них главный разраб, но из программирования знает только заученные определения из книжек. Искали замену челу, который от них съебался на жопной тяге. Устроишься в такую залупу, и будешь один везти все на своем горбу, пока такие толстопузы будут бабло получать. Еще пиздели, что команда у них там, а на самом деле ты да я, да мы с тобой - вот и вся команда была бы.
Сейчас глянул, до сих пор вакансия открыла, лол.
Меня смущает, что там пол страницы, может как-то не так оформляю.
>Как будто принципиальная разница есть
технически они правы. С ГИТом есть разница. Ибо это довольной кривой тулз с бредовыми концептами.
Всем привет
Появлялся с месяцок назад, спрашивал про питон как бэкэнд для браузерной игры на коленке
Собственно, не забросил, понемногу двигаюсь.
Только вот немного не понятно, как примастить пользователя
Вот, к примеру, пользователь ловит рыбу, 10 минут, через 10 минут получает результат
Получается, я должен привязаться к реальному времени? когда время станет такое, то, выполнить проверку результата и все записи в sql?
И как питон поймет, что пора (собственно, время настало). Есть какой-то аналог крона, который заставляет его каждое определенное время проверять?
Мб немного сумбурно, но подскажите, что и как гуглить.
Надо не так. Сохрани когда пользователь последний раз поймал рыбу. И когда с фронта придёт запрос словить следующую рыбу, проверяй чтобы между сейчас и предыдущим разом прошло 10 минут, иначе болт. Ну или что там, забрать результат ловли. Крон довольно примитивная вещь, для нормальных приложений нужен либо планировщик (если ты рассылаешь с сервера в сокеты), либо валидатор (если запросы идут с фронтов).
Блядь, это издание в двух томах с общим количеством страниц уже в 1600. Он там войну и мир пишет что-ли?
Желаю перевести его в человековаримый формат
делаю:
from datetime import datetime
humantime = datetime.fromtimestamp(time).strftime("%A, %B %d, %Y %I:%M:%S")
Вроде бы все норм получается, но результат обгоняет на 12 часов.
Показывает, что время для time = сейчас 3 часа ночи.
Что я делаю не так? В данной конструкции все корректно и стоит искать проблему в конструкции, которая генерирует time?
Я не понял, в этой книге на 1600 страниц и 2 тома ещё и практики нет? ЧЕГО БЛЯДЬ?
Было бы неплохо, желательно еще в аниме-стиле.
Есть функция которая читает каждое сообщение и функция по запросу выдающая текст, надо ли засовывать логику самих генераторов внутрь этих функций или можно к примеру в отдельном файле .py сделать генератор и подружить его с основным файлом? Или писать в основном, но отдельными функциями где-то ниже/выше?
Прием питона
Коленно-локтевая
Фулл Маунт
time.localtime() ?
Да я как то не задумывался особо, конечно будет
>каждое слово из новых сообщений добавляется в словарь, назначаются какие-то пары слов, потом по запросу выдается мешанина из этих пар
Че?
>надо ли засовывать логику самих генераторов внутрь этих функций или можно к примеру в отдельном файле .py
Пока кода мало - вообще похуй
Учу джангу, есть вопрос:
Есть модель, там таблица линкуется с другой таблицей. Например,
class Table_1(models.Model):
name = models.CharField(max_length=255, default='')
class Table_2(models.Model):
Table_1_id = models.ForeignKey(Table_1, on_delete=models.CASCADE)
subject = models.CharField(max_length=255)
Есть страничка с формой на которой вводятся данные для этой Table_2.
By design при открытии я уже знаю, какой из элементов Table_1 мне нужен, чтобы запихнуть его в Table_2.Table_1_id и не хочу выводить его на форму.
В общем, я вижу два варианта:
1. Заставить форму передавать значение элемента, не выводя его (но я для этого плохо знаю фронтэнд, простых примеров не нашёл, в одном из примеров, на которые наткнулся подобное решалось через JQuery и AJAX, что явно оверхед, особенно с учётом того, где я вообще видел фронтэнд в гробу я его видел - мне нужно сделать рабочую болванку и передать её тому, кто умеет в HTML+CSS+Djinja+etc).
2. Добавить элемент прямо в view.py перед сохранением значений формы, но я что-то вообще не соображу, как. Я тогда в ответе я получаю только <QueryDict: {'csrfmiddlewaretoken': ['многабукаф'], 'subject': ['example_subject']}>, а при попытке накинуть дополнительное значение -- "AttributeError: This QueryDict instance is immutable" (в доках говорится, что это нормально, а метод appendlist работает только если QueryDict был заиничен как мутабл, но штатные не такие и вот дальше я уже ни фига не понял).
import re
def readFile(file1):
count = 0
number = ''
with open (file1) as f:
text = f.readline()
digits = re.findall("\d{10}", text)
return digits
return None
Возвращение 10 цифр подряд нормально, можешь дополнительно вхуячить \b по краям, чтобы именно десятизначные.
Алсо, read, а не readline.
Слишком много мусора в коде. Если убрать все лишнее, то от функции останется три строчки.
Всегда удивлялся долбоебам, считающим, что кто-то рандомно парсит рандомные сайты на предмет сначала номеров аськи, а потом номеры телефонов придумали. Ещё и коверкают, чтобы не спарсили, лол.
В сто раз проще и эффективнее купить готовые базы как у владельца, так и ломанные, тут тебе сразу и таргетинг готовый.
Короче есть такой ввод:
старт\стоп работы, Имя работника, время начал\закончил
start Serega, 100
start Masha, 110
start Vanya, 120
stop Masha, 140
stop Vanya, 150
start Pidr, 160
stop Pidr, 180
stop Serega, 200
Вывод:
Serega, 100 (отнимает стоп от старта)
-Маша, часы
-Ваня, часы
и тд. То есть нужно показывать стукруту по пробелам, кто зашел и кто ушел.
Есть варианты как делать?
Да говно этот Лутц. Лучше Саммерфильда возьми.
И в чем проблема? Ассоциативный массив, время старта, нашли время стопа - отняли и забыли. Если имена могут попадаться несколько раз - ну два массива, окей. В чем проблема-то?
Ты не понял.
Вывод должен содержать структуру проблов типа:
Иван:время
' 'Вася: время
' 'Петя: время
' 'Маша: время
' 'Тетя Мотя: время
' 'Пидр: время
С помощью листа ты не сможешь следить за старт\стоп и выстроить такую структуру, ибо первый стоп относится к последнему стартовавшему работу.
Блядь. Абу режет пробелы, я поставлю тире, где должны быть пробелы:
Иван:время
- -Вася: время
- -Петя: время
- - -Маша: время
- - - Тетя Мотя: время
- - - - -Пидр: время
Это знаки минус, а не тире, бестолочь. Как ты собираешься вкатываться в питоноведение, если ты даже этого не знаешь?
Очень зависит какие сетевые приложения.
А они уточняли, что хотят велосипед посмотреть?
>>795064
>Че?
Это он про цепи Маркова, видимо
>>795107
1. Я полагаю, ты про это https://docs.djangoproject.com/en/3.1/ref/forms/widgets/#hiddeninput
2. Покажи как ты это делаешь, ничего не понял.
Убираешь запятые и итерируешься через каждый 2й объект(имя). Во время итерации составляешь словарь где имя - ключ, если перед именем старт - заносишь время с -, если стоп - с +. Как вывести словарь - сам как-нибудь подумай
Работаю полтора года и нет ощущения что близок к мидлу, думаю нужно искать работу с сильной командой и более высокой зп. Самому себя сложно оценить, единственный питонист на проекте.
Если ты можешь понять зачем NoSQL на проекте и в чем плюсы и минусы MQ уже можно миддлом назваться потом переобуешься по дороге.
Верните мне 2007. Я про парсинг базы и говорю. Автоматизация звонков.
Тебе что кроме Linphone надо? Спарсил записи, прошелся по всем номерам (список из БД) и все дела, еще на успел на прогулку.
>А они уточняли
Они сказали "технологии на ваше усмотрение" кек
Я таки получил работку, но в другом месте (нет, не на Джанго, в принципе мне похрен на чем писать, знал бы эти заскоки в принципе к Джанге не прикоснулся бы при решении тестового - там прост кейс уж больно удобно под DRF ложился)
это когда невозможно создать более одного экземпляра от класса а при попытке создания возвращается либо новый либо уже существующий в петухоне делается через декоратор
Есть один сервер, находится он в СШП на восточном берегу, есть клиенты по всему миру, пинг для европки.сшп - збс, пинг для океании уже не торт.
Как пофиксать?
Вижу два варианта:
1. Самый простой и легко создаваемый на коленке. Сделать как в играх - разместить дополнительный сервер поближе к океании и перед конектом юзер должен будет пинговать сервера все и выбирать наиболее подходящий для него.
2. Заюзать "Global Server Load Balancing" но тут уже придется подключать доп.сервисы и, я так понимаю, принцип работы у них как и мой п.1
Что анон думает на этот счет?
Использую Nginx.
Туда в любом случае будет хуевый пинг, надо более близкий сервер, да. Вроде в ЮВА более-менее локация, ну или прям локально там.
Как туда направлять решает сдн/балансировщик, обычно просто по айпи, какие там пинги, лол.
> Как туда направлять решает сдн/балансировщик
Так вот я хочу запилить свой балансировщик.
Обычнобалансировщик(тот же Nginx) не обладает возможностью распределять трафик согласно IP.
Короче я потрахался маленько и понял вроде, мне надо было так: r'\b(\w)(\w)(\w*)\b'
А твой совет я не понял
Ну наверное что-то из серии 1. Но при этом ты можешь автоматом выбирать сервер, правда на более высоком уровне, чем nginx.
Но это всё можно прозрачно сделать. Твой клиентский софт сам пингует сервера из списка (который можно автоматом получать) и автоматом выбирает тот, который лучше.
server appserv1.example.com:12345 weight=5;
server appserv2.example.com:12345 fail_timeout=5s;
server backup1.example.com:12345 backup;
server backup2.example.com:12345 backup;
}
fail_timeout поменяй на нужное значение
>Мой балансировщик стоит в амурике
Тогда какая разница? Я попадают на твой балансировщик с пингом до US. Ну если у тебя будет качать данные, я замечу, что просадки по скорости.
Бери данные по GeoIP и перенаправляй в соответствии. У Google же именно такая политика.
>Тогда какая разница?
Разница в том, что я хочу для океании отдельный балансировщик поднимать.
Понятно что я не буду гнать запрос из океании в амурику.
> Бери данные по GeoIP и перенаправляй в соответствии. У Google же именно такая политика.
Можно чуть подробней? Ну или ссылочку какую для почитать.
Скорее просто интересно посмотреть, какие рабочие задачи могут быть вообще у питон программиста, понять, чем придется заниматься скорее всего, мб цепануть какую-то работку не для денег, а для портфолио, чтобы было что в резюме закинуть при поиске на первую работу. Какие сайты юзаете?
Во фрилансе на жс и тем более питоне больно громадная конкуренция с индусами да и вообще с целым светом. Для себя можешь пофрилансить, но на какой-то бабос особо не рассчитывай
Есть ли какие-то онлайн-дрочильни вроде Codecademy для быстрого вкатывания в Питон, но без необходимости оплачивать подписку за кучу ЮСД долларсов?
Так-то в принципе начал читать книгу Гэддиса алсо, что скажете про нее, но на книгах у меня как правило меньше усидчивость.
Благодарю.
>конкуренция с индусами
Как только индусы просекут про Go колесо сансары сделает новый оборот.
>>795515
Я мог и напиздеть. Могут и по latency отправить при начальной странице, а вот поиск уже может учитывать язык и геолокацию.
https://serverfault.com/questions/713241/how-to-redirect-users-to-different-servers-based-on-their-location
Возможно костыль, но я бы смотрел headers или lookup делал по IP. можешь хоть Абу спросить как он напердолил проверку VPN.
Индусы в курсе о го, просто на го никто особо не делает екоммерс хуету или прототипы в отличие от жс питона пхп, он в больших компаниях как вспомогательный хай перформанс язык обычно вдобавок к чему-то медленному
>Если ты можешь понять зачем NoSQL на проекте и в чем плюсы и минусы MQ уже можно миддлом назваться потом переобуешься по дороге.
Такую хуйню у меня спрашивали на интервью в ШША на позицию Тест Инженера Автоматчика. Так что, если ты думаешь это уровень мидла, у меня для тебя плохие новости.
Чел, я и так максимум по шагам объяснил что делать, разбирайся
Обоими. Со стеком как с дата типом.
Такс, тут ещё мысль подкатилась:
А що с БД делать, ведь она тоже на серве в амурике. Иметь Н-штук БД и между собой синхронизировать периодически? Или забить хуй т.к. из одного датацентра в другой оверхед по пингу будет терпимый(надо проверить)?
Почему в этом примере не перевести string в integer ?
Переводи. Когда закончишь, расскажи нам о результате
1. Верни пользователю ответ, что все ок - обрабатываю, запусти фоновую задачу на запрос к другим сайтам, запиши итоги и заставь морду сделать запрос через время после первого ответа и если есть данные - выведи их.
2. Вебсокет
Я хочу получить ответ в формате json, тут написано "JSON
Include the query parameter `json` or set the HTTP header `Content-Type` to `application/json` to return the fact and associated meta-data as a JSON object, with the properties..."
Я должен был догадаться, что 'json' = True, или я ебусь в шары и это тут где-то прямо написано?
И 2 вопрос, гляньте на пикрил, задача была чекать из файла числа на предмет "интересности" через это api, можно ли было api_url как-то более адекватно собрать? Если бы я хотел например собирать не только math, то все равно надо было бы строки складывать?
Нахуя? Пока не знаю, скорее всего проще будет через StreamHandler и exception это делать, но хочется иметь полную картину и возможность манипулировать форматом сообщения.
https://pastebin.com/F7PemfRG
Первый вопрос не понял. Чтобы был жсон, надо отправить параметры в виде жсона или добавить такой параметр в урле, всё указано. В общем-то, так и делается. Ещё через Accept иногда.
Второе - f-strings.
f"https://hui.com/{huivar}/{pizdavar}/1.html"
Запизделся, не из корутины, но из ошибки в event loop. Из корутины понятное дело try...except.
> Include the query parameter `json`
Ты добавляешь в body, а не в query. Query string это сам урл после ?
Спасибо на добром слове, анон. Еще бы ты меня успокоил в целом, про запоминание синтаксиса. Вот вроде какое-то время назад занимался словарями, задачки решал, все ок. А тут несколько дней развлекаюсь с регулярками и реквестами, словари вообще не трогал, в итоге для джсона они понадобились и я понял, что именно команды все нахрен позабывал, благо я хоть курс конспектирую и у меня все в тетрадке выписано, но все равно шарить по ней не круто
>что именно команды все нахрен позабывал
VSCode/IntelliSense/PyLance
https://marketplace.visualstudio.com/items?itemName=Mukundan.python-docs - вот доки внутри IDE, хотя лучше смотреть свежие.
Чем чаще будешь пользоваться определенными встроенными библиотеками, тем больше запомнишь. Но вообще это хуйня помнить все наизусть. Иногда даже на SO захожу посмотреть как не надо делать
Посмарел гитхаб/гитлаб шаблоны вроде есть, но мб подскажут best practies
ну вот я и думаю, чому так на гитхаб шаблоне сделано
https://github.com/gtalarico/flask-vuejs-template
https://github.com/oleg-agapov/flask-vue-spa
https://github.com/testdrivenio/flask-vue-crud
Мне ж по сути надо запросы через axios слать
но в шаблонах идет везде разделение фронта и бека
или это чисто dev ветки, а в проде рендерят index.html на рут запрос? типа app.route('/') -> index.html
>>796237
У тебя в примерах они по разному делают, одни запускают серв, другие вон про проду через билд также пишут, только рендерят самим фласком. Билд как минимум минимизирует твой жс код из-за чего сайт будет грузиться активнее. Рендерить можешь как в примерах или Nginx-ом раздавать статику
Благодарю. Затупил
проще некуда
/show/?id=3 - в браузере
url(r'^show/$', - в урлс
всё, увидел, но я хочу уточнить используют ли в проде такое разделение фронт и бек на разных серверах, ведь логично же рендерить фласком билд
блят, чет я тупанул, извините
Я конечно залетуха без нормального опыта, но если именно делить на 2 сервера - отвалится кусок новомодных фич, типо сервис-воркеров
ну если фронт будет обращаться только в рест апи допустим, то вроде ничего не должно отваливаться
await asyncio.sleep(2)
return a / b
# context to JSON
def custom_exception_handler(loop, context):
# first, handle with default handler
#loop.default_exception_handler(context)
tb = traceback.extract_tb(context.get('exception').__traceback__)
err = json.dumps({'message':context.get('message'), 'exception':context.get('exception'), 'at':tb.format()}, default=str)
print(err)
# define loop
loop = asyncio.get_event_loop()
# set custom handler
loop.set_exception_handler(custom_exception_handler)
loop.create_task(run_division(1, 0))
loop.run_forever()
На выходе JSON
{"message": "Task exception was never retrieved", "exception": "division by zero", "at": [" File \"/home/rost/Development/Test/loop_handler.py\", line 8, in run_division\n return a / b\n"]}, который можно запихнуть себе в анус, ибо никто не пишет так логи азазаза
в БД
>1. Я полагаю, ты про это https://docs.djangoproject.com/en/3.1/ref/forms/widgets/#hiddeninput
Ы-ы-ы! Я ведь находил что элементы могут быть скрытыми, но подумал, что он скрывает дропдаунлист с неправильно выведенным значением по-умолчанию.
Сейчас ещё пару раз перечитал и оказалось, что в темплейт можно добавить
><input type="hidden" name="Table_1_id" value="{{ Table_1.id }}">
и так сработало!
Вот тебе в благодарность.
>2. Покажи как ты это делаешь, ничего не понял.
Примерно так (удолил лишний код, не связанный с этой операцией, запостил раньше, чем понял, как можно и теперь жалко тупо удолять, так что оставлю, вдруг кого на какие мысли натолкнёт):
https://dumpz.org/ctnD3DFabp5G
Теперь соответственно после 50-й строки добавлено то, что выше гринтекстом подсвечено.
Можешь плиз скинуть, как ты айдишник передаешь - vievs и modelform(url если успльзуешь?)?
То что в нём уже есть менять нельзя. Можно только вешать декораторы куда угодно и создавать новые методы. Нужно чтобы в функции test оба метода проходили проверку результата. Функция, которая результат проверяет нестатичная и определена в классе. Поэтому нужно как-то self передавать в декоратор. И он успешно передаётся. Но в моём декораторе не хочет вызываться метод с декоратором classmethod. Хотя в классе он вызывается с использованием self. Что мне поменять чтобы он тоже вызывался и проходил проверку результата?
пара замечаний
1 декоратор принимает в себя результат другого декоратора. ВАЖЕН ПОРЯДОК. то есть твоя fix_result принимает в себя не ориг функцию, а что там создал classmethod. Банально поменяй порядок декораторов
2 все равно self неоткуда взять и он упадет.
Ну то что этот декоратор делает с функцией b нужно сделать с функцией c
Я сначала свой декоратор поставил чтобы self не терялся, а был первым аргументом в моём декораторе. Поэтому self должен сохраниться. Как только теперь его передать дальше чтобы вызвать classmethod?
ну ты же понимаешь что f в твоем декораторе это не целевой метод класса, а обертка classmethod?
а значит при вызове нужно копнуть глубже
что то вроде
def wrap(args, kwargs):
fun = f
if hasattr(f, '__func__'):
fun = getattr(f, '__func__')
result = fun(args, kwargs)
но это лютый костыль. мало ли че там может быть навешано. к тому же "что там навешено" оно навешано и при определении декоратора и сразу можно достать конечную функцию
то есть этот код можно вынести из враппера
> код можно вынести из враппера
Можно. Так скорее всего и сделаю. А как от костыля с декоратором избавиться не знаю
что значит как?
магии не бывает. если класс чего то не может, то нужно это переписать
если не дают менять код класса, то переписать класс в рантайме.
Я не могу переписать. Это базовый класс и у него десятки дочерних. И всего более 1000 функций test где используется метод c. Мне проще в базовом классе повесить декоратор на c чтобы проверку в конце делать, чем переписывать 1000 вызовов этого метода.
повесить декоратор ты можешь, то есть можешь править исходники
а поправить исходный код этих методов что декорируешь - ты не можешь
почему????
В теории я могу все поправить. Но если я возьмусь править дочернии классы, то это работа на несколько месяцев. Я могу и метод с поправить. Но это может что-то сломать т.к. иногда он как self.c вызывается, а иногда как cls.с. Поэтому мне проще повесить декоратор и когда он вызываетс через self, то тогда в добавок функцию check вызывать чтобы результат валидировать. Я бы мог сразу в функции test после вызова c ставить вызов check, но это потребовало бы 1000 функция редактировать. Ещё мог бы поправить исходник метода c, но раз он в декораторе classmethod, то внутри я self никак не найду, а сначит и check не вызову. Убрать декоратор classmethod не могу т.к. это точно что-то сломает. Остаётся повесить ещё один декоратор, который будет проверять как вызван метод и по возможности вызывать метод check. Другого решения не вижу
>иногда он как self.c вызывается, а иногда как cls.с
если оно у тебя где-то вызывается как cls.с, то декоратор работать не будет. Ибо неоткуда ему взять self. Этот твой декоратор сам должен вести себя как classmethod чтобы пробрасывать то селф, то cls
и правильно поправить исходники, а не изворачиваться так
>если оно у тебя где-то вызывается как cls.с, то декоратор работать не будет
Знаю. Поэтому перед основным кодом сделаю проверку что там в аргументах. И если там нет self, то просто не буду продолжать
Ясно, задачи еще пизданутее, да за шо... В такие моменты такая дизмораль посещает, кажется, что никогда в погромирование не смогу
а что там запутанного то?
значит как хтмл (который тот же хмл) на жс сооружать - это изи
а как хмл сооружать - сложнааа
Я хтмл только совсем обзорно посмотрел пару дней с кссом, и делал все ручками, хуяк див, хуяк див и намана. А тут сложно
самое обычное дерево из узлов
у каждого узла есть аттрибуты.
ничем не отличается по логике как если бы ты словарь из словарей собирал. аж НИЧЕМ
Может я не понял задание. А зачем ты городишь велосипед?
Делаешь Гет реквест и возвращаешь его в json. Потом уже делаешь с ним что нужно.
А, в нескольких местах не поменял названия переменных и классов. Дятел. Ну и да, кое-чего не дописал, например, поля "state"
В общем, я делаю
table_1 = Table_1.objects.filter(state=1)[0]
У меня by design в той таблице может быть только одна строка, у которой state = 1.
После чего передаю дзиндзе в темплейт "'Table_1': table_1"
В моём коде, неисправленном из представления "Table_1" это "Event".
Дрочу любые sql'и, файлы, xml'и и прочую лабуду на нескольких языках, но никогда не смогу в нормальное программирование. Всякая ебала с 100000 фрейморками, либами, паттернами и прочим ООП для меня сложнее.
Возьми xmltodict и не еби себе мозг
поясните почему он видит рядом лежащий settings.toml но не settings.json
или у жсона должен быть особый формат чтобы он его распарсил к себе?
как вообще увидеть где эта ебала файлы ищет ибо среди имен файлов что он там генерит "на поискать" есть settings.json но где он его ищет я хз
Буду пиздец как благодарен
https://t.me/f1tane
двачую, все тру посоны на тф хуярят
У меня 16 Гб памяти и 3.6 ГГц проц (выдал работодатель), мне похуй
>Нахера это говноподелие на Idea? Комбайн же прожорливый
Она как раз менее прожорливая чем другие IDE, мало весит и быстро устанавливается.
То что спустя несколько часов она отжирает кучу памяти и лагает, даже если в ней ничего не делали - это джава джетбрейнсам в штаны насрала опять?
Лучшему ЯП на свете
>То что спустя несколько часов она отжирает кучу памяти и лагает
Память очищается если кликнуть на индикатор памяти в правом нижнем углу. Или можно настроить ограничение по памяти.
>это джава джетбрейнсам в штаны насрала опять
Наоборот, джетбрейнсы выжали из джавы максимум и при этом сделали нормальный интерфейс.
>Первая часть твоего коммента никак не объясняет первопричину проблемы.
Потому что "проблема" существует только в манямирке нищих пердолей с 10-летними ноутбуками.
vim, зумерок
Как его сбрасывать?
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
Как Seleniumом кликнуть на текст на линии 4?
Ты спрашиваешь как обойти покупку PyCharm и называешь остальных, кто не использует это говно нищими пердолями. Проверься на биполярку.
Конкретно что надо?
Уже так справился, стандартной библиотекой и рекурсивной функцией
import xmltodict
xml_str = """
<cube color="blue">
<cube color="red">
<cube color="green">
</cube>
</cube>
</cube>
"""
xml_dict = xmltodict.parse(xml_str)
print(xml_dict)
OrderedDict([('cube', OrderedDict([('@color', 'blue'), ('cube', OrderedDict([('@color', 'red'), ('cube', OrderedDict([('@color', 'green')]))]))]))])
xml_dict = xmltodict.parse(xml_str)
print(xml_dict['cube']['@color'])
print(xml_dict['cube']['cube']['@color'])
print(xml_dict['cube']['cube']['cube']['@color'])
тупой ручной проход по ключам.
blue
red
green
<cube color="blue"><cube color="red"><cube color="green"></cube></cube><cube color="red"></cube></cube>
Надо чтобы выдало 4 3 1
Остальные тесты на сайте с курсом скрыты, их там 18 штук
Я дебил, или задача через жопу написана? Имеется пирамида из кубиков
[] - синий - 1
[][][] - красный - 2
зеленый так что ли расположен?
Ну, если тебе самому интересно, то вот задача целиком, я выше ее уже постил. Но только если тебе интересно, я как выше уже писал мб и кривожопо, но сделал
Ну, пирамида. 1 вершина и 3 кубика внизу. В нижнем ряду зеленый между двумя красными.
Cиний 1
Красный -2
Зеленый - ?
Красный -2
так что ли?
я так понял имеется в виду н аркоманская пирамида,
синий кубик
два красных
зеленый кубик
верхний стоит один, ряд ниже стоит 2 и т.д., т.е.
синий кубик 1Х1 = 1
два красных 2X2 = 4
зеленый кубик 1X3 = 3
использовать основные элементы Python – списки, функции, модули;
рисовать при помощи встроенных инструментов Python;
анимировать изображения с tkinter;
написать настоящие игры – “Прыг-скок!” (клон знаменитой игры Pong) и бродилку “Человечек ищет выход”, где нужно прыгать по платформам, чтобы добраться до выхода.
Без "Змейки", в помойку нахер
Я думал что парсер это программа, которая позволяет обрабатывать информацию и как-то ее фильтровать, т.е. у меня задача учебная из хтмл документа на определенной ссылке достать все юрлы, причем их еще особым образом обработать. Собственно до этого момента я считал, что я как бы и пишу какой-то примитивный парсер. Чет я запутался
Алсо такой вопрос, чет в документации не вижу метода get, это же не гет из реквестс, и не гет который юзается для словарей, где почитать, откуда он берется, как работает?
То что ты пишешь называется скрапер, а не парсер, но твой скрапер должен использовать готовый парсер для выдирания информации из HTML.
>>797466
Чтобы прояснить этот момент, т.е. если я напишу например:
source_url = "https://pastebin.com/raw/2mie4QYa"
myfile = requests.get(source_url)
print(myfile.text)
Таким образом он мне хтмл страничку распечатает. То тут все равно будет задействован этот парсер? На какой из строк? Когда я заюзал .text?
>Ты спрашиваешь как обойти покупку PyCharm и называешь остальных, кто не использует это говно нищими пердолями.
Это был не я.
Ты же сам сказал "для выдирания информации из HTML.". Вот я получил это содержимое, в данном примере распечатал, а могу например регуляркой в нем что-то конкретное поискать, могу всю эту хуйню засунуть в какую-нибудь переменную, что тогда ты понимаешь под выдиранием информации?
хтмл это всего лишь текст
браузер парсит этот текст на составляющие (дерево тегов) по правилам хтмл парсинга (разбора)
красивыйсуп точно так же парсит строку которую возвращает сервер в структуру к которой ты можешь делать запросы для извлечения
нудист ты
https://piratebay-proxy.pw/torrent/19191123/JetBrains_PyCharm_2020_1_build_201_6668_115_Win_MacOS_Linux_Crack_FTUApps
и не надо каждый месяц крякать как некоторые нубы тут делают
Как в ней попрактиковаться?
Инб4 устройся на такую работу
>Как в ней попрактиковаться?
писать замороченный асинхронный код
чтобы в голове сфомировалось асинхронное мышление
>>797702
Поясните мимокроку, а асинхронность и многопоточность это не одно и то же? Я как-то делал прогу, которая должна совершать определенные действия раз в n секунд, действия были достаточно сложные, поэтому если я задавал делать что-то 20 раз с интервалом 5 секунд это занимало не 100 секунд, а больше, т.к. она делает действие пару секунд, потом 5 секунд ждет, потом опять действие пару секунд и выходит скажем 110 секунд на выполнение такой хуйни.
Описанное мной многопоточностью фиксится, или асинхронностью?
>Поясните мимокроку, а асинхронность и многопоточность это не одно и то же?
Нет, асинхронность работает в 1 треде
>Описанное мной многопоточностью фиксится, или асинхронностью?
Без разницы
многопоток выполняется одновременно параллельно
при асинхроне дает возможность выполнить другое если текущее ушло в ожидание (ответа из сети, ответа от диска, ответа от базы. от другого процесса и т.д.)
а твое фиксится выставлением периода ожидания в конце каждого выполнения
Да куда ещё проще? Делай чятик. Будильник хуета. Его можно и без асинка сделать.
https://cloud.mail.ru/public/25VT/PEYkh8Bff/
Вот.
Реквест прежний.
Подойдет ли питон для написание стиллеров, граберов, ботнета и прочего в хакинге. Например, для создания ботнета. Клиент-сервер есть, сокеты тоже. Норм будет? Или для стилера. Например, дох програм на кали написаны на питоне, всякие там брутфорсеры и прочее.
Если ты задаёшь такие вопросы, то асинк тебе ещё не нужен. Читай про сокеты, процессы, потоки, примитивы синхронизации, как с нуля без фреймворка написать сервер/клиент на сокетах. Можешь сначала классику сделать: одно соединение = один поток. Соединяй к этому серверу 10 тысяч клиентов и смотри как система захлёбывается от кучи процессов/потоков и тугой синхронизации между ними. Потом читай про тредпулы и очереди обработки короткоживущих запросов, можешь даже простенький http сервер написать. Потом попробуй туда прикрутить вебсокеты. Вот тут как-то оно не встанет, так как соединения живут долго и забирают воркер из тредпула на вечно, не позволяя подключать новых клиентов. Возвращаешься к классике, соединение=поток, всё работает, но на 10к соединений всё так же тормозит. И вот здесь уже читай что такое epoll/kqueue и чем они отличаются от select, что такое эвентлуп и нахуя было переизобретать планировщик ядра в юзерспейсе. Потом читай про колбэки и почему с ними очень сложно писать код. Потом читай про асинхронность, корутины, неблокирующие сисколлы, вот тогда завеса тайны немного приоткроется.
> для написания стиллеров, граберов, создание ботнета
Судя по уровню твоих знаний питон тебе точно не помешает. А насчёт малвари, ну сам подумай, питон и установить не так-то просто, и весит он немало, как ты его будешь незаметно внедрять жертвам?
Походу 5 часов и месяц интервью улетают в дупу. :(
Счастливого пути.
>Нет, асинхронность работает в 1 треде
А можно сделать многопоточность с асинхронностью с каждом потоке?
Или это слишком сложно и там куча подводных камней?
Швайноиндусы с 6 сразу мимо, мой выставленный рейт в 40 тоже маловат, сколько?
Всякие куберйобы и терраформы не знаю, но можно и подучить.
Если не признаешься и найдут - все равно ведь нахуй отправить могут
Можно. Я все ебусь с оберткой-классом Process, чтобы как в GoF красиво было.
Суть в том, что каждый тред/процесс должен запускать свой eventloop.
Обработка видео не I/O, CPU bound.
Кто проверяет? Кадровик? Ну тогда объясни что проебался в резюме, если требуют код, то говори о NDA и шли в хуй. Не понимаю в чем проблема.
кста, а не подскажешь что-нибудь про тестирование нагрузки сервера, типо сымулировать трафик в 200к как в erlang делают (смарел какую-то презентацию аля python vs erlang), спрашиваю у тя так как видно ты компетентен
Yandex.Tank
Ты не тому ответил, я у него же и спросил, какие у него еще варианты
ftp://mail.ru/distib -> mail.ru
<a href='http://neerc.ifmo.ru:1345'> - > neerc.ifmo.ru
Код с 1 пикчи позволяет получить сами ссылки из тагов, а как их теперь вменяемо обрезать?
Самый близкий к нужному эффект дает urlparse(link).netloc, но он не справляется например с такой хуйней в конце домена ":1345", и ссылки типа bya.ru отправляются нахуй.
Я отчаялся и начал делать регулярками, не понимаю, какого хуя первая и последняя буква обособляются в отдельную группу...
просплить урл по слешу, а в той части где будут точки просплить по двоеточию и возьми первую часть
Я бы сделал проверку на наличие http или https, а потом бы срезал всё, что не находится между // и /, т.е. как раз твой адрес.
Мимонюфажек
Вообще звучит очень просто, но на деле хуй знает.
Также думаю, что можно прописывать нужные адреса в хосты, чтобы программа открывалась, но не работала. Такой вариант меня тоже устроит. Как проще сделать?
Самое главное, чтобы всё по расписанию было.
Что значит блокировать? Чтобы она не запускалась?
Можно по процессам лазать и рубить ее нахуй, например.
там в сэмпле есть ссылки которые начинаются на frp://, а еще есть ссылки вообще вида mail.ru/huipizda, но вообще я уже с юрлпарс получше разобрался и через него сделал
Да, чтобы она не запускалась в определённое время. Но при этом в другое время должна запускаться.
> Можно по процессам лазать и рубить ее нахуй, например.
это сложно сделать? что гуглить?
>тобы она не запускалась в определённое время
Не очень понимаю формулировку "не запускалась". А запускается она как, по планировщику ОС или ее пользователь не должен запускать?
Если рубить процесс не вариант, то нужно способ к конкретному случаю подбирать.
>это сложно сделать? что гуглить?
python kill process by name пробовал в гугел вводить?
Если тебе нужно сделать аля кряк, то лучше поищи в инете, 99% что это уже сделали. Фотошоп например частично так крякается + хосты заворачиваются в анус, чтобы он не лез стучать.
Нет же. Мне нужно, чтобы я не мог запустить программу в определённое время, чтобы не отвлекаться на неё. Типа как блокировка сайтов, но только программ.
Боже, ты настолько слабовольный? Выведи себе вместо ярлыка запуск через батник, который проверит время, и если оно то самое, то вместо запуска пошлет тебя нахуй.
Бамп...
я посмотрел хауди хо джанга за час но оказываеца надо было знать питон пришлось смотреть питон за час и мне сразу пазванили и пригласили за 299к/наносек бэкенд делать, но я ж не дурачок себе цену знаю и среднюю цену на рынке и нахуй их послал они еще какую то хуйню про сикать спрашивали сикуль какой то извращенцы ебаные на сиках помешаные с такими разговор кароткий
>Python3 и PyQT5
Думаю это рано еще для него, сначало надо выучить с десяток гофовских патернов, прежде чем предисловие читать , или это тролинг какой то?
В первой части этой книги - классика - переменные, типы, циклы и прочее.
А PyQT5 вторая часть книги посвящена. Её можно пролистать по диагонали. Или вообще не читать.
Ну соглашусь, ты меня убедил, пожалуй для изучения джанги лучше книги на данный момент не найти
>ты меня убедил,
Зря, там питон, а не джанга.
Для джанги в Оп-посте посмотри.
Или тут
https://progerlib.ru/django-books
да я другой чел, а тот чел с самого начала про джангу спрашивал
Они звонят в контору же, там кадровик говорит РАБотал ты у них или нет, какие даты.
СИДИШЬ НА УЮТНОЙ РАБОТЕ, ЛЕНИВО ИЩЕШЬ МЕСТО НА ВЫРОСТ ПОЛУЧШЕ
@
ПРОШЕЛ СОБЕС, ТЕБЯ ГОТОВЫ ВЗЯТЬ
@
БЕЗОПАСНИКИ ЗВОНЯТ ХРЮШЕ С ТВОЕЙ ТЕКУЩЕЙ РАБОТЫ
трустори кстати
>120+ микросервисов
Соа говно, микросервисы заебись.
Когда уже микросервисы станут тоже говном, а в треде будут наносервисы, чтобы совсем для каждого чиха был отдельный сервис?
Рассказала начальнику, тот подвалил ко мне с темой "ты там охуел работу искать у меня за спиной, что не нравится тебе?".
Посрались в итоге на этой теме, когда я сказал ему, что это он охуел хотеть, чтобы я с ним согласовывал свои жизненные решения, и что в следующий раз позвоню ему когда буду цвет труселей выбирать себе.
Он потом извинился. Сказал, что вспылил, что понимает, мол важно смотреть рынок периодически.
Но я все равно ушел, только в другое место уже.
Почему он должен был его уволить? Есть договор, если договор не нарушается, то всё в порядке. Работа по найму это не клятва верности.
Это что-то из пхп или 1с мирка
Хвощ, какие книги посоветуешь для знакомства с REST API?
Есть RESTful Web APIs by Leonard Richardson, Mike Amundsen, Sam Ruby
Норм или с 2013 года она морально устарела?
Сравним два сценария:
1. https://github.com/hakavlad/nohang-extra/blob/master/NOH_39_FAT/2/1
2. https://github.com/hakavlad/nohang-extra/blob/master/NOH_39_FAT/2/2
На первый вздляд скрипты одинаковы: в самом начале запускается бесконечный цикл, и интерпретация никогда не продолжится дальше.
Однако:
Первый скрипт при запуске потребляет 12000 кб анонимной памяти (VmRSS: 16 MiB).
Второй - 3800 кб анонимной (VmRSS: 8 MiB).
В чем подвох? С более старыми версиями проблемы не было. С новым интерпретатором - аномально высокое потребление анонимной памяти. Это норма? Каково возможное объяснение явления?
Есть код (пикрил), который на основе невероятного датасета рисует границы принятия решений.
Вопрос - как? Как сука он это делает?
Я понимаю что в coef_ записан "тангенс угла наклона", а в intercept_ сдвиг по оси y.
Но простого понимания как все это рисует линию ("a = -(line * coef[0] + intercept) / coef[1]") нет.
Кто нибудь, обьясните долбаебу (мне) как это работает.
Потому что это не stable версия? На сайте предлагается 3.8.5. А так смотри issues и переписки пепцов.
А то не хочется пучарм в тысяче окошек открывать, хочется чтобы все файлы были вкладочками в одном окне (у автора курса который смотрю саблайм, и не очень хочется еще и с ним разбираться, там это удобнее я так понял)
file->open->dir
Так и должно быть, или я рано полез?
До джанги изучал просто питон и его синтаксис и задачки решал, ну от совсем базовых типа как цикл for работает, заканчивая какими-то основами ооп и классов, реквестами, несколькими популярными модулями.
Ну хуй знает, чем тебе помочь. Практика, практика. В Джанго 4 базовых вещи - urls, models, views и settings. Вначале создаём модели в models. Затем создаём урлы в urls, чтобы принимать get и post запросы. Во views принимаем request, пишем/читаем из моделей и отдаем response. Вот это надо понимать.
Это был платный курс по основам Джанго, с тебя $50, Антон.
>Это был платный курс по основам Джанго, с тебя $50, Антон.
Хуесосы с яндекса теперь и в треде.
File-open-learndjango-mysite
Ага, как 50 баксов этой самой джангой заработаю.
Но вообще смущает то, что после того, как я поучил синтаксис такое ощущение, что все, что я учил пошло нахуй и неактуально, тут из самого питона одни импорты ну и классы, а так куча каких-то своих методов, функций, хуй разберешься. Понятно, что есть документация, но просто сидеть и читать документацию мне кажется это не путь с нуля, нужно понимать, что ты в ней ищешь, чтобы нормально пользоваться
А ты как хотел. Каждая крупная библиотека закрывающая свои задачи - фактически отдельный язык. А то и два, если на стыке питона и, например, джаваскрипта... А то и три. Четыре...
загугли про mvc и про паттерн command почитай
https://refactoring.guru/design-patterns/command
Нужно сребрендить, ты прав.
Так-то у яндекса отличный адаптив, и крайне объемный, в спринт укладывают то, что по-хорошему месяц учить, а потом еще и проект по этому делать.
Только дорого пиздец просто, конский ценник. Откуда у них студентов-вкатывальщиков столько, способных по 120к выложить. А потом говорят что в россии бедных много.
>А потом говорят что в россии бедных много.
Я таким же вопросом задаюсь, когда вижу, как раскупают квартиры за оверпрайс в новостройках за считанные недели, когда вокруг меня ездят дорогие машины, и это в регионе со средней зарплатой меньше 30к, а медианная наверно вообще ближе к 20 чем к 30.
Скажете - да они все в кредитах, ипотеках. Согласен отчасти, но ты блять иди ипотеку с автокредитом возьми при зарплате в 20-30к. Еще и детей при этом заводят, и одевают нормально.
Ну в моем городе все под чистую скупают Казахи, так что ответ хоть на один вопрос у меня есть.
Но когда я увидел сколько вкатывальщиков в яндексе - я прихуел. Особенно в питон. Там по сотне людей в месяц к ним поступает только на бэкенд на питоне. Аналитиков и сатанистов тоже дохуя. Эдак скоро на одну вакансию будет конкурс, как на дворника.
Так и есть, до этого момента нас спасала конченая система образования в снг, которая умеет готовить не те кадры, которые нужны, а которые были нужны.
Все постепенно. Основной вопрос в разработке - какие данные нужно отправлять по обращению к адресу? Это будет html или json? Html? Отлично. Будем использовать шаблон из папки templates. А затем строка за строкой - реализуем. Этот базовый механизм нужно понимать. На этом этапе не нужно знать все, потому что всего крайне дохуя и оно пока лишнее. От всей статьи про протокол http нужно лишь два метода - get и post. Даже коды ответа от сервера (200, .. 500) можно не знать, т.к. Джанго умное и само вставляет нужные коды в response. Вообще Джанго выполняет много работы внутри, оставляя на поверхности синтаксический сахар для удобства реализации первичного функционала - перехода по urls. Что ещё нужно - использовать дебаггер - в pycharm он крайне удобный - чтобы останавливаться на нужных строках кода и смотреть в переменные. Найти там объект request, например )
Хуй знает что ты делаешь такое, чтобы задавать такой странный вопрос, но звучит как кейс для redis
>Как нормальные пацаны делают?
Делай самым простым и быстрым способом. Появятся проблемы - начнешь думать об оптимизации.
Мне кажется, если у него возникла необходимость держать в памяти словарь на миллионы ключей и как-то дрочить его в процессе, то он с самого начала сделал что-то не так.
Ну я под такие кейсы на серваке разворачиваю постгресс, потом уже из него скриптом получаю информацию, обрабатываю и записываю обратно. Но я хуй знает что у тебя там.
Единственное, что мне вообще непонятно сейчас с моего нубского уровня - это как заставить работать нарисованную мною допустим кнопку логина (я понимаю, что "единственное" это громко сказано, и в этом и есть огромная суть бэка, но все же). Т.е. всякие фласки и джанго это то, что работает с базой данных и выдает из нее данные, когда мы жмем на сайте кнопки? Т.е. условно отвечает за регистрацию, логин, переписку допустим, да?
Джанго больше не для интерфейса, а для бэкенда. Всякая обработка запросов, выдача тебе нужных страничек, взаимодействие с базами данных. На фронтэнд чаще что-нибудь адекватное используют, Vue, например.
Режим доступа ab+ это дозапись и чтения из бинарного файла.
Но почему-то, сохраняется только первые имя - рекорд.
Подскажите, что я делаю не так?
Сори, я тебе ничем не помогу, сам недавно начал, но другой вопрос, зачем вообще делать как на твоей пикче, типа f = open... когда есть охуенная штука с with open... которая сама закрывает файл и визуально куда приятнее и читабельнее?
Это одно из заданий из книги, думаю их лучше проходить предложенным способом . А конструкции с with из другой темы.
чем же она такая охуенная?
Реально, рынок очень голодает по бэкэнд специалистам а особенно если еще и по петону, в половине случаев сами всему обучат лишь бы были желающие, сам вкатился джуном после просмотра хауди хо джанго за час
идеальным вариантом будет включить х2 скорость у видео и параллельно начать раскидывать резюме повсюду, хотя это необязательно, обычно не успеваешь досмотреть видео до конца, как хрюши начинают звонить и готовы на все что угодно лишь бы ты к ним пошел
Да а зачем обучаться? берешь таску пару строчек говна высираешь, а потом тащишь это вместе с заданием сюда, а аноны решают пока сам в это время думаешь как будешь тратить свои кк в наносек
А если без прибауток, то какой минимум примерно для работки на галере бэкендером?
>Пока мне менеджер сказал, поверхностно изучи гит
Хуя, джуном взяли без знания гита. А какой оклад?
А если твои задачи это клепать формочки в сделанном до тебя инструментарии или написать 2 sql запроса в неделю?
То ты мидл верстальщик :)
Ну не нужно утрировать, вряд ли такой объем работы встретишь в 2к20.
смотря где работаешь
я работал в банке одном, где был чел в "отделе разработки по"
насколько я помню, он разработал в доисторические времена дрочилку на delphi для запроса и разбора xml кредитной истории с какого-то бюро
и несколько лет сидел ее поддерживал, иногда дрочил хранимки для другого старого говна, но это было редко
тоже в ахуе, как блят залетел туда
Сейчас понадобилось разово сделать почти то же самое, только с другим запросом.
Создаю в том же сука пичарме проект, на той же версии питона. Устанавливаю той же персии cx-oracle.
И он мне пиздит, что на компе нет оракл клиента. При этом предыдущий проект с ровно той же конфигурацией заебись работает.
Ну и параша ебаная блядь.
Тупо скопировал модули из другого venv и заработало.
На всякий случай проверил на новом проекте, слил последнюю версию либы, в ней та же параша.
Сука уроды нахуй они старые версии в репозитории перепилили, конченые блядь.
Возможность программировать, собирая приложение из чужих кубиков, дико увеличила производительность и возможности одного человека, но за это приходится платить тем, что тебе кто-то в салат насрет когда не ждешь.
попробуй окружение с прендыдущего проекта взять
>что мне нужно делать с самого начала
принять факт что гит кривое говно и начать разбираться в этом говне (читать читать читать читать и еще раз читать)
Pipenv
Ну ок. А о каком уровне Решения мы говорим? Сказали сделать и ты сделал? А как же проектирование и тп? Я имею в виду что это работа командная, тебе дали какой-то модуль, ты знаешь его запилить грамотно. Но без опыта работы ты мидлом не будешь, даже, если ты умеешь решать задачи.
Чому? Топ-5 страна на изи.
Меня сами зовут на собесы.
Почему, у меня просто сейчас зона комфорта, да зп гораздо ниже, но пишу в одно лицо проект. Так сказать архитектор лол.
Наверное да, хотя я постоянно учу новое, да и на этом проекте приходится добавлять разные технологии, вот сегодня выкатили еще требования. Ну и приходится быть девопсом, так как у нас не мог их набрать. По сути у меня только фронты и тестеры есть, все остальное я делаю, да и то тестеры не могут в авто тесты.
WinForms - весит мало, запускается быстро, жрет мало оперативы.
PyQt - весит втрое больше, запускается втрое медленнее, жрет втрое больше оперативы.
Чому так?
private async Task Cheburek()
{
await Task.Run(() => Kek());
}
Приведите настолько же изящный пример вызова асинхронной функции в Питоне, и я съем свою шляпу.
>Интерпретируемая хуйня
Мне тут говорили, что pyinstaller из питоноскрипта высирает на выходе компилированную хуйню.
то что питон внутри компилируется в pyc/pyo не значит что язык перестает быть динамическим. Всего лишь не тратится время на разбор кода.
Потренируйся правильно писать название.
Напиши свою имиджборду.
повтори все что есть в видео хауди хо джанго за час, я вот даже думаю написать книгу по видео хауди хо джанго за час офк станет бесцелером а потом еще можно и пару кинолент снять по ней
>я вот даже думаю написать книгу по видео хауди хо джанго за час офк станет бесцелером
Это как Прохоренок на пол книги скопипастил доки Qt без пояснений, и гляди-ка — "Создание оконных приложений на PyQt" за косарь рублей.
Сори. Забыл отправить сразу. Надеюсь, поможет.
Ну да. Там такое: render - это функция, которая собственно формирует окончательный html-код на основе шаблона. Она принимает по дуфолту три параметра:
1. request (ты его получаешь ещё как входящий параметр в функции)
2. путь к шаблону относительно папок template
3. словарь с наборами ключ-значение, где ключами выступают текстовые значения, а значениями... значения, которые им будут соответствовать, в html-код вставится их текстовое представление.
Зачастую словарь заполняют прямо в параметрах функции, но я сначала его собрал и потом передал одной переменной. Ну "Красивое лучше, чем уродливое", "Явное лучше, чем неявное", "Читаемость имеет значение" - вот это вот всё. Главное, за что я для себя выбрал пайтон (ну и универсальность, конечно, тоже).
Есть ещё альтернатива - функция locals(), её можно передать третьим параметром и она зашлёт темплейту все использовавшиеся локальные переменные.
Соответственно в тексте шаблона инструментами шаблонизатора djinja ты можешь подставить в конструкции {{ }} ключ из того словаря и эта конструкция заменится на str() значения по этому ключу.
Объясняю я не идеально, а тут ещё показывать надо бы, но, надеюсь, понятно.
Вот здесь достаточно понятно и с примерами, но читай внимательно, к чему они подводят - это по старому джанго 1.10 и сейчас render_to_response неактуален.
https://overiq.com/django-1-10/loading-templates-in-django/
Примерно оно же по русски, но меньше кода и тоже старая версия:
https://djbook.ru/ch04s06.html
Вот тут хорошо про locals по пути можно подохуеть с прогресса в области автоперевода, даже не сразу понимаешь, что изначально текст был не низшем эльфийском:
https://fooobar.com/questions/2153525/django-using-locals
Вот про использование языка шаблонов... на первый взгляд хорошо написано:
https://djbook.ru/rel3.0/ref/templates/language.html
Хм-м... Интересно. Тут и ещё в паре мест говорится, что Djinja нужно устанавливать и импортировать отдельно, но при этом если её не устанавливать (в pip list её нет), то там что-то типа встроенного языка шаблонов работает по сути так же, как описано на сайте дзиндзи... Возможно, это придётся иметь в виду в требованиях к автору фронтэнда.
Сори. Забыл отправить сразу. Надеюсь, поможет.
Ну да. Там такое: render - это функция, которая собственно формирует окончательный html-код на основе шаблона. Она принимает по дуфолту три параметра:
1. request (ты его получаешь ещё как входящий параметр в функции)
2. путь к шаблону относительно папок template
3. словарь с наборами ключ-значение, где ключами выступают текстовые значения, а значениями... значения, которые им будут соответствовать, в html-код вставится их текстовое представление.
Зачастую словарь заполняют прямо в параметрах функции, но я сначала его собрал и потом передал одной переменной. Ну "Красивое лучше, чем уродливое", "Явное лучше, чем неявное", "Читаемость имеет значение" - вот это вот всё. Главное, за что я для себя выбрал пайтон (ну и универсальность, конечно, тоже).
Есть ещё альтернатива - функция locals(), её можно передать третьим параметром и она зашлёт темплейту все использовавшиеся локальные переменные.
Соответственно в тексте шаблона инструментами шаблонизатора djinja ты можешь подставить в конструкции {{ }} ключ из того словаря и эта конструкция заменится на str() значения по этому ключу.
Объясняю я не идеально, а тут ещё показывать надо бы, но, надеюсь, понятно.
Вот здесь достаточно понятно и с примерами, но читай внимательно, к чему они подводят - это по старому джанго 1.10 и сейчас render_to_response неактуален.
https://overiq.com/django-1-10/loading-templates-in-django/
Примерно оно же по русски, но меньше кода и тоже старая версия:
https://djbook.ru/ch04s06.html
Вот тут хорошо про locals по пути можно подохуеть с прогресса в области автоперевода, даже не сразу понимаешь, что изначально текст был не низшем эльфийском:
https://fooobar.com/questions/2153525/django-using-locals
Вот про использование языка шаблонов... на первый взгляд хорошо написано:
https://djbook.ru/rel3.0/ref/templates/language.html
Хм-м... Интересно. Тут и ещё в паре мест говорится, что Djinja нужно устанавливать и импортировать отдельно, но при этом если её не устанавливать (в pip list её нет), то там что-то типа встроенного языка шаблонов работает по сути так же, как описано на сайте дзиндзи... Возможно, это придётся иметь в виду в требованиях к автору фронтэнда.
>хауди хо джанго за час
Поясните мимокроку, в чем мемас? (в рот ебал полуторачасовые видосы смотреть, в которых еще и не пойму нихуя)
Покупаю в вк документах, а так же в лицензионных телеграмм каналах официальных представителей
Also:
" укус питона filetype:pdf " в гугл
from Steam import Wallpaper_engine
Может кто-нибудь полному нубу расшифровать? Те решения которые я нахожу напоминают ту картинку "нарисуй сову". Скопируется на локальный диск - изменить директорию path на pip install и т.д., в общем вообще непонятно.
Что это значит? У меня вообще через конду все. Если просто запихать в ее библиотеки, то библиотеки пишутся как установленные, но сами библиотеки не работают, лол.
Я тепенький.
Так ясно. А вот, как быть с хтмл и ксс? Остальное я понимаю. А вот этим дзинзи, бутстрапы - наводят страх на меня.
Проблематика написания http серверов, работающих с базами данных, она сама по себе непростая. Недостаточно просто знать питон чтобы сразу начать писать приложения на джанге.
верстай сам, раз страх наводит
Тебе для начала надо просто полуркать как веб-сервисы работают и взаимодействуют, что такое реквест-респонз, их методы, что такое RESTful API, изучить хотя бы немного базы данных, и тогда будет всё понятно. Джанга на самом деле проста и удобна для разработки.
Писать и продавать это разные вещи.
> The Run method queues code to run on a different thread (usually from the "thread pool", which is a set of worker threads managed for your application by .NET)
Есть.
https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.loop.run_in_executor
Про гил мы все в курсе, можешь не напоминать.
У recvfrom такое же поведение. Насколько я понял, recvfrom позволяет еще и адрес отправителя прочитать. Данные же опять из буфера кусками читаются
Код показывай
нету. асинхронной ламбды не найдешь
> Но без опыта работы ты мидлом не будешь, даже, если ты умеешь решать задачи.
Моего знакомого через месяц работы джуном сразу сделали мидлом. Комерческого опыта не было, но было нихуевое количество пет проджектов в портфолио. Так что опыт опыту рознь, все сводится к умению решать задачи самостоятельно.
Для ДС маловато, хотя бы 60 после вычетов со всякими плюшками типа ДМС. Но если ты студент, то в принципе норм.
Вангую, что винду юзаешь)
Где ты в шарпе изящество нашёл? Я без гугла вообще не понял что делает Task.Run. Ехал имплисит через имплисит.
Это синтаксический сахар, чтобы не заебываться. Очень удобно, когда надо нажать на кнопочку на форме и чтобы приложение не висло.
>на питоне
>на продажу
Все, что ты можешь предложить, уже давно лежит в общем доступе на гитхабе, бизнесмен ты наш.
Ну вот, нахуй он тогда вообще нужен? Куда его можно воткнуть? Писать барс для поликлиник? Если говорить о работе на дядю, или писать парсеры для тупоголвых на кворке?
А он и не нужен.
>уже давно лежит в общем доступе на гитхабе
это только для тех кому бложик поднять
А в реальном мире хоть "все написано", но спрос на программистов только растет. КО говорит, что решения общие, а задачи у каждого частные
вызывающий код должен решать нужно ли ему запустить какой то метод в его потоке или в отдельном. И такой сахар это костыли
>2k21
>python
>там все довольно коряво
Что все?
Может, тебе еще и генераторы корявые?
lst = [i for i in range(1, 101) where i % 10 = 0]
В шарпе это решается громоздкой линковой конструкцией.
а я и не спорил, мимокрокодил, увидел мессагу про сахар и решил спиздануть шо это диабет. так шо я вопросов претензий не имею
в добавление скажу шо спорить о языках глупо, пошли бы и свой напейсали как аффтор closure, вместо флуда, ну или другую любую программулину
>Что все?
ну мы же про многопоточность и асинхронность говорим
>тебе еще и генераторы корявые?
вообще то да. и LINQ почитабельнее будет. Ты просто привык к генераторам. Скомбинируй несколько for .. in в генераторе и посмотри насколько "легко" это читать
>а я и не спорил,
вооот. прими как данность истину, что реализация async в питоне не такая удобная как в шарпах
побрей голову и иди в монастырь просветленным
читал кто-нибудь effective python?
640x480, 1:07
Задам свой вопрос тут, потому что мне посоветовали разрабатывать именно на Пайтоне сам я, к сожалению, не уверен, насколько это правда.
Суть в чём - у меня есть интернет-агентство и мы занимаемся трафиком: разные источники данных (рекламные системы, системы аналитики и т.д.) и разные наборы данных. Хотелось бы это собрать в один какой-то удобный вид, поэтому:
Задача 1 - написать какой-то набор коннекторов с этими самыми источниками данных (яндекс директ, яндекс метрика, гугл аналитикс, колтач и т.д.).
Далее, хотелось бы это всё куда-то красиво отображать, чтобы была возможность выбрать срез, дату и т.д.,
Задача 2 - написать отображение собранных данных.
Как я понимаю, это можно сделать в Power BI и в Google Data Studio, например, да и просто в свой web-интерфейс.
Следующий шаг - это обработка и аналитика тех самых данных: прогноз, аналитика, выявление закономерностей. Вот тут, как я понимаю, и приходит очередь именно Python, потому что, как я понял, у него есть какие-то классные библиотеки и всякое такое. Ну ещё есть язык R, но для него отдельного треда в программаче нет.
Задача 3 - какая-то постобработка собранных данных.
Тут, конечно, самый сложный момент, потому что нужны математические модели, что именно куда делать, и я в этом пока не особо силён. Поэтому, данный пункт в целом пока откладывается.
Резюмируя, первые два пункта готов начать делать уже сейчас. По финансам - конечно нанимать команду разработчиков не потяну, потому что это на уровне идеи всё, которая пока не будет окупаться. Но и "за портфолио" работу тоже не предлагаю - вполне себе всё оплачиваемо.
Рад буду, честно говоря, любым комментариям, советам и предложениям. Новичкам тоже рад - я сам новичок в заказывании разработки, поэтому оно может и интереснее было бы так скооперироваться.
Почта для связи -
320x240, 0:21
Да, и я достаточно регулярно тут сижу, поэтому с радостью выслушаю любое мнение или критику. Особенно интересует Задача 3 - я, получается, с трудом представляю не только реализацию, но и саму задачу: для чего вообще нужна эта постобработка?
Глобально, хотелось бы, чтобы на основании данных строились какие-то закономерности, которые можно было использовать. Например, у нас с такого источника 1 лучше конвертируется форма 1, а с источника 2 лучше конвертирует форма 2. Глазами не всегда такое получается заметить, а система сама бы выдавала подобные "находки".
Подобное вообще возможно реализовать на программном уровне? И если да - то куда мне стоит вообще сейчас обратиться, чтобы хотя бы на базовом уровне начать понимать? В Data Science?
конечно пригодится. после этого ты еще сильнее полюбишь питон
Звучит слишком просто, лол.
Какие тебе там мат.модели нужны? В машинное решил вкатиться чтоли?
>>800897
Ну смотри. Есть несколько главных направлений, которые у тебя применить можно, машинного:
Предсказания.
Классификация.
Всякая работа с текстом и прочими изображениями.
И всякие прочие задачи дата-анализа:
Когортный анализ.
Анализ метрик.
A/B тесты.
Предсказания, собственно, строют функции предсказаний. Модельку можно обучить (скормить ей н-данных), получить хороший результат на тестовых данных и на ней ориентироваться. Моделек куча, под разные данные. Смысл в том, чтобы скормить им грамотное количество характеристик. В продажах работает не очень круто и многие разочаровываются. Как правило из-за резкой смены потребительского поведения.
Классификаторы же довольно интересны - это выстраивание "достаточных" отличительных признаков для каждого сегмента, классификация и в результате - у тебя с помощью машины есть ярко-выраженные сегменты потребителей, обоснованные математически.
Когортный анализ - это метрика, когда пользователи разбиваются на когорты (например, пришли в эту неделю) и за этой когортой следится н-времени. Профит в понимании, что происходит у заказчика в клиентах.
Метрики - есть куча отработанных метрик, чета даже хз, зачем упомянул. Всякие LTV и прочие вещи, типа юнит-экономики, за которую нужно за яйца повесить ебанное ФРИИ. Питон позволяет их на изи считать и визуализировать. А крутой спец тебе еще и дендрограммоподобную хуйню запилит по источникам.
A/B-тесты - если у тебя до сих пор нет такой услуги, то можно ввести.
Это разбиение группы пользователей на две, одна пользуется старой фичей, другая - новой. Потом сравнивается статистически.
Есть еще крутая статистическая база, которая позволяет проводить стат.тесты и прочую красивую хуйню. Ну там искать выбросы, сравнивать, нормализировать данные. Для тебя это интересно с позиции сравнения источников.
А, да, с позиции работы с текстами и прочей хуйней в машинном - за таким уже к сатанистам, да, причем копейку они немалую выкатят. Но иногда необходимая штука.
В общем, придумать много что можно. Это тебе на максимально простом уровне.
Чувак сверху требующий тз никогда с заказчиками не работал, лол, походу.
Звучит слишком просто, лол.
Какие тебе там мат.модели нужны? В машинное решил вкатиться чтоли?
>>800897
Ну смотри. Есть несколько главных направлений, которые у тебя применить можно, машинного:
Предсказания.
Классификация.
Всякая работа с текстом и прочими изображениями.
И всякие прочие задачи дата-анализа:
Когортный анализ.
Анализ метрик.
A/B тесты.
Предсказания, собственно, строют функции предсказаний. Модельку можно обучить (скормить ей н-данных), получить хороший результат на тестовых данных и на ней ориентироваться. Моделек куча, под разные данные. Смысл в том, чтобы скормить им грамотное количество характеристик. В продажах работает не очень круто и многие разочаровываются. Как правило из-за резкой смены потребительского поведения.
Классификаторы же довольно интересны - это выстраивание "достаточных" отличительных признаков для каждого сегмента, классификация и в результате - у тебя с помощью машины есть ярко-выраженные сегменты потребителей, обоснованные математически.
Когортный анализ - это метрика, когда пользователи разбиваются на когорты (например, пришли в эту неделю) и за этой когортой следится н-времени. Профит в понимании, что происходит у заказчика в клиентах.
Метрики - есть куча отработанных метрик, чета даже хз, зачем упомянул. Всякие LTV и прочие вещи, типа юнит-экономики, за которую нужно за яйца повесить ебанное ФРИИ. Питон позволяет их на изи считать и визуализировать. А крутой спец тебе еще и дендрограммоподобную хуйню запилит по источникам.
A/B-тесты - если у тебя до сих пор нет такой услуги, то можно ввести.
Это разбиение группы пользователей на две, одна пользуется старой фичей, другая - новой. Потом сравнивается статистически.
Есть еще крутая статистическая база, которая позволяет проводить стат.тесты и прочую красивую хуйню. Ну там искать выбросы, сравнивать, нормализировать данные. Для тебя это интересно с позиции сравнения источников.
А, да, с позиции работы с текстами и прочей хуйней в машинном - за таким уже к сатанистам, да, причем копейку они немалую выкатят. Но иногда необходимая штука.
В общем, придумать много что можно. Это тебе на максимально простом уровне.
Чувак сверху требующий тз никогда с заказчиками не работал, лол, походу.
Ещё бы я умел писать ТЗ Сейчас погуглю варианты и набросаю по первым 2м пунктам, но сюда не буду уже прикладывать, наверное, логичнее будет отправить тем, кто уже с предложением напишет на почту
>типа юнит-экономики, за которую нужно за яйца повесить ебанное ФРИИ
Хех, а ты разбираешься.
Ты разработчик? Или ты со стороны бизнеса как раз?
Осилил, но если это "максимально простой уровень", то видимо мне предстоит ещё много этапов понимания пройти.
Есть может какие-то курсы на эту тему? Или хотя бы - как это гуглить?
и да, буду рад, если оставишь свой контакт или напишешь на почту - спамить не буду, но вопросы позадаю, если не против
Я аналитик, которому пришлось стать разработчиком, потому что разработчики - ленивые унылые хуесосы. В результате пилю сам себе инструменты и скрипты автоматизации.
Фейка не имею, а писать тебе с настоящей почты, где у меня ФИО - такое себе.
Ну из всего описанного только метрики и сложно. С ними можно только столкнуться либо случайно подглядеть в момент работы где-то. Может кто и обучает им. Статей видел пару штук по расчетам.
Остальное даже хз, как не понять.
Тебе скорее всего надо БД развернуть нормальную сначала. Что-нибудь на постгрессе, если бесплатно хочешь. Потом уже остальное. Большая часть аналитиков не ебет, как это делать. Я тоже только обращаться и работать с ними умею. Разворачивал только один раз для лулзов. Дальше уже скрипты (пайплайны) которые обращаются куда надо и туда инфу записывают. А потом уже остальное думать.
Используй IDE. В большинстве библиотек все подсвечивается точно так же, как в языках со статической типизацией.
Это так, если использовались аннотации типов, но если их нет, то ide сама не понимает ничего. В vs code, по крайней мере
>В vs code, по крайней мере
Я не знаю насчет vscode, но пайчарм понимает почти все виды аннотаций (и не только), и нормально работает со всеми популярными библиотеками. В крайнем случае читай документацию к библиотеке.
Лучше Скрапи только Селениум, но там уже про другое немного
PyCharm все понимает
Говорю как чувак, копавшийся в проекте на 120к строк чистого кода без тайп-хинтов
Ведь я задаю всем объектам которые консервирую одно и тоже имя!
Но что я ещё могу предпринять?! Я же не могу автоматизировать создание переменных под эти объекты, с каждый раз новыми именами... Если это и возможно, в книге этого пока нет!
Меня это очень бесит, я просто сижу и смотрю в экран.
Подскажите мне пожалуйста, если не ответ, то хотя бы на что обратить внимание.
>Я же не могу автоматизировать создание переменных под эти объекты, с каждый раз новыми именами... Если это и возможно, в книге этого пока нет!
Запахло классами вроде?
ДС-2. Знаю что маловато, но я и не готовился к интеврью нихуй. Чисто на автомате выехал.
Переменные нахуй не нужны, апендь в один и тот же лист листы со счетом и потом по индексам доставай.
Датасоенс? Веб?
Сап, программисты - анальники как и я
Помогите пж новичку
Вопросец про threading
Моя программа, попытка таймера для учета рабочего (и отдыха) времени, когда я хочу запустить демон для метода моего (экземляра класса MyTimer) объекта таймера, он просто не запускает его как демон, а просто как без мультитрединга, то бишь ждет выполнения до конца, (а там бесконечный, мать его, цикл), и невозможно ввести ничего с клавиатуры из команд, даже print(' hui') не выводит
https://dumpz.org/bxAPmt4Y5FgG
И кстати оно работало когда я threadil не метод экземпляра, а когда этот таймер был просто функцией
Чому-то отклеилось
Передавал результат функции вместе ссылки на нее
Скобки лишние где функция для треда указана)))))0
У меня тоже кстати часто такая хуйня, ебешься с чем-то, гуглишь неск. часов, в конец заебываешься, идешь спросить на стаковерфлоу или хотя бы двачик, и пока формулируешь вопрос - озарение приходит (или чуть погодя, после того как вопрос задал)
https://code.visualstudio.com/docs/python/testing#_enable-a-test-framework
Чяднт? В питоне не шарю от слова совсем
ааа я понял кажись. надо делать тест отдельно и создавать для каждого теста тест отдельно?
В случае с nuget package installer высвечивается пикрелейтед 1
В случае с nuget gallery - не могу ничего установить, не появляется кнопка
Что делать?
да я уже забил хуй и pycharm скачал и наслаждаюсь жизнью. Визуал студио говно мёртвой собаки
скорее удивил. даже на твоем скрине написано, что эта либа для .NET
Итак, при помощи антинаучного способа, связка этих двух функций теперь начала выдавать список всех рекордов, который попадают в файл.
Но я понимаю, что это не правильно.
Это работает только если файл изначально пустой.
Касаемо индексации, как я могу индексировать объекты из бинарного файла, если я постоянно даю этим объектам одинаковое имя?
Быстрофикс: работает только если файл изначально НЕ пустой, т.е. уже содержит объект с именем scores
Это задание с хх ру? Что-то подобное видел. Там нужен был прогер по чето по спорту писать.
А вот и фикс в догонку. Теперь мой антинаучный код работает!
И всё же, подскажите как было бы правильно.
Подводных никаких. Будешь умнее.
Сначала проверяй наличие файла
try... except громоздки, вместо них используй оператор with
Промежуточные переменные scores1 и scores2 не нужны, добавляй сразу в scores
Очень спасибо!
Я пока ещё не проходил оператор with и модуль os, но скрин сохраню как учебное пособие на будущее!
у объектов в листе, блять, нет имен. Достаешь их по индексам из него после того как добавил. Это же как у тебя бы были переменные hui1, hui2, hui3, вместо этого теперь у тебя есть лист hui и в нем hui[0] == 1, hui[1] == 2 и так далее. В чем проблема? Словарь тоже для этого подходит если тебе нужны какие-то конкретные имена (хотя я хз зачем).
Расскажи про очередь, как та хуйня работает?
Или встроенные в питоне?
Как это, вообще, принято делать?
Причем здесь ЖС? У тебя есть вьюха страницы в виде html-документа. У тебя есть Web-сервер. Ты выполняешь GET-запрос через адресную строку браузера, постучавшись к порту сервера, и он отвечает тебе телом соответствующей доменному пути html-страницы.
> "flask" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
При этом через кнопочку все запускается, а сам модуль flask в venv добавлен. Что я делаю не так?
Я на ангельском глядел, там видимо другая страница. Спасибо.
Que?
Глянул. Маловато будет. Мне б подробнее работу в селениуме. В целом какие решения есть по тестированию, чтоб велосипеды не выдумывать.
Ну вот и помогай тогда. Что почитать для тестировщика в селениуме на питоне.
Бамп, помохите плс. Я вообще не понимаю даже примерно как это решить, гугол не помог.
Бака.
Python для детей бери.
Ну ты издеваешься? Дали годнейшую книгу, одну из настольных, где все азы, дальше уже гуглить что надо после понимания азов.
Ты наше терпение тестируешь?
Ключи в первой строке, а значения во второй, третьей и т.д. или на каждой строке свой ключ/значения?
На пикриле нагрузка на сервер и поведение фласка-бэка по работе с памятью.
Не совсем понял, что у тебя за структура данных.
Ты хочешь, чтобы ключ был, например, "animal", а для такого ключа могли быть значения вроде dog, cat, и т.п., в общем много значений?
Что за СУБД при этом?
Вообще ключ должен быть один, иначе это не совсем ключ уже. Просто как ты будешь эти данные редактировать? Скорее всего подразумевается, что по факту у тебя составной ключ, он реально состоит из двух полей.
Можно сделать комбинированный ключ, вроде "animal:cat", но так тебе будет сложно делать выборку.
Второй вариант, ты делаешь одну таблицу ключей, а таблица значений ссылается на таблицу ключей. Это классический SQL подход. Ну или можешь упрощённо сделать, что ключ это лишь одно из полей твоей таблицы. Иногда лучше проще.
Всё зависит от того, какого рода запросы ты делаешь и какой функционал тебе нужен, какие выборки нужны, как данные можно в базе менять и т.п.
>Не совсем понял, что у тебя за структура данных.
Грубо говоря вот такая
{"рыба": ["окунь"], "животное":["конь", "лось"], "растение": ["подсолнух", "ромашка", "подорожник"]}
и надо(ну не то чтобы надо, я просто не знаю как иначе, только учусь) это где-то хранить в простом виде, чтобы во время работы скрипта добавлять/удалять новые ключи и значения у уже доступных ключей, и продолжать работать с эти же словарем после перезапуска.
>Что за СУБД
ткнул пальцем в небо и выбрал sqlite3
Аноны, поясните, есть ли смысл ставить VS Code для питона, или Sublime Text'а хватит, чем они отличаются??
VS code медленней открывается.
В VS code удобней графический интерфейс.
По умолчанию встроено окно консоли.
В sublime всё это тоже можно установить.
Вот я устроился на работу, с какой вероятностью там используют pycharm? Нужно ли мне освоить линукс и вим в частности перед поиском работы?
Он платный, а ломануть у меня не получилось, судя по всему не у меня одного, они там что-то меняли и у всех слетели кряки((((
просто ты криворукий.
>• Установите PyCharm;
>• Запустите программу и выберите evalutate free.
>• Перетащите JetBrains-agent.jar в окно IDE.
>• Перезапустите IDE.
>• Появится диалоговое окно JetbrainsAgent Helper. Выберите тип лицензии (выберите «Сервер лицензий») и нажмите кнопку «Установить».
>• Перезапустите IDE
>• Готово.
всё прекрасно работает
Ну например саблайм вроде не подсвечивает переменную, которая нигде не используется, бесполезные импорты не отмечает. Не знаю, есть ли там форматирование по пеп8, и отмечает ли он проебы в пеп8 вообще, еще какие-то мелкие фишки такие (могу ошибаться, я с саблаймом не работал, но видел, что у других он ведет себя вроде так)
Понятно.
А в чем разница для джанги? Несколько дней уже джангу ковыряю на коммьюнити версии, проблем со стороны пучарма не вижу, модели вьюхи урлы открываются, хтмл темплейты открываются, каких фичь не хватает?
Честно говоря я этим делом года-пол или чуть более назад занимался, загвоздка была в том что он не создавал проект под джангу, и еще вроде с синтаксисом какой-то трабл был, но мне щас пока саблайма хватает, а там видно будет, ща сижу плагины накатываю на проверку ошибок итп
так проект сама джанга создает в консоли же, после стартпроджект. А потом просто manage.py открываешь пучармом, кликаешь типа "открыть в проекте" и все
Ну это да, прост я как забросил тогда чарм, так и не возвращался пока
Можешь добавить по сорту алфавита.
Очень интересно. И насколько книга, написанная по третьему Питону, написанная для вката в Питон, может быть неактуальной для вката сегодня в Питон?
1) self не пишется, когда ты создаешь статический метод класса (помечается через декоратор @staticmethod).
Есть еще @classmethod, но он юзается чуть чаще, чем никогда
2) Разумеется, можно. В этом суть ООП.
>Зачем self пишется?
Чтобы использовать братские методы внутри одного класса.
Например, в твоем случае в методе test_one можно будет вызвать test_two выглядеть это будет как self.test_two(). Если ты попытаешься удалить в параметрах этих методов self'ы, то интерпретатор скажет, что ты охуел и попытался вызвать второй метод до того, как он он был заассайнен.
Не могу понять в чем суть декоратора. Можно в одной функции определить другую, а потом через первую можно поменять вторую? Сколько не читал не могу въехать в этот сахар в чем удобство и прикол. Можно в двух словах чтоб прям было ясно плис.
А оно тебе вообще надо? Для себя/для анализа/во многих вещах ООП вообще нахуй не нужен.
Так оно тебе точно надо? Это пиздец муторно, сложно и не нужно, если ты не разработчик в команде.
А так, тут нужно основы ООП в принципе начинать...
явная передача this, обусловленная работой языка
Не в Питон, а в Селениум\Автоматизацию.
За такое будут пиздить палкой, или это стандартная практика? Где вообще грань между идиотом, который ничего не умеет и только гуглит и разумным использованием гугла.
>Где вообще грань между идиотом, который ничего не умеет и только гуглит и разумным использованием гугла.
Ну судя по твоему опыту, то первый. Либо боишься делать, либо ничего не знаешь.
Подгугливать это нормально. Но если ты 99% гуглишь, то хз.
>Ну судя по твоему опыту, то первый. Либо боишься делать, либо ничего не знаешь.
Ну я пару дней почитал-посмотрел всякую хуйню по джанго, а сейчас начал делать впервые свой проект, и я же даже методов нихуя не запомнил, поэтому приходится подгугливать и чекать даже хуйню типа ... = models.CharField(max_length=50)
Просмотр видосиков и чтение литературы на самом деле не является процессом изучения подобных сфер, но является очень хорошим способом получать метазнания, тоесть знания о том с помощью какого инструмента можно решить проблему и примерно как это работает. И вот только уже решая с помощью этого инструмента что-то, ты его непосредственно изучаешь, тоесть процесс гугления и есть истинный процесс обучения, но без метазнаний конечно тоже никуда...
Похуй, важен результат. Проблема гугления в бездумном копировании чужого кода. Однако если ты на работе, в 50% случаев гугление тебе не поможет напрямую, а только даст направление, которое нужно переделать/доработать (если ты конечно не гуглишь всякие базовые функции), а то и просто дискуссию по которой ты уже понимаешь, что делать.
Тащемта, иногда вообще приходится находить автора какого-нибудь модуля, и делать дистанционный минет, умоляя рассказать, как он работает.
Ну и в любом коммунити языков тот факт, что проггер - человек, зарабатывающий на поиске фраз в гугле - давно стало мемом. Не просто так.
Декоратор - обертка для нескольких одинаковых функций, чтобы не дублировать в них одну и ту же часть кода.
Ты спросишь: а почему бы тогда просто не создать функцию и использовать ее в этих "нескольких одинаковых функциях"?
Да потому что обертка может включать больше одной функции, и тебе придется нестить их в одном и том же порядке. Например:
def func_one():
--greet()
--initialize()
--_do_what_func_one_should_do
--finalize()
def func_two():
--greet()
--initialize()
--_do_what_func_two_should_do
--finalize()
А теперь просто напишем декоратор, который выполняет по очереди greet(), initialize(), КАКУЮ-ТО ФУНКЦИЮ и finalize(). Тогда на выходе будет:
@decor
def func_one():
--_do_what_func_one_should_do
@decor
def func_two():
--_do_what_func_two_should_do
Это называется ПИТОНИЧЕСКИЙ ПУТЬ.
Декоратор - обертка для нескольких одинаковых функций, чтобы не дублировать в них одну и ту же часть кода.
Ты спросишь: а почему бы тогда просто не создать функцию и использовать ее в этих "нескольких одинаковых функциях"?
Да потому что обертка может включать больше одной функции, и тебе придется нестить их в одном и том же порядке. Например:
def func_one():
--greet()
--initialize()
--_do_what_func_one_should_do
--finalize()
def func_two():
--greet()
--initialize()
--_do_what_func_two_should_do
--finalize()
А теперь просто напишем декоратор, который выполняет по очереди greet(), initialize(), КАКУЮ-ТО ФУНКЦИЮ и finalize(). Тогда на выходе будет:
@decor
def func_one():
--_do_what_func_one_should_do
@decor
def func_two():
--_do_what_func_two_should_do
Это называется ПИТОНИЧЕСКИЙ ПУТЬ.
Не пользовался фласком, но наверняка в C:\Python\Scripts находится файл flask.exe. Пишешь батник типа
cd C:\Python
flask run "C:\Users\user\Desktop\мой прикрастный нивираятный проект.py"
и запускаешь его.
ну у тебя же в вопросе ответ, тебе пишут что фласк не является исполняемым, а раз через кнопочку запускается и работает значит запускается не фласк, я вообще не ебу че там во фласке и как оно работает, но скорее всего надо запустить не flask run, а "python flask run "
Блин, забыл добавить, через обычную консоль винды все работает и flask run запускается, не работает именно через консоль пучарма. py flask run в консоле пучарма тоже не работает.
>через обычную консоль винды все работает и flask run запускается, не работает именно через консоль пучарма
Ну, бля, гугли дальше, хули.
Ну бля(((
Потому что знания нарабатываются в ходе создания реального проекта, а не просто чтения литературы
Запускай скрипт через python, создай какой-нибудь main.py в верхнем каталоге как "точку входа" и стартуй приложуху
активно использую 5 яп из того списка что я знаю.
в процессе прогинга получаешь опыт, то есть знание нюансов полученных знаний. но сами знания получаются от чтения литературы, статей, чужого кода и т.д.
У меня двойное дежавю. Неоднократно такое сообщение уже видел.
> активно использую 5 яп из того списка что я знаю
При этом ты еще ни разу не работал. Понимаю. Очень релевантный пример.
> в процессе прогинга получаешь опыт, то есть знание нюансов полученных знаний. но сами знания получаются от чтения литературы, статей, чужого кода и т.д.
Нет, если ты не пересаживаешься после 5 лет джавы на шарпы, то от просмотра чужого кода или чтения литературы ты нихуя не получаешь без практики.
>При этом ты еще ни разу не работал
конечно не работал. разве на этом сайте сидят те кто работает. тут только джуны ищущие работу ))))
>то от просмотра чужого кода или чтения литературы ты нихуя не получаешь без практики.
ты получаешь ПОНИМАНИЕ происходящего. Если у тебя сформировалась четкая картина че где как, то остается только практика, чтобы закрепить. Без понимания ты слепой котенок
Разница лишь в объеме закрепляемых знаний за один шаг. Лично для меня шаг "прочтем главу книги и закрепим" слишком мелкий шаг. Я читаю по диагонали или вдумчиво все до чего дотянусь пока не сформируется понимание "ах вот как в этом языке все устроено". Ну а далее дело практики для закрепления. Если нет понимания - нечего закреплять. Когда кодишь "потому что так в книжке/гугл" и не понимаешь суть - ты не учишься.
так что без чтения "чтобы разобраться" не выйдет.
но конечно если я разобрался в "старом языке, а в новом то же самое", то я могу сразу переходить к практике
>и я же даже методов нихуя не запомнил, поэтому приходится подгугливать и чекать даже хуйню типа ... = models.CharField(max_length=50)
абсолютная норма. Так работает мозг - запомнит, только то, что используется. Потому в начале практики тупняк это нормально. Главное чтобы ты понимал то, что пишешь.
Твоя изначальная проблема была в запуске всего под виндой кстати а не в "командная строка пучарма не видит подключаемые модули"
>разве на этом сайте сидят те кто работает
В /po и /b постоянно залетают Большие Дяди Прогеры с доходом от $5к - изи вообще. Пруфы нужны? Это борда успешных состоявшихся людей
> конечно не работал. разве на этом сайте сидят те кто работает. тут только джуны ищущие работу ))))
Не только
> ты получаешь ПОНИМАНИЕ происходящего. Если у тебя сформировалась четкая картина че где как, то остается только практика, чтобы закрепить. Без понимания ты слепой котенок
Чел, ты, по твоим же словам, "знаешь" минимум 6 языков, из них 5 "используешь активно". Я не уверен, понимаешь ли ты насколько это абсурдно звучит, но знать и активно использовать 5 языков, во-первых, нахуй не нужно никому, во-вторых, невозможно. Офк, если под "знать" подразумевать уровень хотя бы junior+ или даже middle, а под "активно использовать" 1-2 проекта в год на этом языке. Написать хеллоу ворлд и пробежаться по основному синтаксису -- это не "знать", это хуйня, которую можно за 1 неделю по вечерам разобрать, если не совсем дегенерат если это не твой первый язык.
> Разница лишь в объеме закрепляемых знаний за один шаг. Лично для меня шаг "прочтем главу книги и закрепим" слишком мелкий шаг. Я читаю по диагонали или вдумчиво все до чего дотянусь пока не сформируется понимание "ах вот как в этом языке все устроено". Ну а далее дело практики для закрепления. Если нет понимания - нечего закреплять. Когда кодишь "потому что так в книжке/гугл" и не понимаешь суть - ты не учишься.
Нет, ты берешь и делаешь свой простейший проект. Типа микроблог на джанге или CRM на шарпах/джаве. Вот когда сделаешь -- тогда ты попрактиковался.
> Твоя изначальная проблема была в запуске всего под виндой кстати
Линупсошиз, плс.
> а не в "командная строка пучарма не видит подключаемые модули"
Батник перезапустить пришлось бы и на линупсе. Ну, и да. Серв висит на центосе, если что.
>нахуй не нужно никому, во-вторых, невозможно
значит быть фулл стек разработчиком можно (а это подразумевает знание фронтенд и бэкенд языка, и не факт что это один язык, и много чего другого), а писать на нескольких не из стека нельзя. Ага ага
Можно выучить один язык и пихать его во все щели. А можно использовать более подходящие языки. Все зависит от человека и его способности, а главное желания, обучаться.
>Вот когда сделаешь -- тогда ты попрактиковался.
Разве я отрицаю практику? Но практика без теории ничто - тупое копирование нагугленного. И потом в этом треде глупые вопросы про основы http потому что понимания нет.
Спешите видеть, гений иронии в треде. Тот же файл с тем же именем, но с другим расширением запустить -- надо обязательно пояснять, чтобы не дай бог тонкая организация линупсошиза не пострадала.
фул стак на то и фул стак что дай ему таску и его стак будет оверфлоу
"Знаю 5 языков" в прогинге является синонимом "не знаю толком ни одного, но выебываюсь своей мнимой многозадачностью"
>значит быть фулл стек разработчиком можно
Фуллстек подразумевает существование на стыке фронта и бэка, причем не со знанием 5+ языков а с хорошим знанием как правило лишь 2х (или вообще одного, если это JS Node + front, но с пониманием сопутствующих технологий). И да, сеньор фуллстеков как таковых не бывает (даже если есть такая лычка это ни о чем не говорит), нельзя быть дохуя пиздатым во всем, и работодатель это понимает
Как я могу с помощью питона извлечь этот текст контент, чтобы в будущем его сравнить?
> "не знаю толком ни одного, но выебываюсь своей мнимой многозадачностью"
по себе судишь )
еще скажи блин что полиглоты (которые обычные языки знают) пиздят
нет ничего сложного знать несколько языков на высоком уровне
то есть уметь в высокоуровневую магию + стандартная библиотека. Знание фреймворков к этому не относится.
точнее принтит none
>полиглоты
Ты не полиглот. Ты дефолтный борщехлеб
Терминология лингвистов к пограмиздам не применима от слова совсем. Любому не-борщехлебу это очевидно
У тебя в консоли написано "No results found", абсолютно то же самое, что в тэге <p>. Ты совсем в глаза ебешься?
АХАХАХХАХАХАХАХАХАХАХАХАХ
АХХАХАХАХАХАХХАХАХХАХАХХАХАХХАХАХХАХАХАХАХАХ
Я думал, амхахах, ахахах, я думал, что мне питон но результ фаунд выдаёт. Сукаааааа
С таким подходом, если тебя достаточно отпугнуть одной ошибкой, любое начинание - не твоё.
>Терминология лингвистов к пограмиздам не применима от слова совсем
Ну это уже полный абсурд. Стоит пояснять почему или сам догадаешься?
Вот и решай. Камней преткновения и затупов на твоем пути будет еще неимоверное количество.
рофляная ошибка, бывает
asyncio
Вы видите копию треда, сохраненную 23 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.