F.A.Q. https://github.com/TheKnightsWhoSayNi/info/wiki/HatСвой код кидайте через https://repl.it/languages/python3Книги: https://yadi.sk/d/tArKKuQu3Kejuq и ссылка на PyCharmКниги: https://yadi.sk/d/H-00n-UG3RSQem/Предыдущий тред >>1156174 (OP)Python питон
>>1159317>>1159295>IndexError: list assignment index out of range
>>1159295Если нужно изменить оригинал:from itertools import repeatstart_list[1:len(start_list)-1] = repeat(0, len(start_list) - 2)Если нужен новый лист:from itertools import repeatnew_list = [start_list[0], *repeat(0, len(start_list) - 2), start_list[len(start_list)-1]]Пнятненько?
Из help(dict):> | fromkeys(iterable, value=None, /) from builtins.type> | Returns a new dict with keys from iterable and values equal to value.Что значит >from builtins.type?
>>1159798 (OP)оп-хуйсайтик для самых зеленых антошекhttps://sites.google.com/view/pypry
>>1159688>кому надо тот сам комититТы я смотрю, не сильно понимаешь в менеджменте. А ведь ирония в том, что ленивые куски говна часто бывают гениальным разработчиками и чтобы им чего-то добиться, нужно, чтобы рядом были не менее гениальные менеджеры, понимающие в то же время в разработке. Классический пример - Стив Возняк, который в одно рыло сделал Apple II, но все же знают, что он бы его сам никогда не создал, всё это стало возможным, только потому что его вдохновлял Стив Джобс...>я тебе советовал не смотреть а стриммитьНу, во-первых, я другой анон. Во-вторых, логично сначала посмотреть на то, как это происходит у других, чтобы потом решить нужно ли оно тебе и если да, то что можно улучшить.
>>1159941>ленивые куски говна часто бывают гениальным разработчиками так себе утешение>сам никогда не создаля со свечкой не стоял, спорить не буду, знаю точно кто реально хочет — тот делает, остальные погружаются в маня-оправдания>логично сначала посмотреть нет, если тебе просто нужна мотивация, качай обс заводи и погнал, а если тебе надо найти йобыря, посветить сракой и собрать донаты со школьников, то да, гугли, рисуй кнопочки, пердолься с оверлаями, мультистримами и тд и тп
>>1159952Ты снова делишь на ноль. Сначала предлагаешь стримить, а потом предлагаешь это делать ни для кого, что равносильно тому, чтобы не стримить. При этом, похоже, ни одно стримера ты сам ни разу не смотрел даже.>кто реально хочет — тот делаетКак у тебя всё просто! Еще скажи, что мотивация либо есть, либо ее нет... Мир, блядь, не сводится к нулю и единице и мотивация вполне может описываться единичным вектором в двумерном гильбертовом комплексном пространстве, а суперпозиция с мотивациями других людей может давать интерференционную картину, где все выигрывают, даже если по отдельности вероятность каждого из них стать единицей была крайне мала...
>>1159954>а потом предлагаешь это делать ни для когоя сразу это предложил, ты читаешь мой текст и не понимаешь не то что сути, а даже конкретно написанногозапустить стрим — это проявить усердие и дисциплину по подготовке процесса, продумыванию задачи на перед, а это уже 90% успеха, когда ты примерно знаешь что будешь делать сильно мотивирует и успокаивает, нежели прыжок в неизвестностья пробовал расписывать подробные туду листы, но стримы для двух человек оказались в тыщу раз производительнеесмотрел мэда лол, как и все, но это раньше, а щас смотрю стримы алегоритмик и эпиков, но в записи, ибо жалко времени на весь этот бесполезный пездежь, и да там нету звона монеток кек, раньше были котики, но эпики сослали няшку-комунити-парнишку в испашку и поставили заместо него колхозное бабо-ебало и больше нет котиков, и большая часть стримов превратилась в унылое говнище, проще ченджлист на форуме пролистать>Как у тебя всё просто!так и есть родной>мотивация либо есть, либо ее нетбывают замотивированные на половину лол?ты либо тащишься от того что делаешь, либо убеждаешь себя в этомключевой момент не сидеть на жопе ровно когда дендриты тебя палкой пиздят, они просто хотят что бы ты стал лучше
>>1159958>запустить стрим — это проявить усердие и дисциплину по подготовке процессаЗапустить стрим - это нажать одну кнопку. Сама настройка занимает еще 5-10 минут. Олсо так сложилось, что я очень много стримов организовывал и провел. И в рамках хобби и по работе. В живую выступал перед аудиторией с лекциями, еще преподавал в аспирантуре. Всё это полезный опыт, но не нужно его переоценивать, более того, это вообще далеко не всем подходит, у многих вред от стресса значительно превысит любые положительные эффекты. Не говоря уже о том, что огромное время, потраченное на подготовку подачи материала, можно было бы посвятить изучению чего-то для себя нового.>бывают замотивированные на половину лол?Да. А еще бывает эмоциональное и профессиональное выгорание, депрессии, потеря цели в жизни, ощущение бессмысленности того, что делаешь и много всякого другого. Конечно, если ты еще молод, вряд-ли с чем-то подобным сталкивался.>либо тащишься от того что делаешь, либо убеждаешь себя в этомК сожалению, ты и сам не заметишь как одно превратится в другое. Кроме того, невозможно занимать всегда тем и только тем, что доставляет тебе удовольствие...>хотят что бы ты стал лучшеНет. Мозг и тело хотят только лениться и бесконечно сберегать энергию, удовлетворяя при этом основные первичные потребности, но не более того. И такой потребности, как саморазвитие, в нас нет и никогда не было. Ну иначе все бы становились учеными, стремились сделать великие открытия, разделяли идеи трансгуманизма и т.п. Но по факту мы имеем миллионы тупиц и единицы тех, кто пытается не быть тупым, но нихуя не понимает ни как этого добиться, ни, главное, - зачем!
>>1159962>Запустить стрим - это нажать одну кнопку.заставляешь меня думать что я перфекционист, я например хоть и кормлю людей говном, но стараюсь делать это хорошо и продуманно>вред от стресса дальше можно было не читать, ты просто прямым текстом сказал что сидите не рыпайтесь, да и вообще анон жизнь жизнь, каждый норовит обидеть, слишком много стресса, может выйти в окно?>эмоциональное и профессиональное выгорание, депрессии, потеря цели в жизни, ощущение бессмысленности того, что делаешь и почему все это? ты внутренний диалог с собой не ведешь что ле!?>если ты еще молод, вряд-ли с чем-то подобным сталкивалсябросил институт на 2 курсе, работал фотографом днем, потом во вторую смену на складе, после первой ночи фотографирования в ночном клубе украли камеру(спустя 2 недели после покупки на лове-подарок к др) в метро тому шо уснул, потом был немножко сиджи артистом, граф дизайнером и вот теперь к 26 докатился до тридешки в риалтаймеи таки да братуха, все по изичу, кушаю ноотропы нет и мне заибись ага спойлерИРОНИЯ>бесконечно сберегать энергию, удовлетворяя при этом основные первичные потребностиахаха мне можешь про это не рассказывать без работы со сбившимся режимом и маминым борщиком быстро скатываешься до животного брр нахуй>потребности, как саморазвитие, в нас нет и никогда не было. Ну иначе мы бы сидели и дальше на ветках и срали друг другу на головы>ни, главное, - зачем!даже на ошеломляющую пропоганду в совке все было не так радужно, хоть и имело успех, я при всем уважении к заслугам предков, считаю капитализм более совершенной формой, где отвественность за мотивацию лежит на индивиде, а скажем какой нибудь илон маск пробует тебя подзадорить
>>1159982Я в целом понимаю тебя и твою позицию (ты хочешь быть чем-то большим чем есть). Но тем не менее, вижу, что у тебя масса заблуждений в голове. Ну вот например:>>потребности, как саморазвитие, в нас нет и никогда не было. Ну иначе >мы бы сидели и дальше на ветках и срали друг другу на головыИронично, но люди - социальные животные, впрочем, как и все приматы. Именно социализация обусловила чрезмерное развитие коры головного мозга в результате чего мы стали, скажем так, разумными. А что есть социализация, ты задумывался когда-нибудь? Это обеспечение себе более высокого места в иерархии себе подобных! Считается, что это инстинкт. А еще мы уверенно можем заявить, что всё это завязано на размножение - более успешный, богатый, видимый и значимый человек всегда будет более востребован противоположным полом...Однако социализация != саморазвитию. И появившееся в последнее время деление интеллекта на, скажем так, классический и интеллект социальный - прямое тому доказательство. Человек хорош только в том, в чем постоянно совершенствуется и нельзя стать лучше в программировании, тратя все свои силы на обеспечение более высокого места в социальной иерархии...Если сказать совсем простыми словами - люди разные. И то, что ты это чуть-ли не прямо отрицаешь - такое себе.>считаю капитализм более совершенной формойНу да, вот только если глянуть как живут в самой крутой стране мира - Швейцарии, то быстро придешь к выводу, что там нихуя не капитализм, а скорее социализм! Если же посмотреть на Японию - лишь немногим менее благополучную страну, то там до сих пор чуть-ли на кастовое общество, полное условностей. Вывод напрашивается очевидный - дело не вовсе не форме как таковой, а в социуме и тех негласных и гласных договоренностях, которых соблюдаются. Индвиды же вроде Илона Маска как раз выбиваются из общей картины, потому что они никаких договоренностей не соблюдают как раз! Но ирония в том, что вряд-ли ты когда-нибудь станешь хотя бы валютным миллионером, не говоря уже о том, чтобы стать оригиналом, о котором будут говорить окружающие...
>>1159987>понимаю тебя и твою позицию nya ^_^полез в дебри, сделал все сложно и загрустил, анон не надо такесли тебе не нужен такой навык как социализация ок, капитализму нужны дети только лишь для передачи капитала, будь спецом, подыми лове, и даже лысым тебя полюбит какая нибудь соска спойлер и ты ее полюбишь, хотя бы на 2 года и все у вас будет хорошо, только не будь унылым депрессивным говном, вот уж точно такой никому не нужен самое забавное смотреть на няшных тян в таком состоянии, вот уж блять реально не понято чего им сука не хватает>люди разныеснаружи, побитые окружающей средой и стартовыми условиями, но суть одна — чудовищные приспособленческие способности и бесконечные возможности такого гибкого органа как мозг>вот только если глянуть то да, а если пожить там с пару лет, да еще изучить историю хотя бы лет за 500, то даааа инфантильные япошки с маленькими писюнами, ну тут вообще все очевидно, ну и вообще островные народы так себе>что вряд-ли ты когда-нибудь станешь хотя бы валютным миллионеромпфф>о котором будут говорить окружающие...лел, я же анонимус, мне такого даром не надо
Пошли нахуй, вниманиебляди
Релевантно ли начинать учить питон в 2д18 году? Сейчас занимаюсь в порядке хобби в основном жс говном: юзерскрипты, мелкая хуйня на электроне, думаю о ноде, как о бэкенде. Понятно, что порчти всё это может и питон(qt, flask etc), но стоит ли выбирать питон? Может лучше го какой-нибудь?Задачи: небольшие десктоп приложения, серверные вещи(бэкенды, боты, кравлеры).
>>1160010>небольшие десктоп приложенияНа пистоне можно конечно, но будет очень хуёво. Лучше Java или C#.
>>1160027Ну я имел ввиду pyqt
>>1160027>десктоп приложения>JavaОкстись, еретик!
>>1160038Только C++, только на кишку и только с молитвою
>>1160058Так ведь плюсы сами по себе вообще не имеют графических библиотек никаких, так что вариант еще хуже, чем ява. Что до последней - там надо как минимум мочь в MVC, иначе будет не гуй, а хуй...
Сап, анон. Появилась такая проблема. Возможна ли реализация вот такой 3D задачи: есть некоторая функция: S(x, y), где x - полярный угол, y - азимутальный угол. Есть вектор k который описывает сферу, т.е. координаты (k, x,y) (сферические). Эта сфера должна быть разноцветная, где цвет указывает величину S(x,y). Можно ли сделать реализацию в matplotlib и если можно, то как? Если еще короче: как привязать цвет в координатах (k,x,y) к величине S(x,y)?
>>1159822Да, я как увидел reduce, я прям почувствовал, что это именно та функция которая мне нужна скорее всего из-за англ значения, потому что когда я сам пытался писать обход, у меня получалось типа {dir: [subdir1, subdir2], subdir1: [subdir1.1, subdir1.2]...}. То есть мне нужно было объединить части словаря очень хитрым способом, я за это даже не брался, потому что думал что для этого должно быть какое-то элегантное решение, ибо задача common use как мне кажется. >>1159825> >reduce(dict.get, ['a', 'b'], my_dict)Да вот, в том и проблема. Я обычно для понимания по коду из примеров в терминале прохожусь, но подобную функцию так и не смог заставить работать. Однако в коде примера она работает. Но в любом случае большое спасибо. Хорошо объяснил и пример отличный. И я наконец-то сообразил, какую роль играет там dict.get! Пиздец, прочитал описание, понял что он делает, но... Эти знания не никак не скореллировали с тем что происходит в коде. Чувствую себя идиотом, который пытается вставить куб в круглое отверстие.Но всё ещё остался вопрос, почему list_of_keys берётся [:-1]Всё, понял. Спасибо няш :3.
>>1160077так?ты скажи чо надо или лучше сам гугли за UV пространства что бы внятно объяснить
uv mapping точнее, пространство то оно одно Ю и ВИ хех
>>1160095Построить сферу на которой цвет будет отображать значение посчитанной мною функции, которая зависит от углов. P.S. Картинка похожа на то что нужно.
>>1160097>Построить сферу не построить, а покрасить, хотя может ты и создать сможешь я не знаю, но это заеба какая то, сколько у тебя будет вершин? вот на пике 16 на 32 сфера развернута, 482 итого вершины, не заибешься красить?но вообще это голый шейдер так выглядит,
>>1160109В общем, да, правильнее будет покрасить. Тогда перестрою вопрос таким образом: ваши картинки (2 и 3) это грубо говоря карта, на которой цветом задана величина функции, которая зависит от координат. Вопрос 1: как привязать цвет к значению функции, а второе, как такую карту натянуть на сферу. Насчет вершин не понял вопрос: под вершиной имеется ввиду точка на карте?, если да, то вершин будет 360х360
Хорошо знаю жс. Хочу вкатиться в питон. Нужен ресурс где про синтаксис быстро пояснят, без воды. Дальше уже сам справлюсь. Посоветуй, ресурсов плз, анон.
>>1160134https://learnxinyminutes.com/docs/python/
>>1160117>карта, на которой цветом задана величина функции, которая зависит от координатеще ни разу никто не формулировал понятие World Space Normal так точно лол>как привязать цвет к значению функциия без понятия, тыж программист>как такую карту натянуть на сферу3д модель состоит из вершин, каждая из которых имеет координаты и направление(что бы полики нормально шейдились) так вот что бы натянуть карту нужно модель "развернуть" UV Unwrap т.е разрезать модель по заранее выбранным ребрам и все 3д вершины переложить на Х и У (U и V по нашему) а дальше интересный момент, поскольку тебе нужно 360 вершин то на полюсах придется убрать по одной вершине и тогда развертка превращается в говно, либо ее можно сделать прямоугольной, но тогда будет лютый очевидный стреч ну и рисовать саму мапу тебе соотсвенно нужно под разверткусколько цветов нужно отобразить и в каком качестве, анон пиши подробно чо хочешь еба
>>1160135Спасибо тебе анончик.
или вот икосфера например
>>1160138Это для второй версии если что. Там есть ссылка на третью.
В чем проблемы могут быть если стоит питон 3.4?
Анон а как положено, вот я позаимствовал кусок кода с сайта\гитхаба, я теперь должен указать его в исходниках? Вначале документа? Как это должно выглядеть чтоб не моветон?
>>1160178async/await нет, по крайней мере.
>>1160178нет аннотаций типов, за константами http-кодов нужно лазить хуй пойми куда или ставить третьестороннюю писичку
>>1160208>нет аннотаций типовЕе уберут в 3.7 и вернут в 4.0
>>1160182Смотри под какой лицензией он распространялся, от этого зависит
>>1160178Проблема только установить 3.5 или 3.6. Остальные проблемы надуманные.
>>1160182Если что-то распространённое, например реализация связного списка, можешь вообще забить на копирайт. Ну или дополнительно имена переменным заменить. Ссылку в коде хорошо держать в первую очередь для себя самого. Даже если на тебя начнут залупаться юридически, что крайне маловероятно, просто удаляешь этот кусок и пишешь заново.
>>1160077Использовать функцию проекции сферы на 2д поверхность (причём это может быть как в географических атласах разворот сферы, может быть текстура для натягивания в opengl, может быть как бы фотография сферы с расстояния). Далее попиксельно для всей картинки вычислять в какую точку сферы падает луч, брать её полярные координаты, вычислять S, вычислять функцию цвета от результата S (три компоненты RGB), записать цвет в этот пиксель. Для антиалиасинга советую делать пикселей больше, например в 16 раз, а потом уменьшить картинку до целевого размера.
Где можно ознакомиться со списком библиотек под Питон?В основном графических.
>>1160498Искать. Списка скорее всего не будет, так как питон плохо подходит для графики. Есть по сути стандартная библиотека pillow, есть множество обёрток над сишными к примеру cairo, есть те которые завязаны на 3д апи (opengl), можешь хоть профессиональными рендер-движками управлять из питона в блендере. Если ты тот что со сферой возится, рисуй попиксельно, либо в numpy вычисли всё, потом переведи в pillow и сохрани как картинку.
>>1160498https://github.com/vinta/awesome-python
>>1160519А чому pyglet в раздел GUI ко всяким ткинтеркам и прочит кутям запихнули-то, а не gamedev?
>>1160522Потому что он и относится к ним.
>>1160525Но ведь нет, у него толком виджетов-то даже никаких нет, он скорее для создания графических приложений, а не конкретно интерфейсов. Разумеется, на его базе можно что угодно сделать, и есть всякие pyglet-gui.
Посоветуйте ide под линукс. Может есть что то годное, кроме чарма?
>>1160580вскод>годное, кроме чармачарм не годный
>>1160580спидер
>>1160582О, спасибо что напомнил.
>>1160580Очевидный emacs.
Аноны, нужно запилить одностраничное приложение, какой фреймворк заюзать?Хочу попробовать что-нибудь новое и то, что в перспективе может пригодиться(хотя бы для пет прожектов).Джанго и Фласк уже юзал много раз, сейчас вот между Пирамидой и Ботлом выбираю.
>>1160617aiohttp
>>1159952>так себе утешениеЭто и не было утешением. "Гениальные кодеры бывают ленивыми кусками дерьма" близко к "ленивые куски дерьма бывают гениальными кодерами", но ни там не там нет утверждения, из которого можно понять, что если ты "ленивый кусок дерьма", то ты автоматом "гениальный кодер", которому просто нужен манагер.
>>1160627Вот как раз сегодня задумывался о том что импликация это не эквивалентность. Можно прикинуть: даже если 50% гениальных кодеров ленивые жопы, гениев всего 0.1%, а ленивых жоп 95%, то вероятность того что будучи ленивой жопой ты станешь гениальным кодером: 0.5 × 0.001 / 0.95 = 1/1900 ~ 0.0526%
>>1159798 (OP)Подскажите, пожалуйста. Пытаюсь поиграться с tkinter используя pycharm но выходит пикрелейтед. Пакеты установлены в систему (Mint 18). При запуске не через pycharm импортит корректно.
>>1160638Вероятно, у тебя шарм криво настроен, не на то виртуальное окружение или не даже на ту версию пайтона...
>>1160641Вероятно. Но я не понимаю что не так. Вроде он даже видит это tkinter, но подцеплять не хочет.
>>1160644Сделай простой проект из проблемного импорта и print('hui') - покажи весь стек ошибок, который вылезает при его запуске...
Анон, есть вопросы по первой картинке.1) Что бля вообще происходит? Я знаю про декораторы функций - этой функции, которые принимают 1 функцию и возвращают одну функцию. Я знаю про декораторы классов - это функция, которая принимает 1 класс и возвращает 1 класс. А что тут делают вот этим @Property. Это же вообще не функция, а класс. Как они используют ее в виде декоратора? Класс же даже ничего не возвращает.2)Как работает extension? Ведь на него применяются два декоратора (где первый мне непонятен, а второй обычный декоратор функции). Но ведь декораторы работают так: @decorator def foo(): после чего создается object reference с именем foo связанный с результатом работы декоратора. Значит после @Property def extension, extension будет равен результату работы декоратора - объекту класса Property (непонятно как), а после @extension.setter def extension, extension станет равен результату работы декоратора - самому себе. Как это понимать? Второй пик для понимая, что я имею в виду.
>>1160646>@Propertyhttp://pythonz.net/references/named/property/
>>1160644> я не понимаю что не так>>1160638>pycharm
>>1160645Как-то так.
>>1160647Даже если встроенная property работает так же как и описанная Property, то эта страница не отвечает ни на один из вопросов.
>>1160650У тебя похоже модуль не установлен в том виратуальном окружении, в котором запускается код из шарма. Предположу, что ты его поставил в глобал, а запускаешь в шарме в каком-то из venv-ов.
>>1160646Декоратор может вернуть что угодно. Да в общем-то и принять на вход что угодно. Вот только синтаксис не даст применить его через @ на что-то кроме функции или класса.То что у тебя в книжке называется дескрипторы. Это как если бы ты переопределил --getattr--, --setattr--, сделал там много if по разным именам атрибутов, и в каждом таком if прописал какое-то кастомное поведение. То есть дескрипторы с их меджик методами вызываются непосредстенно внутренностями питона. Если хочешь посмотреть что там вернули декораторы, никто не воспрещает, возьми да сделай print(..), print(dir(..)), print(type(..)), и тайны приоткроются.
>>1160653По ходу класс тупо реализует методы для работы со свойством. Вложенные классы ведь никто не запрещал?
>>1160660В питоне всё объект.
>>1160656Ставил, я в глобал, да. Но запускаю-то вроде тоже через Python3.5. Или нет?
>>1160663Вроде да, если, конечно, это правильный лаунчер.
>>1160666Проблема оказалась в Минте. Переустановил шарм скачав с сайта а не с менеджера в системе и все заработало.
>>1160684Ох уж эти ваши кривые дистрибутивы... Пользуйся арчем или генту - это единственные два линукса, где все пакеты, включая ядро, используются в неизмененном ванильном виде.
Блядь анон, я не понимаю!1 Сука!Есть список из ключей подсловаря. Пытаюсь применить к нему sorted(listfromkeys), а он мне TypeError: 'dict' object is not callable.Я уже как только не пытался, пиздец! Что з ахуйня, чё он мне пиздит? Меня уже трисёт нахуй!!!
>>1160686если тебе надо отсортировать словарь словарей по ключам вложенных словарей, то это можно сделать, например, так:sorted(d.items(), key=lambda x: x[1]['key'])
>>1160689Мне нужен лишь список ключей для "вывода" текста. Ключи -- заголовки, но прежде чем вывести их надо отсортировать. Сам словарь сортировать мне не нужно. Просто этот грёбаный список. Я не понимаю, почему мне говорит тайперрор dict object is not callable, когда это по всем параметрам список, хоть и создан из ключей.
>>1160693Покажи код.
>>1160695Тут особо показывать нечего. Сейчас в терминале не работает то, что работает в коде. Я в ахуе короче! Просто В АХУЕ!Вот тот код что в строке работает.3 пик подключаем в терминале ту же базу, выполняем тот же сорт и...
>>1160703ЕБАААААТЬ!Перезапустил питона в терминале и заработало. СУка ну как так? Как так то блядь? К такому жизнь меня не готовила блядь!
>>1160685>это единственные щас арчовые репки с ауром уже в любом нормальном дистрибутиве с граф инстллером, манжара топчик например, можно даже сразу с и3 ВМ накатывать>>1160684а убунтоподобные загибаются да, каканинал похуй на десктоп, они ушли за баблом на сервера
Что я делаю не так то, йопту? https://repl.it/repls/ForestgreenPerfumedLocationsПри этом если убрать строку __slots__ то все работает нормально, но я хочу сделать с ней и не понимаю двух вещей. Почему и PyCharm и repl подсвечивают все атрибуты в __init__, говоря, что их нет в __slots__, когда это атрибуты класса дескрипторы же, а не экземпляра? Ну и почему соответственно вываливается с ошибкой "Product' object has no attribute '__id'" Понятно, что его нет, цель setter'a установить этот атрибут.
>>1160706Ты где-то ранее создал словарь, назвав переменную "sorted", очевидно же.
>>1160847Во-первых, ты нахуя в __dict__ объекта лезешь, если сам же __slots__ ему указал? Наркоман?Во-вторых, кто там атрибуты класса, всё у тебя экземпляра же.В-третьих, виноват name mangling (гугли), но разбираться в этой каше (я не эксперт, но я бы за такой код премию не дал) лень, но если заменить все "__" на "_", то работает нормально.
>>1160870>нахуя в __dict__Потому что я хотел проверить, как устанавливаются атрибуты, уже исправил поставив нормальный __str__.>Во-вторых, кто там атрибуты класса, всё у тебя экземпляра же.Декораторы добавляют в класс атрибуты id, name и т.д. Питон видя в __init__ self.id, self.name ищет эти имена в словаре. А его нет. Тогда он ищет их в классе и находит их в словаре класса. Значит это атрибуты класса, не?>В-третьих, виноват name manglingЗнаю что такое, но забыл про него. Заменил name = "__"+atr_name на name = "_{}__{}".format(cls.__name__, atr_name), все работает, спасибо.>я не эксперт, но я бы за такой код премию не далПочему?
>>1160621Не нужно
Как во фласке применить before_request только к определенному роуту? Я в принципе придумал как, создать отдельные blueprint'ы для нужных мне роутов, но это хуёво с точки зрения архитектуры. Собственно, сабж.
>Krita is a Qt-based application. In principle, you can use any Python binding to Qt as long as it's using exactly the same version of Qt that Krita uses.Вчера релизнулась крита 4.0, помимо всего прочего завезли питония, так что кому нехуя делать и кто хочет потискать кути5 - идите на форума и аскайте художников за реквестыhttps://api.kde.org/extragear-api/graphics-apidocs/krita/libs/libkis/html/index.htmlhttps://www.youtube.com/watch?v=fIOhd3xXv-A
>>1159798 (OP)Мы, питонисты,ребята плечисты!Нас не заманишьgoto мясистым!Не совратишь нассинтаксом тегов!... На линии 8IndentationError...
>>1160977Ебани декоратор и там делай, что нужно, ну или в функциональном стиле передавай в декоратор коллбэк
Сап аноны, знаю синтаксис но не знаю как кодить, читаю чужой код и мало что понимаю. Сам похожее написать не смогу.Жду ваши ответы какую книгу начать зубрить.
>>1161216Практиковаться. Бросай книжки читать.https://checkio.org/https://www.practicepython.org/
Сап, двач, нужен совет. Давеча оформил на Google cloud VPS, один хрен 300 баксов в подарок, а хочется потрогать писечку как она есть. За полгода халявы глядишь чему полезному научусь, подумал я и все заверте... Сразу скажу, что опыта в программировании у меня хуй да нихуя (html и css знаю, на Javascript немного пишу для веба, php на уровне быдлокодера)Мне нужна доступная инструкция как на платформе гугла развернуть свой веб-проект на Python и Django, (желательно с django CMS) склеить его с базой данных MySQL и сцепить его через Git с моим домашним ломанным pyCharm. как это сделать? Справки гугла не помогают (или это я такой тупой, что не могу въехать)Допустим я хочу создать сайт (имиджборду, дейтинг, форум, поебать) я иду в Google cloud, регаю аккаунт, получаю 300 баксов на счет, на них могу позволить себе машину в 2 ядра 4 гига на полгода, окей, для обучения должно хватить, беру машину на CentOS или Debian (я хз, что лучше, посоветуйте) и тут начинается непонятная хуйня, доступ по SSH есть, команды работают, куда копать дальше? Как настроить доступ по FTP? Как сделать так, чтобы Python 3.6 работал всегда, а сервер не подсовывал мне 2.7? Гугл юзал, вторые сутки вникаю, не выходит. До этого спокойно настраивал по мануалам VPS на шаред хосте под php, держал несколько Wordpress сайтов, проблем не было.
>>1161266Установить python3. Освоить virtualenv, не пользоваться пакетами дистрибутива, ставить через pip внутри этого virtualenv. Гиту достаточно наличия ssh, хотя я предпочитаю локально написанный скрипт, который делает zip файл, вливает его по scp, далее через ssh -c запускает там определённый набор команд и всё разворачивается. То есть правило хорошего тона это не держать на серваке никаких скриптов отвечающих за деплой, только голый ssh наружу.
>>1161266Тебе скорее в сисадминов тред с такими вопросами. В двух словах даже и не объяснить как поднять веб-сервер с пайтон-сайтом... И да, можно всё сделать руками, но сейчас как бы эра девупсов - автоматизация через системы управлениям конфигурациями, микросервисы на докере и всё такое.
>>1161267 Бро, сразу извиняюсь, если заебываю вопросами:>Установить python3Установил 3.6, по запросу # python вываливается 2.7 (понимаю, что так наверное и должно быть, просто я тупой)>Освоить virtualenvВот,информацию, что это - я нашел, не могу дойти, зачем это юзать и в чем преимущества.> не пользоваться пакетами дистрибутиване понимаю, о чем идет речь.>ставить через pip внутри этого virtualenv.Это ты о Django и остальных инструментах?>Гиту достаточно наличия ssh, хотя я предпочитаю локально написанный скрипт, который делает zip файл, вливает его по scp, далее через ssh -c запускает там определённый набор команд и всё разворачивается. То есть правило хорошего тона это не держать на серваке никаких скриптов отвечающих за деплой, только голый ssh наружу.тут все более-менее понятно, инструкцию по привязке Git нарыл, но мне до этого еще как до африки пешком.Смотри, я полный нуб, о существовании Python узнал пару лет назад, месяц назад прошел курс обучения в приложении Solo learn, со стандартной библиотекой разбираюсь, как завещали.Суть в чем: везде пишут, что Python и Django - это самые, блять, простые решения и на них веб-проект поднять легче, чем член школьника во время первой ебли, и дескать любой может не отвлекаться на тонкую настройку а СРАЗУ, блять, начинать писать код, а по итогу я луплю в консоль вторые сутки и не могу понять, как мне развернуть свой проект на сервере и иметь к нему доступ.Есть какие-то пошаговые мануалы, ветки форумов, где это все можно в более-менее доступной форме усвоить?Есть информация, что кодить лучше начинать с реально поставленной задачи, вот я и хочу сделать понятный мне тестовый проект, пусть он будет велосипедом и никому нахуй не нужен, зато построен в привычном для большинства программистов пайплайне.
>>1161273>по запросу # python вываливается 2.7 python3 надо писать же.>virtualenvЧтобы все твои зависимости были установлены не глобально, а в отдельную папку - так можно быстро переключиться с одного проекта на другой, например. Делается так:$ python3 -m venv myname$ source myname/bin/activate(myname) $ deactivateЕсли тебе надо будет в скрипте запускать из venva, просто указывай путь до пайтона, который в папке myname, а не до системного.
>>1161271Да мне бы без объяснений лишних, просто ссылкой, куда пойти. Понятно, что к админам, но неужели никто тут не разворачивал на своем VPS платформу для работы? Раз уж мимохую вроде меня это понадобилось, наверное, решение где-то должно быть.кстати, у того же гугла есть готовый солюшен под Джанго, по сути - та же ВМ на Дебиане, но с ней ровно та же история. СЛОЖНА, НИХУЯ НИПАНЯТНА.
Аноны, вот задумался, а если в Джанге у меня на странице будет две одинаковые формы, как мне выловить обе?
>>1161273>Django - это самые, блять, простые решенияНа мой взгляд flask проще. Советую с него начать.>>1161275Я разворачивал. Очень долго рассказывать что к чему... Можешь вот тут почитать: https://habrahabr.ru/post/120363/
>>1161275Что-то одной ссылкой не получается, вот еще вариант с нуля: https://habrahabr.ru/post/250433/
>>1161274>python3 надо писать же.только что осознал собственную никчемность.>Чтобы все твои зависимости были установлены не глобально, а в отдельную папку - так можно быстро переключиться с одного проекта на другой, например. Делается так:$ python3 -m venv myname$ source myname/bin/activate(myname) $ deactivateинтересное решение, буду пробовать, премного благодарен, стало чуть понятнее.>>1161278>Я разворачивал. Очень долго рассказывать что к чему... Можешь вот тут почитать: https://habrahabr.ru/post/120363/благодарю, сейчас же попробую)
>>1161274Лучше использовать venvwrapper.
Пагни нид хелпКто-то работал с кубернетис клиентом?Суть в том что у меня фейлится соединение с https сервером из-за socket ssl проверки, хотя я и сконфигурил verify_ssl в False. ВТФ???Как-же заебало это ебучее ssl все время из-за него какие-то проблемы Нет, подключится к HTTP я не могу
Анон, я понимаю, что скармливая путь os.path функциям в питоне в виде строки, мне надо или использовать raw string или эскейпить все \ как \\. Но почему при выводе этих путей Питон сам их зачем-то эскейпит как \\?
>>1161411Ни в коем случае не лучше.
>>1161446Потому что у тебя Ш1ИДОШ5 вместо операционной системы.
>>1161451И чо? Сама шинда в cmd пишет пути с одним \
начал копать фляжку, как организован ввод переменных? где читать? Есть у меня html страница, в ней форма, как запилить что эта форма принимает переменную? Подскажите, дальше как по маслу пойдет.
>>1161471Ты ебанутый? В шапке книги про все это есть, надеюсь, ты хотя бы про методы http запроса знаешь?
>>1161452Ну эскейпит и эскейпит, тебе жалко, что ли? Это только в интерактивном эскейпит, если что, а print(s) всё ок отображает.Что интересно, s.__repr__() заэскепит те слеши, которые служили эскейпом изначального, превращяя r'\a' в \\\\a, лол.
>>1161519эм, превращая, уж простите.
В PyCharm'e есть что для создания GUI? Например, создания форм Qt.
Sup чешуйчатые.Есть словарь, значения элементов которого тоже словари. Более того значения значений элементов словаря тоже словари. Такой вот многомерный массив.Выглядит примерно так:Словарь1|Элемент 1 |Лист1 |Лист2 |Лист3|Элемент 2 |Лист1 |Лист2 |Лист3 |Лист4|Элемент 2 |Лист1 |Лист2-------------------------|Элемент n |Лист1 |Лист2 |Лист3 |Лист4 |Лист5Вопрос в следующем: Как взять по одному листочку на каждой конечной ветке, таким образом получить множество длиною в количество родительских ветвей листьев? Более того нужно перебрать все возможные комбинации взятия листьев при незнании ни количества ветвей, ни количества листьев, т.е. при неизвестном количестве вложенных циклов.Гугл говорит через рекурсию, но как это запилить сложна, сложна, непонятна
У меня у одного бомбит от того что в РФ так мало вакансий на змее? При этом в штатах или ЕС их гораздо больше в % соотношении.В моей мухосрани-миллионнике открыти 10 вакансий на пайтоне, 50+ на пхп, 30+ на джаве. Что за херня, аноны?
>>1161649https://habrahabr.ru/post/322332/
>>1161649В миллионом мухосранске в котором я живу не одной вакансии на питоне.
Сап, питонисты. Подскажите, каким образом можно составить изображение по пикселю, которые поступают последовательно из ком порта? Формат и разрешение известны.
>>1161670https://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.frombytesЛибо putpixel циклом вызывать, что очень медленно, зато универсально.
>>1159798 (OP)Прочитал теорию из книги "Автоматизация рутинных задач..." Свейгарта. Через треть книги начинаются примеры автоматизации, и я в них жестко спотыкаюсь, зависая на каждой строке в попытках понять, зачем оно и почему работает. Плюс очень неудобно из-за того, что электронный формат. Сама книга очень дорогая, жаба душит полторы штуки отдавать, хотя кажется полезной.Можете подсказать какую-нибудь книжку, которую вот реально не жалко купить, и чтобы она охуенно все расписывала. Типа Лутца вашего, но их же у него много. Есть что-то универсальное?
>>1161673Книги не нужны.
>>1161674Нужны. Всегда хорошо иметь под рукой мануал в бумажном виде с загнутым уголком на нужной странице.
>>1161649Ну хочешь иди работай на пхп. Что тебе ещё сказать? К сожалению кроме питона нужно знать ещё очень и очень много других вещей, и эти вещи часто повторяются где бы ты ни работал, базы данных например.
>>1161676Освой grep и текстовые заметки в md/txt/rst, или гуголь и стековерфлоу/заметки в браузере. Намного быстрее чем любая бумага.
>>1161652Хорошая статья. В очередной раз убедился в том, что нужно учить не язык, а программирование и уметь продать свой труд.Сама постановка вопросов "какой язык учить?", "На чем пишешь?" и т.д. - это глупость. Нужно именно учиться программировать в реальных условиях и на тех инструментах, которые сейчас востребованы.Но чтобы это уметь нужно 1) уметь программировать, 2) постоянно изучать новые технологии (если их стоит изучать, конечно).А на одном лишь питоне сложно будет.Повторю то, что я уже много раз говорил.Первый язык должен быть ассемблер, потом изучаете Си, дальше C++ или Java. Ну а потом можно и скриптовые языки типа Питона или Руби. Понятно, что это не такая четкая схема 1->2->3->4, но что-то типа того.Ну а битарды и дальше могут продолжать свои "Питон клевый молодежный язык..."
>>1161674Двачую, документация питон, гугл примеры использования, всё уже в интернете.
>>1161680То есть по факту я переношу то, что уже есть в книге, на цифровой вариант, который у меня уже и так есть и в котором неудобно ориентироваться. Хорошая идея.
>>1161682>Первый язык должен быть ассемблер, потом изучаете Си, дальше C++ или Java. Ну а потом можно и скриптовые языки типа Питона или РубиХороший совет для тех, кому уже за 20 и они решили попробовать себя в программировании. Дескать, ребята, потратьте еще пару лет на теорию, потом что-нибудь предпринимайте.
>>1161673>Автоматизация рутинных задач..." Свейгарта>Сама книга очень бесплатная, вот тут https://sites.google.com/view/pypry/ есть видос где индус ее вместе с тобой будет проходить>>1161674+>>1161682вот этого в президенты шапку кроме ассемблера это клиника, всегда нужно думать о цели в первую очередь и минимально необходымых средствах для ее достижения, а подрочить теч можно и на пенсии>>1161683просто иногда надо снять стресс, вытащить наружу свою проблему и поделиться её с понимающим аноном
>>1161686>Хороший совет для тех, кому уже за 20 Мир жесток. Работай хоть уборщиком, но асм изучи. Пока ты не понимаешь, как работает проц, ты не программист, а так, быдлокодер.Но я соглашусь, что асм надо изучать еще в школьные годы. Я сам его изучал, когда мне было 14 лет. Тогда еще был жив васм.ру (сейчас он переродился). wasm.ru - это реинкарнация assembler.ru. А ньюфаги и не слышали.Потом на одном лишь асме кодить надоело и я начал использовать C. Писал разные утилитки, драйвера для Windows XP. Помню изучал серию статей Four-F по написанию драйверов под WinNT.Ну а потом начал больше писать на C++ и Perl. Потом ушел из перла и начал вместо него использовать питон. Но скриптовые языки у меня использовались как вспомогательные, а не основные. Если думаешь, на чем писать в продакшен, то выбирай джаву. Ну а для души asm/C++/python.
>>1161690>Пока ты не понимаешь с ходу что здесь написано, 0111001101101111011100110110100100100000011010000111010101101001001000000110001001101001011001000110110001101111, ты не программист, а так, быдлокодер.
>>1161688>бесплатная, вот тут https://sites.google.com/view/pypry/Зачем мне, я ее и так читаю. Сказал же, треть книги осилил. Но бэктречить по pdf-файлу, который является сканом, дюже неудобно.
>>1161694011100110110111101110011011010010010000001110011011000010110110100100000011001010110001001100001011011100110000101110100
>>1161694>0111001101101111011100110110100100100000011010000111010101101001001000000110001001101001011001000110110001101111Надеюсь, ты это хотя бы сгенерировал, а не писал от руки?
Почаны, кто-нибудь использовал Gevent в хайдлоаде, как оно, много ли нынче геммороя? Собираюсь делать приложения для анализа кремлеботов и сисянботов и нужно будет собирать из интернета большую биг дату
>>1161706Почаны, кто-нибудь использовал Молоток в плетении из бисера, как оно, много ли нынче геммороя? Собираюсь делать поклейку из бумаги и картона и нужно будет много ватманов и ножниц.
>>1161690>>Пока ты не понимаешь, как работает проц, ты не программист, а так, быдлокодер.Блять, вот прям досконально изучать АСМ нахуй не надо, только ознакомиться. Всё равно писать на нем скорее-всего не придётся. Если охота понять как железо работает, лучше не ебаться а ассемблером, а Архитектуру компьютера от Таненбаума почитать, а ассемблер там будет, в целях нужных количествах для ознакомления.
>>1161708Поссал тебе на голову.
>>1161705яж НАСТОЯИЩЕЙ, никак некоторые
>>1161553Элементарно жи.Шаг 1. Напиши хотя бы просто рекурсивный обход одной ветки, чтобы получить на выходе список ['a', 'b', 'c', 'd'].Шаг 2. Заметь, что до точки 'c' обе линии одинаковы, и лишь на c расходятся, значит на этой точке нужно дублировать имеющийся на тот момент список ['a', 'b', 'c'], добав далее к одной копии 'd', а к другой — 'e' (разумеется, рекурсивно вызвав функцию обработки следующего элемента).Ну и если всё правильно написано, дальше магия сама всё за тебя сделает.
>Параметры print()>...>flush – если задано значение True, поток принудительно сбрасывается в файл. Значение по умолчанию: False.Кто-нибудь, объясните, что это значит. Нахуя нужен этот флаш?
https://repl.it/repls/ScientificUnimportantCategoriesА как бы ты это сделал, анон? Мне не нрав, что я сначала хуярю целый генератор, чтобы потом применить на него any(), но как по-другому в функциональном стиле сделать я не знаю. (без него сделал бы обычный for который или выбрасывался бы с False, как только встречает неверный символ, или в конце возвращает True).И как уместить это все в 25 строк?
>>1161738http://lmgtfy.com/?q=buffered+stream+flush
>>1161738Если ты будешь писать по одному символу, то каждый раз перезаписывать целый сектор на диске размером 512/4096 байт очень дорого. Поэтому всё-всё-всё буферизуется и накапливается в достаточном количестве чтобы записывать один раз. Иногда по одному символу выводить всё-таки нужно, например точечки в терминал для прогрессбара, или для чятиков по TCP передавать маленькие куски текста немедленно, не накапливая на полноразмерный пакет. Вот для этого flush.
>>1161739https://repl.it/repls/EverlastingPlainEllipses>И как уместить это все в 25 строк?Не писать десятистрочные докстринги к однострочной функции, название которой и так очевидно.
>>1161749>Иногда по одному символу выводить всё-таки нужно, например точечки в терминал для прогрессбара>Вот для этого flushВот, тогда следующий вопрос:Я гуглил побуквенный вывод на экран, и там в примере был этот flush. Я удалил из кода flush, и все работает абсолютно так же:https://repl.it/repls/ClumsyFirebrickCompilerbugТак в чем цимес?
>>1161750Во, в одну строку решил всё. https://repl.it/repls/LinenGeneralConfig
>>1161752Только что запустил этот код в ipython и оно ждёт, затем выплёвывает всю строку разом. Эта штука в браузере не полностью эмулирует реальные ОС.
>>1161752>Так в чем цимес?Очевидно в том, что кто-то другой где-то принудительно вызывал flush, или stdout без буфера в шелле открыт. В интерактивном режиме питон точно вызывает его, например.
>>1161690>очередные манятеории о том, кто такой настоящий программист, когда на швитом жападе давно разделили российского ПРОГРАММИСТА на три категории
>>1161754Ааа, вон оно что. Понятненько. В той ветке форума, где я это гуглил, что-то такое тоже писали, а я недоумевал, что у меня все норм в repl.itА можно тогда сразу вопрос: у меня там end='' стоит, так вот, если я попытаюсь после этого текста вбить еще одну функцию print(), то второй текст будет на этой же строке, что и первая. Как это починить?
>>1161753Бля, охуенно, спасибо не знал; что; в; Питоне; можно; делать; ;
>>1161758end по умолчанию '\n'. print каждый раз добавляет к выводимой строке end, а между аргументами вставляет пробелы.
>>1161758>второй текст будет на этой же строке, что и первая. Как это починить?>Я не вылил воду из стакана, и когда я начию в него лить из новой бутылки, перелевается через край. Как починить?Ты дурак или что?
>>1161760Это понятно и не решает моей проблемы.>>1161762Ну, так и как закрыть кран, чтобы вода не лилась дальше?
>>1161764Решу твою проблему за $20.
>>1161766Перевел. Теперь отвечай.
>>1161764>Ну, так и как закрыть кран, чтобы вода не лилась дальше?Ты путаешь. Кран открывает когда ты вызываешь print(). По-дефолту после вызова каждого принта меняется стакан (end="\n"). Если ты делаешь end="", по под краном остаётся тот же стакан, поэтому при следующем вызове print'а вода льётся в тот же стакан.Догадаешь, как поменять стакан самому?
>>1161769Изящно нашел выход:https://repl.it/repls/ClumsyFirebrickCompilerbug
>>1161770Нет, ты дебил. Успехов.
>>1161774Ты просто завидуешь моей находчивости.
>>1161756Поясни?
>>1161652>>1161665>>1161679>>1161682Я наверное не правильно сформулировал бугурт. Мне больше не понятная причина, почему галеры не используют змею для веб-проектов при всех его плюсах?
>>1161756>>1161708>>1161694Я вам не собираюсь ничего доказывать, но скажу вам следующее.Если у вас не базы (т.е. фундаментальных знаний), то не удивляйтесь, что вас не будут брать на работу. Это нормально, что студентов без знаний не хотят брать в уже наработанный коллектив.Но даже если вас возьмут на работу, то максимум, что вам светит - это миддл. Это будет вашим потолком в том случае, если вы скрипткидди. Не плачьтесь потом на имиджбордах, что нет работы.
>>1161786В кои-то веки адекват на моих двачах.
>>1161778Там есть1) Programmer - должен писать код, тесты, документацию, выбирать наилучшее решение согласно заданию.2) Software engineer - это программер + немного аналитик + немного архитектор + общение с заказчиком\проджект менеджером.3) Computer Scientists - разработка и оптимизация алгоритмов + умение кодить, но не обязательно так же хорошо, как программерДаже SE нельзя назвать тем, кто должен знать asm, сишку и прочую низкоуровневую шелуху, все зависит от специальность, а именно python\c++\java\js\еще какой нибудь язык developer. Какому нибудь шарписту вообще не важно, как именно работает процессор на уровне asm команд. Не пытайтесь стать универсалом, который знает ВСЕ. it слишком разнообразно, что бы уместить все в голове.
>>1161786доширачная зелень приходит сюда что бы ее подбодрили и задали вектор, а не послали нахуй дрочить основы четверть жизни, обозвав унтерменьшомведешь себя как занудный старпер, вот рилли, нахуй грузить зеленых ебалой!? или ты думаешь когда анон с дошика перекатится в рестораны с чеком под 10к, и устанет от этого, он сам не догадается дрочнуть фундамент ? ? ? если нет, то он не помидор, и никогда им не будет даже с четвертьвековыми основами
>>1161792единственный адекват среди шизофреников-максималистов
>>1161798>>1161789Что-то много адекватов собралось, аж страшно.
>>1161792Это все хуета, которая используется менеджментом для составления бумажек. В реале есть просто программисты, которые пишут1) низкоуровневый код (микроконтроллеры, embedded, ОСи etc)2) прикладники3) Ворлд Вайд Въеб и прочие скрипткидди.Причем последний не обязательно означает, что человек чмо. Это вполне может быть хороший программер, который имеет большой опыт. Просто на среднего такого фронтэндера нельзя полагаться ни в чем.Вообще, developer - они в строительных компаниях работают. А нормальные люди себя называют programmer. Даже термин software engineer уже постепенно впадает в немилость.>>1161796Я просто ответил на вопрос. Тут анон плакался, что ему не дают нет работы, а я поделился своим опытом.У вас же сразу срезанировало и начался термоядерный бомбеж. Это и понятно, ведь вы не программисты.Мимо 29лет кун
>>1161799>аж страшнотому шо ты мракобес
>>1161786Как бы чтение Таненбаума, которого я предлагал и даст фундаментальные знания по работе железа, причем даже на более низких уровнях, чем уровень архитектуры команд. Или ты предлагаешь страдать ненужной хуйнёй и учиться досконально разбираться во всех изъёбствах ублюдочной x86-64 или какую ты там ещё архитектуру для изучения предлагаешь?
>>1161802Ты хоть одну архитектуру на среднем уровне то знаешь? Помог тебе твой Таненбаум?
>>1161801Нет, я программист.
>>1161800>Это все хуета, которая используется менеджментом для составления бумажекКто сам-то? Пруфы того, что ты охуеней тех, кто придумал все это есть?
>>1161808Он же написал:>29лет кунЭто СРАЗУ же ставит все точки над i, и его мнение — закон.
>>1161808Какие тебе пруфы нужны? Пачки денег в подвале? Паспорт США с супом?Если ты еще не понимаешь, что вся эта терминология не используется программистами, а используется менеджментом для составления бумаг наверх, то что я могу сделать?>>1161809Тот меня называл старпером.
>>1161810>Если ты еще не понимаешь, что вся эта терминология не используется программистами, а используется менеджментом для составления бумаг наверхА у нас ее программисты используют
>>1161805Как бы я низкоуровневым программированием не занимаюсь, потому на АСМ не пишу, нахрен мне это не надо. Но в случае чего, ассемблерные листинги читать могу и что там происходит понимаю. (Пришлось кстати однажды с этим поебаться, так как в одном проекте компилятор в определенных условиях лютую хуйню выдавал, которая не работала)Я тебе о том, что чтобы понимать, как в принципе работает ДВС не нужно уметь перебирать конкретный мотор батиной девятины.
>>1161810>меня называл старперомты же не подумал что это как то коррелирует с возрастом?насколько надо быть умным и одаренным ПРОГРАММИСТОМ что бы с такой неистовой силой отрицать чужое мнение и выставлять свое, как единственно правильное и возможное!?
>>1161815>с такой неистовой силой отрицать чужое мнение и выставлять свое, как единственно правильное и возможное!?Я просто сказал, что думаю. Еще раз, антош.Тут есть два типа людей:1) имеют базу и работают.2) плачутся, что им не дают.>>1161814Ты не можешь найти работу?
>>1161819>Ты не можешь найти работу?Нет, с работой у меня всё норм. Просто покоробили заявления о том, что зелёному неприменно нужно учить ассемблер иначе он нахуй не нужен
>>1161823Желательно изучить. Но если ты не имеешь времени это сделать сейчас, то можешь сделать потом.
>>1161825>Желательно изучитьЗачем?
>>1161826Затем же, зачем знать основы электричества при проводке проводов для создания новой розетки.
>>1161819>Тут есть два типа людей:1) работники, работают с тем что имеют2) нытики, всегда будут нытьэто типы личности антош иди почитай гороскоп и не пытайся кого-то сделать лучше это бесоплезно
>>1161827>при проводке проводов для создания новой розеткичто ж ты такое пишешь содомит, аргх
>>1161827Вот я пишу такой на жабе\шарпе, работаю с абстракциями, какая разница для меня что там jvm\clr процессору выдает?
>>1161826>Зачем? Это основы основ. Даже если ты изучаешь питон, то тебе нужно изучить, как работает его виртуальная машина (которая тут называется интерпретатором).>>1161828>это типы личности антошСоглашусь. Я никого не пытался менять. Просто выразил свое мнение на вопрос, почему у него нет работы. А в итоге началась бомбежка.
>>1161832>Просто выразил свое мнение на вопрос, почему у него нет работыТы привязал это к знаниям низкоуровневых языков, а не к типу личности
>>1161833>Ты привязал это к знаниям низкоуровневых языков, а не к типу личности И из-за этого случилась бомбежка?
>>1161832>Даже если ты изучаешь питон, то тебе нужно изучить, как работает его виртуальная машинаЗачем? >>1161830
>>1161835Затем, что если ты не знаешь, что под капотом, то ты не программист. Твой потолок - это мидл, но с возрастом тебя уже не будут брать никуда.Просто если ты не хочешь ни в чем разбираться, то у тебя нет воли к тому, чтобы учиться. Я когда был маленький, то всегда разбирал всякие вещи правда потом не мог собрать и из-за этого получал пиздюлей, но меня это не останавливало.А вот у тебя, видимо, нет желания разбираться, что там за этими абстракциями. Это значит, что ты плохой программист. Хороший программист смотрит вглубь.
>>1161837>то ты не программистОпределение программиста в студию
>>1161838Определение спроси у своей мамы. Твоя мама всегда лучше знает, что для тебя лучше.
>>1161840Какое же ты ЧСВшное мудло, божечки мои.
>>1161841Что мама сказала?
>>1161840Вот сделали конкретные определение с разделением обязанностей >>1161792Если ты не можешь составить такое же четкое определение в рамках своего понимая настоящего программиста, то ты не можешь говорить о том, кто такой настоящий программист, а кто нет
>>1161832>то тебе нужно изучить, как работает его виртуальная машина ок, но на том же примере с УКЛАДКОЙ кабеля для ПИТАНИЯ предварительно СМОНТИРОВАННОЙ розетки, мне вовсе не обязательно знать что по жилам кабеля протекает направленный поток заряженных частиц, все что нужно знать — так это не браться голыми руками за два оголенных провода, вот и всётак и с машиной твоей, в любом учебнике по языку есть введение на пару страниц, этого будет достаточноиз спортивного интереса ты свободное время ты всегда можешь подрочить любую литру какую хочешь, хоть блять Ландао, он ведь тоже дохуя полезный, а чо ебатьно не надо этим засирать голову доверчивому анону, он сюда приходит пушо здесь все его друзья, а они его так жестко наебывают, не надо так занудная хуила блядь
>>1161845Я просто ответил анону, почему ему не дают.
>>1161830Например для того, чтобы потом не охуевать и не ломать голову из-за чего у приложения в продакшене время от времени случаются дикие провалы по производительности, да такие, что приложение половину запросов в эти моменты проёбывает. (Тру стори из реальной практики, было такое. jit промахивался с предположениями относительно большого куска кода, а потом при промахе, деоптимизировал его и вываливал в интерпретацию)
>>1161846>ему не даютБЛЯТЬ НИ РАЗУ НЕ ЗА НЕЗНАНИЕ СУКА ЕБАННОГО АСМА И УСТРОЙСТВА Х86 ебанный ж ты по голове перестань уже нагло врать и подменять понятия, все равно что с телками, ты будешь говорить анону с двача что ему не дают за всратое ебало, сука я понел ты траллируешь нас, а мы блять горим, больной ублюдок
>>1161848Ты не программист если не знаешь, что такое Scale-Index-Base.
>>1161849>Ты не программист я девелопер, мне главное что бы работало, сносно работало, а чо там как там, я узнаю по ходу решения задачи, благо в рокетсаенс я не лезу
>>1161851На стройке работаешь? Прораб или раб?
>>1161853геймдевелопер же, но и таджика от кыргыза отличить сумею, а прорабы достойнейшие из людей, зарабатывают деньги тяжелым трудом, один таджик четверых руснявых алканов стоит, и яму под септик выкапывает за деньи я вообще не понел откуда такой негатив к ручным профессиям? конкретно мне для воссоздания виртуального мира нужна информация из реального, пусть не вся она релевантна, но знать наверняка это невозможно, так что иди нахуй комрад
Друзья, с помощью Celery можно раскачегарить requests на полную катушку?
>>1161690>>1161786>>1161800>Ворлд Вайд Въеб и прочие скрипткидди>>>1161837>твой потолок - это мидлКак же проигрываю с этого мамкиного тру-погроммиста. Потратил молодость на изучение ассемблера, молодец. Также проигрываю с тех, кто ведется и бомбит на толстоту про то что "в синьоры" не возьмут если в машинный код не можешь.
>>1161907>Потратил молодость он ведь не тян что бы переживать но толстый пиздец это стыдоба да
А какая книга по питону есть для нуфага в программировании с задачами после каждой главы?
>>1161920Я и мой питон, Педро Урдемалеса
>>1161923Заквакал аж.
>>1161907>Потратил молодость на изучение ассемблера, молодец.Довольно равномерно развивался по всем фронтам. Завидуй.
>>1161907>Потратил молодостьSOOOQA
Питонисты/пайтонисты/питонеры, поясните, среди вас действительно есть фрилансеры способные заработать денег с помощью пайтона, или это все троллинг уровня 300кк/наносекунду?
Ну че вы тут за срач развели. Настоящий программист это тот, который в течении года клавиатуру защищал и пиксели в зеленый цвет красил, чтобы красиво было. Не служил не программист.А теперь помоги мне с домашним заданием нет. Вот нужно из кучи файлов отсортировать те, которые ещё не протухли. Я думаю взять текущее время time.time() и в цикле итерировать файлы, брать у каждого os.getmtime(), находить разницу с текущем и делить на количество секунд в сутках. Вот про секунды вопрос. Я хотел написать разница_в_секундах//(246060). И подумал. Питон будет это произведение считать каждый раз для каждого файла? Это нехорошо. Тогда может написать разница_в_секундах//86400. Но Питон про читаемость и понятность кода, а что это за 86400 такие? Тогда может вне цикла определить секунд_в_сутках = 246060, а в цикле писатьразница_в_секундах//секунд_в_сутках? Как максимально красиво и pythonic way?
>>1161945БЛЯТЬ ЕБАНАЯ РАЗМЕТКА СУКА. вместо 246060 должно быть 24 умножить на 60 умножить на 60.
>>1161944Если твои знания и опыт ограничены питоном и его фреймворками, то у меня для тебя плохие новости.
>>1161907>Также проигрываю с тех, кто ведется и бомбит на толстоту про то что "в синьоры" не возьмут если в машинный код не можешь. Если посмотришь на мои посты, то в начале я даже не троллил, а вполне серьезно говорил. Но когда я столкнулся с непонимаением и неадекватом, то почему бы не потроллить?
>>1161945>>1161947>вместо 246060 должно быть 24 умножить на 60 умножить на 60.Все говно анон, иди ка лучше поучи хаскель
>>1161949Я наслушался охуительных историй от друга моего друга, который затирает, что он успешный мамин фрилансер на пайтоне. Я чую пиздеж. Как его вывести на чистую воду?
>>1161955>Как его вывести на чистую воду?Ректальным нагреванием
>>1161955>Как его вывести на чистую воду?А зачем его выводить на чистую воду? Ты ему начинай втирать, что у тебя каждый день новая телка, а он потратил молодость на свой питон. Пусть его теперь дрочит.
Поясните за щёку, пожалуйста, на примере последовательности Фибоначчи:если я указываю верхний предел последовательности и пишу element = first_element + nt_list.append(element)first_element = nn = elementТо всё вроде нормально и в списке наибольшее число меньше указанного предела.Однако если я напишуelement = first_element + nt_list.append(element)first_element, n = n, first_element + nТо наибольшее число выходит за границы предела. Почему так?
>>1161954>Все говно анонА как тогда надо?
>>1161966Всё, вопрос снят.
Аноны, как мне нормально написать код? Думаю вы поймете что я хочу сделать : from threading import Threaddef func(number): print('add',number)t3, t4 = Thread(target=func, args=[4]), Thread(target=func, args=[4])t1, t2 = Thread(target=func, args=[4]), Thread(target=func, args=[4])t1.start(), t2.start(), t3.start(), t4.start()t1.join(), t2.join(), t3.join(), t4.join()
Есть сайт на джанго с большим количеством зарегистрированных людей. Как система будет распределять ипользование urllib клиента, ?
Надо заменить в списке чётные элементы на 1, а нечётные на остаток деления индекса этого элемента на 5.https://ideone.com/aMQxTxЧто не так?
>>1162042a = [Thread(target=func, args=[4]), Thread(target=func, args=[4]), Thread(target=func, args=[4]), Thread(target=func, args=[4])]for th in a: a.start()for th in a: a.join()
>>1162049У тебя как бы в y значение лежит, а не индекс.
>>1162059fix. th вместо а, конечно же
>>1162059Тогда ужa = [Thread(target=func, args=[4]) for i in range(4)]
>>1162042>from threading import ThreadЗачем так писать?
>>1162062>>1162061А есть какое-то по-лучше решение? Я думал в многопоточности, можно как-то по-другому изъебнуться
>>1162075А какая разница? Результат-то один и тот же
Так ты спроси конкретно что ты хочешь, а не "как сделать нормально?"
>>1162082Хочу изъебнуться красиво, что-бы 10 потоков не писать на 10 строк. >>1162062 Этот анон передал что я хотел. Но я все таки думал что там можно по-другому это реализовать
>>1162080Тут в прошлом треде один многомудрый анон втирал за склонность разработчика к лени. Зачем писать два лишних слова? А если тебе нужны две функции? Три? Будешь их через запятую перечислять?
>>1162087>Зачем писать два лишних слова?Чтобы потом сэкономить и писать Thread, вместо threading.Thread, например.
Господа, я тут получил свое первое тестовое задание и понял, что ничего не умею. А суть вот в чем: есть JSON https://pastebin.com/emW0CQjdИ есть 3 csv файла, которые имеют следующую структуру: https://pastebin.com/6JqT94DAЗадача написать скрипт который будет считывать данные из всех csv и обновлять мой исходный JSON файл. Сделанные шаги: 1) Считать все csv-файлы2) Создать либо список списков, где базовым элементом будет строка параметра либо словарь с ключом-названием документа. 3) Найти общие строки-параметры для 3 юзеров4) ???5) Загрузить это всё обратно в JSON без потери изначальной формы (Так бы я уже давно просто поменял всю структуру json'a под юзеров, но увы).Так вот, я реально не понимаю, что мне делать. Строить страшные конструкции с миллионом if и for кажется убогим вариантом, да и скорее всего я что-то упущу. Может быть тут есть какое-то более приемлемое решение?
>>1162129Ты даже хост нормальный выбрать не можешь...
>>1162133Похоже сегодня не мой день.
>>1162129>тестовое задание
Допустим есть сервер на фласке. На сервере хранится 3 скрипта. В этих скриптах - GET запросы к серверу. Как убедиться, что GET запросы были отправленны именно со скриптов, именно от пользователя, который эти скрипты скачал с сервера, а не например через какой-то онлайн сервис по генерации запросов? Верификация по айпи - хуета, так как у пользователя может быть динамический ойпи, кастомные хэдеры можно так же подменить, или вставить в тех же онлайн сервисах. Есть ваще исходы какие-нибудь?
>>1159798 (OP)Как долго с пхп укатиться на питон? Стоит ли? Тяжело работу найти?
>>1162148Шифрование с помощью открытого и закрытого ключа было изобретено в 1976 году Уитфилдом Диффи и Мартином Хеллманом (под влиянием работ Ральфа Меркле). Они основаны на том, что на принимающей и отправляющей стороне рассчитывается т.н. односторонняя функция, и отправитель и получатель передают друг другу два числа, позволяющие получить ключи для шифрования.Дальше сам гугли.
>>1162152>Как долго с пхп укатиться на питон?Чай, не Хаскель, быстро схватишь.
>>1162098Считается, что так тяжелее воспринимать код.
Господа, посоветуйте пожалуйста гайдов/туториалов/инструкций по созданию Django проекта. В библиотеке в шапках смотрел, там только справочники. Нужен именно пошаговый гайд для долбоебов, я так лучше воспринимаю, а уж потом углубляюсь в документации.
>>1162193https://tutorial.djangogirls.org/ru/
>>1162180Далеко не всегда и не везде, тем более если значение очевидно и понятно и без префикса модуля.Да даже тот же >from x import •используется в стандартных библиотеках иногда.
>>1162194Огромное спасибо!
>>1162129Вкатываюсь и попытаюсь это сделать, если нормально объяснишь, что тебе нужно. Потому что я пока не понимаю. Для каждой строки csv надо найти, есть ли команда с заданными модулем, тестом и функцией, и если да, добавить в параметры этой команды юзера (который указан только в имени самого csv), а если нет - создать? Так что ли?
Today I learned, что в питоне есть аналог Logo. Сижу, рисую разноцветные лабиринты, как в детстве.
Блять, я тупой. Я не понимаю функцию def. Почему в одних примерах пишут, например, def function(): ..., а в других def function(time)? Почему в первом случае скобки пустые, а во втором там стоит переменная? Что, если в во втором случае я задефайню функцию, но переменную напишу другую? Как это, блять, работает?
>>1162221Верно. Если дословно:Изменения могут быть следующие:1) Добавлена новая команда2) Удалена команда3) Изменена команда (стала доступна для другого набора пользователей, перенесена в другой модуль, изменена вызываемая функция)
>>1162230Покажи. Подобный аутизм можно даже в трядэ в майнкрафтах либо через аддон opencomputers, либо генерируя непосредственно NBT не запуская игру. Залипнуть можно надолго, но все эти алгоритмы с плотным размещением очень уж нетривиальные.
>>1162234def это не функция, а ключевое слово языка, позволяющее определять функции. То что в скобках ты напишешь собственно полностью под твоим контролем. Можешь много параметров затребовать, можешь ни одного, в чём проблема-то?
>>1162235Ну вот как я себе это представляю. Вложенных циклов дохуя, да, но if'ов вроде нормально. Не представляю, как без них можно проверять наличие команд и прочей шелухи. Другие аноны тоже оцените если можете.https://repl.it/repls/EthicalAbandonedMachinecodeinstructionлолирую с имен, которые repl генерирует
>>1162180Вот таких как ты я чёт готов душить и расстреливать. Гугл не авторитет. Если у тебя файлы больше 1000-2000 строк, там да, это помогает. Но с другой стороны, такие большие файлы уже можно бы и поразбивать. Ещё бывает названия импортируемых фунции слишком generic лучше переименовать from os.path import exist as file_exists.
>>1162162Хаскель не такой уж сложный.
>>1162048https://www.youtube.com/watch?v=MGxAtO5n9SY
>>1161541Бамп вопросу. Есть ли в PyCharm средства для разработки GUI?
>>1162269Ну допустим, есть веб сервис в котором зарегистрированные люди могут работать по api с другим сайтом, людей больше чем 1. Для работы с api другого сервиса, нужен будет http клиент
>>1162286Нету , для работы с pyQt есть божественный Qt дизайнер, в котором рисуются формочки у wxpython тож есть какой-то дизайнер и у Gtk тож есть дизайнер
>>1162263>Гугл не авторитетА PEP8?
>>1162257Черепашка.import turtledraw = turtle.Pen()for i in range (5, 500, 5): draw.forward(i) draw.left(90)
>>1162292Нужен. urllib/requests блокирующие клиенты, то есть у тебя будет тредпул ограниченной размерности. Можешь ещё перейти на асинхронные дилды. Можешь соединения с определёнными сервисами тоже не закрывать раньше времени.
>>1162303В pep8 не рекомендуют кастрировать язык. Если это так хуёво импортировать отдельные классы из модуля, напиши гвиде пеп пропозал вырезающий это из языка к ебени матери.
>>1162304No module named 'tkinter'Ай.. у меня питон собран без поддержки tk. Но забавно, прямо в стдлибе.
>>1162309Рекомендуется абсолютное импортирование, так как оно обычно более читаемо и ведет себя лучше (или, по крайней мере, даёт понятные сообщения об ошибках) если импортируемая система настроена неправильно (например, когда каталог внутри пакета заканчивается на sys.path):
>>1162311>забавно, прямо в стдлибеА то!
>>1162315
>>1162262Пытаюсь разобраться, пока у меня появляется "-f" в параметре user. Наверно, что-то делаю не так.
>>1162314Что ты понимаешь под абсолютным импортированием? Покажи примеры по каждому пункту в стиле говно|охуенно:>более читаемо>ведет себя лучше>даёт понятные сообщения об ошибкахНу и непонятные заодно напиши.>импортируемая система настроена неправильноНадо что-то настраивать ещё?>каталог внутри пакета заканчивается на sys.pathЭто как?
>>1162262name ведь наверняка уникальным должно быть
>>1162262Если бы я оценивал твой код, на тестовом задании бы собес и закончился. Во-первых, пытаешься работать с параметрами командной строки напрямую вместо argparse, во-вторых, парсишь csv руками вместо стандартного модуля => не знаешь стандартную библиотеку. (линтер я не включал - лениво) комментарии не по pep, строки совсем не 80 символов => понятия о code-style не имеешь.* по поводу самого кода - такое обычно называют индусо-кодом или лашпекодом, а в приличных местах даже пиздят за это, и дополнительно пробивают c ноги за магические строки в коде.>original = json.load(fin)["commands"]На кой ты здесь поломал оригинальную структуру? чтобы потом в конце дампить `{"commands": original}`?>if len(sys.argv) > 1:раз уж пишешь свой говнокод, то поменяй условие в обратную сторону и заверши скрипт с описанием почему ты это сделал, вместо того, чтобы наращивать вложенность (касается всех твоих if)>user+".txt"все что угодно - join, f"", %, format, но только не конкатенация строк плюсиком>...по поводу структуры кода и возможности его переиспользовать и говорить не приходится.
>>1162323Это выдержка из PEP, блять. Вопросы к составителям.
>>1162042threadPool используй
>>1162267Что такое монада?
>>1162330>argparseЗачем мне использовать его тут, если единственные команды, которые будет кушать мой скрипт - имена .csv файлов?>стандартный модуль csvЯ знаю про него. И опять - зачем он тут? В скинутом примере csv максимально простой, предполагаю, что остальные выглядят так же. Как и применение argparse это мне кажется пушкой по воробьям. Зачем?>комментарии не по pep, строки совсем не 80 символовВ смысле не по пеп? 2 пробела от самого кода, #, пробел, комментарий. PyCharm завещал так делать. Та же PEP8 в Pycharm'е говорит про строки в 120 символов.>по поводу самого кодаНу а что не так то с самим кодом? Итерирую csv, беру из них необходимые параметры, ищу нужную команду в оригинале, изменяю/добавляю, если нет. Как это по другому сделать?>На кой ты здесь поломал оригинальную структуру?Оригинальная структура представляет из себя словарь с одним единственным айтемом. И нафига мне его через всю программу тащить, когда можно тащить сам айтем? чтобы везде в остальной программе не писать original["commands"]>раз уж пишешь свой говнокод, то поменяй условие в обратную сторонуТогда придется писать что-то типа sys.exit() или как он там. Лишняя строка, не?>все что угодноЗачем эти ненужные усложнения? Когда нужно вывести большую красивую строку - делаю их. Но тут то зачем?>по поводу структуры кода и возможности его переиспользовать и говорить не приходитсяНу а ты как бы сделал? Я думал нахуярить coroutine'ов и сделать pipeline раз я их только выучил, хуле и нет, но конечная цель - поиск совпадений name,function,module все равно пришлось бы делать во вложенных циклах. По-другому я не придумал.Надеюсь на конструктивный ответ.
>>1162318Вечная неделимая частица.
>>1162129Я так вижу понял:https://repl.it/repls/ScaredTragicAddress
>>1162348>argparse>Зачем мне использовать его тут, если единственные команды, которые будет кушать мой скрипт - имена .csv файлов?Как минимум, чтобы я мог сделать `./main.py --help` не заглядывая в код.>стандартный модуль csv>Я знаю про него. И опять - зачем он тут? В скинутом примере csv максимально простой, предполагаю, что остальные выглядят так же. Как и применение argparse это мне кажется пушкой по воробьям. Зачем?Затем, что писать собственные велосипеды стоит в контексте саморазвития, во всех остальных случая стоит использовать готовые решения. В данном случае это готовое решение есть в стандартной библиотеке и не несет какого-то оверхеда. Помимо этого решение c argparcse/csv предоставляет гибкость и простоту расширения, чего нет в твоем коде.>комментарии не по pep, строки совсем не 80 символов>В смысле не по пеп? 2 пробела от самого кода, #, пробел, комментарий. PyCharm завещал так делать. Та же PEP8 в Pycharm'е говорит про строки в 120 символов.> for command in original: # looking for command with same name,module and functionСдается, что кто-то здесь пиздит (и, 121 символ, что даже твой pycharm должен подчеркнуть как code-smell)>по поводу самого кода>Ну а что не так то с самим кодом? Итерирую csv, беру из них необходимые параметры, ищу нужную команду в оригинале, изменяю/добавляю, если нет. Как это по другому сделать?декомпозировать, разделить обязанности, предусмотреть варианты возможных изменений в текущем коде и инкапсулировать их, предусмотреть возможные варианты развития и не усложнять их.>На кой ты здесь поломал оригинальную структуру?>Оригинальная структура представляет из себя словарь с одним единственным айтемом. И нафига мне его через всю программу тащить, когда можно тащить сам айтем? чтобы везде в остальной программе не писать original["commands"]working_chunk = original["commands"]from ... in working_chunk: passjson.dump(original)>раз уж пишешь свой говнокод, то поменяй условие в обратную сторону>Тогда придется писать что-то типа sys.exit() или как он там. Лишняя строка, не?а еще можно бросать исключения с детальным описанием проблемы и обработкой их в одном месте и корректным завершением приложения - еще больше строк.>все что угодно>Зачем эти ненужные усложнения? Когда нужно вывести большую красивую строку - делаю их. Но тут то зачем?затем, что этим ты показываешь незнание того, как работает конкатенация строк и лень при написании пары лишних символов>по поводу структуры кода и возможности его переиспользовать и говорить не приходится>Ну а ты как бы сделал? Я думал нахуярить coroutine'ов и сделать pipeline раз я их только выучил, хуле и нет, но конечная цель - поиск совпадений name,function,module все равно пришлось бы делать во вложенных циклах. По-другому я не придумал.см пункт про декомпозицию и обработку исключений (что по сути есть разделение приложения на функциональные слои)>Надеюсь на конструктивный ответ.
>>1162347Монада, если не вдаваться в анальные глубины общей алгебры, является удобным паттерном для функциональных языков. Монады позволяют набирать последовательные цепочки вычислений, тем самым гарантируется строгий порядок выполнения. Особенно это полезно для вызова сайд-эффектов, получается по сути императивный код на основе чисто функционального, где в общем случае порядок вычислений заранее неизвестен.
>>1162372Нехуя не понял, что такое монада. Можно на примерах?мимо
>>1162348>Я знаю про него. И опять - зачем он тут? В скинутом примере csv максимально простой, предполагаю, что остальные выглядят так же. Как и применение argparse это мне кажется пушкой по воробьям. Зачем?Csv штука сложная. Ты наверное думаешь, что это просто разделенные сепараторами поля и не знаешь, что сепаратор может быть внутри кавычек.>>1162371>а еще можно бросать исключения с детальным описанием проблемы и обработкой их в одном месте и корректным завершением приложенияА вот тут мне уже стало интересно. Покажи, как ты это делаешь.
>>1162353Интересная структура, но когда я прописываю в одном из txt какие-нибудь другие имена, то они не добавляются.
>>1162385Тебе нужно сначала осознать что в ФП средах порядок выполнения не определён. В ФП ты не описываешь последовательность действий вроде возьми то, сложи туда, возьми это, перенести туда. В ФП ты сразу пишешь что тебе надо вот эти две коробки в таком порядке, а компилятор/рантайм тебе уже сами додумывают как это размотать в нужную последовательность действий и где что когда выделить в памяти.Допустим у тебя есть такой код:print(sin(sqrt(2)))Вот это хороший пример вычислений зависимых по цепочке. Рантайм сможет это посчитать только в единственной возможной последовательности: сначала двойка, затем корень, затем синус, затем print.Но что если функции никак друг от друга не зависят, а в цепочку их слепить надо? Напримерprint('lol') затем print('kek') затем print('ayy')Вот тут-то и нужны монады. Делаешь print('lol') bind print('kek') bind print('ayy'), получаешь выражение наподобие print(sin(sqrt(2))) с единственно возможным порядком выполнения. При этом нагромождения от тебя скрыты и ты видишь только красивый чистый синтаксис.
>>1162385>Нехуя не понял, что такое монада. Можно на примерах?потому что он хуйню спизданул, http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html>>1162394>Покажи, как ты это делаешь.Зависит от ситуации, в этом скрипте достаточно было бы:def handle_line(line): # разбираешь строку, бросаешь по необходимости исключенияif __name__ == '__main__': for line in file: try: handle_line(line) except CriticalCustomException as ex: print(ex, file=sys.stderr) sys.exit(1)
>>1162413прими разупорина уже, наркоман.и погугли функциональный и декларативный подходы
>>1162422Тут мало по экцепшенам. Ты отдельные классы создаешь или один? Сколько параметров в классе и как это определяешь?На какой уровень вложности процедур надо расчитывать в try/except блоках?Если у тебя есть github, то скинь ссылку.
>>1162412>в одном из txtтам один txt
>>1162432>Common declarative languages include those of database query languages (e.g., SQL, XQuery), regular expressions, logic programming, functional programming, and configuration management systems.Эм. Ты меня похвалил так или я чего-то не понял?
>>1162436Ну вот я его изменяю(название функции, например), а итоговый json файл остается таким же, каким был в оригинале.
>>1162434У меня в гите смотреть особо не на что, лучше посмотри код опенсорсных проектов - сильно полезнее будет (начать можно с той же django).А по поводу остального, классы нужны если есть состояния(если их нет или можно избежать, то функциональщина может быть предпочтительнее), декомпозировать на классы нужно в соответствии с логикой, обязанностями и общей моделью/структурой приложения; количество параметров рекомендуют делать не больше семи.А по поводу вложенности процедур в try/except каких-то особых ограничений я не знаю, по крайней мере я не вижу проблем в том, чтобы оборачивать в try/except рекурсивные функции. Другое дело, что лучше не размазывать обработку ошибок по всему коду, а делать это в одном специальном месте.И, ответы на эти ответы не абсолютны, а понимание их нужности/полезности приходит с опытом (есть книга макКонела "идеальный код", там он как раз об этих вещах пишет, но если у тебя совсем нет опыта толку от нее будет не много).>>1162440Не похвалил. Неопределенный порядок вычислений есть в каком-нить прологе или при выполнении sql, а в лиспах/хаскелях/кложурах (и либах добавляющих функциональщину к питону, php, js, java) порядок вычисления вполне себе конкретный, а примеры, которые ты написал в >>1162413 - дичь полная.
Почему второй вариант работает настолько медленнее?
>>1162567Потому что в первом варианте итерация происходит на уровне сишного кода, во втором на уровне питонов. Никто бы не делали эти ваши нампи если бы вот так скорость не прирастала.
>>1162567Магиче сишечки.Но ты не очень честно сделал, на самом деле, потому что единичный доступ по нампиевским массивам медленнее, чем к родным списочкам раза в полтора: https://repl.it/repls/PaleSnivelingSpreadsheet
>>1162475>порядок вычисления вполне себе конкретныйВот это уже реально дичь. Нахуй тогда монады нужно-то? Вычисления могут быть детерминированными, то бишь повторяться одинаково при одинаковых входных данных и фазе луны. Но это не рассчитано на то чтобы какие-то задроты вроде тебя в уме разворачивали весь граф вычислений и писали код подглядывая в исходники ghc.
>>1162060Пофиксил на List4[y], только вот при n = нечётное число, выдаёт ошибку IndexError: list index out of range
>>1162595Не только.https://repl.it/repls/FlickeringExtrovertedProfessional
Анон помоги мне потушить пердак. https://pastebin.com/1w0AWjjYКакого черта меняются значения в listnew_? Я нигде не просил этого.Выглядит будто при передаче листу listnew_ значения list_, собственно передачи значения не происходит, а как будто передается только указатель и ссылаются оба на одно и тоже.Иначе как объяснить такое поведение? И как это исправить?
>>1162610>Выглядит будто при передаче листу listnew_ значения list_, собственно передачи значения не происходит, а как будто передается только указатель и ссылаются оба на одно и тожеТы не поверишь.
>>1162610Открой для себя is, id(..), list.copy, dict.copy, set.copy, import deepcopy.
>>1162612Не благодари.
>>1162619Ой, промазал. Это ему >>1162610Ну вы понели.
>>1162606>>1162049Бамп вопросу
>>1162612>>1162614>>1162619Спасибо аноны.Вам не кажется, что это является эталоном зашквара?Как вообще можно было до такого додуматься? Что поведение базового оператора зависит от контекста его вызова (в случае целых чисел, например, работает иначе). Стало быть python это не тот язык на котором можно просто писать, а нужно сидеть и пердолиться в изучение какие еще операторы в каких разных контекстах проявляют не ожидаемое поведение и где ждать подводные камни? Нах так жить посоны?Можно ли это как-то отключить, директивой какой-нибудь и т.п.?извините, у меня бомбануло
a = bb = aпитоноиды
>>1162636Просто у питона наглухо упоротый синтаксический сахарb = 4 это обёртка для b = int(4) или как то так я уж не знаю как там точно в интерпртитаторе хуярится
>>1162637https://www.destroyallsoftware.com/talks/wat
Напомните ещё раз дебилу как получить индекс массива в питоне?
>>1162644Индекс элемента массиваНу точно дебил
>>1162645index
>>1162647массив.index(x) ?
>>1162648>массив.index(x) ?Да?
>>1162644Мы вообще книжки не читаете? Это основы блядских основ.
>>1162636>>1162641Блядь, они плодятся. Какая нахуй обёртка над int(4), что ты несёшь, это ты упоротый сахар, блядь. Уже потратил на тебя полночи, ты опять начинаешь.>>1162636>Вам не кажется, что это является эталоном зашквара?Это является эталоном работы с памятью через указатели.Иди читай ветку от >>1158870 пока тред не смыло. А так же про указатели, референсы, значения, lvalue, rvalue и ещё что-нибудь полезное.
>>1162655Блядские основы мне почему-то не помогают.Вот объясни, почему при list4 = [1, 2, 3, 4, 5, 6]----for y in list4:------if list4.index(y) % 2 == 0:---------print(list4[y])Он мне выдаёт 2, 4, 6?Индексация же с 0 начинается. Т.е. должен выдать 1,3,5.Или я опять чего-то не понимаю?
>>1161945Зоделай константу seconds_in_sutkah = 24 60 60
>>1162659>Или я опять чего-то не понимаю?Во-первых, ты не понимешь, что далет>for y in list4Во-вторых, ты не понимаешь, что ты вообще делаешь.Нахуя, спрашивается, ты обходишь в цикле массив по его элементам (по порядку), а потом берёшь индекс элемента? Почему сразу по циферкам от 0 до длины списка не пройтись?!>print(list4[y])На этой строке ты принишь y-тый элемент списка. y — значение элемента списка, а не его индекс, который ты только что проверил на чётность.первая итерация:y = 1index(1) % 2 == 0list4[1] # 2 потому что это второй элемент списка
>>1162659Дело в том, когда ты используешь метод for:>for y in list4, то за y он берет не индекс 0, а первое значение в списке, то есть 1.
>>1162662>Во-первых, ты не понимешь, что далет>Во-вторых, ты не понимаешь, что ты вообще делаешь.Возможно. Именно потому хочу понять и разобраться.Мне надо чётные индексы заменить на, например, какое-нибудь фиксированное значение.>>1162664Дело в том, когда ты используешь метод for:То есть for не использовать?
>>1162636Такое поведение абсолютно у всех по крайней мере динамических языков: PHP, Lua, Javascript, Perl, Ruby. Посмотри на это с другой стороны, вдруг у тебя есть структура размером 4Гб, потом ты делаешь какую-то элементарную мелочь и все 4Гб автоматически копируются. Ещё вдруг ты захочешь закинуть куда-то далеко в код структуру, но при этом иметь на неё ссылку и время от времени читать. Как такое сделаешь? Явно указатели будешь брать? Истина в том, что поведение copy на деле нужно ооочень редко.>поведение базового оператора зависит от контекста его вызова (в случае целых чисел, например, работает иначе)А как иначе? 2 + 2 это далеко не то же самое что [2] + [2] или '2' + '2'. Кстати говоря, операторы наподобие + не изменяют структуры, а порождают новые. Изменяют структуры inplace вызовы методов например list.remove, list.clear, list.append.
Можно как то из mint удалить встроенный второй пистон и накатить третий?
>>1162672>То есть for не использовать?Использовать. Но по-другому. Иди прочитай ты ну хоть какой-нибудь туториал о циклах в питоне, в самом деле.
>>1162678Накатить третий можно. Удалив второй обязательно что-нибудь сломаешь.
>>1162682А конфликта версий не будет? Сложно же вроде сразу два пистона иметь
>>1162688Ни в коем разе. Устанавливаются в две разные папки (по номерам версий) в корневом каталоге диска, вызываются отдельными экзешниками.
>>1162688нихуя сложного.это называется инвайронментуправляется либо через pip либо через condaвообще всю подобную херню по смене версий надо доверять пакетным менеджерам. Очень удобная штука. Всё для людей
>>1162688Да можешь хоть портабельный взять и распаковать у себя в /home/ ничего не устанавливая.
>>1162680>Использовать. Но по-другому.А можно просто ткнуть в ошибку и написать как правильно?
>>1162697Так ты не научишься.
>>1162702Ну, мам!А если серьёзно, пердолиться с этой проблемой и тщетно искать ответ я могу неделями.Я пришёл с вопросом, и хочу получить на него прямой ответ.
>>1162697Тебе уже ткнули. for x in lst перебирает элементы, а не индексы. >написать как правильно?Ну введи ж ты в гугл python loops tutorial, первые же пара ссылок приведут куда надо и расскажут, что там и как. Ладно бы тебе нужно было срочно сделать, тогда бы дали ответ, но так-то нахуя? Ну напишут тебе тут наебал, не будет тут ответа, дальше что? Ты завтра с очередной такой же дебильной проблемой прибежишь.
>>1162703Проблема в том, что твоя задача по факту не имеет смысла. У тебя есть массив, из которого ты пытаешься получить значение индекса, чтобы на его основе вызвать элемент массива. Масло масляное, ни добавить ни прибавить. Нахуя это вообще? Это как если бы пошел срать, но предварительно надевал на себя свитер, а потом снимал его тут же. Хотя можно было бы сразу пойти срать без свитера.
>>1162705>>1162711Спасибо.Всё оказалось проще, чем я думал.
Посоны, есть ли строковая функция, которая яаляется обратной repr()? Мне нужно убрать экранирование из строк в файле, пока решил задачу костылем из print -> subprocess. Т.е. в файле изначально сохраняются строки вида "\nt\ty", а мне нужно, чтобы он выглядел как при print("\nt\ty")
спасибо антошеку за контриб ^_^
потом заверстаюкстати под линами змейка другая лелкому интересно вот линкаhttps://sites.google.com/view/pypry/
>>1162736https://repl.it/repls/RelievedNervousMarkuplanguageАлсо,>обратной repr()eval. Ты не совсем правильно понимаешь, что делает repr.
>>1162736.encode('ascii').decode('unicode_escape')
>>1162353>>1162262Пусть и с опозданием, но спасибо вам, аноны!
>>1162636Блжад. Ты и при инте передаешь ссылку на инт. Вот только изменить значение по ссылке ты не можешь, поэтому присвоение нового инта просто меняет ссылку
Я думал, что я понял все про object reference, но похоже нет. Вначале object reference b указывает на двойку. После первого a.append(b) в a хранится b - object reference на двойку. Потом после b=3 object reference b указывает на тройку. После второго a.append(b) в списке a на 0 и 1 местах хранится один и тот же object reference указывающий на одну и ту же тройку. Почему я получаю [2, 3]?
>>1162882В питонах всё есть объект. Объекты хранятся в памяти и не имеют имён, только адрес, тип, значение, refcount. Твои a и b это только имена, которые ссылаются на адреса с объектами. Можешь считать что текущий контекст выполнения это такой dict с именами-строками (попробуй vars(), globals()). Кстати refcount это оно и есть, сколько имён привязано к конкретному объекту. Когда оно становится 0 сборщик мусора его автоматически удаляет из памяти.
>>1162885текущий контекст выполнения мань
>>1162882
>>1162882Во-первых, 2 и 3 - неизменяемые объекты в пайтоне. Во-вторых, ты сначала установил ссылку b в одно значение и его добавил в список, потом установил в другое значение и уже другую ссылку добавил в список - получился список из двух разных ссылок на два неизменяемых значения. Как бы ты теперь не модифицировал значение ссылки b, в списке у тебя сейчас хранятся ссылки на неизменяемые 2 и 3, а не на b. Как правило такого поведения мы и ожидаем...Вот другой пример: >>1162885 - здесь сначала создают две ссылки на изменяемый объект, а потом в один из объектов дважды добавляют одну и ту же ссылку на изменяемый объект. Т.к. добавлена ссылка на изменяемый объект, то теперь изменение b приведет к изменению элементов списка a... и теперь это вряд-ли тот, эффект, которого мы хотим!
>>1162890и где ответ на вопрос?
>>1162886>>1162894Съеби, мелкобуквенное насекомое.
>>1162885Про пример со списком в списке помню. Чет пиздец туплю.>>1162893То есть в a.append(b) я добавляю в список не само b, которое может указывать на разные ссылки т.е. на разные объекты, а ту ссылку, с которой b связанно в момент выполнения append'а? А чем тогда является само b?
>>1162636>Стало быть python это не тот язык на котором можно просто писать, а нужно сидеть и пердолиться в изучение какие еще операторы в каких разных контекстах проявляют не ожидаемое поведение и где ждать подводные камни?Просто нужно выучить, какие типы - мутабельные, а какие - нет.
>>1162897b - это ссылка на неизменяемый объект!In [1]: b = 2In [2]: a = []In [3]: a.append(b)In [4]: id(b)Out[4]: 140615934922848In [5]: id(a[0])Out[5]: 140615934922848
>>1162897>ту ссылку, с которой b связанно в момент выполнения append'аИменно! Само имя в структурах данных нигде не фигурирует.Например если ты добавил что-то в массив, то по старому имени из этого массива уже не взять, только по индексу. Смекаешь?
>>1162897
>>1162902>Например если ты добавил что-то в массив, то по старому >имени из этого массива уже не взять
>>1162906то есть
>>1162907тьфу бля
>>1162906Ты когда выйдешь из контекста где у тебя определены a b, то всё, имена a b станут недоступны. Только безликий массив c с индексами. Объекты внутри себя уже определяют свои собственные именные контексты. И опять же, если забрать значение атрибута объекта и куда-то его передать, то там куда передали никогда не узнают что когда-то это называлось например a.n.
Все, понял, спасибо за ответы.
>>1162371Анон, надеюсь ты ещё здесь и посмотришь а может кто и другой, кому интересно помочь вкатывальщику измененую версию:https://repl.it/repls/GiganticCompatibleWebsphere>Как минимум, чтобы я мог сделать `./main.py --help`Теперь можно>Затем, что писать собственные велосипеды стоит в контексте саморазвитияDefine велосипед. Я понимаю, что например самому разбирать файл json не надо т.к. он пиздецки сложный. А тут вроде бы легко, в две строчки всего но все равно добавил после сообщения анона о том, что запятые могут быть в кавычках, не подумал об этом чет>Сдается, что кто-то здесь пиздитА как надо писать комментарии? На том же pythonworld.ru в теме про ПЕП8 говорят про два пробела, #, пробел, коммент. Поставил ограничение на 80 строк что за ебанутое соглашение. со 120 намного лучше было>декомпозировать, разделить обязанности, предусмотреть варианты возможных изменений в текущем коде и инкапсулировать их, предусмотреть возможные варианты развития и не усложнять их.Сделано. Разобрал все на столько, на сколько можно. За команды теперь отвечает отдельный класс, который можно менять как хочешь, проверка модулей, имен, функций, юзеров и добавление юзеров делается его методами, которые можно изменить. Все проходит через охуенный pipeline, любую остановку которого можно изменить, чтобы принимать другие файлы не .csv например или добавить ограничения на них. Кто хочет может получать ошибки в консоль, кто хочет в лог, кто хочет может изменить error_handler чтобы делать с ошибками что угодно. Можно так же изменить функцию составления новых имен для файлов или поиска .csv в папках например чтобы игнорировать папки с началом "donttouch"Только обработка исключений вышла хуевая. А может и нет, но мне она не нравится. Но по-другому не получилось.>from ... in working_chunk:Вот это кстати не понял. Попытался погуглить но выдает from import или yield from, о которых я знаю. А что ты сделал не понимаю.Вопрос, так и надо было? Или слишком много? Количество ебучих строк увеличилось в 7 раз. Семь блять. Мне кажется я сделал что-то совсем не то. И писал я это 5 часов с перерывами и прочим но все же Может потому, что только учусь и охуенные сеньоры сделали бы это за 5 минут, но я очень заебался писать это, получать порцию говна в лицо, и переписывать, чтобы его на вентилятор не бросало и чувствую себя немного пиздец тупым. И как вообще догадаться о таком на собесе надо? Ведь анону дали задание сделать бумажный самолетик. Я накатал 30 строчный бумажный самолетик, который делает именно то, что от него просят. А после твоих сообщений сделал ебучий 200000000 строчный звездолет. Ещё вопрос про "поменяй условие в обратную сторону". Вот во многих местах сделал это, и вроде бы получается даже красивее, но приходиться кидать break и continue. Ещё когда в 7 классе нас учили Паскалю, кто-то сказал мне "continue, halt, break, go to для пидоров". Насколько это правда и насколько правильно я использовал их в своем коде?
>>1162991Я это не запускал, но выглядит очень круто. Пойду читать про coroutine и все в этом духе. Походу придется повременить с вкатыванием, я ещё слишком low level оказался
>>1162991>Вот это кстати не понял. Попытался погуглить но выдает from import или yield from, о которых я знаю. А что ты сделал не понимаю.Он опечатался, там for, конечно же. Суть в том, чтобы иметь original, который настоящий оригинал, а для сокращения кода, если тебе постоянно к одному и тому же ключу обращаться, вынести его в новую переменную, с которой и работаешь (так, как ты работал с original в своём коде).>кто-то сказал мне "continue, halt, break, go to для пидоров".Это сказал пидор. %Ну, разве что goto можно понять%%.В питоне приветствуется наименее индентированный код, то есть лучше в if пихать условие выхода, а сам код потом на том же уровне, что и до этого. Сравни два варианта: https://repl.it/repls/InsidiousTiredCharactersЕсли кода много, а не один принт, то второй выглядит гораздо приятнее.>А как надо писать комментарии?Я не уверен, но, вероятно, комментарий на строке с двоеточием лупа комментарий не очень хорошо делать.
>>1162991А зачем тебе тут корутины? Ты один раз читаешь/пишешь в файл же, нигде в I/O не простаивает код без дела (пока оба не загрузишь всё равно ж ничего не сделать).
И какого хера говорят про сложность и непонятность сишных указателей с крестовыми ссылками, когда в питоне все эти изменяемые и неизменяемые типы не менее простые, а скорее даже более путанные?
>>1163018В сишке тебе ещё надо следить когда сделать free. Ну ещё там ебанутые spiral rules в которые умеет полтора аутиста.
Суп питуносы. Я все ещё пишу бота в телегу 3 дня работал, простой, да. В общем каким-то образом мои тесты внезапно иногда вешают систему, и я не могу узнать в чём причина. Каков выход из данной ситуации? А именно как обезопасить головную систему стабильный debian он таких внезапных падений? Слышал что-то про docker, но не уверен зачем он нужен и подойдёт ли к этой ситуации.А также можно заебашить виртуальную машину.Wich way os right?
>>1163023Никак не обезопасить. Компутер другой взять.
анончик. умеет ли питоняня base64 скушать и красивые слова и предложения мне потом показать?
>>1163023поменять прослойку хе - хе
>>1163062import base64base64.b64decode(b'0JrQvtCz0LTQsC3QvdC40LHRg9C00Ywg0YLRiyDRgdC/0YDQvtGB0LjRiNGMINC80LXQvdGPLCDRh9GC0L4g0Y8g0LvRjtCx0LvRjiDQsdC+0LvRjNGI0LU6INGC0LXQsdGPINC40LvQuCDQudC+0LHRgz8g0K8g0L7RgtCy0LXRh9GDLCDRh9GC0L4g0LnQvtCx0YMuINCi0Ysg0YPQudC00LXRiNGMINC4INC90LjQutC+0LPQtNCwINC90LUg0YPQt9C90LDQtdGI0YwsINGH0YLQviBZT0JBIEVUTyBUWS4=').decode('utf-8')
>>1163066нормально нормально всё для людей гоблинов
>>1163069Смотри, аккуратно, там байты а не строки, всё на сишке с максимальной скоростью сделано.
>>1163070щито?
Андрей Светлов (создатель aiohttp), жестко раскатал самый производительный питон веб сервер , абаSanic. Будьте осторожны, при использованиии этой перделки на продакшенеhttps://www.reddit.com/r/Python/comments/876msl/sanic_python_web_server_thats_written_to_die_fast/
>>1163136Автор одного новоиспечённого веб-дилдака разобрался чуть лучше в матчасти автора другого новоиспечённого веб-дилдака и не поленился провести ревью. HTTP ахуительно сложный, что тут сказать.>производительныйБгагага. Покажите мне хоть одного человека, который реально упёрся в производительность фреймворка на практике.
Хотя я кажется понял.. У саника почти 9к звёзд, у айо 4к. Вот где собака порылась-то.
Анон поясни в чём может быть проблема.Есть установленный модуль natsort. В PyCharm при его импорте подчёркивает красным типа нет такого модуля. Запускаю в терминале всё работает, есть такой модуль. Ну работает и хуй с ним, подумал я.Загрузил всё это дерьмо на heroku, прописал в зависимостях natsort, и угадай что? Хуй! Нет такого модуля. Как быть?
>>1163146>Анон поясни в чём может быть проблема.Проблема в том, что ты чухан.
Перепиливаю парсер на случай, если urlretrieve не сможет сохранить некоторые пикчи. Наткнулся на следующую проблему. Допустим, код такой:req_img = requests.get(image_url)image = open("{}/files/pics/{}".format(settings.MEDIA_ROOT, image_url.split('/')[-1], "wb"))image.write(req_img.content)image.close()В другом скрипте - всё норм, в консоли - всё норм. Запускаю этот скрипт:IOError: [Errno 2] No such file or directory: '/Path/to/media/files/pics/2d240494067091ebacb8838a847fdb38.jpg'Хотя по идее он должен сам этот файл создать. Папки /Path/to/media/files/pics/ существуют, вбиваю в файловый менеджер путь из ошибки - переходит. ЧЯДНТ?
>>1163146Там venv или как? Мб еботня с интерпретатором
>>1163149У тебя 'wb' уходит в format, а не в open.
>>1163151Блэт, точно, в глаза ебусь. Спасибо!
>>1163150Ну зависимости там устанавливаются по файлу requirements.txt. Который в свою очередь создаётся из venv.
>>1163154> Который в свою очередь создаётся из venvА запускаешь то из-под него?
>>1163007>Он опечаталсяОкей, понял>В питоне приветствуется наименее индентированныйХорошо>>1163009А разве сопрограммы используются только для асинхронных кодов, которые работают с другими медленными программами? Я думал это вообще functional style и можно использовать, чтобы делать красивую логику программы. Вот в моем примере есть эта труба и есть остановки, на которых как-то фильтруются данные. Все просто, понятно и красиво.
>>1163158Тут даже хз. Зависимости же устанавливаются на виртуальную машину на сервере heroku. В общем я ещё в этом не особо силён, не могу ничего по этому поводу сказать
>>1163165Хуярь тогда логи установки на pastebin и сюда ссылку. Можешь ещё для интереса выхлоп с which python3 показать
>>1163166>which python3which python, разумеется
>>1163170https://pastebin.com/D3H7KmC3which python я полагаю нужно на серваке прописать? Ещё не пердолился с ssh, там есть возможность но ещё не разбирался. Сейчас покопошусь.На моей машине в venv which python:/home/username/PycharmProjects/HogeBot/hb_virtualenv/hb_env/bin/python
>>1163170Дело ещё в том, что вместе с natsort устанавливается telebot, в import он идёт выше natsort'a, и его импорт проходит без проблем. Собственно что-то всё-таки в самом модуле, ибо в pycharm он подчёркнут красным, хоть и запускается в терминале, но при попытке запустить из PyCharm даёт ошибку.
>>1163170Мда. Зашёл в баш heroku. Оттуда бот запускается (хотя только после переустановки pyTelebotAPI. В консоли питона natsort импортируется. В рот ебал
>>1163160>сопрограммы используются только для асинхронных кодов, которые работают с другими медленными программами?Сопрограммы это и есть асинхронный код. Не медленными, а ожидающими чего-то, давая возможность освободить ресурсы для полезных задач. Или когда порядок действий / время получения входных данных неизвестно. >Я думал это вообще functional styleДаже если бы это он и был, нафига тебе эта функциональщина? Илитарием побыть?>есть остановки, на которых как-то фильтруются данные.В каком плане остановки? Процессор не простаивает во время фильтрации. У тебя каждая итерация каждой корутины будут идти по очереди. https://repl.it/repls/MatureFarawayModule>Все просто, понятно и красиво.Красивенько, согалсен, и так-то малаца, но вот начсёт первых двух применительно к этой задаче я бы поспорил. Твой код приходится читать с конца в начало: в пайплайн передался путь -> смотрим, что такое этот пайплайн -> validate_csv -> там какому-то ресиверу что-то отсылается -> возвращается в вызов validate_csv, смотрим что ему было передано -> extract_from_csv -> там то же самое -> update_commands. А вот вызываются они все последовательно.Вот у тебя запускаются несколько корутин, ресиверсы всякие, ты туда-сюда сообещния с данными передаёшь, причём в заранее известном порядке всё происходит. Но зачем? Ты с тем же успехом мог бы вместо receiver.send() сделать обычный вызов функции: https://repl.it/repls/FussyObedientEmacs(пикрелейтед сравнение последовательности вызовов, видно некоторое сходство.)Немного говнокод, потому что я старался внести как можно меньше изменений в твой.Это лишь моё мнение, разумеется, и местные сеньоры и сеньоритты вполне могут оказаться правее.
>>1159798 (OP)Двач-помогач, тут нужно интерфейс для одной проги запилить, мб кто знает годные гайды по pyqt5? В гугл могу, но хорошего материала как-то не нашёл
сап двач советачпосоветуйте пожалуйста годную статью по созданию приложения командной строки на питоне, где обьясняется как работать с аргументами командной строки. желательно по англицки. но на русском тоже сойдёт если годнота.
>>1163388https://docs.python.org/3/library/argparse.html
>>1163390блять спасибо
>>1161775Объясню для дауна.Понятно, ты в цикле доливаешь в один и тот же стакан, а потом хочешь плеснуть в другой.Но ведь есть простой и сверхочевидный (для не-дауна) способ: когда цикл закончится начни следующую команду с перевода каретки замены стакана.
>>1161770import timetext = 'Now thinking...'for i in text: time.sleep(0.1) print(i, end = '')print()
>>1159798 (OP)Аноны, помогмте! Можно ли как-то с pyinstaller вшивать батники в готовый ЕХЕшник и оттуда их, соответственно, запускать?
>>1163438Я практически то же самое и сделал же, просто вместо пустой строки переместил последний символ. Я-то думал, это можно было в той же строке сделать, так сказать, подставить сразу новый стакан на следующей строке, а вы подставили второй стакан, чтобы туда капнуло последний раз, и после этого идете брать третий.
>>1163438>>1163446Сюда тоже.
>>1163644>Я-то думал, это можно было в той же строке сделать, так сказать, подставить сразу новый стакан на следующей строке, а вы подставили второй стакан, чтобы туда капнуло последний раз, и после этого идете брать третий.Нет, это ты капнул последний раз (точкой) и поменял стакан. В нашей аналогии перенос строки это смена стакана. print() не делает ничего, кроме переноса строки.print("abc") == print("abc\n", end="") == print("abc", end=""); print().И третьего стакана никто не берёт, откуда ты это выдумал?>Я-то думал, это можно было в той же строке сделатьУ тебя одна и та же строка кода выполняется много раз, каким образом компьтер должен догадаться, что в последней итерации нужно что-то другое сделать? Либо все принты в лупе с переносом, либо все без.>просто вместо пустой строки переместил последний символ. И зачем? В следующий раз, при получении неизвестной тебе строки, тоже сделаешь for i in string[:-], а после лупа print(string[-1])?
вкатываюсь.Подскажете позязя, как из строки"sfdsfsdfsfsjiaud ifu afu afual"взять все что находится между двумя звёздочками?сэкономите мне целый день чтения аноны)))
>>1163649строка>"sdsdsqqadsdadarra"
>>1161792Ни один из них не являются программистами. Уже хотя бы потому, что никто из них не создаёт программы, откуда пошло название.Это кодер, ПМ и, скажем, архитектор (или дизайнер). А программист это они все вместе.
>>1163649regex.Ну или говнокод, всегда есть способ — https://repl.it/repls/RobustLeadingOrigin
>>1163648>И третьего стакана никто не берёт, откуда ты это выдумал?Третий стакан — это новая строчка с принтом.Вот вы пишете:1. print(i, end = '', flush = True)2. print()А третий стакан:3. print('New string')То есть три раза один хуй надо писать.Но я вас понял, спасибо за пояснения. Вообще я ожидал, что print() выведет лишний пустой абзац, и придется еще и с этим ебаться. Оказалось, что не казалось.
>>1163657спасииибо
>>1163660>А третий стакан:Так ты откуда и что считаешь-то, ёба? "New String" зальётся во второй стакан, и только после этой строки подставится третий. В твоём коде всё то же самое ведь, ещё раз говорю. Твои print('.') вне лупа это то же самое, что print('.', end="") в лупе с последующим print() вне лупа.>придется еще и с этим ебаться. Оказалось, что не казалось.С чем ебаться?
>>1163668>Так ты откуда и что считаешь-то, ёба?Первый стакан: принт, входящий в фор, основной принт, так сказать.Второй стакан: принт без нихуя, в который сливается последняя капля end=''. Как с члена стряхнули напоследок.А третий да и все остальные — все, что принтится после.>В твоём коде всё то же самое ведь, ещё раз говорюТак а нахуй ты тогда так категорично заявлял, что я хуй, если я по факту проделал то же самое, но не дотянул чуть-чуть буквально до окончательного решения?>С чем ебаться?Да я думал, придется видоизменять до уровня print('', end='\n'), но это одно и тоже, да и пустой абзац там никак не мог появиться.
Бродяги, расклад такой. Есть проект на Джанго. Нужно расфасовать статические файлы по канонам DRY. В проекте много app в которых используются файлы из bootstrap фреймворка и так же самодельные файлы css/js. В корне основного приложения сделана директория templates , в которой будут находится части шаблона, которые будут вызываться во всех app, также в корневой директории есть static в которой все файлы из bootstrap. В каждой app есть своя директория static , в которой находятся самодельные статические файлы, которые относятся только к этому app. Короче, как грамотно сделать, чтобы не приходилось много копипастить файлы bootstrap
>>1163760Как насчёт просто не копипастить файлы бутстрапа? В чём проблема?
>>1163674>Второй стакан: принт без нихуя, в который сливается последняя капля end=''. Как с члена стряхнули напоследок.>А третий да и все остальные — все, что принтится после.НЕТ. Почему ты такой дурак? Или изъясняешься очень криво. Принт без нихуя, следующий за принтом с end="", делает только перенос строки. Т.е. он добавляется \n к первой строке / убирает первый стакан (подставляя второй для последующих принтов). Следующий за этим принт нальёт текст во второй стакан.Перенос строки (смена стакана) всегда находится в конце строки. Так что, когда напечатана "целая" строка текста, она имеет в коцне перенос строки. То есть, смена стакана всегда производится не перед наливаением воды, а после. Как посуду ты помешь не перед едой, а после, чтобы потом, когда захочется есть, тарелка была чистой.>Так а нахуй ты тогда так категорично заявлялПотому что ты хуйню какую-то, а не решение сделал. В чём была твоя проблема? Нет переноса сторки. Что нужно сделать? Очевидно, просто сделать перенос строки. Но ты пошёл каким-то ебическим путём с распиливанием исходной строки текста.
>>1163852>распиливанием исходной строки текста, что заставляло думать, что ты нифига не понимал ни собственно проблемы своей, ни того, как print работает, хотя это несколько раз повторяли.
Уф, опять этот противный оранжевый...Но относительно живой, и где не жалко показаться дураком.Относительно отучил основы питона, кое-как понял суть ООП, запил пару говнокодов, которые порой выручают в повседневной жизни.Куда идти дальше? Пытаюсь уже которую неделю освоить ХГУЙ, но после пары часов ошибок вся мотивация пропадает. Мог бы решать на codewars или ещё где задачи на алгоритмы, но... Язык первый был ещё cpp, но его забросил из-за личных переживаний. Начал именно этот учить в связи с разработкой одной игры на pygame. Будто между шагами понимания базы и написанию гуёв должна быть ещё ступень, которую пропускаю.Куда поворачивать?
>>1159798 (OP)Привет сап.Учусь на втором курсе относительно неплохого вуза.На данный момент по программе идёт с++, до этого был Паскаль и с.Стоит ли потихоньку скатываться в питон?Кресты потихоньку надоедают.хотя в Питоне меня выбешивает отсутствие фигурных скобок для обозначения блока кода, привык, наверноеНе прошу советовать с чего начинать и етц.Нужны лишь советы по типу за и против, т.к. если что я сам шапку на гите прочитаю.
>>1163857Ты в чём ГУИ пишешь? Там что не гуи под питон, сплошное ООП, туда и копай. Ещё event driven программирование, наверное.
>>1163862Ты можешь не потиху скатываться, а попробовать написать что-то небольшое, но до конца рабочее на питоне. Если понравится, будешь продолжать. Не понравится - питон пригодится, чтобы какой-нибудь скриптик для себя написать.
>>1163874А что на нём можно написать?инб4 всёХотя лучше так: что на нем делается проще, чем на крестах?
>>1163925>что на нем делается проще, чем на крестах?Э... всё что угодно? ЛОЛ!
>>1163925сам процесс разработки другой. Более динамичный. Ты как будто бы превращаешься в макаку.
>>1163927Т__Т
>>1163930Код можно запускать через MinGW? Я просто в VS Code пишу.
Анон, подскажи функцию для отслеживания очередности выполнения кода.
>>1163953print
>>1163310> Не медленными, а ожидающими чего-тоНу, скриптам, которые ожидаю что-то от чего-то медленного, и во время этого ожидания могли бы что-то сделать.>даже если бы это он и был, нафига тебе эта функциональщина?Шоб была. Это же просто стиль программирования, которым надо владеть так же как и объектным.>В каком плане остановки?В плане структуры программы. Есть остановка на которой отбрасываются неверные пути, есть остановка на которой из верных файлов берутся только правильные команды и т.п. Я понимаю, что процессор не стопиться и корутины идут по очереди.>но вот начсёт первых двух применительно к этой задаче я бы поспорилПринял, подумаю над этим.Спасибо за ответ, чет вчера ещё прочитал но не ответил сам.
>>1163863Пробовал tkinter, pyqt, kivy, остановился на последнем.
Недавно спрашивал в каком то из тредов на каком языке лучше писать, так сказать, "для себя". Т.к. уже шарился в питоне, на нем пока и сижу на уровне хелоуворлдщика. Так вот, возник такой вопрос, как рациональнее всего пользоваться классами? Хоть убейся не могу я в них въехать, в них и в магические методы. Написал простенькую игрушку, текстовую стратегию. Суть в чем - есть деревня, каждый ход (ход это день) происходит случайное событие - увеличивается количество жителей, умирает человек, ничего не происходит, случайный прохожий (его можно принять к себе или прогнать, если принять, то он может совершить диверсию и убить n человек до того, как будет убит) и нападение. В нападении реализовал простенькую боевку, 2 стойки со стороны игрока (оборона, атака) и 3 со стороны компьютера (оборона, атака, бездействие). Есть еще несколько ресурсов, такие как золото, за которые покупать войска и крестьян, еда, которую потребляет народ и войско. Ну, и как уже понятно, каждый ход игрок продумывает что ему сделать в поселении - нанять солдат, крестьян или пропустить ход. Сижу сейчас, пытаюсь оптимизировать код, а чет не врубаюсь в принцип. Примерно так
>>1164032В твоем примере я бы ожидал увидеть класс деревня, в котором есть список объектов (вероятно, тоже классов) - жителей и методы - события. Это модель.Реализация модели заключается в создании объекта класса и обращению к его методам и пользовательскому вводу.Преимущества очевидны - когда ты захочешь добавить в игру еще одну деревню - это займет всего одну строчку кода. А если захочешь добавить немного другую деревню - отнаследуюшься от уже имеющейся и переопределишь пару методов.ХЗ, понятно ли я объяснил...
>>1164032Класс хорошо создавать когда какой-то набор данных у тебя кочует всей пачкой из функции в функцию.Магические методы ни для чего более не нужны, кроме как для неявного вызова в естественных для питона конструкциях. Например определяя --enter--, --exit-- ты сможешь объект использовать в конструкции with. Определяя --add-- сможешь делать сложение obj + obj. Собственно потому они и называются магические. Остальное пишешь явно с именами которые тебе нужны.
>>1164032Прогай и понимание придёт. На это может потребоваться 1 год.
>>1164044>Определяя --add-- сможешь делать сложение obj + objОбъясни пожалуйста. Я хочу сравнить два объекта, но не их адреса а именно что логически объект одно и то же, что мне для этого надо сделать? Так же если я хочу чтобы образцы класса который я написал можно было сравнить таким макаром. Как мне это нужно написать?
>>1164053https://habrahabr.ru/post/186608/#comparisons
>>1164058большое спасибо
>unittest>модуль из стандартной библиотеки>assertEqual вместо assert_equalПиздец. Да, я знаю что интерфейс унаследован от Жавы, но блять, нахуя было наследовать камелКейс, когда в Пиздоне другой стандарт именования методов?Как, блять, с этим жить?
Что делать, анон?inb4: менял кодинг на UTF-8 в котором раньше и работал - не помогло
>>1164086> 2k18> Ш1ИДОШ5> шрифтопроблемы
>>1164086попаболь
>>1164091Ну так портируй весь Adobe на линукс, мань. С радостью перекачусь на какой-нибудь Арч или Дэб
>>1164091Windows хорошая ОС. Там есть асинхронное файловое IO вместо невнятного обрезка которым никто не пользуется. Там нет этого глупого безальтернативного fork, который копирует весь процесс, потом на его месте раскочегаривает новый в большинстве случаев, удаляя всё что было от предыдущего.
Хочу начать учить питон в 2К18 году, какие подводные камни?
>>1164118>Документация на английском>нужна лицензионная IDE для работы с джанго>дохуилион библиотек>из них 20-30% либо с багами, либо с недописанной документацией>пикрил >>1164086>дохуя документации на 2.7, а вот на тройку ещё только на английском>отвесты с стэковерфлоу придётся адаптировать с 2.7 на 3, если только их не ответили тебеКак-то так...
>>1164118Ах да. Ещё ты научишься пользоваться консолькой винды, а так-же можешь найти серию познавательных книг по питону и сетевой безопасности, 2016-2018 годов in english, of course
>>1164120>на английскомНе проблема.>на 2.7, а вот на тройку ещё только на английскомЧерез 2 года заканчивается поддержка, 2. Попахивает пиздежём. Ну разве что главный аргумент в том, что англюсик.>нужна лицензионная IDE для работы с джангоКуплю версию с китайским сервером лицензирования, если ты про пайчарм.
>>1164110> Там есть асинхронное файловое IO вместо невнятного обрезка которым никто не пользуетсяПроиграл на всю квартиру. Что ещё спизданёшь?
>>1164132Анон, не у всех с инглишем хорошо. Я очень часто сталкивался с моментами, когда мои коллеги по проекту или тиммейты не могли в английский. Всё-же, делаю поправку и на это. Лол, когда ты в последний раз писал что-то незнакомое на незнакомой библиотеке? Я конечно только джун, но даже разговорный инглиш меня не спасал в некоторых случаях. Теперь веду vocabulary заточенный конкретно под меня. Крч, иногда это полный пиздейшен, хоть в петлю лезь>Куплю версию с китайским сервером лицензирования, если ты про пайчарм. Да вот блядский пайчарм маслины баги ловит. Там выше пикрил про это и я лишь надеюсь что поможет переустановка. Словами не передать, каким маленьким было моё очечо когда я прикинул что кодинг может из-за автосейва похерить весь проект, над которым я откровенно ебался в мозг последние недели две нейронка-пилот для KSP. Благо Atom показал что всё норм.
Как функции subprocess выполняют команды, которые им передают? Они вызывают команндную строку (cmd на шинде) и дают их туда или как?
>>1164133Ты для начала погугли, а потом проигрывай. Самое нормальное оно как раз в винде.
>>1164148Командная строка, cmd, bash, shell, whatever — сами являются процессами-интерпретаторами, как и питон. Subprocess дёргает апи системы чтобы спавнить процессы. А уж что запускать решаешь ты, можешь просто прогу стартнуть, можешь cmd.
>>1164143Это твоя хуйня с кодировкой там? Скинь файл, можешь порезать его, если не секьюрно, попробую пошаманить.
>>1164086А как ты негра сделал в ide ?
>>1164155А что толку? Это во всём пайчарме. Причем, с момента когда я его в последний раз закрыл, ничего не менял в IDE. То есть это именно тот случай когда оно само даже на вводе нихуя не отображается нормально.
>>1164143>не у всех с инглишем хорошоДля них существует 1С.>>1164132>Попахивает пиздежёмТак и есть, за всё время работы ещё ни разу не встречал проблемы кроме некроёбов на < python3, разумеется. Всё, что нужно, уже есть на 3.>>1164120> недописанной документациейИсходники ты захочешь ещё, я гарантирую это
>>1164120Ну и в добавок>нужна лицензионная IDE для работы с джангоЕсли ты действительно зарабатываешь разработкой, то 9$ в месяц - не деньги.
>>1164082>нахуя было наследовать камелКейс, когда в Пиздоне другой стандарт именования методов?камелКейс - лучший метод наименования. Прув ми вронг.
>>1164179Кекнул с верблюдоеба.
>>1164179>камелКейс - лучший метод наименования. Прув ми вронг.що то говно, шо это говно
>>1164184Орнул_с_подчеркнутого_дауна
>>1164179>>1164184Ой, блять, не начинайте.
>>1164185но андескор всё таки говнянее
>>1164179Да похуй блять, вебрлюд или андерскоры, главное чтобы их не миксовали, хотя бы в стандартной, сука, библиотеке.
>>1164187clojure-style
Питонач-помогач, знаешь ли ты какие-нибудь статьи по тестированию на джанге? В частности, интересует такая схема: беру тестовую базу, по ней прогоняю тесты. Нужна информация по структурированию тестов отдельного приложения. Т.е. беру я, например, из этой базы несколько моделей и прогоняю их по всем тестам. Как лучше это организовать? Был час в гугле, там дают только базовую хуйню, про структуру маловато инфы
>>1164217два-чаю-этому
>>1164217При чём тут кложур? Это же в самых бородатых лиспах ещё придумали.
А зачем питон нужен?
Попалось тут:if i (остаток от деления) 0O11 == 0:Что за 0O11?
>>1164337>0O11https://ru.stackoverflow.com/questions/517960/python-3-%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83-print0o11-%D0%B1%D1%83%D0%B4%D0%B5%D1%82-9первая ссылка
>>1164343шёл 2к18 год, а Питон всё так жке не умеет складывать 0,1 в единицу.
>>1164353Может ты нам назовёшь место, где от этого страдает процесс разработки?
>>1164354Вовсе не мешает, надо все в интеджерах считать, это любого языка касается, не 1.48 рубля, а 148 копеек, не 1.4 см а 14000000000000000 микрон, и так далее.
>>1164353Высрал хуйню в тред и хорошо так стало, аж по штанине потекло, да?
d = {}d[True] = 2d[1] = 3print(d[True])
>>1164359>>1164354Как же пичот, больная тема видимо у питонистов.
>>1164366"Пичот" только у залётных типа тебя, все остальные уже давно привыкли к даунам.Алсо, питонисты, только я один никогда не сталкивался с проблемами из-за этого?
я не понял, сложение приоритетнее разности что ли? 0_о
>>1164369>>> 2 - 3 + 10
>>1164368Ещё один подорванный.
>>1164372Тогда что это?
бля >>1164375 --> >>1164371
>>1164366> у питонистов.> тот же самый стандарт флоатов используется в куче других языков> абсолютно все ЯП имеют проблемы с точностью флоатов> у питонистовОт тебя воняет уже.
>>1164375Хуйня какая-то, видимо
>>1164377У ассемблера нет проблем с базовой арифметикой.
>>1164381Ага, ведь ассемблер складывает числа не процессором как убогие языки, а МАГИЕЙ.
>>1164382хелловорд 64 битный статически линкованый на асме весит 352 байта, сколько байт весит питоно или даже C-хеловорд?
>>1164387>питоно 22 байта
>>1164389Скомпилированный - 118 байт.
>>1164387Обоссал буквального байтоеба.
>>1164375Записки идиота какого-то, очевидно. Либо ты не прочитал сопровождающее описание, где он приводит оправдания, почему не смог написать по два слова на строку. Сложение ассоциативно, а вычитаение это всего лишь сложение с отрицательным числом, так что между ними в принципе и разницы-то нет, переставляй как хочешь.
>>1164151Специально для тебя нашёл пасту, сохранённую в 2009 году из дискуссии в /c/ нульчана.> то, что все это будет тратить системные ресурсы, время и трафик.Видишь ли, ввиду того, что архитектура Винсока слоистая, любая операция в принципе проходит по каждому сервис-провайдеру (LSP).Естественно, в таких условиях создание сокета (а при ассепте как раз создаетс еще один сокет) это весьма долгая операция. Для этого МС придумала все эти ваши костыли с кондишнал ассепт и *Ex() функции.В БСДе же принять и сбросить коннект будет весьма и весьма быстро (как кстати и создать поток. На винде потоки создавать тоже относительно долго).> IOCompletionPort.Говно этот иосп. Потому что он полностью оправдывает свое название - ИО комплешн порт. Если бы ты удосужился почитать о всех фишках kevent, ты бы понял, что эта штука гораздо функциональнее и быстрее чем твой IOCP, который, кстати, еще и с нихеровым оверхедом.> Ты не против в том же треде показать аналог виндового xperf?Ты не понял, что я имею ввиду. Я не собираюсь меряться с тобой всякими апишками. Я просто сказал, что все ОС какбы разные (sic!) и апи у них тоже какбы разные.Другое дело, действительно ли это полезные апи, или это просто костыли, чтобы заставить систему работать сносно. Это о примере выше.
>>1164086у меня такое было когда я установил LibreOffice
>>1164082assert
>>1162688pyenv or virtualenv
>>1164454>kqueue>I've used them in the past to detect when when actions happen on a file (or within a hot folder). I don't believe they can be used for "reading" and "writing" files, though.>epoll>epoll only makes sense for file descriptors which would normally exhibit blocking behavior on read/write, like pipes and sockets.А вот IOCP может. В никсах только обрубок в виде http://man7.org/linux/man-pages/man7/aio.7.html который нигде как надо не работает и тупо блокирует. Файл дескриптор который для файлов и "файл дескриптор" который для сокетов в ядрах никсов оказывается очень разные вещи.
>>1164377>оправдывает собственную уёбищность тем, ШО У ДРУГИХ ТОЖЕ ЕСТЬ БАХГИ
Правильно ли я понимаю, что допустим, для парсера вебмок нет смысла прикручивать многопоточность? Так как в 1 потоке будет качаться на максимальной скорости, а например с 5 потоками скорость будет резатьсяПри условии что сервер отдает с не меньшей скоростью, чем скорость моего канала
>>1164509Ты совсем у мамы дурачок, да? Для файлов есть inotify.
>>1164563Смысл есть, но из-за GIL тебе придется ебаться с multiprocessing
>>1164578Но в туториалах пишут что threading нормально работает с сетевыми интерфейсами, GIL не мешает
>>1164582Ну тогда тебе остается только грамотно всё реализовать, чтобы не упереться в ограничения...
>>1164565Напиши асинхронный http сервер сохраняющий файлы через PUT, удаляющий через DELETE и выдающий содержимое через GET. Без aiofiles. В качестве бенчмарка 10к очень медленных клиентов со скоростями уровня WAP/dialup. Тогда приходи и ещё поговорим.
>>1164563Браузеры обычно держат небольшой конекшен пул под каждый домен, чтобы не останавливаясь качать в моменты затупа HTTP1. Для HTTP2 больше одного конекшена вообще не нужно, там мультиплексирование. Многопоточность тебе нужна если делаешь на блокирующих вызовах. Можно альтернативно взять aiohttp.
>>1164593Маня не слышала про мои DMA?Блядь, пиздец ты дискуссию ведёшь, с одной темы прыгаешь на другую, не удалось в одном уесть - сразу про другое. Такое ощущение, что я на хуёвом собеседовании, ещё скажи, что ты мне перезвонишь.
>>1164598Ну это ещё кто из нас с темы на тему прыгает. Факт остаётся фактом: в асинхронном питоне файлового IO нет и не будет. Большей частью именно из-за несовершенства ядер.Список твои аргументов:>на kqueue тоже можно сокеты и он может потягаться с виндовым iocp>есть inotify, можно знать когда кто-то другой трогал файлЯ же тебе конкретно ткнул в http://man7.org/linux/man-pages/man7/aio.7.html , а ты продолжаешь прикидываться ебобо как ни в чём не бывало. Даже наводящую задачку придумал, нихуя, эффекта ноль. DMA блядь, пиздец, что несёт, вообще охуеть. То что ты немного почитал про интерфейсы ядер и DMA это похвально, но ты точно переоцениваешь уровень своих знаний.
ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ>>1164614 (OP)>>1164614 (OP)>>1164614 (OP)
>>1164158win+Rpip install africaimport africa as afrx = afr.people.male.crying_negro_manprint jpg(x)
>>1164593> Без aiofilesloop.run_in_executor
Как взять через запрос API получить файл в JSON-нотации и сохранить в CSV?
Киньте годную шпрагалку по Питону в виде картинки для начинающих!