Тред, посвящённый языку программирования Питон, #70.Предыдущий >>1484225 (OP)ЧАВО: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat актуальность примерно 2015 годаКнижки: https://yadi.sk/d/HQhhsBsq3TVRUqТоже книжки: https://yadi.sk/d/tArKKuQu3KejuqБольше книжек: https://yadi.sk/d/H-00n-UG3RSQemОчень много книжек: https://drive.google.com/drive/folders/13YaFijvuH4dtv-PjUKVWLQ7ZIqXIfCLKАнон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:https://ideone.com/https://pastebin.com/https://pyfiddle.io/https://www.codepile.net/#######################################Вопросы-ответы:А стоит ли читать Лутца, том номер 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/ (нужно знать ангельский или уметь пользоваться переводчиком)Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём - брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
>>1494145>Сохраняю данные в json, кириллица выводится вот так>" \u0413\u0430\u043b\u043e\u0448\u0438", что с этим делать? >>1494201
>>1494203Все правильно, в файле у тебя записана строка как набор юникод-символов, при печати она конвертируется в utf-8 или что там у тебя.
Месяц назад выучил питон и джанго за месяц же, теперь почти нихуя не помню спасибо тебе, вовклассик, блядьАга, чтоб освежить память нужен хороший курс по джанго, о пока из нагугленных на русском языке вижу только уроки от мозиллы.Может есть че у вас?видеоуроки сразу нахуймимо тот самый нубас
>>1494267> выучил питон За месяц можно с нуля японский выучить. Но не программировать научиться.>>1494267>чтоб освежить память нужен хороший курс по джангоХороший курс прямо в официальных доках джанго, учебное приложение и просто мануалы. Просто реализуй их учебное приложение.
>>1494285>За месяц можно с нуля японский выучить死ぬダウン。За месяц. А не пойти бы тебе нахуй? Обрыганец с двощей.
>>1494267Хз насчёт мозилловского курса. Я вот пару недель назад тыкался в нём и несколько штук были out of date, так что пришлось тутор переделывать самому.Так что двачую вот этого и реквестирую хороший тутор по Джанго, чтобы освежить в памяти всю хуйню.
>>1494285>За месяц можно с нуля японский выучить. Но не программировать научиться.Где я писал что научился программировать?Блядь, за прделами пыхатреда одни быдланы-илитисты сидят.
>>1494422Там вроде весь курс по 1.9. Мне нормально было когда использовал его на свежей джанге, например. Хочется другой почитать, и не хочется лезть в дебри офф мануала, хочу чтоб за ручку меня водили.
>>1494452Если расшифровать код на латиницу можно анализировать psx аналог исходного слога или оно само распознает иллюстрации к печати ?
>>1494452Что конкретно тебе нужно и чем тебя не устраивает Джанга?Джанга идеальна для крудов и подобных сайтов. Более-менее всё есть. Для очень многих задач этого достаточно, современные фишки скорее перделки, чем что-то полезное.Но современные тренд в том, чтобы делать сайты как приложения, реактивные, с потоковым обменом данными и т.п. Нужна нормальная асинхронность. Это уже не для Джанги. В тренде асинхронные фреймворки, вроде aiohttp и tornado. Про торнаду не знаю, aiohttp массу асинхронных возможностей даёт, но немного кривоват, есть такое. И к Джанге прилагается коробка с кучей функционала (ORM, админка, управление пользователями и другое), а aiohttp почти как OEM.
>>1494438Так в официальном туториале тебя и водят. Пиздец двощеры, им разрабы дают хорошие официальные руководства - нет, не хочу, хочу чтобы индусы с медиума мне в рот какали.
Фух только что доделал тестовое задание, наговнокодил знатно, но функционал вроде реализован, вообще могут позвать на собес даже если тестовое не очень?
>>1494130 (OP)Народ, есть у кого на примете хороший ресурс с дачами, чтобы разные разделы python затронуть? Хотелось бы некий аналог https://hyperskill.org/
Ух, запилил парсинг тредов и полнотекстовый поиск по ним. Сделал небольшую таблицу для вопросов/ответов.Небольшой уютный сайтик почти готов.
>>1495409Flask/postgres/celery/aiohttpСейчас все в uwsgi+nginx оберну, куплю доменное имя и https прикручу.
Знакомый забашлял бабла в GeekBrains и пошел туда на курсы, в конце там еще и сертификат дают. Насколько валидна эта тема? Профит будет?
Привет, двачерыУ меня есть вопросНужно спарсить ссылку на изображениеСтруктура изображений каталоге<a href=a class=b><img src=url></a>Как мне с помощью bs4 в питоне создать условие на парсинг:Ищи тег img с классом b, и вощвращай мне значение атрибута src?Пробовал findAll("a", {"class":"b"} но вернул только пустые значения
>>1495857>>1495615По факту вся это раздатая ебень для околовкатывальщиков - отдельная индустрия. Кто не может делать деньги в Ойти делает деньги на вкатывальщиках
>>1495615Ты тот самый заводчанин, который всё хотел пойти на курсы какие-нибудь? Начал сомневаться в покупке?
Как сделать так чтобы потоки выполняли одну функцию одновременно, без расхождений, или есть что-то для более удобного одновременного выполнения?
>>1495707> визуальные новеллыНа этом, пожалуй, и всё.Но если задаться целью то можно 2д игори делать.
>>1495939Есть цикл, и два потока выполняют этот цикл, мне нужно чтобы итерации цикла в 1 потоке совпадали с итерацией цикла во 2 потоке
>>1495943Меняй архитектуру либо же пытайся прикурить сигналы/очереди к потокам своим. То есть настрой общение между ними, что бы поток 1 знал о состоянии потока 2. Но пересмотреть архитектуру - более правильное решение, как по мне.
>>1495946Я просто не вижу других вариантов, нужно обрабатывать несколько циклов одновременно, иначе никак.
>>1495988> Питоноподобный язык использовался в Unity до недавнего времени.Там подобие JS было. Да и то его ещё с бородатых версий рекомендовали не использовать, пока не выпили окончательно.
Знаю: Django, Django Rest Framework, немного aiohttp asyncio (опыт на продакшене), pytest, сталкивался со всякими редисами-реббитами (но без тонкой настройки), могу написать простенький docker-compose.ymlЧто мне еще надо для того чтобы получить свои 160к по приезду в Москву?
>>1496018>БДСоздавать/редактировать постгресные вьюхи на лету через код пойдет?А еще я раскурил оконные функции>куча опыта2 года в норм конторах (ci/cd код-ревью, продуктовые, головной опыт не в Росии, так что у меня еще и англ разговорный) (всякие студенческие подработки не учитываем)
>>1496026> Создавать/редактировать постгресные вьюхи на лету через код пойдет?Нет.Надо уметь проектировать модели.И нахуярить архитектуру приложения.Если ты собрался не на галеру, то твой английский не важен.2 года не так уж много, если честно. Проанализируй рынок труда.CI/CD конфиги сам писал? Что по тестированию? В докер заворачивал приложение своё? Постгрес в докере запустишь или на железке?
>>1496034>CI/CD конфиги сам писал?нет>Что по тестированию?на одном проекте юниттест, на другом-питестмоки-хуеки, все дела.>В докер заворачивал приложение своё?Конечно, с самого первого пет-прожекта.>Постгрес в докере запустишь или на железке?Ну понятно что по-хорошему надо на железе, но у меня нет админских скилов, так что просто подниму контейнер.Мне не было повода изучать это - либо у нас отдельный человек занимается базой (и настройкой сиая кстати) либо я пишу свой петпрожект для себя, и там ничего не надо настраивать, ведь и так все работает. (хотя, кстати, однажды я угорел и прикрутил pgbouncer к своему телеграм-боту)А еще я могу в типизацию.
>>1496016> Что мне еще надо для того чтобы получить свои 160к по приезду в Москву?Научиться кодить? Я бы тебе максимум 50к заплатил за такие знания. А точнее их отсутствие.
>>1496050Я Большой Дядя с большой писей, черт ты галимый"Заплатил бы" - будешь шлюхам рассказывать, сынуля. Тон блять нормальный подбери
>>1496041> нетЕсть куда расти.> на одном проекте юниттест, на другом-питест> моки-хуеки, все дела.Ты писал? Смог бы с нуля накидать план тестирования и реализовать?> Ну понятно что по-хорошему надо на железеНа той же где и веб-приложение?> но у меня нет админских скиловЕсть куда расти.> я пишу свой петпрожект для себя, и там ничего не надо настраивать, ведь и так все работаетСхуяли?> А еще я могу в типизацию.Можно я тебе отсосу?Поясню кратко про что я:Что бы получать 3к$+ тебе надо быть самостоятельной единицей. Принёс манагер бизнесс-требования и дал тебе платёжную карточку. Ты по бизнесс-плану накидал архитектуру приложения и спроектировал модели, потом пошёл на amazon/DO и купил там серваки под веб-приложение, если надо, ещё и под БД отдельный сервак купил(ну или у DO взял в аренду их постгрес и не паришься). Написал приложение, написал тесты для него, что бы спать спокойно(да, есть тестироващик, но я бы надеялся на себя). На гитхабе/гитлабе/битбакете настроил пайплайн. Подключил сентри. Настроил голый сервер с убунтой/дебианом под свои нужды. И это только начало пути, ибо дальше идёт поддержка, расширение и обновление.
>>1496057Ну про постгрес я погорячился, ибо тебе надо аргументированно выбрать БД, ведь может тебе типа КликХауса или Монги что-то надо, к примеру.
>>1496052Если ты не знаешь своей цены и что надо учить, то ты ещё не готов для нормальной работы. У нас таких как ты долго не держат. Если 2 года пинал хуи и потом идёшь на двачи спрашивать что ещё надо знать, то сразу всё понятно. Ты где-то на уровне студента, прочитавшего пару книжек и не понимающего что ему надо будет в реальных условиях знать.
>>1496057>Ты писал? Ну а как в 2к19 без тестов? Я просто ревью не пройду. Ты про юниты или ты мне предлагаешь на селениуме пописать? С ним у меня был конечно опыт, но я не очень-то стремлюсь быть человеком-оркестром.>Смог бы с нуля накидать план тестирования и реализовать?Ну а что там сложного? В идеале тестируем вообще все, но самое главное чтобы были функциональные тесты (реже надо рефакторить чем юниты) на самые основные функции, чтобы они ломались с большой вероятностью если что-то где-то неправильно. Пишем имиджборду - значит по-любому надо тестировать end-to-end создание нового треда с картинкой. Это будет 80% результата за 20% работы.>На той же где и веб-приложение?Я видел оба варианта на продакшене.>Есть куда расти.Я по-максимому хочу срезать углы. Типа не учить фронтенда, и т.д.>Схуяли?На своих петпроджектах обрабатывающих 1 запрос в час все мои базы работали прямо из докера.>Можно я тебе отсосу?Ну а я для кого старался?>3к$+Падажжи, это через годик, сейчас пока что 2к$+>надо аргументированно выбрать БДМы собираем температуру по метеостанциям по всей стране? Если да - кликхаус (на отдельном микросервисе-мобирателе, как дополнение к основному постгресу), если нет, то постгрес. Монго не нужен, в постгресе есть джсонб с индексами.
>>1496074> Ну а как в 2к19 без тестов?Сложно, но практикуют некоторые, вот и спрашиваю.Я не про селениум, не ссы.> Я по-максимому хочу срезать углы. Типа не учить фронтенда, и т.д.Ну CI/CD это всё же бэкэндовская задача, с фронтом всё ясно то.> все мои базы работали прямо из докера.А, ты про это.
>>1496083>у CI/CD это всё же бэкэндовская задача, с фронтом всё ясноУ меня было в планах кубернетесы изучить. На что время лучше потратить?
>>1496057>Поясню кратко про что я:>Что бы получать 3к$+ тебе надо быть самостоятельной единицей. Принёс манагер бизнесс-требования и дал тебе платёжную карточку. Ты по бизнесс-плану накидал архитектуру приложения и спроектировал модели, потом пошёл на amazon/DO и купил там серваки под веб-приложение, если надо, ещё и под БД отдельный сервак купилТы про каких-то фрилансеров фуллстеков пишешь, которые в одном лице совмещают бэк, фронт, спецов по данным, тестеров, девопсов и менеджеров. В реальности за такое не очень готовы платить, когда готовы, идут в ООО какое-нибудь или у себя команду специалистов собирают.
>>1495973Секвенсор, надо расставлять точки на дорожке и чтобы на где точка стояла игрался звук, допёр только до того чтобы каждую такую дорожку в отдельном потоке прогонять через цикл фор в поиске места где звук играется
в общем очередной вкатывальщик репортинг ин. в моем зажопье пока лишь 5 вакансий на питонщика ВООБЩЕ, про джунов я молчу. так вот ответили лишь 3, и лишь 1 компаха готова пригласить. ив самой вакансии и на собесе сказали что возможно придется изучить ruby и соответственно ruby on rails. так вот: стоит ли туда идти или вообще лучше не соваться т.к. это кал ебаный?
>>1496107Ну нахуй, что из этого выходит за грани бэкэнда?Если говорить все же о небольшой компании, т.к. у большой, чаще всего свое железо и его покупать не надо, нужно лишь отправить письмо.>>1496131Чому?Аноны, не поверите, везде где был на собесах и везде где работал, спрашивали именно про это. Тесты/ci/cd/git/DB/Unix/docker. И не только лишь галеры были, но и продуктовые компании.>>1496094Кубернетосы ок, тоже надо. Но как по мне - я бы потратил время на ковыряние чистого линупса и траблшутинга. Что бы у тебя не вызывало проблем настройка чего-то вне докера, а так же решение различных траблов с системой.
>>1496216ну питон соответственно, sql, джангу и фласк (есть пара сайтов в портфолио на том и на том), html css соответственно чтобы это вывести. пока что на этом все.
>>1496227ну да. просто не ебу че еще надо на самом деле. читал книги по питону, по алгоритмам. хуй знает че еще надо. но видимо надо, раз меня там лишь одни готовы пригласить
>>1496392Ты наверно и не читал. >в то время как в документации на glob указано, что порядок вывода не гарантируется
Сегодня пришло письмо от конторы 'тестовое передано тимлиду', госпаде как же мне страшно, я же так хуево там все сделал, теперь сидит ржет надо мной и говорит 'не такого мы не возьмем', а потом еще и всем коллегам покажет тип 'смотрите какую хуйню настрочил аххах'
>>1496214Мне бы тобой быть, у меня 2 вакансии всего, в одну 2 дня назад отправил тестовое жду ответа, хотя уверен что будет отказ, а во вторую вакансию нужен опыт + вышка ничего из этого у меня нет понятно хотя я все равно им кину, выбора то нет.
>>1496403>Мне бы тобой быть не говори так никогда. я жил во время учебы в такой залупе где вообще нет никаких айти контор и нет никаких курсов даже чтобы чему то научиться. сейчас кнч получилось съебать из своего дальнезалупинска в другой усть-пиздинск, где с этим делом получше, но все же будь у меня возможности во время моего обучения то дал бы по съебам с шараги сразу же и пошел кодить
>>1496214мне кажется в твоём приложении выбирать не приходитсяалсо имо рельсы перспективнее джанги которая вообще недоразумение какое-торуби алсо няшнее питона
>>1496439и чем же ? джанго у всех на слуху и пиздато из за того что там вообще все есть из коробки. если не ошибаюсь то даже в пхп чтобы прикрутить админку надо поебстись, в то время как в джанге она прикручивается одной консольной командой. а в рельсах что? алсо какие есть проекты известные сделанные на рельсах?
Бля, под виндой при включении длинных имен файлов на сколько они могут быть длинными? Или это баг питона? Проверяю существование файла, он не выкидывает эксепшен, но при попытке создать кидает. Причем руками через проводник с этим именем создаётся. Ну и ебень же. Пофиксить можно?
>>1496475>github? twitch? airbnb? чет нагуглить не могу. видел только инфу про твиттер. скинь ресурс>сколько тебе лет?а это так важно?
>>1496215>Ну нахуй, что из этого выходит за грани бэкэнда?Всё почтиТы описал скорее админа-девопсника, а не программиста-бэкэндера.У тебя так расписано, как будто "написать приложение" - это на час работы в одиночку. Ты видимо подразумеваешь, что берётся уже готовое приложение, и может чуть-чуть настраивается под себя. Но это не программирование.В твоей схеме подразумевается, что у тебя девопс и программист в одном лице и других айтишников в фирме нет. Это несерьёзно.Бэкэндер - это программист, который занимается в первую очередь программированием и реализует лишь часть функционала. Ему надо взаимодействовать с другими равными себе, с фронтовиками, админами, другими бэкэндерами. Работать на том, что есть, убеждать в каких-то своих решениях и технологиях и т.п.
>>1496434Я из пгт на ~15к человек, там нет такого понятия как программист вообще, ток комплюторщик который меняет картриджи в принтере и получает дай бог 10-15к. Я как матери сказал что программистом буду устраиваться, она сказала 'госпади это же нищета зачем тебе это?', благо щас в миллионик переехал.
Вообщем я прошел собес в веб-студию, но они там работают с битриксом и владелец скинул мне курс пройти, и через неделю к ним идти уже работать, но щас подвернулся вариант получше, уже питонистом, как сообщить работодателю с первого места, повежливее, что я не пойду к ним работать? Сам он мужик неплохой, как то жалко его так опрокидывать, не могу же я сказать что нашел другую контору.
>>1496576Так и скажи. Чем подробнее объяснишь ему тем больше добра ему сделаешь, потому что он узнает больше информации об окружающем мире и ему будет легче жить.
>>1496577Я не смогу сказать что нашел место лучше, это жестковато, есть какие-то еще варианты, чтобы мы оба не сильно расстроились?
>>1496576>>1496577Ты же бы не хотел чтобы тебя в работе отказывали молча? Гораздо лучше когда тебе объясняют, что именно ты не умеешь, и каких скилов тебе недостает до желаемого заработка.
>>1496585>смогу сказать что нашел место лучше, это жестковато, есть какие-то еще варианты, чтобы мы оба неЭТО БИЗНЕСБезнес это как война, просто тут убивать нельзя.Не говори ему, что его предложение о работе "херовое", это конечно обидно. Скажи детально что ты взвесил все плючы и минусы. Что другие технологии тебе интересны и т.п.
>>1494130 (OP)Сап, прогромач, вкатываюсь в прогинг, какую расцветку для IDE посоветуете? Тему надо брать темную, это я знаю, а какую подсветку синтаксиса намутить, чтоб было удобно и приятно глазу? Скиньте 16ричные коды цветов сюда
>>1496576>>1496619Аноны правы, просто скажи, что нашёл более интересное для себя направление, в котором ты бы хотел развиваться. Это нормально. Это даже когда ты с работы сваливаешь нормально, к этому обычно адекватно относятся.Оскорбительно тогда, когда ты говоришь, что нашёл место, где всё тоже самое, но только условия лучше, платят лучше или сама фирма лучше. Особенно если для тебя люди уже что-то сделали и ты что-то пообещал.
>>1494130 (OP)Други, как в Пистоне сделать так, чтобы при достижении неким атрибутом определенного порога экземпляр класса автоматически удалялся? Допустим self.count превысил значение 10, значит этот объект self должен удалится
>>1496639В __new__ сделай счетчик. И если достигается 10, то объект не создавай новый класс. Т.е. не вызывай super(...).__new__(args, *kwargs)
>>1496601>Тему надо брать темнуюКто тебе это сказал? Темную ночью или вечером хорошо. Светлую днем хорошо.
>>1496713Зачем тебе его вообще удалять? Сделай декоратор, который чекает атрибут и посылает нахуй, если условие не выполняется.
>>1496732Генерируется большое количество подобных объектов, будет и удобнее с точки зрения юзера и с точки зрения производительности если ненужные объекты будут попросту удалятся автоматом как только счетчик переполнитсяСмотрел на метод __del__ но хуй знает как через него заставить сборщик мусора гарантированно утилизовать экземпляр
>>1496733> с точки зрения производительности если ненужные объекты будут попросту удалятся Поехавший что-ли? Кто тебя такому говнокоду научил?
>>1496743В С++ с деструктором бы прокатило>>1496750Я хочу сам вызвать этот сборщик и сказать ему что убирать. С weakref, возвращаемой методом __new__ было прикольно, но смотрится по-уебански конечно
>>1496752Постоянно создавать объекты и удалять - это пиздец говнокод. Это где угодно плохо. Просто пустая трата ресурсов. ООП придумали не для того чтобы под себя срать.
>>1496752>Я хочу сам вызвать этот сборщик и сказать ему что убиратьСборщик вызывается gc.collect(). Любой del объект не удаляет, а помечает на удаление.Смысла в таких действиях нет. Если твой объект хранит какой-то большой ресурс, типа numpy-массива на гигабайт, то достаточно просто сделать self.massiv = None. Если объект маленький - то проще просто забить.С++ ты из питона все равно не сделаешь, он в любом случае медленный.
>>1496822И как тогда решать подобную проблему? Создать двухстороннюю очередь с приоритетом и удалять с левого края элементы, когда подходит их черед?
Как получить информацию от целери, сколько таск памяти использует сейчас? Короче у меня такая проблема: целери много памяти использует. Одновременно воркер одну таску обрабатывает. Как можно узнать сколько памяти потребляется? Брать каждый воркер, по pid смотреть процесс, смотреть через psutil потребляемую память и у воркера запрашивать имя таска?Короче инфа нужна примерно такая:worker1 - task1 - 572Mb memoryworker2 - task7 - 41Mb memoryworker7 - task3 - 2Mb memoryworker12 - task1 - 112Mb memory
>>1496835Что такое "их черёд"?Вот у тебя какой-то один объект работает с другим объектом, вызывает его методы и т.п. Ты предлагаешь, чтобы в какой-то момент рабочий объект уничтожался? И что должны делать те, кто с ним в этот момент работал?Ты хочешь чего-то другого.Тебе нужно держать специальный менеджер, в которым ты регистрируешь объекты, которые работают с дефицитным ресурсом. Скажем это сетевые соединения, кеш-память или что-нибудь ещё.Объекты сигнализируют, что они живы и менеджер это учитывает. В момент Х менеджет вызывает для ненужных объектов специальный метод, и они сбрасывают кеши или закрывают соединения. Либо менеджер сам это делает.
>>1496838>Брать каждый воркер, по pid смотреть процесс, смотреть через psutil потребляемую память и у воркера запрашивать имя таска?Это извращение. Посмотри скорее в сторону tracemallochttps://docs.python.org/3/library/tracemalloc.html
>>1496866В таком случае я сырой дамп памяти получу и не смогу привязать значение памяти к конкретному воркеру.
В чём смысл моржового оператора из 3.8 версии? Это типо макросов из си? Если мы присваиваем выражение переменной, то потом это выражение будет выполняться каждый раз, когда мы эту переменную будем использовать? В ней будут разные значения тогда, разве это питоник вэй?
>>1494130 (OP)Ну что, питухонщики, ваше говно теперь официально превратилось в ПаскальНовый оператор := позволяет присваивать значения переменным внутри выражений. Например:if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")
>>1497299Go в паскаль превратился ещё раньше.Что характерно, в самом паскале так сделать нельзя, там даже цепочек присваиваний нет, лол.
>>1497302>Go в паскаль превратился ещё раньшеПетухун мало того, что оказался жалкой ООП пародией на Перл, так теперь зашкварился ГоПаскалем
>>1497299>присваивать значения переменным внутри выраженийВ С/Java/Perl да и в остальных это было всегда, тут преподносится как достижение
>>1497312>чейнджлоги стали списком достижений?Т.е. ввести новый оператор, это так, чейнджлог? Вы там кукухой поехали?
>>1497299О, уже вчера официальный релиз 3.8 произошёл.Про этот оператор давно известно было, что введут. Больше всего не хватало этой возможности. Реально не хватало. Теперь питон это язык богов, ещё только с GIL как-нибудь разобраться бы.
Вопрос нуба в треде. Допустим, я постепенно, медленными шагами пытаюсь учить Питон (не в сложности дело, просто мало времени и плохо его распределяю). На работе пару раз в месяц взаимодействую с богомерзким экселем, и ковыряю операции, которые выполнились бы куда быстрее, напиши я скрипт. Но я не умею его написать и думаю, стоят ли того потраченные на это килочасы времени, если я в дальнейшем вряд ли собираюсь связывать жизнь с экселем. По идее помогут как пример того как решать проблемы и т.д.?
>>1497299Благословим же господа Гвидо, что нам не надо выделять память под переменную, если она не None.
аноны, а вот такой вам вопрос от нюфага: есть же всякие курсы где типо по окончанию изучения ты создаешь например какой то свой проект (аля выпускная работа) который типо у тя идет в портфолио и тебя с ним направляют к работодателю. так вот вопрос: как вы думаете что это за хуйня?
>>1497388> Тут многие не умеют в асинхронность, а ты про какие-то операторы.Пойдём выйдем, я тебе ебало разобью.
>>1497389Это дополнительные ограничения на передачу аргументов в функцию.Вот ты определяешь функцию какdef foo(name, name2): do_something()потом ты ещё можешь вызвать какfoo('Ivan', 'Pupkin')а можешь какfoo(name='Ivan', name2='Pupkin')или foo('Ivan', name2='Pupkin')Но может быть вариант, что ты не хочешь, чтобы можно было вызвать с явным указанием имени аргумента, например чтобы потом отрефакторить, чтобы вместо name2 было surname. Если у пользователей будет вызов с name2, то код сломается. Вот для этого и сделан операторdef foo(name, /, name2):говорит о том, что ты name2 не может передавать с указанием имени аргумента.Не знаю, мне кажется что не очень актуальная штука, но может иногда быть полезной.Оператор "*" в параметрах, это явное требование указывать имена аргументов, куда более полезная, но он уже давно введён, даже не помню когда.
самофикс>>1497410>def foo(name, /, name2):>говорит о том, что ты name2 не может передавать с указанием имени аргумента.говорит о том, что name нельзя передать с указанием имени аргумента, только позиционно. Чтобы name2 нельзя было, надо писатьdef foo(name, name2, /):но тогда и name тоже нельзя, конечно. Позиционные всегда первыми идут.
>>1497418А, понял. Какая-то очень специфичная штука, как мне кажется.Пригодится, если например, у тебя api принимает аргументы именованные, а тебя петух клюнул переименовать. А сторонние сервисы не хотят менять имена. Ну не знаю, стоит ли оно вообще того.
>>1497423>>1497384> как вы думаете что это за хуйняЭто чтобы тебя на курсы заманить, не более того.На курсах нельзя стать программистом с нуля. Только если ты уже более-менее умеешь свободно программировать, но совсем не владеешь платформой, тогда это полезно.Направить тебя может направят, но не возьмут. Работодатель хорошо понимает, что за этими проектами ничего нет.
>>1497429Мне тоже кажется, что очень специфичная. Может полезно иногда, чтобы за стилем оформления кода следить, чтобы не использовали лишний раз именованные переменные, сбивать может, когда код читаешь. Ещё вариант, что когда методы классов определяешь. Ты наследуешь класс и переопределяешь какой-то метод, при этом смысл аргументов иногда может немного меняться. Может быть желание в переопределённом методе что-то переименовать, но важно, чтобы в другом коде эти аргументы по имени не вызывались.Может быть полезная штука, но пока реально не сталкивался, чтобы явно не хватало. А вот ":=" не хватало очень сильно.
>>1497430то есть платные курсы сосут по всем фронтам у свободной инфы, докам, книжечкам, и /pr/ ? я правильно понимаю?
>>1497449Не обязательно, они приличными могут быть. Но только никакие платные курсы никаких гарантий не дадут. Программистами за несколько месяцев не становятся. Да и не всем дано в принципе.
>>1497441Во многих языках есть аналог :=, только обычно это просто =Никогда не понимал в срачах аргументов "это не pythonic way". Да кого ебет какой этой вэй, если это удобнее.
>>1497491на мой взгляд это идет перпендикулярно питоновскому дзену. далеко не улучшает читабельность, а наоборот плодит сложности.
>>1497601В чем ухудшается читаемость-то?if func():для тебя тоже не читаемо что-ли?Если следовать дзену, то можно остановиться в развитии. Даже комитет c++ понял это.
Реально на питухоне запилить маленький скрипт, который будет позволять одним щелчком мыши открывать определённый набор программ и браузер с нужными вкладками? Заебало каждое утро на работе запускать скайп-хуяйп и прочие штуки. INB4 автозапуск прог на винде: просто хочу потренироваться в питонировании применительно к своей офисной бытовухе.
вопрос очень прост: современные GUI под питон?Нравится идея с HTML, но конечно гемор некий тоже есть. Можно конечно не "современные", лишь бы была хотя бы базовая мультиплатформенность и внешний вид уровня Battle.net, Steam и в этом духе, как щас пишут на Java.В общем, я все равно сейчас ищу, а что скажут опытные господа?
>>1497690да, как вариант. Но интересно именно мнение тех, кто лично писал интерфейсы, на чем писал, какие выводы сделал.
>>1497636Бекенд, дата саенс, различная скриптота вроде девопса.Даже если основной твой язык будет не питон, от питона всё равно будет немало пользы.
>>1497677Это пишется настолько элементарно, что вообще не интересно.import osos.system("прога1")os.system("прога2")Придумай задачу получше.
Кароч сегодня позвонили с конторы, которой я тестовое отправлял, менеджер сказал что тимлиду понравилось, но по техническим причинам они в данный момент не ищут работников, но вакансия снова откроется где-то в начале-середине ноября, так вот что это такое вообще это нормально? Компания крутая у нее офисы в дс сам я из миллионика и заграницей есть очень хотел бы туда попасть, но не знаю как поступить дальше сычевать и ждать когда пригласят или пойти куда-то работать?
>>1497908Ну не стукай, всего два дня прошло. Для меня интерпритатор залочен был, только сейчас освободился.
Теперь если вставить где-то моржовый оператор, то скрипт не заведется на всех прошлых версиях третьего питона?
>>1497957Ну попробуй вставить себе моржовый клык и подойти к мамке, узнает ли она своего сына, сможет относиться к тебе так же как раньше?
насколько хорош и устойчив к нагрузкам aiohttp,пытался в swoole-гавнина с кучей подводныхили node.js,
Гайс, смотрите, есть цель: написать бота, который будет участвовать в чате на сайте, просто здороваться, говорить что-то и всё. Сайт написан не на питоне, чат тоже. Есть возможность это реализовать своими силами? Селениум мб тут поможет?Доступ к сайту и помощь обеспечат, если что, но мне это не очень поможет, тк я не знаю языка, на котором оно всё написано, и меня интересует выполнить задачу без внедрения в код сайта.
Расскажите, как свои саблаймы прокачивали. Я поставил sublimeREPL, но для разных виртуальных окружений приходится в кей биндингс менять путь. Есть какие-то более модные способы?
>>1498124PySide2 - это привязка к Qt, самая новая и официально поддерживаемая разработчиками. В комплекте идет qtdisigner, в нем можно накидать форму, а в питоновском файле писать только логику для нее. Можно использовать документацию Qt, она у них очень хорошая.https://wiki.qt.io/Qt_for_PythonWxPython - это привязка к WxWidget. Тоже хорошая вещь, там стараются использовать нативные виджеты системы, поэтому приложение будет гармонично смотреться на разных ОС. Так же есть возможность накидать форму в спец приложении, а в питоновском файле писать только логику.https://wxpython.org/Tkinter из стандартной библиотеки малость устарел, но для небольших вещей довольно-таки неплохЭто из того, что пробовал. А так вариантов очень много, включая возможности использовать веб-технологии для десктопаhttps://github.com/vinta/awesome-python#gui-developmenthttps://python.libhunt.com/categories/290-gui
Какие есть варианты собрать портабельное приложение на питоне со встроенным интерпретатором? Я не говорю про компиляцию в бинарь, просто чтоб можно было притащить на флэхе и запустить скрипт.
Есть один текстовый файл. В него поступают данные в формате списка, где элементы равны 'число' + '\n'. Иногда '\n' нет, и нужно что бы тогда '\n' добавлялось в конец элемента списка при обработке файла. Как это сделать? сука голову сломал
>>1498264a = a.rstrip() + '\n'это удалит и \n, и пробелы справаесли нужно сохранить пробелы, но вдруг, тоrstrip('\n')
>>1498216На моём ноутбуке пайчарм открывается две минуты, заебало, я же помню, что в этом треде когда-то обсуждали редакторы и были аноны, которые себе саблайм настроили
>>1498261А как с pyinstaller собрать так, чтобы на хостовой машине можно было без установки питона нужной версии работать? Вот чтобы и интерпретатор питона в экзешник?
Питоны, пытаюсь смоделировать на коленке фласк сервер с клиентом.Они работают параллельно: клиент посылает запрос с json'ом, сервер что-то отправляет в ответ - значение или тоже json.Не пойму, так или не так? Что доделать?https://ideone.com/YKwKqF
>>1498309о, а я тебя помнюТы неправильно юзаешь target. В target передаётся ссылка на вызываемую функцию, а ты передаёшь ссылку на результат вызова функции. Объяви две функции, в одной принть результат send_data, а в другой - просто вызывай app.run(). Затем укажи эти функции в rarget.
>>1498309Пиздец. Во-первых, requests уже протух и это говно не надо использовать. Во-вторых, зачем тебе Фласк, если есть простые и быстрые клиент/сервер aiohttp?
>>1498456"Это так мило.Спасибо, как-то так?def f1():--app.run(host= '0.0.0.0',debug=True)P1 = Process(target=f1)P1.start()P2 = Process(target=send_json({"title":"Read a book"}))P2.start()> в одной принть результат send_data>принтьA это зачем?
>>1498501Вроде того.send_json, конечно. С ним аналогично, его вынести в функцию f2(), её передать в target.Можно и не принтить, но ты же хочешь увидеть, что сервер вернул нужные данные?
>>1498512 >С ним аналогично, его вынести в функцию f2(),Т.е. функция в функции?> ты же хочешь увидеть, что сервер вернул нужные данныеИ куда это ставить? В f2?
>>14985164-е задание и в 3-ем последнее предложение >Caller should do the printingчто это значит? вызывающий должен сделать печать. Печать чего блядь?
аноны, реквестирую вашу помощь. прислали задание на питонщика-тестировщика. и вот такая последовательность: создать бд в оракл, затем зарегать ее в datasunrise, затем создать правило маскиннга с маскировкой первых двух символов строки, далее уже написать код проверки корректности работы этого правила маскинга, и потом еще написать код проверки того что в списке events появилось событие маскировки, а внутри сохранились замаскированные данные. все это надо выполнить в виде python скрипта. так вот вопросы: где найти хоть какую то инфу по этой дата санрайз и по маскингу и стоит ли ваще так ебаться ради этой галеры и обещаний в 35 килорублей?
>>1498548это наёбка. ты щас сделаешь они тебе перезвонят, потом, ага. нахуй шли сразу, портофлию испытательный срок и пусть нахуй идут.
>>1498578ты делаешь дохуясложное задание, они используют твою программу. вот и всё. ну бывает что тупо нужна программа на раз, а на программиста денег нет, тогда и создают вакансию с тестовым заданием.ну у тебя может и не наёб зарплата низкая, обычно на таких должности ещё обещают 300кк в наносек, чтобы задроты упорнее кодили
>>1498578а вообще тесты это хуйня. у тебя должно быть портфолио твоих шидевров и вот по ним в первую очередь должны ориентироваться. а не давать тебе тестовые бесплатные проекты на неделю.
>>1498581вот и я тоже так думаю. в этом и трабл.>>1498582я его пока что допиливаю чтобы на гитхаб залить и затем уже в свое резюме. так что это оки
У меня есть простой сервер с сайтом на сокетах. Я его запускаю, и начинаю в браузере что-то делать, переходить по страницам там и всё нормально, браузер коннектится и присылает обычные хедеры с запросом и урл. Но если подождать минуту ничего не делая и обновить страницу, то браузер коннектится и присылает пустую строку, так и должно быть? Что это и зачем?
>>1498588ну и шли их нахуй. эта ёбаная россия нищая где работодатели издеваются натурально над своими работниками. здесь везде будешь постоянно не соотвествовать и всё вечно будешь недостоин. шли нахуй страну эту ёбаную.
Аноны, насколько мой код говнокод? Можно ли как-то это записать с использованием меньших количеств переменных, с меньшим использованием циклов или нормально? Да я знаю про find и прочие встроенные для строк функции, у меня цель была писать на максимально самопальных функциях.Только не кидайтесь безпричинно гавном типа "твой код гавно потому что ты пидор" тыкайте пальцем где именно я проебался и как можно было бы проще.
>>1498589Ну то есть не пустую строку, а набор байт, который мне отображается как b''. Ну и после этого ещё раз коннектится, но уже с запросом. Это типо хром мониторит, работает ли ещё сервер? А почему он сразу этого не делает, а только после простоя?
>>1498595питоаноны подскажите что это значит.[i for i in array[1:] if i > a]особо интересно что такое i for i / [1:]
>>1498602это цикл какой-то сложный со сравнением. а скобки стоят в контексте чего? или они сами по себе?
>>1498603там впереди еще массив куда этот массив погружается типо:someArray = [i for i in array[1:] if i > a]
>>1498604В массив войдут все элементы из array, начиная с первого индекса(по русски -- со второго элемента), которые больше, чем а
>>1498610Короче, гугли list comprehension и slices. А вопрос про хром так и остаётся. В панеле разработчика вот эти коннекты пустые не отображаются, только нормальные запросы
>>1498581Шедевр спиздить можно, а тестовое проверяет твои знания или способность быстро разобраться с задачей, которую ты первый раз видишь.
>>1498613да с предыдущими тестовыми то у меня так и было, где рили проверяли мои знания и вот задачу которую первый раз видишь>>1498615удваиваю этого. хрюша как раз сказал что задание на неделю рассчитанно))
>>1498592У тебя не количество слов с буквой E считает, а количество букв E в тексте. Нужно пофиксить.
>>1498679нормальная, но никогда в виде тестового выступает какой-нибудь охуительный недельный проект. это плевок в ебало. это как придёт допустим человек дальнобойщиком устраиваться, а ему скажут: ну ты съезди в один раз на 2000км, бенз и всё остальное за своё счёт и мы посмотрим устраивать тебя или нет.
>>1498679это как блядь на завод прийдти и тебе скажут "ну ты это отработай неделю у нас бесплатно, а мы посмотрим и решим брать тебя или нет"
Так нужно же эти тестовые задания себе на гитхаб выкладывать, разве нет? Был бы ещё один проект, легче было бы устраиваться
>>1498717Зависит от требований. Гитхаб вкатывальщиков мало что говорит, потому что ты все это спиздить мог
>>1498720А история коммитов? Её конечно можно подделать, но это муторно, вставлять кусками. Да и чего тогда все говорят про то, что необходимы свои работающие проекты?
>>1498724Ты можешь спиздить вообще весь проект полностью заменив имя в коммитах одной командой>https://stackoverflow.com/questions/750172/how-to-change-the-author-and-committer-name-and-e-mail-of-multiple-commits-in-gi>Да и чего тогда все говорят про то, что необходимы свои работающие проекты?Иллюзияhttps://habr.com/ru/post/350912/
>>1498707Лол такая практика много где приветствуется, про бесплатную стажировку слышал? ты там месяц за бесплатно работать можешь.
>>1498740так я не стажёр и не ньюфаня какой-то.>>1498749вот пофикшенная версия. он хорошо список сделал, но проебался с подсчётом слов с буквой E
>>1498776Так это ты мне не скажи, а ему. Я просто посмотрел на его код и переписал по-своему. С подключением string
>>1498757>так я не стажёр и не ньюфаня какой-то.То есть у тебя есть уже опыт работы и тебе дают тестовое лол?
У вас тут соревнование по однопроходным алгоритмам? Вот вам чисто однопроходное решение, без сохранения элементов в строку-слово.https://ideone.com/tHncr3
>>1498724Ещё более муторно разбираться со всем этим "проектом" и коммитами.Тестовые удобны тем, что задание понятно для проверяющего, ты знаешь интересные места, на что смотреть, можешь сравнивать разных людей, как кто решает задачу. >>1498740Тестовое это не стажировка. На стажировке ты учишься внутри индустрии, видишь изнутри, как что работает, пробуешь сам, тебе объясняют, что ты делаешь не так и т.п.Во время тестового ты просто тратишь своё время. Тебя может возьмут на следующий этап, может не возьмут, но никто детального разбора, что в твоём решении не так, делать не будет. И никаким бизнес-процессам ты на тестовом не научишься. >>1498581>ты делаешь дохуясложное задание, они используют твою программу. вот и всё. ну бывает что тупо нужна программа на раз, а на программиста денег нет, тогда и создают вакансию с тестовым заданием.Это надумано, никто не сделает адекватно в рамках тестового законченную конечную программу. Но другой вариант есть. Вот я не умею работать с Оракл, может в проекте вдруг понадобилось. Начинать разбираться самому тяжело. Как поступить? Можно раздать тестовые задания под якобы открытую вакансию, посмотреть на идеи и подходы к решению. Можно ещё кого на собеседование пригласить, пусть расскажут идеи какие-то, свои подходы к решению, можно непонятные вопросы задавать. Потом всех послать и уже работать самому, получив какой-то багаж идей и подходов. Так практикуется.
>>1498812Однопроходный алгоритм -- это когда по вводным данным один раз проходит, дурашка. В таких алгоритмах главный плюс -- можно входные данные не сохранять. То есть вообще. Мы, например, можем не давать строку функции, а вводить каждый раз просто по одному символу, и эти символы нигде не будут записываться. правда я в моём алгоритме сделал под строку, когда в конце проверяю, последний ли это элемент. По нормальному эта проверка должна происходить каждый раз, когда поток информации кончается.
>>1498812давайте вот щас не будете срачь здесь начинать и придираться к словам как на этих форумах погромистких с дегенератами. я сразу говорю что я не он кому это писал.На днях видел один топик http://www.cyberforum.ru/cpp-beginners/thread2221660.html, уебан там какой-то указал что в строках при сравнении А > a, хотя на самом деле a > А. Ему сказали мол ты не прав и пруфы дали, так этот пидрила как и подобает компьютерному чсвшному задроту сказал "ряяя это писали домохозяйки у меня всё правильна" в итоге ему под конец темы объяснили что этот гнидёншь обосраный и он это таки признал. Как же такие кадры бесят, которые начинают к словам придираться, споры какие-то устраивать хотя сами просто эникейное гавно которое общается так будто он серый кардинал над нашим миром. Уебал бы всех погромистов которые начинают эти ебанутые споры.
>>1498817ещё этот уебан всех обосрал в конце что все виноваты в чём-то. как же бесят подобные, ему блядь в лоб прямо тычешь пруфом, а он "А НЕТ А ЭТО НЕПРАВИЛЬНО ИДИОТЫ ДЕБИЛЫ ПИСАЛИ" сука с ноги бы в щи этому задроту.
>>1498757>твой код гавно потому что ты пидор>>1498592>тыкайте пальцем где именно я проебался и как можно было бы проще.Например используй регуляркиполучить все словаwords = re.findall(r"\w+", text)дальше можно отфильтровать вхождения с "e"первый вариантe_words = [w for w in words if "e" in w]или такe_words = list(filter(lambda w: "e" in w, words))или просто тупо сосчитатьcount = 0for w in words: if "e" in w: count += 1>>1498592>Да я знаю про find и прочие встроенные для строк функции, у меня цель была писать на максимально самопальных функцияхНо уметь использовать инструменты языка важно. В этом знание платформы. Так ты будешь понимать, как должен выглядеть нормальный код.зачем у тебя new_text заполняется?Очевидные баги в твоём коде - если будет два пробела подряд, у тебя счётчик слов увеличится. Не только это.Если именно так ТЗ ставить, то тебе надо завести счётчикиtotal_words = 0total_e_words = 0current_word_length = 0current_word_e_entries = 0дальше цикл по буквам из потока.for letter in stream: if letter in " \n'\".,-;()[]0123456789": if current_word_length > 0:total_words += 1if current_word_e_entries > 0:total_e_words += 1current_words = 0current_e_words = 0аналогичную проверку надо не забыть сделать и по окончанию цикла.Ещё твой print лютый пиздец, нельзя так строки форматироватьprint("Your text contain {} words, of which {} words contains 'e'".format(total_words, total_e_words))
>>1498817Там же всё просто. a>A потому что аски код строчной буквы больше аски кода заглавной. О чём спорить-то?
>>1498817>>1498819Ты переработался, тебе пробздеться надо. Вот смотри какая скромная школьница в начале видоса в с++ вкатываетсяhttps://youtu.be/u_ij0YNkFUs
>>1498832это на видео у тебя бьёрн страуструп? алсо перед вкатом в си хорошо бы было хотя бы уметь переводить двоичное число в десятичное и обратно.
Приветствую. Почему в первом случае f.readlines() выводит заполненный список, а во втором случае пустой список?
>>1498839>хорошо бы было хотя бы уметь переводить двоичное число в десятичноеНе знаю о чём ты, я закрыл видео, когда натрапик ушёл из кадра.я на с++ только в вузе писал и теперь слушать про него даже не хочется
>>1498851мужик похож на бьёрна страуструпа он создатель C++ один из немнгих нормальных людей в айти и не занимается самопиаром как всякие торвальдсы-хуёрвальдсы. реальный специалист и не вниманеблядь с чсв. он ещё книгу к своему языку написал очень годную.
>>1498845Я уже настроил как получилось. Поставил ide внутри саблайма Anaconda, хотя я из её возможностей почти всё поотключал. В принципе удобно работается, открывается моментально, жрёт где-то 100 мб оперативы
>>1498841Я не знаю, как заставить это говно нормально работать.Чтобы клиент нормально слал ссаный жсон, а сервер ему отдавал.https://ideone.com/EjMSnYПоможите, чем можите.
>>1498869Где красным подчеркнуто, у тебя вычитывается весь файл, указатель на позицию в файле указывает на его конец, читать больше нечего. Когда ты делаешь f.readlines в конце, считывается 0 байт.
>>1498889Теперь понял, спасибо. А чтобы обратно каретку в начало файла сдвинуть что нужно, заново файл открыть?
Запилил простеньки файловый сервер на фласке для картинок. Работает локально, раздаю порно картинки. Пока тянка сидит сериал смотрит,я иду передернуть в туалет.Еще думаю для mp4 и webm раздачу сделать и вообще буду доволен. Даже на гитхаб залью.
Вот там выше анон не знает как во фласке json отправить, а у меня другой вопрос: Можно ли как-то через tcp сокеты отправить json так, чтобы браузер сразу понимал, что это json?Нужно как-то json в байты закодировать, я так понимаю, не знаю как
>>1498875Передавай в target ссылку на функцию, а не результат её вызова.ВместоP1 = Process(target=start_server())Нужно:P1 = Process(target=start_server)Так же с P2.И ещё кое-что. Так как у тебя потоки запускаются почти одновременно, почти наверняка сервер ещё не запустится, а клиент уже пытается ему послать запрос. Конечно, вывалится исключение. Решение в лоб - перед P2.start() добавить задержку, скажем, так: time.sleep(1).
>>1498938HTTP-сервер работает поверх TCP-сокетов. Соответственно, тебе нужно написать свой HTTP-сервер с нуля, который сам будет обрабатывать запросы и слать в ответ что угодно, хоть json в виде байтов. Вопрос, конечно же, теоретический? Писать свой веб-сервер - не самое простое дело, да и не самое полезное.
>>1498954Это я знаю, да и я уже написал. Просто он у меня отправлял html простые, а мне захотелось отправлять json как тот анон. Я вообще так и сделал, сначала кодирую словарь в json через json.dump() потом json в байты через .encode() и прилепляю байты к хэдэру.
>>1498955На сервере нет такого роута, ты его не обрабатываешь. Ты обрабатываешь только /api/add_message/<uuid>Например, можно слать такой запрос, ответ будет успешным:def send_json():____return requests.post("http://127.0.0.1:5000/api/add_message/123", json={"title":"Read a book", "mytext":"foobarbaz"})
>>1498973Спасибо.У тебя будет ещё минут 20?Сейчас он выдаёт: * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)foobarbaz127.0.0.1 - - [17/Oct/2019 hh:mm:ss] "POST /api/add_message/123 HTTP/1.1" 200 -То есть вроде как работает, но при нажатии http://0.0.0.0:5000/ в браузере нихера нет. Ведь сервер по идее тоже что-то должен выдать.
>>1498977Он и выдаёт, что страница не найдена. Если сервер не запустить, браузер напишет что-то типа "не удалось подключиться". Опять же потому, что роут "/" не обрабатывается.Можно в браузере перейти наhttp://127.0.0.1:5000/api/add_message/123Тогда загрузится. Но ругнётся, что не передаёшь нужные данные.
>>1498980Как всё сложно.А если у меня будет не один json, а несколько? Посылаемых друг за другом и на каждый надо дать ответ, как тогда это представить?
>>1498970Алсо, вот я сервер забиндил слушать все подключения, я могу подключиться к нему с самого компа и из локальной сети. Но из интернета на внешний айпи не подключается. Это браузеры отказываются отправлять запрос? Нужен какой-то особый порт для такого?
>>1498985Для примера можно добавить в send_json() несколько вызовов requests.post() с разными аргументами. Вариант сложнее - несколько процессов по запросу на каждый.
>>1498987Тут всё намного сложнее.1. Внешний IP у тебя вряд ли статический ("белый"), их сейчас не раздают направо и налево. Твой IP - "серый".2. Порт у тебя не "открыт". Как его открыть, можно нагуглить. Но если всё сделал, но он по-прежнему закрыт, тут только обращаться к провайдеру, зачастую это платная услуга.3. Если ты сидишь в интернете не напрямую, а через локальную подсеть,, нужно ещё настраивать проброс портов на роутере.В общем, намного проще найти бесплатный хостинг в интернете и выложить туда. Например, есть pythonanywhere.com
>>1498989Таааак, падажжи ёбана...Вот маняклиентdef send_json():--return requests.post("http://127.0.0.1:5000/api/add_message/123", json={"title":"Read a book", "mytext":"foobarbaz"})Допустим я создам список словарей и циклом буду извлекать каждый словарь, превращать его в json и отправлять на сервер.1) Цикл мне в send_json засунуть?2) А что насчёт адреса http://127.0.0.1:5000/api/add_message/123 ?Он на каждый post-запрос с json'ом свой должен быть? То есть в адрес надо что-то типа переменной части добавить?3) А сервер как это будет обрабатывать? То есть его динамическим делать? И как он это отображать будет? в адресной строке? Или json'ом в ответе?4) Хватит 2х процессов по одному на сервер и клиент? Или надо больше?
>>1498992Внешний порт динамический, порты открыты у меня, я уже проверял, писал на сокетах чат, в котором подключал разные компы. Они нормально подключались через внешний айпи. Там сервер был на стационарнике, а этот на ноуте, но он с линуксом, тут не должно быть файрволла, короче порт открыт должен быть.Насчёт проброса я не понял, как я понимаю, проброс это перенаправление пакетов, приходящих на внешний айпи, роутером на какой-то определённый частный айпи в сети, но зачем мне это если мой сокет слушает всё? пусть слушает внешний айпи.Просто я помню, что уже подобный сервер запускал, но там это всё было через приложения клиента и сервера, а тут вместо клиента у меня браузер, и я не понимаю, что изменилось
>>14989931) Да2, 3) Это на твоё усмотрение, технически вообще без разницы. Иногда делают весь api на одном и том же роуте, а потом уже парсят данные из json и производят нужные действия. Но концептуально это не совсем хорошо. Можешь почитать про REST API.4) Если делать через цикл, хватит.
>>1499001Спасибо.Такие ещё вопросы:1)> "Можно в браузере перейти на http://127.0.0.1:5000/api/add_message/123 Тогда загрузится. Но ругнётся, что не передаёшь нужные данные.Странно, get запрос у меня 500 выдаёт. Это если скопировать адрес и вставить.2) Как удостовериться, что сервер что-то отдаёт в ответ? Тоже print поставить?3) Касательно REST API - на что тут обратить внимание?4) Тебя можно будет в эту пятницу/субботу тут застать?
>>1498999Тогда не ебу. Единственное, что могу предположить - провайдер не разрешает входящие подключения к 80 порту. Или детектит и блочит http-трафик вне зависимости от порта.
>>14990051) наверное, от версии фласка зависит. Но так или иначе это должен быть код 500.2) в консоли ведь делается выхлоп, что было обращение к такому-то роуту. Если нужна ещё инфа - да, можно print добавить.3) это просто общие принципы, их нужно в целом понимать. Ну, может, какие-то присеры глянуть.4) возможно, но не 100%
>>1499009Блядь, я проверил, но да сейчас какого-то хуя тот старый сервер тоже перестал работать, пиздец, я был уверен, что он работал нормально с внешним айпи
>>1499010Спасибо и напослндок?Код чуть дополнен:l1 = [{"title":"Read a book1", "mytext":"foobarbaz1"}, {"title":"Read a book2", "mytext":"foobarbaz2"}]def send_json():-- for i in l1:----return requests.post("http://127.0.0.1:5000/api/add_message/123", json=i)Но вот при запуске выводит только foobarbaz1Он до второго элемента не доходит. Его обновлять надо? Или как?
>>1499012Сука, какой же это пердолинг, у меня в роутере DMZ(открывает все порты) стояло на частный адрес стационарника, но частные адреса каким-то образом сбились, и все порты у меня были открыты на моём ксяоми. Пиздец. Поставил dmz на ноут и всё заработало.
Подскажите ньюфагу возможно ли в spider3 делать VENV как в пайчарме, например? Нашел в настройках, что можно только интерпретатор выбирать. Если я сделаю новую VENV в пайчарме или просто в консоли и её интерпретатор выберу в спайдере, то он будет в этой среде всё делать или нет? В интернете предлагают через фунции анаконды делать, но у меня она не стоит. Также предлагают создавать отдельные VENV и в каждой через пип ставить свой спайдер, но это тупо, т.к. он по 300Мб жрет.
>>1498954Не читал о чём вы, но готовые реализации HTTP серверов уже есть, смотри h2 и h11.HTTP работает независимо от TCP. Можешь из файла брать поток для HTTP, откуда хочешь.
>>1498999Если у тебя подключение к интернету через NAT, через какой-нибудь роутер, то без специальной настройки, не всегда доступной, подключиться к тебе будет нельзя. У тебя на компьютере полноценный внешний IP? Не 192.168., или не 10.? Второе, на каком адресе ты открываешь сервер? Если в параметрах указываешь host='127.0.0.1', он же по-умолчанию иногда, то с внешнего компьютера ты подключиться не сможешь. Надо указать или '0.0.0.0', или адрес интерфейса, на которым ты слушаешь. Проще всегда "0.0.0.0", это значит, что с любого интерфейса можно подключиться.попробуй запустить встроенный на питоне серверpython3 -m http.serverот поднимет простейших http сервер на 8000 портуи зайти на него из интернета
>>1499041Спасибо, анон, но я уже всё настроил. Я просто долбоеб, у меня были порты закрыты. [spoile] приватные адреса сбились, а на приватный адрес было в роутере включено DMZ[/spoiler]Не понял про 10. , не знаю, что это. Айпи полноценный внешний, 192.168... тоже есть, но это приватный же, адрес устройства в локалке. Сокет я биндю на "", то есть на четыре нуля. >>1499040Ну так-то http это просто язык хэдеров, методов и кодов, по факту можно хоть на листке сообщения передавать по правилам протокола. Удивительно, насколько там простейшие вещи применяются в написании собственного сервера. Но писать много придётся, чтобы всё было по правильному.
Ну посмотрел вакансии на джунов в моей мухосрани, например, сравнил с количеством вакансий пхп, теперь хочу вкатиться в пхп.Отговорите вкатываться в пхп.
>>1499116Зачем? Создавать кучу однострочных функций смысла нет, тем более что она только один раз используется.
>>1499138А что насчёт сервера, почему он 500 выдаёт?Разве он не должен работать и что-то в ответ выдать?
>>1499140Потому что он не смог обработать запрос и свалился. Не смог обработать, потому что не проверены все возможные ошибки. Например, нужно проверить, что все нужные поля есть в json, прежде чем пытаться их читать. Если нет таких полей, явно слать клиенту 400.
>>1498826Спасибо, что не поленился и всё расписал для ньфани типа меня, анчоус. Я исправился как тебе, уж лучше? Насколько мой код тянет из 10?
Есть ли способ сделать сериализацию некого объекта и при этом "зашить туда" все библиотеки, которые он использует?Для того чтобы можно было запустить его на "чистом" питоне без предустановленных библиотек?Установить на том "чистом" питоне те библитеки не вариант.Можно ли еще сделать питоновский скрипт как экзешник?
>>1494130 (OP)Надо бы вопрос про запаковку и дистрибуцию скриптов включить в шапку треда. PyInstaller хороший вариант, но далеко не единственный.>>1499910>>1498261
>>1499030Конечно можно, более того, в пайчарме это тоже так работает, создаешь окружение каким угодно способом, а потом в настройках среды рзработки указываешь интерпретатор из этого окружения. В пайчарме просто автоматически создается новое окружение и делаются нужные настройки при создании проекта.
gospoda, хочу пощупать asyncio, не подскажете интересную задачу на пару дней, чтобы это сделать? Опыт питухона огромни за плечами.
>>1500059Так а чо он будет сервить? Мне просто не хочется неделю ковыряться с сопутствующими задачами, чтобы сделать скажем имиджборду. Ладно, я пока PEPы читаю и вот это https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.htmlhttp://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html
Как бы вы поступили в моей ситуации есть 'контора 1' и 'контора 2' вообщем контора 1 лучше и я прошел тестовое, но так получилось что вакансию закрыли, хотя мне сказали что в ноябре возможно возобновиться и мне отзвонят, я сказал ок, контора 2 сейчас ищет кандидата и я уверен что пройду туда и могу приступить к работе сейчас, хотя перспективы там похуже, так вот что мне выбрать: шанс что меня пригласят в норм контору или брать что дают?
>>1500119Из опыта собеседываний, я проследил для себя такую штуку: когда говорят, что что-то там возможно возобновится, "мы вас сохранили в базе и в будущем, если вакансия откроется, мы с вами свяжемся" -- это 99% значит, что никто никогда больше с тобой не свяжется.Идти ли на херовую работу? Смотря что ты хочешь от работы и что ты из себя представляешь. Если ты начинающий, тебе нужны деньги, и для тебя без проблем сменить работу через полгода -- можешь попытаться пойти куда берут, поднаберешься опыта и свалишь потихоньку, проходя собеседования ещё будучи на рабочем месте. Если же ты ищешь работу надолго, то думаю ответ очевиден: какой смысл идти на херовую работу и через полгода оказаться в той же ситуации, потому что она заебала.
>>1500024asyncio в python, как верно выразился уже не помню кто -- это язык в языке. Если твой код лезет в IO -- он должен быть написан на asyncio, иначе блокирующий IO повесит тебе eventloop. Проект использует, например, boto3? Поздравляю, тебе хана но это не точно. С тем же Celery а связке с asyncio будет больно. Помни о том, что почти все asyncio-либы находятся в стадии лютой альфы, и хорошо, если в них работает нужная тебе функциональностьБудет больно на стыках синхронного кода с асинхронным. Я по началу выл с ранних этапов инициализации и финализации приложения: в первом случае eventloop ещё нет, а во 2м уже нет. Но всё решаемоНевозможность асинхронного инита заставляет посмотреть на конструкторы заново и вынести всю асинхронную инициализацию в отдельный методРезюмирую. Вкатывайся, но будь готов, что придётся менять мышление
>>1494130 (OP)Стоит ли купить этот курс, как считаете?https://infopoisk.sale/shop/programmirovanie/obshchee-programmirovanie/kurs-programmirovaniya-na-python-36-3441.html
>>1494130 (OP)Нашёл в гугл диске книжку mysql for Python, с неё хорошо будет вкатываться в базы данных?
>>1500242Вкатывайся в БД через БД. Хочешь мускуль -- хорошо, раскатывай контейнер с мускулем (ниже 8 не рекомендую -- там ещё не выпилен ублюдочный автоинкремент и нет поддержки CTE) или mariadb, ставь Workbench и упярод. Тебя ждёт погружение в сказочный мир нормализации данных, профилирования запросов и особенностей транзакцийА Python предоставляет лишь биндинги
>>1500277>Вкатывайся в БД через БД.>Хочешь мускуль -- хорошоЭммм... Я не слежу, но мускуль всегда был самой ублюдочной реализацие РБД, даже хуже ебаного аксесса.Зачем ебать мозги, когда есть Постгре?Или, внезапно, мускуль решил начать реализовывать стандарты хоть немножко?
>>1500294У постгри свои болячки, связанные со структурой данных на диске. На хабре была кулсторя жопогарь инженеров Uber об их успехах нет использования постгри в качестве OLTP-системы.И да, ебучий ИхSQL наконец начал соответствовать стандарту. Меня поражает, что мускуль годами (sic!) был стандартом де-факто в вебе, и до релиза 8.0 был таким унылым говном. Блять, раз всех всё устраивало, это ж сколько в мире говноедов?Вообще у мускуля есть убер-фича -- разные движки. Хочешь логи в БД пердолить -- на тебе колоночный движок, хочешь иерархии строить -- на тебе графовое двигло. По крайней мере на их вики всё выглядит чертовски шоколадно
>>1500293Архитектурно node.js получше, там намного лучше асинхронность, всё встроено в язык, все библиотеки асинхронные, что в asyncio может быть довольно муторно и уродливо, в ноде элегантно и за пару строчек.Но как сам язык JS полное говно по сравнению с питоном. Многие базовые либы на питоне намного лучше сделаны, беда только в том, что они часто синхронные, но это умеренная проблема и не всегда проблема вообще.На ноде нет таких самых базовых вещей, как очереди, а с ними ты многие программы просто иначе проектируешь. Asyncio сложнее, требует большей квалификации, входной порог заметно выше, но в целом посерьёзнее. Но может начать стоит с ноды, а потом переехать.
>>1500306Ок, уже читаю про восьмерку. Вроде, становится получше, да.Я махнул рукой, охуев от того, как пятерка обходилась со временными типами - когда у наллабл поля вместо налла вставлялись нули, или когда, при апдейте одного поля, опустив упоминание других (а значит, я их не хочу апдейтить), эти самые другие забивались, опять же, нулями.Да, я знаю, что можно было вхуячить какую-то там моду в настройках, или вовсе использовать другой тип. Но это какой-то пиздец.Про невозможность использования подселектов для вью и уебочные сообщения об ошибках на пустом месте ("не могу создать временную таблицу" при каких-то простых операциях) я уж и вовсе молчу.Вообще, из почти десятка разных баз, с которыми я работал, ни одна не вызывала такой дикой жопной боли, как мускуль.Не знаю, что там было на хабре, я прочел прям на убере, речь идет не о "болячках" а о "мы считаем, что постгре менее эффективен в нашем случае, и вот почему..."Короче, этому анону насрать на проблемы репликации, и как физически устроен апдейт пары полей в записи.Ему нужно, чтобы база нормально реализовывала стандарт и не ебала мозги. Это точно не про мускуль версии 5 (не говоря уж о более ранних)
>>1500330Да, прочитал. Был вопрос, с чего учить сиквел, ты что-то стал за версии мускуля пиздеть. Мало того, что невпопад (sql не с mysql начинают), так еще и плохой практический совет начинать с последней версии.
>>1500329> когда у наллабл поля вместо налла вставлялись нулиО ДА! У меня тогда жопа просто неистово полыхала.> невозможность использования подселектов для вьюЭто шаблон select from select? Или что? Вьюхи не доводилось создавать.> временную таблицуЕщё одна ублюдочная часть MySQL. Вроде бы CTE позволяют отказаться от этих ебучих временных таблиц по каждому чиху.> Не знаю, что там было на хабре, я прочел прям на убере, речь идет не о "болячках" а о "мы считаем, что постгре менее эффективен в нашем случае, и вот почему..."Хм. Шота меня память подводит, надо глянуть ещё разик> Ему нужно, чтобы база нормально реализовывала стандарт и не ебала мозги. Это точно не про мускуль версии 5 (не говоря уж о более ранних)Да, два чаю. Тогда даже лучше firebird. Остались приятные впечатления
>>1500324На node.js удобно писать простые задачи, реально удобно. Компактнее и нагляднее.Но когда задачи растут, логика усложняется, ты начинаешь сталкиваться с тем, что в языке всё убого. Начиная с того, что сам JS убогий и примитивный по сравнению с питоном - передача параметров в функции, типизация, работа со словарями/списками и многое другое, и библиотеки кривые, по работе с xml, например. Но и по асинхронной части много чего в JS не хватает.Например, общий паттерн по обмену данными в многопоточных и асинхронных приложениях в том, чтобы через очереди это делать. У тебя одна задача слушает очередь, а другая или другие туда данные кладут. Быстро и наглядно, стройно, решает кучу проблем. В asyncio это базовый функционал, в node.js асинхронный очередей нет.
>>1500335Всё зависит от того, какой функционал от SQL ты хочешь освоить. Не всегда нужно что-то сложное. Может тебе и sqlite будет достаточно.
>>1500349Нынче вместо апача принято обходиться нджинском. А уж в случае питона практически необходимо, nginx нужен, а апач совсем не нужен.Потом, из Питона не очень принято напрямую базу дёргать. Типовой АД из LAMP выглядел так, что у тебя в коде куча всяких mysql_query(), в которых прямым текстом код запроса указывался, и всё это вперемешку с вёрсткой html. Нынче это bad style даже в php, а в питоне иначе сайты делают. Чаще какие-нибудь ORM используются, хотя не всегда.
У вас интересный диалог, но ничего не понятно. Я вообще ничего не знаю про базы данных, пока как я понял, мне нужно просто ставить постгрескьюэль или файрбирд и методом тыка в них что-нибудь сделать?
>>1500354Всё смешалось: люди, кони,Ну а я бессмертный пониСегодня ORM везде best practice, и использование SQL в коде -- дурной тон, но не всегда говнокод. Например, django ORM в щи тупая и ограниченная. Составной первичный ключ (timeseries, attributes)? До недавнего времени хуй вам, а не составной первичный ключ.А вот за смешивание в одном файле кода на разных языках, будь то SQL, HTML или ещё какой-нибудь НЁХ, я нещадно ебал и буду ебать
>>1500359Короче, пиздуешь на sql-ex ru и ебашишь. Как заебут задачи уровня `select 'helloworld' from dual`, пиздуешь на codewars, где с тебя снимут стружку. Дальше планку тебе будет задавать codewars
>>1500366Вы мне сейчас таки с пруфами хотите сказать что это во времена пятого мускуля было не популярно?
>>1500359Ты пока не объяснил, что ты хочешь в итоге получить.Если крутое знание SQL, то это одна история. Если умение работать с БД, то другая.Постгрю не так просто поставить, надо быть немного девопсом или ДБА, но это к sql никакого отношения не имеет. Если ты ничего не умеешь, то начни с sqlite. Никакого геморроя по части установки и обслуживания, так ты освоишь сами механизмы работы с БД и базовый SQL. А потом уже сядешь за серьёзные базы и серьёзный SQL, если потребуется.
>>1500374>Постгрю не так просто поставить, надо быть немного девопсом или ДБА, но это к sql никакого отношения не имеет. У нас какие-то разные релизы постгреса, видимо. В убунте apt-get install postgres, в маке и винде далее далее далее готово.
>>1500361>>1500374Понял, спасибо, сяду сначала за синтаксис sql и sqlite.Хочу получить знание SQL и субд на уровне бэкэнд джуна.
>>1500359Тебе нужно просто взять книжку и начать ее читать.Методом тыка делать ничего не надо.Когда ты начнешь понимать, чем table отличается от tablespace, и что значит "релационная" в словах "реляционная БД", поймешь, как элементарные селекты херачить, тогда и будешь думать, ставить тебе БД, или не ставить.Можно вообще ничего не ставить, взять какую-нибудь H2, там все на файлах и клиент в браузере.
>>1500373Ну да, конечно.Нормальные ребята могли работать с ораклом, мс-скл, с постгресом и парой-тройкой эмбеддед-баз. На яве и .нет.Но миллионы хуесосов выбирали пхп и мускул, "патамуштаочиньсложна".Так что это был именно выбор. Который устраивал двоечников. Как сейчас яваскрипт и поделия на нем.
>>1500361На sql-ex очень хуевая постановка задач.Хуй проссышь, чего они хотят.Не говоря уж о том, что названия таблиц во множественном числе.Явный признак пидараса.
>>1500338>select from select?Да.СТЕ же только в восьмой появились.Причем просто в селекте можно было сделать фром селект, а во вью - хуй на рыло.
>>1500381Эта связка решала задачи и показывала очень хорошую производительность, недостижимую на обычных БД.Использовали в основном базы MyISAM, которые даже без транзакций, то зато работали сильно быстрее, чем транзакционные БД.Потому что в вебе другие задачи, нужно очень много простых запросов, и MyISAM с этим прекрасно справлялся, а полноценные базы не могли и близко. Сейчас другая реальность, качество софта подросло, железо ускорилось и стало на порядок доступнее. Когда нужна высокая производительность чаще используют NoSQL подходы, когда нужно сложное хранение и выборка, сложная логика, тогда и базы соответствующие.
>>1500401Майисам не только без транзакций, но и без ссылочной целостности. Т.е. ты там можешь писать create constraint, но они не будут работать (по крайней мере, в ранних версиях так было).Это не потому что "сильно быстрее", а потому что разработчики - криворукие неумехи.Ебаный Caché появился в 1997-м, он еще быстрей, но 99% дба его не только не использовали, но даже и не слышали о нем.Единственное достоинство мускула в начале его пути - бесплатность. Оракл по скоростям крыл его как бык овцу. Даже мс-скл, который тогда был еще сайбейзом с переклеенной этикеткой, был в тыщу раз круче.>которые даже без транзакций, то зато работали сильно быстрее>нужно очень много простых запросовВидно, как хорошо ты разбираешься. Нужны запросы, поэтому без транзакций быстрее. Ок.В общем, не позорься, просто помолчи.Мускул - очевидное говно, данное человеку для воспитания смирения. Защищать его могут только "солнечные дети" с лишней хромосомой.>Когда нужна высокая производительность чаще используют NoSQL подходыКогда не смог осилить sql, испльзует NoSQL подходКогда не смог понять, что такое 3НФ, использует NoSQL подходКогда хранить как-то надо, а схему БД нарисовать не получается в силу слабоумия, использует NoSQL подходНу и еще пара ребят используют NoSQL по делу, но тут ты их не найдешь.
>>1500423>Когда не смог осилить sql, испльзует NoSQL подход>Когда не смог понять, что такое 3НФ, использует NoSQL подходТы мне напоминаешь студня, который недавно прошёл курс по теории баз данных и теперь думает, что очень умный, и жаждет применить услышанное на практике. Не понимая, что всей этой теории многие десятки лет и все всё конечно изучали.Такие начинают лепить код и архитектуру, который потом чудовищно тормозит, ради которого надо делать сложнейшие оптимизации движка СУБД. Вот кеши только неучи делают? А кеш как технология в принципе нарушает 2НФ. НФ нужны для концепции целостности и непротиворечивости данных. Но эта концепция прямо противоречит задачам оптимизации и производительности, поэтому всегда надо балансировать и выбирать.НФ нужны не чтобы дрочить на них.
>>1500494Пикрил - как выглядел изначально код, которыи необходимо дописать. И print вынесен за пределы функции. В подсказках черным по белому написано: Внутрь f-строки вставьте значение длины списка.>>1500519Прочитаи внимательно задание, ебло тупое. Про хронометраж ни слова. Нужно посчитать количество песен.>>1500509яндекс практикумhttps://praktikum.yandex.ru/trainer/backend-developer/lesson/3828fc2d-6030-4853-835c-aee39545ac2c/task/8a9b56c8-3e7e-4506-80ba-5a0fc11faa74/
>>1500494Я ваще хз че от меня требуется. В первом случае код тоже пашет как часы. На вот, по твоему варианту.
Сап, питонач. У меня возникла проблема с функцией find.Я просто не понимаю как рассчитывать этот регистр и как найти шагПересмотрел кучу видосов так и не понял. Последняя надежда только на тебя двач
Двач, почему я не могу использовать в своей программе скаченный шрифт?Я могу менять шрифт на любой другой , который был в системе раньше, т.е который я не качал самостоятельно, и все работает.Модуль pygame если что.
Читаю automate the boring stuff with python и хочу попросить ваш оценить мое решение. На отсутствие записи в файл не обращайте внимание, там тупо open(f, 'w') и закрытие. data = 'The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was unaffected by these events.'madlib_regex = re.compile(r'(NOUN|VERB|ADVERB|ADJECTIVE)')matches = madlib_regex.findall(data)for found in matches: sub = input(f'Enter a {found}: ') data = madlib_regex.sub(sub, data, 1)print(data)Спасибо.
>>1500430>кеш нарушает 2НФ.Я тебе предложил не позориться, но тебе неймется.Ну, давай, жги, хуй с тобой
>>1501019>На отсутствие записи в файл не обращайте внимание, там тупо open(f, 'w') и закрытие. Задание, кажется, просит прочитать данные из файла, но не говорит, куда деть результат? В таком случае open(f, 'r'), желательно через выражение with.Решение нормальное. Что можно улучшить:1. Заставить это работать для большого количества данных. Для входного файла в 10-20 Гб данные можно читать кусками (главное не разорвать какой-нибудь NOUN на NOU и N) и кусками же обрабатывать.2. Вызов madlib_regex.sub каждый раз создает новую строку. Этого можно избежать, если данные заранее разбивать на слова и хранить в списке. В целом в питоне часто можно избежать использования регулярок. Здесь все понятно, но regexps легко становятся трудными для восприятия.3. В input всегда используется артикль "a", но случае с ADJECTIVE должен быть артикль "an".Если от входных данных не ожидается никаких подводных камней, то сойдет и так. Тем более, в книге, я думаю, должна быть часть про то, что делать, если то и то не помещается в оперативную память.
>>1501019>>1501112Проще всего читать построчно.Общий код:1) блок запроса от пользователя NOUN, ADJECTIVE и других слов2) вложенные openwith open('oupput.txt', 'w') as f_output:___ with open('input.txt', 'r') as f_input:_______ for line in f_input.readline():___________ line = line.replace('NOUN', user_noun)___________ line = line.replace('VERB', user_verb)ну и там же запись в файл.
Итак, снова я вылажу на свет. Анчоусы, пикрил задача и ещё один моё решение к ней. Она работает, тесты прошла. Я пишу вот зачем, поясните мне как можно было бы проще сделать, может быть я какие-нибудь функции этого языка ещё не знаю, просветите как можно было бы записать это более проще и читаемее, а то я чуть мозг себе не сломал пока писал этот код.
>>1501178Мне также искренне жаль того анона который попытается в это вникнуть, т.к. это мой код и я его с трудом писал, хотя читаю легко, но наверное тому кто это не писал будет довольно сложно, но всё же, опытный анон, постарайся понять и пояснить мне где я обосрался.
>>1501191>>1501178и коммент - смотри доки на методы базовых типов. Вот у строк есть метод replace, где в можно лимитировать число замен. В данном случае одна замена.У питона вообще очень большой штатный функционал, и кучу всего можно сделать с его помощью.
>>1500489Откуда ты взял список, используемый внутри функции calc_stat в print? Не подразумевает ли задание, что нужно использовать тот список, который передаст в переменной listened их среда? То бишь написать что-то вродеprint(f'бла бла бла {calc_stat(listened)} бла бла бла')
>>1500489Скорее всего надо, чтобы в коде была функцияdef calc_stat(listened):...и только она, никакого внешнего кода. print() должен быть внутри этой функции. А платформа уже во время тестов сама будет вызывать calc_stat с разными тестовыми значениями.
>>1501200>>1501284Спасибо за внимание, друг, но вот тут >>1500571 я пробовал делать так, как ты подсказал. Результат на пике.Интересно, что хотя print() зашита в теле функции, при её вызове результат вычисления не отображается.
>>1501357С опытом придет, главное пили свои проекты, прокачивал скилл. Если будешь просто тачки на работе закрывать - соснешь хуйца, в перспективе.Ничего почитать не могу посоветовать.Хотя, если ты бээндщик, почитай из шапки книгу про микросервисы, очень интересно. Нет, не тому що это популярно, а для общего развития и понимания процессов.
С какой целью народ в конце 2019 года учит питон?Для какого-то обучения, прицеливается в какую специфическую область, просто потому что на слуху? Почему не какие-то другие технологии вроде ноды или го? Не траллинга ради, а информации для.
>>1501192> смотри доки на методы базовых типов. ещё раз огромное тебе, спасибо, анон. мне бы ещё документацией научиться пользоваться, а то я ей пользуюсь только в случае если мне из гугла результат выпадает.
>>1501416Потому что кому-то просто нравится погромирование, кто-то им занимается просто потому что интересно, а не потому что востребован и 300кк, всё иди нахуй.
>>1501438>2. ВостребованСомнительный пункт. В какой-то момент из-за хайпа питонщиков стало слишком много и те же зарплатки или рейты на фрилансе просели сильно. Ну разве что за копейки в виде 70к в год докапывать за индусами легаси.
>>1501444Ну, тут ты перегнул. Это скорее у ноды с го проблемы с востребованностью, чем у питона. Хз, что там по зп, но язык в любом случае достаточно востребован, это не haskell и даже не c++.> Python: 2834 вакансии> Go: 586 вакансий> Node.js: 500 вакансий
>>1500489>>1500562Получил ответ от техподдержки: "Пусть функция возвращает строку целиком — вызов, написанный в прекоде задачи, не изменяйте."Чёт совсем запутался. Выручайте, братья
>>1501473Там у питона сильно завышенная цифра, так как во многих вакансиях его указывают как вспомогательный язык.
>>1501416>Почему не какие-то другие технологии вроде ноды или гоПотому что async/await в питон уже завезли.Это сейчас самый универсальный язык, который пишется нормальными людьми, а не нодошкольниками.
>>1501483Окей, поищем только по названиям вакансий.Python: 370Go: 14Golang: 67Ноду искать проблематично, её часто пишут просто как "JavaScript".
>>1501496А ты ведь в курсе, что возраст языка != скорость его развития и количество полезных фич в нём?
>>1501473>Хз, что там по зпПотолок 5к у синьёра помидора в РФ. Релокетить питониста за бугор никто уже не будет, своих хватает.
аноны, пытаюсь вкатиться в веб на питоне (джанго и фласк собсно). и вот в моем миллионике-зажопье таких вакансий просто ну люто мало а те что есть шлют меня nahooi. так вот вопрос: стоит ли перекатываться в нейронки с машобом (таких вакансий в 4 раза больше сам считал но при этом я понимаю что будет заеба с матаном) или же пойти учить пхп и на нем чет пытаться найти (таких вакансий в 12 раз больше тоже сам считал)
>>1494130 (OP)Ребят, я недавно вкатился в питон, смотрел только курсы на ютубе. Что нужно читать, чтобы научиться пилить ботов? К сайтам коннеткиться там . Пока что планирую прочитать укус змеи и как то вкатываться в джанго
>>1501650так я и пытаюсь набить себе бабло и опыт работы чтобы нормально переехать в город для людей>>1501652дристанул на всю квартируаноны, а есть еще какие советы то?
>>1501673Если много вакансий на пхп, то учи пхп. Я вот смотрел hh нск и тут не особо много вакансий на пхп, бэкэнд джуниоров примерно равномерно мало на питоне, пхп, сишарпе и ноде. Нет такого, что если с питоном никак, то учишь пхп и сразу куча работы.
>>1501659Книжки есть в гуглдиске, но ты же всё равно ничего читать не будешь. К сайтам коннектиться это типо про парсинг? По большей части можно за вечер изучить его, это хуйня. Боты на всякие игры с другой сложная и муторная хуйня, которой мало кто занимается, вот тут есть серии прикольные https://pythonprogramming.net/bot-tutorials/
Вообще тред конечно пиздецовый. Или мамкины вкатывальщики, или пиарщики курсов-хуюрсов или просто вопросы, которые за секунду находятся в гугле, что позволяет сделать вывод, что здесь не знают не только питон, но и английский. Безблагодатность.
>>1501112>В таком случае open(f, 'r'), желательно через выражение with.Мне тоже так удобнее, но в этой книге почему-то по with ничего не говорится. До этой книги читать Python Crash Course 2nd, там без with никуда. >Заставить это работать для большого количества данных. Для входного файла в 10-20 Гб данные можно читать кусками (главное не разорвать какой-нибудь NOUN на NOU и N) и кусками же обрабатывать.Что значит читать кусками? Понятно, что как-то разделять файл на части, но как это логически даже выглядит и каким способами реализовать не понимаю. Разве что каждую строку отдельно читать, но опять же, что если у меня одна большая строка? >Вызов madlib_regex.sub каждый раз создает новую строку. Этого можно избежать, если данные заранее разбивать на слова и хранить в списке. В целом в питоне часто можно избежать использования регулярок. Здесь все понятно, но regexps легко становятся трудными для восприятия.Видел реализацию c replace, но решил, что вдруг в будущем надо будет регулярку юзать, поэтому чтобы запомнить написал так.>Если от входных данных не ожидается никаких подводных камней, то сойдет и так. Тем более, в книге, я думаю, должна быть часть про то, что делать, если то и то не помещается в оперативную память.Пока еще не было. Не рановато ли мне это изучать? Конечно же спасибо большое за ответ!
Я просто охуеваю с этой книжки она ломает мой мозг, 3 часа я думал над тем чтобы сделать пикрил задачу. И да функция replace по задумке автора не должна использоваться, он её назвал сахарной пудрой, типа это жирно и мажорно нужно без ней обойтись, лол. Использовать можно только lenstr[j]str[j:n]str.find(k)Да, да мой код гавно с костылями, вы можете лучше используя только 4 вышеприведённых инструмента? Пожалуйста, постите свои коды, я с удовольствием на них посмотрю.
Сап двач, пишу небольшую программку, которая бы скачивала картинки с сайта, у него страницы устроены по типу: site.com/тутчисло (это уже ссылка на саму картинку, допустим). Мне, условно, нужно сохранить все с 1 до 20.Я пишу:import requests a=int(1) #переменная для числа в ссылкеq = int(1) #переменная для числа в имени файлаwhile a <= 20: f=open(r'E:\11\e' +str(q)+ ".jpg","wb") #открываю файлы для записиufr = requests.get("http://site.com/"+str(a)) #задаю ссылкуa = int(a) + 1 q = int(q) + 1 f.write(ufr.content) f.close() В итоге создаются все 20 файлов, но содержимое есть только у первого. Помогите, пожалуйста, победить.
>>1501881Каждый раз, когда ты в цикле открываешь файл на запись, ты его перезаписываешьИспользуй конструкцию with open("имя файла", "wb") as f: и дальше твой цикл. В данном случае явно закрывать файл с помощью .close() не нужно, в этом преимущество такой конструкции Когда объявляешь переменные не обязательно явным образом указывать их тип, достаточно просто а = 1 и а +=1 , чтоб прибавить единицу к существующему значению а
>>1501874How to Think Like a Computer Scientist, Learning with Python, third edition.Только она на английском только, на русском нету.
Что за штука такая эти генераторы? Какого хрена при проходе с помощью os.walk() во второй раз пройтись я уже не смогу. Или вот: >>> a = (i for i in range(2, 8))>>> a<generator object <genexpr> at 0x00000270527236C8>>>> for i in a:... print(i)...234567>>> for i in a:... print(i)...>>>Во второй раз пройтись уже не могу. Объясните, пожалуйста. Спасибо.
>>1501881Так а сервер-то нормально отвечает?добавь там в цикл после реквеста print(ufr.status_code) и посмотри на ответы сервера
>>1501841Очевидное переполнение стека вызовов, никто количество вхождений не ограничивал.Решается лёгким переделыванием рекурсии в динамическое программирование снизу. https://ideone.com/E6c7mj
Каким образом можно модифицировать байт-код модуля перед выполнением, причём реализовать это в виде вызова определённой функции в любом месте python-кода этого модуля? Желательно без помощи сторонних библиотек. С модификацией кода отдельной функции всё предельно ясно. Со всем файлом как такое провернуть?
>>1494130 (OP)>В программирование есть некая возрастная дискриминация - молодые далбаебы нужны везде и всюду, старые - не очень. В основном период активности программиста - до 40-45 лет. Дальше если ты не перекатился куда-то выше или не замутил свой стартап - будет крайне печально поскольку ты никому не нужен и проще выкинуть тебя и нанять молодую обезьянку после института. Люди 40-45 лет работающие в IT редко программируют сутками, а скорее берут на себя организаторские обязаности - Тим лид, Проджект менеджер, etc.Т.е если я вкатываюсь в 27 лет и проработаю 13-18 лет и стану тим лидом, то всё норм еще может быть?
>>1501976>Т.е если я вкатываюсь в 27 лет и проработаю 13-18 лет и стану тим лидом, то всё норм еще может быть?Нет, не норм. Ты даун, которому интересна карьера, а не программирование.
>>1502353Хорошо, когда карьера и интерес к профессии совпадают. Ведь я не смогу реализовать своих интересов если не смогу реализоваться профессионально.
блять аноны. пытаюсь вкатиться в джангу уже целый месяц. почему вкатиться? потому что делал дважды нахуй курс по офиц докам и все время стопорилось на каком то моменте, я перелопачивал весь код и все равно нихуя ниче не работало, помимо этого пытался сделать по еще одному тутору с инета - тоже такая же хуйня, по книге - сейм щит, по видеоуроку одному - снова, далее щас нашел мега подробный блять видеокурс где для самых дебилов все - снова пиздос где у автора все ок и работает а у меня параша ебаная.в чем трабл то?
>>1502471Пиздуй выкатываться во фласк. Для меня джанга была плавильней мозгов, а фласку схватывал на лету.
>>1502477а может ли сильно различаться? там уроки по джанге 2.х от сентября 2018 я щас про последний видеокурс говорю кириллица отсутствует вообще везде>>1502483да на фласке полторы вакансии, а жить на што то надо. алсо, у меня жопа горит с того что там нужно все самому блять прикручивать, в то время как в джанге все изкаробки
Одумайтесь, дебики, нет работы в питухоне на вебе. Куда вы лезете. Нет бы дрочить бигдату, они мертвую джангу ковыряют сука ору немношко
>>1502499> алсо, у меня жопа горит с того что там нужно все самому блять прикручиватьТак если научишься/умеешь, чего гореть то.
>>1502499> там нужно все самому блять прикручивать, в то время как в джанге все изкаробкиЭто не баг, а фича. Во фласк намного легче вкатиться, но потом понимаешь, что тебе не хватает функционала, начинаешь подключать ORM, модели, аутентификацию, и вжух - изобрёл джангу. Зато разобрался по мере нужды, а не охуел от количества информации в самом начале и решил забить.
Это программа находит НОК для чисел от 1 до 20, но хотелось чуть переделать ее последний шаг , чтобы решение находилось не с помощью цикла , а с помощью рекурсии , это же тут возможно сделать
Блять а джанго рест фреймворк-то че еще за хуета такая. НАХУЙ. ЭТО. НУЖНО. Ебаный рот это все говно просто невозможно выучить. НА ХУ Я все это высирается. Вот чем просто джанго может не устроить, что нужно высрать еще какое-то дерьмо, которое я должен учить. Уебища прекратите это делать, вы совсем что ли там пизданулись???
Продублирую свой вопрос сюда, в ньюфаготреде мне ни на какие вопросы про сокеты не отвечают, изучаю асинхронность и пытаюсь лучше понять, как сокеты и селекторы работают, статью на англовики прочитал и она многое прояснила, но остаётся непонятность:У меня вопрос про сокеты, вот серверный сокет получил запрос и приложение вызвало accept(), ось создала ещё один сокетный файлик под это соединение. Дальше, если приложение клиента делает send() и закладывает некоторую информацию в свой сокет, то эта информация сразу же осью перекидывается на комп сервера и там загружается в сокет соединения? И уже из сокета соединения тогда приложение может просто выгрузить эту инфу сразу через recv()? Или в сокет соединения приходит только какой-то маячок, что удалённый клиент готов отправить данные, а сама вот эта информация будет переслана по интернету только когда сервер запросит recv()?То ест вот говорят буфер записи, буфер чтения у сокета, а где именно он физически находится? И ещё вот в функции select() понятно какие сокеты готовы к чтению, а что значит готовы к записи? Там будут все сокеты, у которых буфер на запись не переполнен?
>>1502555def lcm(args):____if len(args) == 2:________return args[0]args[1] // gcd(args)____else:________return lcm(lcm(args[:len(args) - 1]), args[-1])
>>1502572Сложно говорить без указания конкретного протокола, но>Дальше, если приложение клиента делает send() и закладывает некоторую информацию в свой сокет, то эта информация сразу же осью перекидывается на комп сервера и там загружается в сокет соединения?Да, именно так. Не только "осью перекидывается", при передаче по сети много посредников.> Или в сокет соединения приходит только какой-то маячок, что удалённый клиент готов отправить данные, а сама вот эта информация будет переслана по интернету только когда сервер запросит recv()?Нет, передается все сразу. Кроме того, успешный send не гарантирует, что на приемнике был вызван recv.> То ест вот говорят буфер записи, буфер чтения у сокета, а где именно он физически находится? В ядре ОС. Когда блокируется вызов send, это означает, что буфер записи переполнен и необходимо подождать, пока данные из него физически окажутся в сети. Когда вызов send возвращает, это означает, что данные были переданы в буфер записи. Это важно, успешный send не означает успешную передачу данных.> Там будут все сокеты, у которых буфер на запись не переполнен? Эм, вроде того. Запись ведь тоже может блокировать, а значит и select имеет смысл.
>>1502526Этот грубиян отчасти прав. При хорошем знании джанги мне сложно представить фреймворк, в котором будет проще или быстрее наклепать качественный сервис, апи или сайт. Проблема в том, что это плохо масштабируется.Если говорить о нагрузках, Джанго - синхронный фреймворк, и он будет справляться хуже. Тем более сейчас, когда все больше приложений начинают свою жизнь в облаке в виде множества сервисов. Туда сходи (синхронно), там данные запроси (синхронно), здесь проверь авторизацию (синхронно). Не то что бы это невозможно обойти, но люди просто голосуют ногами. У питона, я считаю, отличная реализация асинхронного IO, но джанговские эксперименты пока слишком маргинальны для тех, кому просто нужно делать деньги.Если говорить о росте кодовой базы, то Джанго мало что сообщает об организации большого количества кода. Сервисы, DI, что-нибудь еще готовое? К сожалению, стандартные рекомендации заканчиваются "толстыми" моделями и "приложениями", из которых мало кто может извлечь пользу.Здесь же начинает играть роль и сам язык. Когда-то скриптовые языки показали, что большие кодовые базы можно писать и без статической типизации (главное - протестировать), но теперь у нас есть языки со статической типизацией, которые выглядят почти как динамические (typescript, kotlin) - можно получить лучшее из двух миров - да еще и с non-nullable типами по умолчанию. Питон классный, но уже видно, что это не самый новй язык.Нельзя сказать, что это все не решается, но перед веб-экосистемой стоит много сложных вопросов, и нельзя сказать, что они точно и вовремя будут решены и что все будет хорошо.В то же время в бигдате у питона конкурентов намного меньше (скорее, эм, там питон и джава?) и его любят люди, которые не программисты по основной специальности (саенс и вот это вот всё).
>>1502594Из веба на питоне можно перескочить в веб на другом языке типо ГОвна с минимальными потерями, особенно если микросервисы дрочил (которые на питоне и так очень удобно писать и масштабировать при правильной архитектуре), занимаясь же бигдатой перескочить нельзя.
>>1502581Спасибо, анон!>Сложно говорить без указания конкретного протоколаИзвини, забыл написать, обычный tcp.