Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: — А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
— Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
— А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
— А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Как можно без лишней возни ускорить программу на питоне 1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь. 2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником. Исходник: https://dumpz.org/bASGKD8cCFDf
>>2087164 → >Потом останавливаюсь и понимаю что минуты 3 я думал о том как буду работать с ее кодом, заржал в голос. Ну ты конечно тормоз, че тут думать инсталишь лабу и готово.
>>2087164 → Седня иду с подругой и думаю как создать функцию где на вход будет мой хуй, а возвращать она будет сосание. >>2087174 → Он странный, не так ли?
Как вы формируете данные, когда пишете crud приложения? Интересует связь с реляционными базами данных, например - есть необходимость вытащить кучу данных и вернуть json. Я могу написать запрос на 3 экрана, и вернуть сразу все нужные данные (в postgres есть всякие json_build_object). А могу сделать сводную таблицу, получить её в питон, и производить манипуляции с данными уже там, но это же кучи циклов/вложенных циклов и прочего groupby. А иногда нельзя сделать сводную таблицу, и приходится делать 2-3 запроса в одной транзакции, и только потом обрабатывать данные. В идее писать общий sql мне не нравятся то, с какими мучениями я потом сталкиваюсь, когда изменяется ТЗ каждый день. А в идее транзакции и обработки данных в python не нравится скорость. В моей проблеме мне как-то поможет ORM, если с postgres мы слезать не собираемся?
>>2087500 Не ответ на твой вопрос, но что тебе на самом деле нужно, это иде с поддержкой sql. Изменять запросы под изменение задач очевидно, лучше, но не так удобно, поэтому ты и корчишься.
Есть ли у пистона приоритизация выполнения в эвент лупе? Например, сначала идут корутины у которых явно await вызывается, а потом таски, call_soon и т.д.
Можно ли из коробки префоркнуть эвентлуп в отдельном процессе в который имеется возможность скидывать определенные таски, если известно, что они не юзают совместные ресурсы или нужно костылить свое решение?
>>2087777 С самого начала были варианты из серии run_in_executor, где ты можешь как в отдельном треде, так и в отдельном процессе что-то запускать.
И этим даже пользовались, чтобы запускать традиционные функции. То есть тут просто несколько более удобный и менее многословный вариант.
И он всё-таки для других целей, чем тут спрашивали, тут история о том, как обходить блокировки, с которыми штатные примитивы асинкио не справляются. Это в первую очередь блокировки из-за файловой системы и вот подобные кейсы.
Задачу надо подробнее описывать, тогда можно будет какое-нибудь решение предлагать. В общем случае никак. В частных тысячи вариантов. Например, сделать задачу, которая обрабатывает другие задачи, и кормить её через PrimrityQueue, или как-то так она называется.
Во время прогона цикла вываливается ошибка IndexError: index 0 is out of bounds for axis 0 with size 0 Можно как-то получить именно этот элемент, чтобы подебазить его? В логи его записать или что-то ещё?
Аноны, новичок в питтоне. Написал программку, скомпилировал ее в exe. Но чет забыл, что она завершиться и консоль тупо закроется. Так вот, как можно сделать завершение программы по нажатию на Enter? Нашел вот такое решение:
код программы
k = ord(msvcrt.getch()) #считываем код клавиши if k == 27: # если клавиша Esc sys.exit() # завершаем программу
>>2088015 Спасибо, но какая-то херня. s1 = array([31], dtype=int64) >>>s1[0] IndexError: index 0 is out of bounds for axis 0 with size 0 >>>s1.item(0) IndexError: index 0 is out of bounds for axis 0 with size 0
>>2088220 У меня есть двумерный массив. При помощь np.where я получаю массив s1, где указаны позиции строк, удовлетворяющих условию. Пытаюсь извлечь нужное значение - ошибка. Пытаюсь сконевертировать массив в список и взять нужный элемент s1.tolist()[0] - то же ошибка. list index out of range Что за херня?
>>2088226 В ногинске пишешь proxy_pass 127.0.0.1:7654; #а лучше ::1:7654, потому что короче, но это если ипв6 включен Запускаешь фласку на 7654 порту. Всё.
>>2088412 Да я бы и спарсил в наглую, но сайтов нигде нормальных нет, есть PyDictionary, окей, там возьмем перевод, есть speechr_recognition, окей тут возьмем аудио, но где взять транскрипцию.
>>2088506 Вызывается при сборке мусора при завершении скрипта. В интерактивном режиме ты какбе сидишь внутри выполняющегося скрипта, там ничего не уничтожается неявно.
помогите с python'ом есть функция, на входе она принимает объект X есть также другая функция, которая принимает в себя объекты типа X и возвращает значение Y, того же типа что и X (значение Y определяется вторым аргументом функции, пусть будет Z) я пытаюсь сделать так, чтобы при одинаковых X и разных Z составить список всех получившихся Y все Z я засунул в список получается так: for Z in Z_list: Y = func(X, Z)
собственно, в чем проблема: после первого же Z, у меня дефолтное значение переменной X становится равным Y. то есть у меня получается что: после первого цикла Y = func(X, Z_list[0]), после второго Y = func(func(X, Z_list[0]), Z_list[1]) и тд. почему так происходит и как это исправить??
>>2088907 Ты где-то обосрался и носишь ссылки на объекты вместо создания новых или мутируешь изначальный объект. По описанию не скажешь, надо смотреть код.
Господа, мб знает кто прикольные легкие NoSQL базы,? Хочу что то такое же тупое как редис, просто ключ-значение, только что бы на диск складывались данные а не в оперативу. Пробовал MongoDB и DynamoDB еще, не то вообще.
Пробую пересесть с pycharm на atom и при вводе команды происходит это. Если просто в cmd, команду написать, то же произойдет. В pycharm все нормально работает.
Ищу фреймворк, что-то типа менеджера задач с вебдыркой. Чтобы можно было запустить длинную задачу POST /task, а затем её статус можно было проверять GET /status. Идеально если она будет очереди разруливать. Читаю пока про Celery, но как я понял ему нужен брокер сообщений, а мне бы по простому всё в памяти аппы подержать, без зависимостей.
привет питонистам ребятам плечистым. тащем то надо забирать значения RGB строго по диагонали, то бишь по всему скриншоту. сейчас это происходит как изображено на данной пикче
for x, y in zip(range(w), range(h)): if x % 10 == 0: R = pix[x, y][0:-1][0] G = pix[x, y][0:-1][1] B = pix[x, y][0:-1][2] RGB = R + G + B if (color_space[-1] == 0) or (color_space[-1] != RGB): color_space.append(RGB)
как это сделать красиво математически я не ведаю. т.е. чтобы линия уходила строго в противоположенный угол. принципиально менять ничего нельзя. с меня тонна нефти
Опытный анон, подскажи, ошибка "IndexError: list index out of range" может быть внутренней ошибкой python'a/cython'a? Вычисляю значение элемента внутри функции - ошибка. Вычисляю то же самое за пределами функции - всё нормально.
>>2089567 Вот, пожалуйста, безупречный алгоритм, первая точка переходит в первую, последняя в последнюю. Цикл по короткой грани считаю идеологически более правильным, потому что при цикле по длинной грани у некоторых точек будет одинаковая координата, так что получатся не точки, а полосочки.
Код записи в БД дает следующую ошибку: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140181074405184 and this is thread id 140181047572224.
Внимательно прочитал про threading и как обычно ЯННП. Что надо поменять в коде запуска так, чтобы появилась возможность писать в БД?
>>2089651 >SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 140181074405184 and this is thread id 140181047572224.
Ты передаешь обьект либы/орм как аргумент? Если да то это хуевая практика, нужно передавать первичный ключ и вытаскивать уже внутри таски обьект по ключу если его не удалили к этому времени.
>>2089700 a, b = next(generator) Важно учесть, что когда ты оборачиваешь генератор в список, он все отгенерит в момент формирования списка и никакого next у него уже не будет.
Вопрос - обрабатывать, поставил ли пользователь лайк/дизлайк (и соответственно, будут ему доступны эти элементы, если он уже нажал) будет лучше во вьюшках или на фронте?
Анон, помоги правильно составить условие выражения. Есть подвыборки одинакового размера, чьи индексы хранятся отдельно. В одной из подвыборок на определённом положении/индексе есть нужное значение z1. Мне нужны все значения, которые "больше": т.е. либо они принадлежат к той же выборке, но их индекс больше, либо они принадлежат к следующим выборкам (индекс, тут уже роли не играет). Т.е. по сути на выходе нужен кортеж с индексом выборки и индексом значения, которое будет "больше".
значение поля status - это лайки-дизлайки. Надо подумать, какое поле делать, я бы забайтоёбствовал и закодировал всё в Int, чтобы 0 это без отметки, 1 это лайк, 2 это дизлайк и в таком духе. Но можно на базе CharField сделать.
Но если разгонять перформанс, то нужно уже сложнее накручивать.
>>2089433 У тебя основная задача как работает, с тредами или через asyncio? То есть каким образом ты в принципе хочешь контролировать, какой статус у задачи?
В случае asyncio ты можешь работать с aiohttp, в случае тредов наверное через flask. Через aiohttp я подобное делал, довольно удобно, надо просто запускать чуть в другом режиме
Мой друг спрашивает, почему append у list'а не возвращает себя самого? Ну ему бы хотелось делать .append(1).append(2).append(3) Я не смог ему ответить, потому что просто воспринимаю это как данность и пользуюсь extend, если надо добавить больше одного элемента. Но может вы знаете научный ответ на этот вопрос?
Аноны, учил джаву, захотел что-то поинтереснее в плане машин лёрнинга и так далее. Как дела в питоне? Слышал он по всем параметром ахуенен и язык на котором хочется писать писать и еще раз писать.
>>2090215 машин лернинг на питоне хуярит как шлюха дикая просто вещь. но вот схуяли ты взял что машин лернинг это интересно? машин лернинг это набор нахуй научных методов с задротскими формулами, которым ты скармливаешь данные. на выходе получаешь РСА 0,2356985, ПСЖ 56985325, ОКР 0,2565895 пиздец как интересно,.
>>2087217 (OP) Как на шинде скриптом менять PATH на всю систему, чтобы было на всех командных оболочках Хочется менять системный интерпретатор пистона на тот что сидит в usb-памяти (pypy3) для собственного удобства
>>2090388 >Меня смущает, что ты лезешь в программирование. Спасибо за беспокойство, но оставь свои смущения при себе. Я пришёл с вопросом в соответствующий тред, не хочешь или не знаешь как на него ответить - не трать, ни своё, ни моё время. Спасибо.
>>2090391 Я тебе уже ответил... Был бы ты программист нахуй, ты бы посмотрел, что именно ты передаешь в свои first, second list... Ты зипуешь списки разной длины, ты видишь, что получаются None, но ты все равно просираешься в тред и хамишь мне... Я не вижу предпосылок получить на этом наборе данных то, что ты хочешь.
>>2090394 >Ты зипуешь списки разной длины, ты видишь, что получаются None, но ты все равно просираешься в тред и хамишь мне... Вот так и можно было сразу ответить, а не тешить своё чсв. Спасибо. >>2090396 > Сначала глупые вопросы, Для этого тред и создан. Не видел тут вывески, что только для синьоров с 10+ годами опыта. >потом хамство. Я нормально спросил. Не можешь ответить по существу - не отвечай. А мнение быть кому программистом или нет, я не спрашивал. Оставь при себе, пожалуйста.
>>2090391 ты понимаешь что разбираться в чужом коде тяжелее? Ты его уже написал, ты в своей проблеме по умолчанию можешь проссать лучше здешнего мимокрокодила, которому придётся минут 5 на это потратить. Это немного невежливо - озадачивать большой, но банальной проблемой. Если бы ты реально пытался её решить, ты бы упёрся в простой вопрос
>>2090419 Спасибо, сформулировал практически то, что я хотел сказать, только не так токсично. Добавлю, что залетая с проблемой нужно писать, какую именно задачу ты решаешь, а не просто "у меня код должен выдавать такое, а не выдает". Вот это реально неуважение, как будто алгоритм я сам должен додумывать.
>>2090715 >>2090717 >на последнем месте sep= Тогда он впердолит запятую и после ай лайк геймс, и перед точкой в конце. Можно ли как-то сделать так, чтоб sep= относилось только к списку *games? Про .join знаю
Аноны, допустим у меня есть чат-бот, и есть некоторые его настройки типа используемой валюты. Раньше хранил такие переменные в отдельном модуле config.py, но сейчас появилась необходимость их изменять (присваивать новые значения) в других модулях. Как это лучше сделать? Хранить их в текстовом формате? нюфаня итт
Тебе фактически нужна БД. Можно использовать внешнюю БД, можно хранить данные в текстовых файлах, в sqlite, в json, yaml и других. Или прикрутить что-нибудь.
Мне кажется, в первом варианте можно где-нибудь в json хратить. Удобно и скрипту работать, и человеку влезть в него легко при необходимости.
>>2090867 Самый простой вариант - .env файл в корне проекта на самой виртуалке, в репозиторий не заливай, а то сеньоры опустят, переменные из которого ты подгружаешь в свое приложение через os.getenv. Идеально подходит для хранения секретов типа токенов и прочей хуйни
Почему линуксоиды пишут в продакшн в этих своих линуксах на питоне, если всем вроде как очевидно, что питон это очень прожорливый, ресурсозатратный язык для проверки идей и обучения программированию американских детей с синдромом Дауна? Неужели питон на линуксах такой же быстрый, как C, на котором сама ОС и написана?
При переносе кода с платформы windows на linux ошибка:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-10: ordinal not in range(128)
В строке вида: print(Fore.RED + f'\u041e\u0448\
Понимаю что проблема с кодировкой, но тут два вопроса, почему другой подобный код у меня работает нормально а этот файл ему не понравился? И второй как её решить?
Ебусь уже 3 день с этим вашим ебаным докером, как меня заебала эта айтишечка. https://ideone.com/kbO8T4 Почему когда запускаю вручную через терминал, то работает, а когда через докер, то контейнер запускается, но локалхост:9000 не работает?
В чем подводные держать типа микросервисы тупо в разных потоках, вместо отдельных подов? Ну типа вот запускаем все с одного файла, но у нас есть поток с апихой, потоки с обработчиками вебсокетов, потоки со всякими воркерами для сложных времезатратных операций + у нас есть клиенты для общения со своими базами данных, которые доступны в коде всех этих сервисов во всех потоках, а общаемся мы между ними через залоченую очередь. Это же вроде охуенно, мы можем из любого сервиса напрямую в базу что-то закидывать и доставать оттуда, не использую хттп, еще и минуя при этом сериализацию всякую. Я знаю, что так не делается, но почему?
>>2091111 >для проверки идей вот это Стартап же начинают с рисками, никто не уверен что все будет збс. На питоне можно очень быстро написать демо и в целом стартануть, скорость разработки ебейшая и относительно недорого выходит. А потом если все и разрастается, то просто влом переписывать на го бывает. Да и есть вообще такое правило - не оптимизировать пока терпимо работает.
>>2089748 к оцениваемой модели поле мэнитумэни что то типа reactions, кароче мэнитумэни к модели юзера и у джанги в мэнитумэни есть что то типа through=..., можно определить модель через которое это отношение будет строится, так вот туда пихаем что то типа Reaction(model): VALUE_LIKE = ':D' это чойсы кароч VALUE_DISLIKE = '>:('
- user = foreignkey(user) - publication = foreignkey(publication) - value = charfield(choices=чойсы сюда
>>2089748 насчет валидации - на бэке обязательно должен быть какой то механизм, еще у модели reaction просто в meta unique_together=('user', 'publication') а дальше зависит от политики, которую ты хочешь. Например если тебе нужно чтобы пчел мог поменять неудобное мнение ты просто в круде /reactions/ делаешь put реквест и относительно моделек делаешь create_or_update, а если нужно чтобы юзер мог только один раз рейтануть и не мог поменять мнение - у тебя экшон для создания реакции, post и если юзер уже реагировал возращаешь 400 already exists что то типа того
Одно приложение в centos требует python 3.7+ у меня 3.6 Поставил из исходников, вроде установилось теперь у меня две версии, но pip кривой, требует ssl. Как это вообще можно исправить, возможно ли без сборки скачать python 3.7 с нормальным pip?
>>2091234 Поздравляю, ты изобрел монолит! А если в случае с пистоном, то там GIL, и можно параллельно работать только с помощью процессов и тогда начинается ебля IPC
>>2091395 И что я там нового найду? > It also creates a bin (or Scripts on Windows) subdirectory containing a copy/symlink of the Python binary/binaries (as appropriate for the platform or arguments used at environment creation time). It also creates an (initially empty) lib/pythonX.Y/site-packages subdirectory (on Windows, this is Lib\site-packages). Создается симлинк (или копируется на шинде) на системный питон, который будет юзать системную же стандартную либу и свою собственную site-packages для установок.
>>2091406 Это не один файл заменить, нужно нормальное готовое окружение, и уже на эти окружения и можно заводить венвы для получения разных версий. Ты какую-то норкоманию придумал.
>>2091417 Не, я сейчас думаю, что это был pypy и я его просто в венве распаковал, а дальше он сам умеет забрать на себя python в активированном окружении. В общем-то, не важно. Дискуссию-то устроили на 10 постов, а тому анону на центосе этот ответ так единственным и остался.
>>2091418 Разве? У меня лежит где-то редис под шинду, юзаю его как кэш для парсеров. Это один экзешник, запустил и работает. В общем-то, так он работает и на других ос.
>>2091425 SQLite слишком долго транзакции проводит, я вообще думаю просто в json все класть >>2091426 Юзкейс простой, небольшое приложение распознает цифорки с картинок, а потом сохраняет эти цифорки в словарь, где ключом является id-шник пользователя
>>2091239 А есть правило сразу делать заебись, а не сначала писать лагучее говно на псевдоязыке, а потом забивать хуй на оптимизацию, как это всегда и происходит? За что сейчас проградристам вообще платят?
>>2091419 >Дискуссию-то устроили на 10 постов, а тому анону на центосе этот ответ так единственным и остался. Бесполезным, потому что так ты не поставишь.
Погуглил, предлагают собирать из исходников.
Дельный совет анону, сноси этот центос, ставть Винду версия ubuntu 20.04 вполне себе годна. Там это реально очень просто делается..
>>2091451 >А есть правило сразу делать заебись нету такого правила, бизнесу нахуй оно не нужно, заказчик всегда хочет новых фич побольше и побыстрее
>а не сначала писать лагучее говно на псевдоязыке по будет сначала не особо лагучим, поэтому заебись, потом, конечно, через какое-то время будет тормознее становится, но если к этому времени проект доживет - можно думать о переписывании отдельных модулей на чем-нибудь побыстрее. Или как ты хотел? По твоему заебись въебать кучу времени и денег на написание той же хуйни только чуть пободрее, чтобы потом стартап провалился как 99.9% других? Ты долбоёб!
>забивать хуй на оптимизацию, как это всегда и происходит? Если так происходит, значит так надо, схуяли ты решил что ты умнее всех?
>За что сейчас проградристам вообще платят? В аутсорсинге и аутстафинге за наебывание клиентов, ты так пишешь, как будто не работал никогда, вкатун чтоли?
>>2091451 Лол - за что сейчас вообще программистам платят. Посмотри на фронтенд, там джуна так ебут нодой, всякими сборщиками, сасами-лесами и прочей залупой, что на выходе обычный блог с текстом выходит более тяжелый, чем полноценный сайт со свистоперделками (поиск, логин, админка, лайки, карта с драг энд дропом) лет 5 назад.
Вот уж если кого и пинать за тормоза и говнокод, то явно не питонистов.
>>2087217 (OP) Есть строка байт по типу: b"\xff\xd8\xff\xe0" - как декодировать ее в строку? (почему-то вместо b'\x89PNG' пришла вот эта фигня, хз как ее правильно конвертировать)
Ребята, почему мне не отвечают на резюме? Вот сам кусок скилов из резюме, скинул только скиллы. Под не отвечают имею ввиду что даже на собесы не зовут. Еще я забыл добавить что в резюме есть опыт с фриланса 1 год.
1 - Написано что мне 16 лет, закончил школу, нигде не учусь. 2 - ⦁ I have experience with Aiogram,Selenium,bs4 also in other built-in modules like,os,sys,time,json,math, etc. ⦁ I have experience with Django, I also plan to develop towards Back-End development. ⦁ I have experience with ORM, more specifically SqlAlchemy and Peewee and also have experience with SQL ⦁ Knowledge of HTML/CSS - SASS/SCSS / Bam Methodology, JS/React ⦁ My knowledge of english is pre-intermediate/intermediate. ⦁ Experienced with controlling version like Git. ⦁ Knowledge of OOP, three main principles and why they are needed. ⦁ I know basic algorithms like sorting, graph traversal, binary search, etc
Сап питонач. Появилась необходимость работать со спарком. А как вобще код то проверять, писать и тестировать? Ну вот есть сервис спарка, я ж ёбана не буду в текстовом редакторе никсов код бахать. А удалённо вроде нельзя запустить, спарк разворачивать локально тоже чот сложно. По идее библиотека sparkа должна сама уметь на локальном запускать? Чото я нихуя непонял короче
>>2091827 На мой взгляд написано очень много всего, посмотри резюме других ребят, сократи свое до нескольких строчек, оставь только самое важное, то в чем ты уверен на 100%. Вот пара примеров как сокращать:
"experienced with controlling version like Git." можно сократить до одного слова - git. "Knowledge of OOP, three main principles and why they are needed." можно сократить до OOP.
Вообще тебе что, сочинение задали на литературе написать что ты хуйню всякую растягиваешь? И так далее.
>>2091947 так это в каждой вакансии указывают как требование даже у мидлов, херка не увидит слова и подумает что ты не осилил гит за 5 лет столичного опыта.
>>2091827 Может лучше пет проектов ещё наделай да английский подтяни? В 16 лет вряд ли куда-то возьмут, но на такой вопрос неплохие знания. Хотя может учиться где-то и нужно.
Как сделоть чтоб urllib.request.urlopen не вываливался с эксепшоном что у меня HTTP code 403, а давал самому это прочесть в респонсе? Ведь если ловить это исключение, он мне ничего нахуй не даст
>>2092388 >BaseHandler.http_error_default >This method is not defined in BaseHandler, but subclasses should override it if they intend to provide a catch-all for otherwise unhandled HTTP errors. It will be called automatically by the OpenerDirector getting the error, and should not normally be called in other circumstances. >req will be a Request object, fp will be a file-like object with the HTTP error body, code will be the three-digit code of the error, msg will be the user-visible explanation of the code and hdrs will be a mapping object with the headers of the error. клянусь богом, urllib это самое уродливое что есть в сраном питоне
>>2092448 class __unhandle(urllib.request.HTTPDefaultErrorHandler): def http_error_default(self, req=None, fp=None, code=None, msg=None, hdrs=None): return '1234' __rq = urllib.request __rq.HTTPDefaultErrorHandler = __unhandle крч если не криво делать то тут можно превратить параметры в нормальный http.client.HTTPResponse вместо 1234, и тогда норм но это буквально дописывание языка за его авторов
Как вот эта вещь реализована со стороны бд? Каждый раз при новом запросе собираются фильтры для категорий или один раз просчитывается и хранится в бд? И, допустим, при добавление/удаление пересчитывается.
Аноны, несколько тредов назад кидали объемную подборку на русском материалов по питону, гиту, БД, алгоритмам и так далее. Естественно, я ее проебал. И я буду очень благодарен, если кто-нибудь поймет, про что я и скинет ее.
>>2092493 Я такого сам не делал, но тут я уверен делается обычный запрос к беку в котором прописываются все фильтры, бек обрабатывает их, чтобы в запросе к бд все ровно было и возвращает нужные данные
>>2092050 Я сделал пару пет проектов, не уровня Хеллоу Ворлд, да, с английским у меня траблы. Но я думаю скорее всего из-за возраста и не зовут никуда. Учиться я не могу, нужно зарабатывать, пока подрабатываю в реале + иногда заказы на фрилансе делаю.
Случайно вкатился в микроконтроллеры, такая-то тема. Берется копеечная хуитка за 2-3 бакса, там можно запустить микропитон - нищереализация питона на голом железе, на борту есть вайфай-блютус и место под файлы. И возможность подключить мильйон всяких примочек. Я прям удивлен, что это вот так себе существует и прошло мимо меня. По старинке думал, что там какие-то асмы-си и анальная олимпиада. А оно вон оно как. https://www.youtube.com/watch?v=r8V2JZ9WJw8
Всем привет, нужно собрать приложение pyqt5 под андроид. Нашёл инфу про pyqt-deploy, почитал доки, появилось желание застрелится,нашёл статью на хабре, стало лучше, но на практике повторить не смогу, может кто знает видосов каких про эту библиотеку или ОЧЕНЬ подробных статьей, потому что мороки как я понял там очень много
>>2092615 Звучит все нормально, но я должен пройтись по характеристикам ВСЕХ товаров в категории и вытащить из них значения характеристик. Мне кажется если в категории 2-3к товаров и много запросов, то загнется бд.
>>2092784 Тебе не сразу товары показывают, а пачками, достаточно первые 10/25/50 вытащить указав лимиты, а потом оффсетом смещать. Да и с индексами все и так быстро будет.
>>2092808 Еще раз скажу, допустим там стоит фильтр на бренды. Он показывает все бренды в этой категории, не только первой пачки.
>>2092811 Спасибо, но это не то. Я понимаю как применять фильтры, но я не понимаю как вытащить характеристики из товаров категорий. У категории должны быть характеристики, но должны ли у категории быть значения характеристик?
Характеристика: бренд. Значение характеристики: samsung.
>>2092851 В чем суть вопроса я так и не понял? Есть у тебя эндпоинт для товаров и в квери параметрах просто указываешь ?brand=Sumsung, потом на беке достаешь все квери параметры, видишь бренд указан, значит из бд достаешь только самсунг, делаешь пагинацию нужнаю тебе на 10,20,50 и все, в чем проблема то?
>>2092851 Может ты имеешь ввиду что фронт должен с бека получать список брендов например? Тогда есть несколько решений, смотря нужно ли тебе что-то поворотливое и сложное делать или простое решение в лоб
Может кто нибудь написать скипт или как это там называется (чтоб в группу вк однокласы и канал в телеге автоматом добавлялись просто ссылки на новые видео с ютуба по двум ключевым словам) Могу криптой оплатить
>>2092765 Ты прав, помню что в исключении был resp который я через перезаписанные функции взялся возвращать
Но мне так лаконичнее, обойтись без дублирования кода в обрабоке исключений (как я уже допилил). Я ж оперирую в зависимости от http тела, к чему мне коды.
У вас бывало такое берешь заказ, тебе платят наперед и желания заказ делать больше нет, я его сделаю, но вот прям лень полная, ведь деньги уже лежат у тебя.
я тут подумал, что раз в параметрах функции не действует self, то можно юзать локальные переменные класса, но тогда неопределённость: мы получим локальные переменные инстанса класса, или переменные абстракции класса?
взялся проверять и чёта магия какая-то https://ideone.com/07JLOO ><__main__.F object at 0x153ea4e596d8> как джва превращается в ОБЪЕКТ?
>>2091903 Во-первых, все удаленно работает отлично. Любимая фича - поднять удаленный сервер джупитера, подключиться к порту через браузер и дрочить датафреймы в нем. Естественно, основной код в .py файлах. Да, Спарк разворачивать сложно. Поэтому берешь Линукс/wsl2/докер, накатываешь анаконду и Pyspark из канала Conda-Forge, плюс 8/11 жабу. Выбираешь конду как интерпретатор в пичарме, и вуаля. На Винде дополнительные зависимости, ебля с винутилс, мб хадуп и вроде тормознутее, так что нахуй винду.
Двощ, как поставить этот грёбанный dotenv? Почему всё ставится а это говно нет? File "/usr/local/lib/python3.7/urllib/request.py", line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: SSL is required
>>2093795 Кажется разобрался, надо вот так было: pip install python-dotenv И нахуя разрабы так делают? Откуда я должен знать что это говно с префиксом python- нужно?
>>2092493 Папа пришел нахуй. Всем сидеть, всем лежать
1. Есть кеш, запросы как правило пойдут к нему 2. Есть полнотекстный поиск, если надо то будет он на каком-нибудь Elastic а не на мускле 3. Есть индексы в БД нахуй. Индексы эффективны епта в том числе и для выражений BETWEEN а не только для единичных значений
Аноны, есть загрузчик данных в таблицу из csv-файла. Пишу скрипт, который сравнивает таблицу и csv-файл, и логирует строки которые не занеслись в базу по каким-то причинам. Пока что написал только для загрузки данных в пустую таблицу, но что делать если она непустая? Скрипту на вход подается только файл-источник и таблица. Как узнать, с каких строк начать сверять данные?
>>2094342 Если у тебя там не терабайты, то я бы просто хуярил временную таблицу с одним ключевым элементом, а потом одним запросом можно получить разницу. Хотя это > которые не занеслись в базу по каким-то причинам надо решать в тот же момент, а не постфактум искать чо там не прошло.
Анон, подскажи, пожалуйста, такой вопрос. Есть два результата функции np.where, которая выдаёт массив из 3х одномерных массивов не одинаковых по длине. Что-то типа:
Мне для каждого результата по сути нужно только два массива из трёх, которые надо сравнить друг с другом, после чего оставить только те, что удовлетворяют условию res1[0] == res2[0] and res1[1] <= res2[1] . Как наиболее эффективно это сделать? Я думал использовать itertools для всех возможных комбинаций, а потом отфильтровать по условию, но на паре примеров получается, что, во-первых, не совсем правильно, во вторых, медленно работает. Как это можно наиболее эффективно и быстро сделать?
>>2094414 Нумпай это питон лишь с очень большой натяжкой. Это говно нарушает питоний дзен как только можно, поэтому я бы вопросы про нумпаю встречал пассивной агрессией. Молодца.
>>2094412 Универсально. Но тут проблема в следующем: res1[4] = (array([0], dtype=int64), array([81], dtype=int64), array([0], dtype=int64)) res2[4] = (array([0, 0], dtype=int64), array([83, 84], dtype=int64), array([1, 0], dtype=int64)) Массив массивов во втором случае содержит не 1 элемент, а список. И мне в таком случае надо проверить все комбинации, Т.е, т.е., например, res1[4][0] с res2[4][0][0] и res2[4][0][1]. И точно так же второй массив res1[4][1] с res2[4][1][0] и res2[4][1][1] Может у numpy есть готовое решение?
В БД есть статья с заголовком "Собираем квантовый генератор случайных чисел". Если в параметр поиска передать отдельные слова "генератор" или "собираем" или последовательность "собираем квантовый" то есть те слова, что стоят рядом в заголовке то Article.objects.filter(header__icontains=search_query) отрабатывает на ура. Но если передать слова, которые есть в заголовке, но не стоят рядом %%i.e. собираем генератор", то такой метод поиска ничего не найдет. Как правильно сделать поиск? Вариант со сплитом параметра поиска в отдельные слова и поиск по ним кажется слишком колхозным, ведь точно в джанге есть решение, ведь есть?...
>>2094786 Никогда не видел, что бы такой херней занимались. Можешь фильртовать кс сначала по одному слову, а потом отфильтрованный по второму и тд. Но это говно какое то, есть elasticsearch для нормальных людей.
Двач, я очень тупой и не могу решить легчайшую задачу, прошу твоей помощи. Описывать полностью смысла не имеет, так как все, что мне нужно - это просто оператор. У меня есть список, стоящий из кучи имен и фамилий. 'Имя Фамилия'. Мне нужно посчитать сколько раз встречается в списке ИМЯ "Петя". Я пишу count "Петя", но поиск дает 0 результат. Что логично, ведь "петя" в списке всегда идет совместно с фамилией. Как решить мою задачу? Это делается через count или существует другой способ. Нагуглить не получилось, листал кучу таблиц с операторами к спискам и ничего не нашел. Я ебанат, да
Аноны. Есть задача генерировать небольшой зип архив по одному из роутов в Джанге и отдавать его на фронт. Собрать зип-архив и через HTTPResponse отдать его проблемы не возникло. >response = HttpResponse(zip_io.getvalue(), content_type='application/x-zip-compressed; charset=utf-8') >response['Content-Disposition'] = 'attachment; filename=files.zip' Через тесты сделал запрос на роут, получил байтовую строку с юникод-символами в шестнадцатеричной >b'PK\x03\x04\x14\x00\x00\x00\x08\x00\x88\xa8\xedR\x08\...." Но как только дело доходит до запроса с фронта или обычного запроса через постман - вся эта хуйня из нормальной байтовой строки превращается в мешанину из полетевшей кодировки: >DM�`�<��@�� �M��1�A Как правильнее передать файл на фронт?
Полтора года назад учил питон по пику с дальнейшим желанием вката. Но как закончил читать и делать упражнения, то всё как-то сошло на нет. Не знал, куда двигаться. 1) Вроде всё позабыл, стоит снова её всю проштудировать? Или уже есть варианты получше на русском? 2) Что делать потом, чтобы опять не заглохло дело? Пет-проекты? Учить джангу и sql для бэкенда?
>>2095105 У тебя после проработки книги не возникло даже одной идеи для пет-проекта? Печально тобой быть.
Ну напиши блог текстовый с админкой на Питоне. Калькулятор, To Do лист, бот для тг. Совсем идей нет? Пока будешь писать поймешь какие либы и фреймворки нужны.
>>2095105 Я эту прочитал и ебанул на фрилансе проектец за 300 баксов, но до этого я знал перл и пхп. До сих пор чувствую эту вкатунскую неуверенность, но лень углубляться. Сейчас сместился в баш и го, там тоже попасусь и сделаю какие-то проекты, но питон что-то нихуя не становится fluent. Вообще, после перла все языки кажутся какими-то каличными, жаль, что он умер.
>>2095214 Пол-года как. Но надо сказать, что я в принципе всегда увлекался матстатом и имел интерес к области и какой-то опыт. Ну и что мне работу предложил знакомый, который счел, что я талантлив. Так что тут быстрый вкат обусловлен тоже знакомствами, по собесам не ходил.
Ну вообще, мое мнение, что вкатываться нужно туда, где интересно, просто у меня есть опыт (не как у программиста) в геймдеве, и мне было совершенно по боку, из-за чего дико выгорал.
Что ты подразумеваешь под инструментами? Библиотеки? Панду, Нампай, Сайпай, Статсмоделс, Пиплот для визуализации. Айдишники? Ну использую Пайскриптер, пробовал Спайдер, но не увидел пока необходимости переходить. Другие языки? R для рассчетов некоторых особо длинных использовал. Немного знаю СКЛ, но самую базу, не использовал в практике, мне кажется, СКЛ нужен сугубо для больших БД либо биологии/физики.
Начал изучать питон, благо есть идея проекта, на котором можно и изучить его. Подскажите, как принято писать на питоне, все в одном файле или классы, например, раскидывать по файлам отдельным? Например, мой скрипт будет писать в БД. Создать отдельный класс для БД и все коннекты и функции записи и чтения запихнуть туда, а из основного файла просто вызывать?
Начал ради интереса изучать питона. Пытаюсь написать программу для угадывания выпавшего числа на кубике с помощью randint.
[code]from random import randint def dice(): return randint(1,6) a = int (input('number from 1 to 6 = ')) if a == dice(): print ('you lose') else: print('you win') print ('dice =', dice())[/code]
на выходе получаю number from 1 to 6 = 5 you win dice = 4
>>2096163 если делаю это не используя создание отдельной функции, то всё работает как надо
from random import randint dice = randint(1,6) a = int (input('number from 1 to 6 = ')) if a == dice: print ('you win') else: print('you lose') print ('dice =', dice)
>>2096181 я изначально делал русскую рулетку, а потом подумал что это тупо - угадывать в какой ячейке пуля, сперва не заметил, а потом поменял местами win и lose вот тут >>2096166
>>2096144 да заебали вы с зондами, 10 обычная винда, более стаильная чем предыдущие. если тебя зонды волнуют то поставь лтсб или че там еще есть за урезки главное бля ходишь со смартом который тебя так ебет зондами что если ты увидел дилдо в посте на дваче то тебе блядь реклама самотыков спамит а тут в винде че то испугался каких то зондов. винде вообще похуй по сути, там все зонды это гугл хром ну или твой акк майкрософт, никто не запрещает сидеть под автономным аккаунтом или же под левым, зареганным на фейкомыло
Jupyter Notebook - это удаленный интерпретатор + веб-интерфейс + свои свистоперделки вроде ячеек, красивого вывода. Проще самому попробовать. Клиент у тебя в браузере, а сервер может быть как локально, так и где-то удаленно крутиться, лишь бы был доступ к нужному адресу и порту.
>>2096266 Старое железо тоже не нужно? >>2096318 Нет обновлений. Последнюю версию 3.8 вообще предлагают из исходников собирать - установщика нет. На xp, кстати уже никакой свежий 3.х питон не работает.
Видим 3.8.10: Monday, 2021-05-03 (final regular bugfix release with binary installers) Это последний полноценный релиз в эту ветку, есть установщик. Дальше выкладывают только фиксы безопасности в исходниках, это нужно для поддержки легаси, никаких фич там нет.
>>2096334 ну я сижу на 10 на железе 2014 года, куда еще старее то? питон так то требователен к ресурсам, на сильно старой некроте с ним очень ебано будешь себя чувствовать >>2096381 как лучше выкатится на лето? >>2096340 поясни за лето, нужно чиллить или как? ты сам как чиллишь?
Какова вероятность что я мог положить парсером крупный сайт? Скрипт парсит разделы барахолки. потом заходит в каждое объвление в разделе, парсит данные и качает картинки. Картинки парсит в многопотоке. Как то подозрительно его падение совпадает с тем как я запускаю скрипт.
Есть какое-то согласование именования переменных и функций? На том, на чем сейчас кодирую, привык все функции и переменные писать с большой буквы, если название переменной или функции из двух слов, то пишу так, к примеру, ClearTable(). Мне кажется так намного читабельнее всегда.
>>2096783 В принципе так иногда делают. Даже в стандартной библиотеке такое есть, модуль logging например. И ещё другое есть.
Проблемы тогда, когда ты ебашишь с кем-то совместно. Вы работаете с одним кодом, при этом один в одном стиле называет, другой в другом. А это не очень удобно.
Хотя не то, чтобы уникальная история, такое много в каком коде встречается на разных платформах.
>>2096942 У меня снейк_кейс ассоциируется с низкоуровневым байтоебством, а конкретно с сишечкой. Конечно это плохо, когда нет единой стилистики, но для кода на языке высокого уровня кэмел кейс это стандарт на сегодня.
Че в питоне можно годами учить в Aiogram - Django?
За день изучения джанги создал простенький E-Commerce в соло, там дофига багов, тестов нет, но прям супер изи с одной докой в руках. Что люди умудряются годами изучать в Django or Aiogram, там же все просто как два пальца об асфальт, шок.
>>2096999 Хех, тащемта любой фреймворк на любом языке для опытного чела не проблема освоить за пару недель. Культ знания фреймворков это чисто пориджевский тренд, возникший в эпоху массового вката.
>>2097015 >Хех, тащемта любой фреймворк на любом языке для опытного чела не проблема освоить за пару недель. Это классический Даннинг-Крюгер.
Документация на Джанго это 2000 страниц. Две тысячи! Конечно, там не всё нужно. Правда не всё там изложено.
Но полноценное знание фреймворка подразумевает понимание многих тонкий вещей, надо что-то самому специально ломать, тренироваться на задачах, чтобы понимать слабые места, практики использования осваивать и т.п.
>>2096999 Ну давай запили мне сервис на 10 тысяч челобек с несколькими бд, к которым нужно обращаться параллельно + вставка и обновление данных в реальном времени + все пользователи должны лицезреть обновления в таблицах/диаграммах с возможностью вносить изменения. Изи, хуле.
>>2097064 Ну я за месяц джангу освоил и запилил первый сервис (опыта коммерческой разработки до этого не было). Даже джанга ненужна по итогу, всё на ДРФ переписал (и в будущем видимо придётся на фастапи переписывать). Другое дело, что сейчас нет понимания, моё это или не моё, т.к. "простенько в соло" запилить и долбоёб сможет. А нормально запилить, с редисом, селери, ювикорном и асинхронщиной хуй ты за месяц разберёшься в соло и без чужой помощи.
Если я держу в оперативе объект, который шарится между разными потоками, есть ли смысл лочить его __gettattribute__ __setattr__ __delattr__? И если я держу такие объекты в питоновом словаре, есть ли смысл лочить этот словарь?
>>2097128 >джангу освоил ты мою колбасу за щеку освоил ;3 не удивлючь если ты вообще не въебываешь как работают сессии, миграции, мб даже мидлвари какие >Даже джанга ненужна по итогу, всё на ДРФ переписал на дрф без джанги? Охуенный фреймворк, конечно можно запилить говно с какой нибудь статьи и решить, что ты изучил джанго, но на самом деле в фреймворке ебанутая масса охуительных фич "из коробки", но про них нужно знать и нужно знать как их комфортно пользовать. Что вообще значит годами изучать? Никто же не сидит годами читая доку. Разбираемся с возможностями по мере необходимости, узнаем что-нибудь новое спустя несколько лет после знакомства, блядь, очевидно же
>>2096783 Я тоже петух охуевший, езжу по встречке, ссу на других за невозможность ездить нормально и не мешать мне. >>2096698 А я вот не люблю кэмел-кейс, вообще прямо отвратительно, вот заебись когда у тебя классы большой буквой, с заглавной такие типо важные очень штуки, а методы и переменные маленькие скромные с бледной кожей и тонкими ручками. Просто как не пишу на чем то с кэмел-кейсом - какой то бардак выходит визуально, в питоне код ровные полосочки одинаковой высоты а с кэмелкейсом буквы сКаЧуТ.Как.ебаНутые, есще этиПереходыВместоНормальнойЧерточкиКотораяКакПробелНоВсеРавноНеПробел. ИМХО_глазам_как_то_проще.
>>2097239 Спасибо, решил вот пет монолитом написать, убедился что много слишком ебалова в питоне с асинхронностью и потоками, как то с микросервисами проще кажется.
>>2097231 >ты мою колбасу за щеку освоил Очко своё напряги, а то сквозит на весь тред. >не удивлючь если ты вообще не въебываешь как работают сессии, миграции, мб даже мидлвари какие Так вы же сами выше кудахтаете, что джанга это хуйня, за 2 недели можно освоить. И зачем мне понимать, как работают хуки в промежуточном слое, если логика прописана в классах типа django.contrib.sessions.middleware.SessionMiddleware и т.п. Что там с миграциями и сессиями разбираться, makemigrations и migrate сложно понять, что делают? >на дрф без джанги? На голом дрф, через сериализаторы и контроллер, ну прикрутил ещё сваггер и адфс настроил для вин-аутентификации. >Охуенный фреймворк, конечно можно запилить говно с какой нибудь статьи и решить, что ты изучил джанго, но на самом деле в фреймворке ебанутая масса охуительных фич "из коробки", но про них нужно знать и нужно знать как их комфортно пользовать. А я как будто это не знаю, спасибо копетан. Я и написал выше, что свой говносервис первый написал за месяц, тупо читая книгу, оф доки и доки расширении. Сейчас пишу второй сервис для работы с олап-кубами, и пока только с логикой сервиса ебусь 3 неделю. Но это просто я же тупой пральна, а сеньоры с харкача конечно за 2 дня сделают, и сами сервак развернут и задеплоят.
>>2097251 Есть кароче слой хранилища, там скл и носкл бд + хранилище прямо в оперативе. Хотел что бы оно было доступно всем потокам и корутинам тоже. У меня сейчас в одном потоке апиха, в другом сервер вебсокетов, далее еще хочу воркеров накинуть каких-нибудь. Чтобы все это могло работать как отдельные сервисы в одном кластере, но минуя брокер сообщений и хттп запросы, чтобы не сериализировать джсоны постоянно.
>>2097231 А что там такого уникального в этой джанге, чего не было бы в любых других фреймворках на любых других языках? Роутер? Мидлвари? ORM и шаблонизатор из коробки? Если ты имел когда-нибудь дело с одним фреймворком, считай ты имел дело со всем такими же.
>>2097273 ЕМНИП все писались кипятком от джанговской админки и прочего contrib-а. Причем в то же самое время ещё больше писались кипятком с рельсы, где было ещё больше батареек и ещё больше удобства
>>2097275 Ну вообще админка как бы заебумбная, ты че >>2097364 Нормальные апи можно собирать, а тяжелая логика идет в микросервисы на го, не тяжелая но сложная - в микросервисы на питоне
>>2097364 Меня прост удивил местный шизик, который считает что изучение джанги это пипец какое достижение, ведь там столько сложных вещей типа ORM, лол.
А вообще сегодня никто не рендерит страницы шаблонизаторами на бэке. Сегодня модно JAM-stack, изоморфный код и serverless-аппы
Пилю апи на фласке, все просто, понятно, ошибок минимум. Сейчас понадобилось реализовать вебсокеты, и я охуел от того, что всё надо переписывать на асинхронный код. Фласк менять на асинхронный аналог, драйвер для бд тоже, сервер с WSGI на ASGI. Можно обойтись без этого говна? Мне просто нужно при пост запросе отправлять сообщение всем вебсокет клиентам.
Поясните плис за тред и процесс? Тред это нить, канал по которому можно что-то пропустить, тот же веб сокетт. А процесс типо нечто из оси или проги, которые можно также пускать по треду. И типо можно за счет мультитреддинга реализовать мультипроцессинг. Я верно все понял?
>>2097547 упд синнхроный кодинг я понимаю, асиннхронный, когда код выполняется поочереди, дискретно, но в итоге получается континум выполнения проги, так?
Смотри, тхреады, это как человек сел посрать, и давит длинную колбасу, пока не досрёт следубшая не полезет. А асинхронн, это как кролик ебанный какойнибудь, с паузами высирает, но разные какахи. Ну и сооствественно надо учитывать что у одного срущего, может быть несколько жоп.
>>2097574 Тогда уж лучше пусть человек будет процессом. Если он срет, а потом блюёт - то это синхронное выполнение, а если одновременно и срет и блюёт то это асинхронное. Добавим второго человека уже будет мультипроцессинг
>>2097459 >Мне просто нужно при пост запросе отправлять сообщение всем вебсокет клиентам. Так и что сложно переписать такое простое приложение? Делай отдельными сервисами: отдельно апи и отдельно сервер вебсокетов.
>>2097594 Ну вроде я верно понял тогда. А как быть с тредом? Сел посрать - тред. Типо оболочка да? Срет - это процесс. Если срет и блюет, это типо асиннхронщина. Если сначал срет, потом блюет это синхроннщина. Если добавить нового чела, то будет второй процесс да? А можно двух людей обернуть в тред? И внутри треда делать треды?
Ку. Переписываю код неизвестной версии питона на тот язык что используется у меня в проприетарной системе. Почти всё переделал, но никак не могу точно разобрать что делает следующий код: >block_dispatch_list = [column[indices] for column in dispatch_list] dispatch_list - это двумерный массив режимов работы оборудования, indices - вектор содержащий индексы указывающие на номер в некотором списке оборудования на 3.х питон не нашёл документации на конструкцию column[], а это точно служебное слово, такой переменной в коде у меня нигде нет. Кстати если просто вбить в гугл "column for column in" то 70% ссылок ведёт на доки pandas или на описания dataframe у которого синтаксис вообще другой, кекус. На 2.7 питон нашёл использование row[], и теперь думаю что в block_dispatch_list копируются колонки из dispatch_list только с номерами из indices. Верно?
>>2097835 Эта сахарок для циклов, генерирующих списки. Разворачивается в block_dispatch_list = [] for column in dispatch_list: ___block_dispatch_list.append(column[indices])
>>2097547 Процесс это инстанс запущенной программы. У него есть собственное виртуальное адресное пространство, набор открытых файловых дескрипторов, ему можно посылать сигналы.
Поток это выполнение процессором команд, которое может быть прервано и продолжено системным планировщиком. Каждому потоку необходим собственный стэк, через который будут передаваться аргументы для подпрограмм и адреса для вызвращения из подпрограмм. Так же в стеке сохраняется контекст исполнения (по сути все содержимое регистров процессора) при приостановке потока. При возобновлении контекст восстанавливается из стэка. Память для стэка выделяется в адресном пространстве процесса.
У процесса есть как минимум один главный поток, но он может создать себе дополнительные. Создание потоков дешевле создания процессов, но все равно достаточно дорогое, так как требует память под стэк.
Приветствую вас, мудрые аноны и укратители змей. В голове еще остались знания питуна, только с ООП беда, еще немного из анаконды есть в голове(флешбеки из библиотек). Скажите, что прочитать/посмотреть, а так же где найти задания по питуну и конде? Под анакондой я имею ввиду библиотеки типа тензорфлоу, матплотлиб и тп да, датасайнс, да математику знаю Пожалуйста, не писайте на меня
Анончики, нужна помощь с архитектурной точки зрения. Как вы рауты к AJAX-запросам именуете? Вот у меня есть форма с мнениями лайками к посту, которая AJAX-post отправляет, а раут не особо замысловатый - /vote/
Сап, в этом итт треди вообще есть опытные змеевики? Мне низачем не нужно, просто хочется знать, почему вы все ещё юзаете пистон. Я уже столько всего на эту тему перечитал, но до сих пор не могу найти ни одного человека, который: 1. Знает несколько ЯП в одной и той же области применения 2. Имеет ИТ вышку 3. Юзает пайтон фуллтайм как основной язык и никуда не собирается при этом 4. Работает в индустрии, а не в науке
Поясните плис за архитектуру разработки. Как я себе это представляю. Я ставлю цель, и по пунктам реализую ее. Думаю должна быть модульность. То есть модули сделаны в виде процедурного стиля. Потом как-то на основах ООП все собирается и уже реализуется как-то в одном конфигурационном файле в декларативном стиле. Верно я понял?
>>2098329 тут уже мои полномочия всё ну начни с визуализации , линейная регрессия, нормализации, РСА, тнсе, дбскан, там этой хуйни как говна за баней короче обучение с учителем, без учителя и все такое прочее а потом переходи на нейросети, сверточные, реккурентные и всё такое, пасан. я сам то в этой хуйне нихуя не понимаю
>>2098210 >Имеет ИТ вышку это вообще дичь чисто для зумеров, ит вышки не существовало наверное до 2017 или позже. так что ит вышки наверное еще и нет ни у кого. То, чему учили скажем в 2010 это блядь эвм на перфокартах, это уже устарело лет 8 назад то есть даже зумерок, который закончил вуз в 2014 там ит вышка уровня бейсика и эвм
>>2098350 Давай не будем. Я почему такие критерии привел - матерый питонист может получиться только при несоблюдении как минимум одного из них. Других я до сих пор за 10 лет не видел ни ирл, ни в интернетах.
>>2098430 >В 3.10 будет, рассасывайся обратно. Там какая-то адовая наркомания, до сих по не вкурил.
Вообще, великий Гуидо, когда питона воспитывал, хотел сделать так, чтобы любой смышлёный человек без инженерной подготовки мог его читать и на нём писать.
А в итоге, любой язык программирования со временем превращается в С++, надо вкуривать долго и конкретно.
Кстати согласен, что switch не нужен, если язык поддерживает удобный else if, как elif в питоне, то получается эквивалентная конструкция очень легко читаемая.
>>2098350 >это вообще дичь чисто для зумеров, ит вышки не существовало наверное до 2017 или позже Это ты просто зумер, для которого до 2017 года была какая-то другая эпоха, когда мамонты по улицам бродили, а бородатые программисты на счётах от них дубинами отбивались.
Всегда в нормальных местах учили вполне современным вещам. Это фреймворки каждые три года меняются, базовые принципы же сохраняются очень долго.
Но я не буду участвовать в сраче "вышка нинужна", говори что хочешь.
>>2098430 Ору, подвезут в октябре 2021. До этого надо было сосать и говорить "почему ита нинужна". Кстати, принципиально не будешь юзать свич, когда появится или прогнешься?
>>2098430 А как же принцип ридабилити каунтс? Не могли же они взаимоисключающие параграфы в свой манифест засунуть? Лол, не язык, а просто какой-то набор анти-паттернов.
>>2098448 Это и нинужно в большинстве случаев, просто пиздануто из си, где оно хорошо ложилось на концепцию переносимого ассемблера. Юзать скорее всего не буду, потому что пока оно просочится в мейнстрим, я уже укачусь на другие языки, скорее всего.
>>2098457 Зочем тогда питон? Я пытаюсь понять с 2013 года и не могу. Даже пишу на нем периодически один проект (который не я начал, естественно). Язык вкатывальщиков, учоных и сисодменов.
>>2098464 > Язык вкатывальщиков, учоных и сисодменов. Примерно так и есть. Ещё всякие там автоматизации-ETL-дата процессинги. Не вижу смысла впихивать любой язык во все возможные ниши.
>>2098470 >1. Удобнее читать У тебя отступы для этого. >иначе бы switch и не придумывали А четкое понимает зачем это нужно есть? Просто предъявлять претензии без обоснования своей позиции так себе занятие. Я вот не вижу как switch-case удобней читать. >>2098475 >можно ещё и несколько условий сделать на каждый кейс Вложенный цикл. Ничего необычного и разницы с обычным if нет. > ифами это может чудовищно выглядет А может выглядеть точно так же.
Не, я понимаю, если бы вы реальную функцию приводили в пример, но "ну так выглядит лучше" - это совсем не то. Вот нахера было в принт засовывать скобки - вот это я не понимаю. Нахера сейчас отсекать кучу народу от новых веток и потом пилить четвертого питона заставляя всех переучиваться так же как со 2 на 3 - тоже непонятно. Там Гвидо мог бы сразу новый язык писать - какого-нибудь ужика или глиста.
Ананасы, поясните за микросервисы на питоне: К примеру я написал 3 модуля, они должны работать параллельно. К примеру каждый из них работает в своем контейнере, соответсвенно GIL у всех свой. А если я создам некий управляющий процесс, который будет запускать эти скрипты через subprocess.call ? Я так понимаю они запускаются в отдельных потоках, но что на счет гила?
>>2098497 А что насчет гила? Они сами по себе. Но в целом это делается не так, а через очереди. Ты в главной хуйне пихаешь задачи в очередь, а воркеры уже автономно оттуда забирают.
>>2098495 Может ты просто никогда не писал switch-case? Другим почему-то не нужно доказывать его полезность, он есть практически везде и используется.
>Вложенный цикл Это называется вложенный велосипед
>А может выглядеть точно так же. Но там, где if выглядит "точно так же", никому и не приходит в голову юзать switch. Во всех остальных случаях он выглядит чудовищно.
Насчет переучивания - это просто персональная эволюция диктатора Гвидона, скоро допилят до нормального языка общего назначения.
>>2098495 >Вот нахера было в принт засовывать скобки - вот это я не понимаю. А я как раз понимаю, это необходимо было делать.
У тебя print это функция, соответственно ты можешь работать с ним, как с функцией, обвязки вокруг делать, передавать как параметр куда-нибудь, параметры более хитрым образом передавать и т.п.
Оператор print был таким конкретным сктиптовым легаси, который обязательно надо было выпиливать.
Самая лажа была с юникод-строками, вот там они протупили конкретно. Во втором питоне юникод-строки должны были начинаться с u"строка", а в третьем питоне все строки стали юникодными (это тоже очень правильно), но они запретили синтаксис u"строка".
И стало в принципе невозможным делать совместимые программы, если у тебя юникод. print как функцию ты мог и во втором питоне делать, и подавляющее большинство другого. Но не строки.
Это пиздец как убивало. Несколько лет потребовалось, чтобы потом они разрешили использовать префикс u в третьем питоне, когда это уже перестало быть настолько актуальным.
>Нахера сейчас отсекать кучу народу от новых веток и потом пилить четвертого питона заставляя всех переучиваться так же как со 2 на 3 - тоже непонятно Четвёртого питона не планируется. В питон добавляют какой-то функционал, но обратная совместимость сохраняется, только модули чистят некоторые, но медленно и предупреждая заранее.
Но питон, конечно, становится очень сложным. Его придумывали как простой язык для не инженеров, а с каждым релизом становится всё сложнее и сложнее, что освоить может только профессиональный программист с серьёзной подготовкой.
>>2098509 >Но там, где if выглядит "точно так же", никому и не приходит в голову юзать switch. Приходит, в основном его только так и использовали, тогда, когда лучше if-else.
Если посмотреть код на C/C++, то там на практике в большинстве случаев у каждого непустого case будет break. А это полная аналогия с if-else.
If-else не делали, потому что другие традиции по скобкам и отступам в C/C++ были.
switch-case дополнительные возможности даёт тогда, когда ты в каком-то case делаешь часть работы, в следующем продолжаешь для более общего случая. Но это редкие случаи, очень запутанная логика и вообще грязный код.
>>2098509 >Другим почему-то не нужно доказывать его полезность Ну теперь понятно почему ты сам не понимаешь зачем он нужен. Просто везде он есть, значит "ну, наверное, нужен". Миллионы мух, ведь не могут ошибаться. >Это называется вложенный велосипед К чему это ты? Как у тебя вложенный цикл switch отличается от такого же с if? Тут вообще никакой разницы нет и быть не может. >никому Кому "никому"? Ты все посты тут от имени каких-то "всех" пишешь, но конкретики ни в аргументах, ни в использовании так и не привел. Вообще спор о том какая традиция лучше, а именно спор о тррадициях, а не о функционале считаю пустым. >>2098517 >У тебя print это функция, соответственно ты можешь работать с ним, как с функцией, обвязки вокруг делать, передавать как параметр куда-нибудь, параметры более хитрым образом передавать и т.п. Ну так сам принт в скобки и зажимай. Зачем аргумент зажимать? >Четвёртого питона не планируется. В питон добавляют какой-то функционал, но обратная совместимость сохраняется, только модули чистят некоторые, но медленно и предупреждая заранее. Это сейчас не планируется. А к 2025 найдут опять неисправимую уязвимость,решат что пришло время и под этим соусом переделают половину синтаксиса.
>>2098473 >Не вижу смысла впихивать любой язык во все возможные ниши. Ты забываешь о том, что язык это платформа.
Питон это не только синтаксис, это ещё большая библиотека в коробке, много сторонних библиотек, удобный pip и venv, сообщество и документация. Почему не питон, когда можно и на питоне?
>>2098525 >Это сейчас не планируется. А к 2025 найдут опять неисправимую уязвимость,решат что пришло время и под этим соусом переделают половину синтаксиса. Этого явно уже не будет.
Питон эволюционирует так же, как и многие другие технологии. На начальном-среднем этапах какая-то гибкость есть, чем дальше, тем более индустриальная технология, более консервативное сообщество, потому что язык системообразующий.
Сейчас очевидно, что питон уже один из самых основных языков ИТ индустрии. И чем дальше, тем больше. 10 лет назад всё-таки другая ситуация была.
Поэтому новой ветки не будет. Скорее просто придумают новый язык по мотивам питона, это будет закономерно. Уверен, что произойдёт когда-нибудь, противоречий в языке накопилась масса.
Пацаны, стоит учить питон? Выучил верстку(html и css) и понял что это хуйня говняная с еблей мардижинами у блоков и стилизированием текста. Короче сумасшедшая хуйня, я не знаю как там можно 500 макетов сверстать и не сойти с ума. Короче решил в бек пойти. Питон норм вариант? Говорят что легкий для новичков. Ну хз. Вот выучу я питон с джанго и фласком и sql, а дальше как? На фрилансе заказы искать чтобы портфолио забить? И потом вофис когда норм портфолио соберется? Подскажите пожалуйста.
>>2098525 >К чему это ты? Как у тебя вложенный цикл switch отличается от такого же с if? Тут вообще никакой разницы нет и быть не может. Switch не нужен вложенный цикл, можно просто добавить условий на один и тот же кейс. А вот if (вложенный_цикл) выглядит как хуйня. Почему цикл вообще? Давай рекурсию юзать, нахрен этот синтаксический сахар?
90% кода реально это возможности a-b-c, и они полностью перекладываются на одномерный if-else
if letter == 'a': ____do_a() elif letter == 'b' or letter == 'c': ____do bc()
Единственный минус, это letter в каждом условии явно указываешь, но зато добавляется дополнительная гибкость, можно более сложные проверки делать, чем в case.
А вот случай d-e уже сложнее, требуется вложенный if-else и немного коряво это будет. Но таких случаев не так много.
Полный аналог switch можно сделать с помощью цикла, может это анон имел в виду. Тогда будет for _ in range(1): ____if letter == 'd': ________do_d() ____if letter == 'e': ________do_e(): ________break
То есть тут не цикл, конечно, тут просто цикл ради оператора break.
>>2098571 >case item.class.name >when "Meeting" >item.start_time >when "Payment", "InsurancePayment" >item.paid_at >end Чем это хуже чем
_item = item.class.name if _item == 'Meeting': ____ item.start_time elif _item in ['Payment', 'InsurancePayment]: ____ item.paid_at()
Ну вот такой список вариантов. Реально, не вижу разницы.
Реально проблемой было, что оператора := не было до 3.8, это был персональный бзик Гвидо, но его переломали в этом и вроде как сломали этим. Без возможностей := действительно многое превращается в ад, в два раза больше строк. Ну не очень часто, но бывает такое.
>>2098592 Хуже тем, что надо знать, что switch не существует, когда это уже давно де-факто стандарт. Плюс If открывает ненужные возможности и заставляет читать всё от начала до конца, не вхуярили ли там какое-то ещё условие вместо обычного соответствия item чему-то. Когда видишь switch, сразу интуитивно понятно, что мы проверяем одну конкретную вещь, которую сверху написали.
Пока местные воюют против свитчей и ифов, я делаю словарь вида {вариант: код} и прямо в месте его создания делаю .get(switch-value, default-branch)() И никакого бугурта. Мимо 300ккк-нс джун
>>2098444 я учился в 2000 году в универе, у нас БЫЛИ МАГНИТЫНЕ ДИСКЕТЫ на 3 мегабайта, чел. ты щас даже не сможешь написать приложение чтобы оно занимало меньше 3х мегабайт
ОФФТОП. Аноны, я чота походу совсем запарился и не соображаю. Решаю тут задачку для школьников и не могу справиться.
Уравнение касательной, проведённой к графику функции y=sin(x-Pi)+1 в точке его пересечения с осью ординат, имеет вид. 1) y = x+1; 2) y = x-1; 3) y =- x-1; 4) y =1- x. Правильный вариант: 4.
>>2098852 Ты сложно решаешь же. Надопросто понять геометрический смысл переменных. Вот у тебя y=sin(x-Pi)+1 Что значит +1? Что весь график будетвыше на 1. То что было в y=0, то станет y=1, то, что было y=0.2, станет y=1.2. Что значит -Pi? Что график сдвинется на Pi влево. Что было x = pi, то станет х=0, что было х=10pi, станет х=9pi. Базовый график был y=sin(x)
Берёшь картинку, двигаешь график, и получается, что ось оординат пересечётся в точке, которая была x = Pi, y = 0 (можно посчитать любую из них, но и так видно), а стала x = 0, y = 1. Касательная к ней, соответственно, будет y=-x (потому что график в этом месте падает под 45° и +1 x = -x+1
Ушел в репетиторы, уже появилось пару людей которые "забронировали" занятие, первое занятие будет во вторник. Сабж в том, что я вроде много знаю, но мне сложно пояснить все словами, поэтому я начал проходить заново ролики Тимофея и читать Марка Лутца, пишу что то вроде лекций в блокнот, попутно добавляя задачи для решения. Нормально ли это, подумываю отказаться, но с другой стороны деньги хорошие предлагают.
>>2098898 >Нормально ли это, подумываю отказаться, но с другой стороны деньги хорошие предлагают. Попробуй, не получится — вернёшь им деньги, скажешь, что ты неподходящий учитель для их детища.
>>2098977 > вернёшь им деньги, скажешь, что ты неподходящий учитель для их детища. Не надо так делать и кодировать в себе неудачника.
Причём родители будут плохо думать из-за этого.
Если не получится за несколько раз, то надо просто отказаться, сказать, что тебе кажется, что неэффективно занятия идут и тебе проще с профессиональными программистами, чем со школьниками. Или родители сами откажутся.
>>2098918 Ты будь готов, что у тебя люди будут непонимать совсем такие вещи, которые вроде бы очевидны. И тебе надо думать не над лутцем, а над тем, как сделать так, чтобы они это поняли.
Вот банально такие вещи, что такое цикл или функция.
Люди не алгоритмы, формальным описанием они не программируются. Крутым программистом тебе не нужно быть, теме надо уметь учить, это разные вещи.
>>2098984 бля,это не я учить собрался,я прост не могу наебывать. нужно переадресовать твой коммент тому, кто учить собрался. алсо я бы может и рад учить, но у меня такой бзик что я не могу учить за бабки чему -то , если сам в этом не шарю на 100%. а шарить в птионе на 100% это надо дрочить лет 5 минимум еври дей разные задачи, что нереально. >>2098987 я тоже пользовался, вроде 3 мб были. Хотя ХЗ, может припарил уже. но насколько помню были на 3 и на 1,5. на 3 блатные считались вот нашел даже большего обьема
>>2098784 Обоссывание высшего уровня, от самого. И ещё такой - вот вам костыль, но эй, осторожнее с этим, а то аттакеры смогут вызвать любой метод! Вот это я понимаю продуманный язык, лаконичный, ничего лишнего, лол.
>>2099045 Анон что-то путает, время переписало воспоминания.
Ни разу не видел сам 2.88, хотя слышал тогда, что такие существуют и даже искал по-возможности, меня такие штуки интересовали.
Зашёл сейчас на амазон, там продают очень много дискет, несколько сотен предложений. Отсмотрел первые 10 страниц, то есть 150 предложений, там в основном 3.5 по 1.44 и 720кб, реже 5-ти дюймовые дискеты. Ни одного варианта на 2.88 не вижу. Может где-нибудь есть, но это что-то единичное.
То есть такие дискеты и у американцев были в статусе очень большой экзотики, тогда как 1.44 самый массовый продукт.
>>2099042 >алсо я бы может и рад учить, но у меня такой бзик что я не могу учить за бабки чему -то , если сам в этом не шарю на 100%. >а шарить в птионе на 100% это надо дрочить лет 5 минимум еври дей разные задачи, что нереально. Чтобы учить программированию противопоказано знать слишком круто. Тебе просто сложно будет обучать.
Это вообще разные скиллы.
Ученик - это как твоя программа на незнакомом языке. Ты чего-то написал, а оно не работает, и ты не понимаешь, почему не работает. И начинаешь костылять, вставлять отладочную печать на каждой строке и т.п. жуть.
Ученику ты показываешь что-то, просишь сделать что-то подобное, а он не может. Только методом тыка пытается. И ты не понимаешь, в чём его проблема.
Ты правильно сомневаешься в том, что ты сможешь учить. Но проблема не в нехватке понимания, а в том, что ты не понимаешь, как учить кого-то чему-то. И своих задач не понимаешь, такое ощущение.
А ученику с тобой сложно, потому что тебе вроде как очевидно, а ему нет.
Тому ученику, которому дебри нужны, репетитор скорее всего не нужен, он сам научится по книгам.
>>2098898 Я бы хотел кстати попробовать кого-нибудь порепетировать. Как такие предложения найти? И ты вкатунов учить собираешься, или школьников-студентов?
Парни, решил вкатиться в этот ваш пайтон. Знаю джаву слегка (ну основы + спринг на крудах), эскьюэль + могу верстать и джавоскрипт писать слегка (на уровне компонентов реакта, лол).
(на жабу решил забить, т.к. там слишком дохуя разных альтернатив нужных по одной и той же теме, в том же спринге и около того с десяток разных видов одних только ORM, я ебал все это учить чтоб потом завалиться на собеседовании об какое-нибудь говно, которое скипнул)
С чего начать? Вот открыл книжку лутца, а там воды больше чем в моем дипломе по финансам. Просто ебаный океан блядь. Дайте гайдлайн по книжкам и че там начиная от основ, заканчивая джангой, тестированием и прочему говну. Я вроде так понял что алгоритмы у патлатого на ютубе, это ладно. Че по остальному?
>>2099077 На самом деле это один ебовейший кирпич, тома в переводной. Алсо, сюрприз, такой кирпич не один, лол.
Но книга хорошая, хоть и старая, в ней реально много всего. В питоновских книжках очень большой перекос в сторону ньюфажеских, которые покрывают небольшую часть для хоть какого-то использования. А попродвинутее мало, Лутц это одна из них.
>>2099079 а вообще, есть ли смысл вкатываться в пайтон без мат бэкграунда? Я уже всю математику забыл к херам, максимум могу простенькие алгоритмы сложность подсчитать, и то там математика особо не нужна, чисто на рефлексах понятно где логарифм, а где степень, а где что-то среднее. Я так понял, в пайтон идут только для машинлернинга и дата саенс? В джангу крудить никак не устроишься из-за того что пайтон легче чем энтерпрайз языки? Я вроде видал несколько вакансий даже в моем мухосранске на макака-круд работу, но из-за того что язык легче, таких макак будет больше конкурентов, да?
>>2099088 Я как нубик говорю, который видел пыху (когда на фрилансе пыхтел), пытался в js, видел джаву (в книжечке и на курсах), видел плюсы у друга.
Питон это такой ЯП, на чей код ты смотришь и можешь почти все понять сразу - вот здесь цикл, вот здесь условие, вот здесь функция, сравнения, переменные и прочее. В начале это прям дикая завлекалочка для вкатуна.
Аноны, есть csv-файл, и есть таблица, содержащая данные из этого файла (не все). Как быстро сравнить файл и таблицу и найти разницу в данных? Сейчас я делаю так: загружаю таблицу в другой csv-файл, и каждую строку из первого файла ищу во втором. Короче, медленно. Можно ли быстрее? Использую python (можно bash)
>>2099089 Только это. Для профессиональной разработки чего-либо - абсолютно непригоден, хотя некоторые умудряются. Медведя тоже можно научить ездить на велосипеде.
>>2099092 Сколько файлы весят? Можно пожертвовать памятью если влезет весь файл все строки из первого файла сохранить в множество (set), потом проверка каждой строки будет за O(1) вместо O(n)
>>2099097 >Прототипирование Всегда прикалывало это слово. Такие с умным видом произносят, как будто реально бывает так, что сначала делают на питоне из расчёта, что потом будут переписывать на java/c#.
ЛОЛ, нет, конечно, фантастика. Бывает иногда, что сделают на одной платформе, потом упираются в производительность и переписывают на другую, полностью или частично, но это другое всё-таки.
>>2099049 Про словари >Обоссывание высшего уровня, от самого. чем плохо-то? Кроме аргумента "там рядом перечислен другой вариант с возможным выстрелом в ногу" что-то можешь привести?
Про второй способ - ну какой же яп без способа выстрелить в ногу. Да и выстрелить вряд ли получится - если программист в курсе гетаттра, то очень вероятно, что знает и про то, как защититься от уязвимости такой. Например, способом, описанным на твоем же скрине.
>>2099188 >потом упираются в производительность На пистоне можно упереться в производительность или на мат операциях или когда монолит делаешь, для среднего проекта распиленная на микросервисы архитектура нормально подходит. Потом если нагрузка возрастает и девопс начинает приносить жирные счета можно переписать часть системы на что-то более производительное.
>>2099196 >>2099134 Кажется я потерял остатки уважения к этому языку, когда сам попробовал им воспользоваться. До этого отказывался от мысли, что такой инвалид может быть популярным языком, который везде и всюду суют, думал - ну мало ли какая причуда, значит были на то причины. Но нет, оказалось, не было. Просто главный дезигнер тешил своё эго, а вы теперь попробуйте на этом ехать.
>>2099347 >Легче сразу на чем-то другом писать. Не легче, по скорости разработки ему нет равных, особенно если вы стартап пилите, где фичи нужно каждый спринт по фиче выливать. Для MVP это очень важные качества, так же быстро только на рубях можно.
>>2099092 Что значит "таблица"? эксель что ли? Делаешь df1 = pd.read_csv("file1.csv"), df2 = pd.read_excel("file2.xlsx"). Нарезаешь столбцы как тебе надо. Можешь даже создать столбцы типо df1['source'] = "file1". И сделать потом pd.concat([df1.drop('source'), df2.drop('source')]).drop_duplicates(keep=False, subset=df1.columns.drop('source')).
>>2099364 Сомневаюсь, что профи среди них больше, чем на любой другой ЯП. Может ещё заколебаешься фильтровать. Разве что под обучение набрать, таких да, пруд пруди.
>>2099373 >Сомневаюсь, что профи среди них больше, чем на любой другой ЯП Причем тут другие ЯП если мы про руби и питон говорили? Тебе конкретную задачу назвали под которую питон подходит, MVP для мест, где скорость разработки важна. У рубей в еще в середине десятых проблемы были.
>>2099396 А, ну лол. Если сейчас как в 2013 - значит всё норм. Не помню, чтобы у кого-то были проблемы. Просто нет хайпа и всё. Все, кто хотят - находят работы и работников. А что за проблемы в середине десятых, если там как раз самый подъем был?
>>2099411 Язык одного фреймворка из которого спиздили киллер фичи в другие фреймворки, типа той же джанги. Как поняли, что можно быстро говнякать сайты на других языках с более широким профилем применения так свалили туда. Да и питонячий асинкио выстрелил в то время, как руби мог только срать тредами с GIL.
>>2099417 А можешь рассказать (если знаешь) почему Питон выбрали всякие ученые, математики и прочие люди в науки и около нее для своих моделей и мат. расчетов?
>>2099417 >Да и питонячий асинкио выстрелил в то время, как руби мог только срать тредами с GIL. Чего там выстрелило, когда оно появилось всего лишь 3 года назад? Ещё даже заюзать мало кто успел, наверное.
>>2099484 >Все равно нафиг не нужен для веб-дрисни Ну вот захотел я найти асинхронный клиент для amqp Есть это, не обновляется с 2020 года и поддерживает только дропнутые версии рубей https://github.com/ruby-amqp/amqp
Есть банни, но там по треду на коннект, что вместе с GIL убивает производительность. >it maintains its own I/O activity loop in a separate thread, one per connection.
>а другое в сравнении с руби и не обсуждается Потому что для другого руби не нужны и там нет нужных либ
>>2099503 Просто объясни зачем тебе RabbitMQ на руби, если там есть sidekiq? Сложно это понять. Ну типа разве что там какая-то олдовая кодовая база, которую надо перевести на языкнейм, в данном случае пистон.
>>2099502 Не знаю чо там отвалилось у вас, я на нем работаю 8 лет и всё ок, основные гемы обновляются регулярно, новых сотрудников дохуя влилось за последний год. Хз, сравнить с питоном не могу, профессионально им не занимался, но то, с чем столкнулся в побочном проектике - неприятно удивило меня.
>If you are a business, or have a $1000 spare, you can resolve this issue by buying a Sidekiq Pro license which ensures that a job gets executed and comes with other niceties. Personally, I find this price tag too steep (especially since it's recurring) for small/personal projects which lead me to look for alternatives. Вопрос: а ты уверен, что все перечисленные фичи вообще нужны в small/personal projects?
А вот это уже заставляет задуматься: >There are some features that are missing in Rabbit, like cron jobs and unique jobs, but they can be added by the clients.
Сron jobs and unique jobs - это вот то, что юзается в проде постоянно.
Как обычно, компромиссы. Если б RabbitMQ был так нужен, его либы были бы свежими как sidekiq.
>>2099660 >Я не вижу особой разницы, объясни мне. sidekiq корректнее сравнивать с celery, которая может использовать кролика как бекенд. А сам кролик может использоваться просто как брокер сообщений между любыми сервисами на любых языках, лишь бы формат соблюдали. Вот недавно у меня была интеграция со сторонним продуктом, они как раз предоставляли свою очередь реббита, так как нужно было иметь персистентную очередь. Можно это как канал связи для RPC юзать, очень много кто на этом микросервисы строит.
>>2099502 Насчёт трупа спорно, по крайней мере на ХХ количество вакансий по слову "ruby" примерно такое же, как и по "django", меньше, но немного. И на джанго из этих много нерелевантных, где только текст вроде "иметь опыт с каким-нибудь из фреймворков вроде django/flask/aiohttp".
По слову "python", конечно, разница уже десятикратная.
>>2099676 Мне кажется тут уже их архитектура вокруг реббита построена, поэтому и так, наверное так удобнее и привычнее им было делать на джаве какой-нибудь. Я с рубями таких сервисов и не встречал. Обычные API и вебхуки везде.
>>2099683 Тебе нужно отослать сообщение на сторонний сервис и иметь гарантию, что оно останется в очереди до востребования, даже если сам сервис лежит, что делать будешь?
>>2099689 Мы же не обсуждаем с очередью или без. Почему это должен быть именно реббит, а не другая очередь + API - малопонятно. Зависит от решаемой задачи в конце концов.
>>2099802 Ну найди тогда хоть один клиент для очередей на руби, к которому можно прикрутить любой другой язык и который может работать асинхронно не через треды, это тупиковый путь.
>>2099832 Видишь, ещё фейловер надо накручивать. Короче, это пустой холивар без конкретики. Доебаться можно много до чего, руби от этого не перестает быть эффективным для решения своей основной задачи - "быстро наговнякать веб", как выше сказано. Пистон со всем обилием библиотек всё равно выглядит как инвалид в этом плане и причина почему его юзают в вебе - потому что из него стреляют как из пушки по воробьям по всем задачам сейчас, от юзерлевел-скриптинга до дата майнинга. Удобство необязательно, главное чтоб питонодети имели широкие возможности.
>>2099851 >Доебаться можно много до чего, руби от этого не перестает быть эффективным для решения своей основной задачи - "быстро наговнякать веб", как выше сказано. И зачем выбирать руби, если он не эффективен по I/O? С питоном можно дольше жить перед тем, как придется переписывать проект и даже потом можно переписать частями, так как он позволяет эффективно реализовывать микросервисную архитектуру и постепенно подменять компоненты. Как я понял из твоих слов на руби ты монолиты пишешь и придется все заново переписывать, если перфоманса перестанет хватать, а не только критически важные компоненты для начала.
>>2099817 А если твой сервис с очередью на руби упадёт? Да мало ли чего упасть может.
Но смысл в том, что благодаря таким инструментам ты можешь делать сложные проекты с разными сервисами. Можешь писать нужные задачи на нужных языках, или, скорее, подключать уже готовые решения, написанные на других языках.
В современном мире глупо завязываться во всём на один язык.
>>2099862 Да блин, ты так говоришь, будто это всё нельзя на руби. Именно так и работает, просто без реббита. Что за эффективность по I/O для добавления задачи в очередь? Миллисекунды выгадать хочешь или что?
>Как я понял из твоих слов на руби ты монолиты пишешь и придется все заново переписывать Нет смысла начинать разработку сразу с микросервисов, с ними будет больше проблем, чем профитов. Не понял почему нужно будет "заново переписывать" что-то. Вынеси критическую часть и живи дальше.
>>2099887 >В современном мире глупо завязываться во всём на один язык. Предлагаю не завязываться на пистон.
>>2099908 >Что за эффективность по I/O для добавления задачи в очередь? Оверхед на смену треда каждого треда при любом запросе, хоть в базу, хоть на прослушивание очереди.
>>2099917 Не, у меня либа одна позволяет выполнять только 2 операции над её объектом: сохранить в файл получить байтаррей
Мне нужен промежуточный вариант, где я получаю RAW байты файла, как в момент записи, но в переменную. Т.е. без записи на диск. С байтарреями не знаком, что-то с ними ничего не получается сделать.
>>2099914 Ну это чушь, нет никакого значимого оверхеда от синхронного выполнения этих действий. Асинхронщина в рамках одного запроса - максимум приятный бонус (если есть чего распараллелить и если это не создаст дополнительных проблем), но уж точно не решающий фактор в выборе инструментов. Больше времени будешь с питоном ебстись.
>>2099926 >Ну это чушь, нет никакого значимого оверхеда от синхронного выполнения этих действий. Ну тупые люди, асинхронные инструменты придумывают зачем-то. Ты настолько сросся со своим стеком, стал некомпетентен во всем остальном.
>>2099932 Не для этого их придумывали, лолка. Большинство обычных user flow - синхронны по сути, там нечего параллелить. В ноде это было с самого начала, чет не взлетело.
>>2099946 > Большинство обычных user flow - синхронны по сути, там нечего параллелить Даже поход в базу и на сторонюю апиху от асинхронности выигрывают
>>2099946 Нода довольно хорошо взлетела, именно благодаря асинхронности. На ней много чего делали. Потом её поджали другие платформы, тот же питон.
С нодой проблема в том, что там асинхронность больше на коллбэках, куча библиотек на это завязано, а сейчас это не модно, можно async/await. Тут уже сложнее, не так нативно. Сам язык JS говно и npm помойка, тоже против играют.
Но если смотреть сейчас, то вакансий на ноду намного больше, чем на руби или на джанго.
>>2099926 > Больше времени будешь с питоном ебстись. Нет такой проблемы у питона, самый лучший язык. Но есть проблема в производительности. То же переключение задач в asyncio на самом деле довольно дорогая операция, о каком-то крутом хайлоаде можно забыть.
Но в остальном всё хорошо и те проблемы, которые были в середине десятых, решены. Поэтому питон и полетел вверх.
>>2100015 >Создай временный файл в /tmp/ Тоже как вариант, но контейнер засрётся со временем.
>Как он вообще на диске выглядит, с чего ты взял, что он не точно такой же байтаррей? На диске там просто байты. Я пробовал переводить байтаррей в байты, но boto3 ругался на него.
>А что ты с ними хочешь сделать? Я хочу взять файлик и несохраняя его на диск отправить в S3.
>>2100020 >Я хочу взять файлик и несохраняя его на диск отправить в S3. s3 же можно подмонтировать в виде файловой системы. Просто сделай так и сохраняй файл на неё. Если не хочешь, то какие ещё есть у s3 интерфейсы?
>>2100064 У boto3 два метода - аплоад файл и аплоад файл-лайк обджект. Файл мне не нравится т.к. на диск записывать надо, поэтому и пытаюсь понять как мне получить файлобджект.